ケータイサイト構築のポイント

以下に、ケータイのサイトを開発する上で、ケータイならではの考慮すべきポイントを簡単に挙げてみた(リンクはこのサイト内での技術情報)。
  1. ケータイからサーバに送られてくる、CGI 環境変数の UserAgent の種類(ブラウザ名)
  2. 各ケータイキャリア毎の IP アドレス(PC と連携するときに、ケータイからサイトにアクセスしてきたか、PC からアクセスしてきたかサーバ側で判別するのに必要)
  3. 各ケータイの機種ごとの画面サイズ(特に横幅、これは最近の機種であれば UserAgent から取得できる)
  4. サポートする画像形式(JPEG / PNG / GIF)
  5. 1 画面の最大受信サイズ(バイト数)
  6. 機種ごとに使えるカラーの違い
  7. 各キャリアの絵文字の違い(同一キャリアだとしても、ケータイの世代ごとに使える絵文字が違います)
  8. 各キャリアのメールアドレス体系(iモード / i-mode メールは RFC に準拠していません)
  9. 使える文字コード(シフトJIS、UTF-8 など)
  10. 使える文字の種類(全角、半角
  11. ケータイのキーパッドでも入力しやすくする工夫(PC にはない、アクセスキーの考え方のこと)
  12. ケータイネイティブ機能との連携(mailto: でメーラーが起動するとか、Java アプリが起動できるとか、tel: で電話の発信ができるとか)
  13. 公式サイトと勝手サイトの考え方、取得できる情報の違い
  14. セッション管理(ケータイは基本的に cookie が使えないから)
最近は、パケ放題などのプランが出てきたので以前ほどは、ページ内のパケットを減らす努力(改行はケータイに送らない、コメントは入れない、など)はしなくてもよくなってきたのではと思う。 このノウハウは、拙作の 「ケータイをシステム手帳にバージョンアップする」 サイト i-Services の構築から得られたノウハウである(このサイトのメインのターゲットはケータイだが、ケータイと PC 両方からアクセスできるように作ってあるので、両方で試してみて欲しい)。ノウハウとしては、かなり凝縮されている。
以下に、ケータイのサイトを開発する上で、ケータイならではの考慮すべきポイントを簡単に挙げてみた(リンクはこのサイト内での技術情報)。
  1. ケータイからサーバに送られてくる、CGI 環境変数の UserAgent の種類(ブラウザ名)
  2. 各ケータイキャリア毎の IP アドレス(PC と連携するときに、ケータイからサイトにアクセスしてきたか、PC からアクセスしてきたかサーバ側で判別するのに必要)
  3. 各ケータイの機種ごとの画面サイズ(特に横幅、これは最近の機種であれば UserAgent から取得できる)
  4. サポートする画像形式(JPEG / PNG / GIF)
  5. 1 画面の最大受信サイズ(バイト数)
  6. 機種ごとに使えるカラーの違い
  7. 各キャリアの絵文字の違い(同一キャリアだとしても、ケータイの世代ごとに使える絵文字が違います)
  8. 各キャリアのメールアドレス体系(iモード / i-mode メールは RFC に準拠していません)
  9. 使える文字コード(シフトJIS、UTF-8 など)
  10. 使える文字の種類(全角、半角
  11. ケータイのキーパッドでも入力しやすくする工夫(PC にはない、アクセスキーの考え方のこと)
  12. ケータイネイティブ機能との連携(mailto: でメーラーが起動するとか、Java アプリが起動できるとか、tel: で電話の発信ができるとか)
  13. 公式サイトと勝手サイトの考え方、取得できる情報の違い
  14. セッション管理(ケータイは基本的に cookie が使えないから)
最近は、パケ放題などのプランが出てきたので以前ほどは、ページ内のパケットを減らす努力(改行はケータイに送らない、コメントは入れない、など)はしなくてもよくなってきたのではと思う。 このノウハウは、拙作の 「ケータイをシステム手帳にバージョンアップする」 サイト i-Services の構築から得られたノウハウである(このサイトのメインのターゲットはケータイだが、ケータイと PC 両方からアクセスできるように作ってあるので、両方で試してみて欲しい)。ノウハウとしては、かなり凝縮されている。

Java で、ハッシュ値 (ハッシュダイジェスト) を扱う

Java で、ハッシュ値(ハッシュダイジェスト)を扱うには、例えば以下のようにする。 使用するクラス
import java.security.MessageDigest;
import java.security.MessageDigest;

public class HashTest {

    public static final String HASH_ALGORITHM = "SHA1";
//  public static final String HASH_ALGORITHM = "MD5";

    public static final String password = "password";

    public static void main(String[] args){

        try {
            password =  this.getDigest(password);
        } catch(Exception e) {
e.printStackTrace();
        }
    }

    public String getDigest(String data) throws Exception {

        StringBuffer s = new StringBuffer();
        MessageDigest md = MessageDigest.getInstance(HASH_ALGORITHM);
        byte[] dat = data.getBytes();
        md.update(dat);

        byte[] digest = md.digest();
        for (int i = 0; i < digest.length; i++) {
            int d = digest[i];

            if (d < 0) {  // byte 128-255
                d += 256;
            }
            if (d < 16) { //0-15 16
                s.append("0");
            }
            s.append(Integer.toString(d, 16));
        }
        return s.toString();
    }
}
public static final String HASH_ALGORITHM = "SHA1";
//  public static final String HASH_ALGORITHM = "MD5";
...
MessageDigest md = MessageDigest.getInstance(HASH_ALGORITHM);
のように、MessageDigest オブジェクトのインスタンス取得のときにハッシュアルゴリズムを指定することができる。また、
byte[] digest = md.digest();
だけでは、byte[] しか返ってこないので、ダイジェスト値を文字列として扱いたい場合はこのJava のバイト列を文字列に変換する必要がある。
Java で、ハッシュ値(ハッシュダイジェスト)を扱うには、例えば以下のようにする。 使用するクラス
import java.security.MessageDigest;
import java.security.MessageDigest;

public class HashTest {

    public static final String HASH_ALGORITHM = "SHA1";
//  public static final String HASH_ALGORITHM = "MD5";

    public static final String password = "password";

    public static void main(String[] args){

        try {
            password =  this.getDigest(password);
        } catch(Exception e) {
e.printStackTrace();
        }
    }

    public String getDigest(String data) throws Exception {

        StringBuffer s = new StringBuffer();
        MessageDigest md = MessageDigest.getInstance(HASH_ALGORITHM);
        byte[] dat = data.getBytes();
        md.update(dat);

        byte[] digest = md.digest();
        for (int i = 0; i < digest.length; i++) {
            int d = digest[i];

            if (d < 0) {  // byte 128-255
                d += 256;
            }
            if (d < 16) { //0-15 16
                s.append("0");
            }
            s.append(Integer.toString(d, 16));
        }
        return s.toString();
    }
}
public static final String HASH_ALGORITHM = "SHA1";
//  public static final String HASH_ALGORITHM = "MD5";
...
MessageDigest md = MessageDigest.getInstance(HASH_ALGORITHM);
のように、MessageDigest オブジェクトのインスタンス取得のときにハッシュアルゴリズムを指定することができる。また、
byte[] digest = md.digest();
だけでは、byte[] しか返ってこないので、ダイジェスト値を文字列として扱いたい場合はこのJava のバイト列を文字列に変換する必要がある。
Posted on 2006-03-17 by yas |

PHP が使われている有名なシステム・ソフト

PHP が使われているシステムやソフトは枚挙にいとまがない。ここではその事例を挙げてみよう (随時更新予定、コメントに 「こんなのがあるよ」 といただけると助かります!)。
PHP が使われているシステムやソフトは枚挙にいとまがない。ここではその事例を挙げてみよう (随時更新予定、コメントに 「こんなのがあるよ」 といただけると助かります!)。
Posted on 2006-03-14 by yas |

Java が使われている有名なシステム・ソフト

Java が使われているシステムやソフトは枚挙にいとまがない。ここではその事例を挙げてみよう。
Java が使われているシステムやソフトは枚挙にいとまがない。ここではその事例を挙げてみよう。
Posted on 2006-03-11 by yas |