続・Think! Think! Think!

世の中について考えてみる。後、webサイドの知識を書いています。※時々ネタあり。

codeigniterのガラケー対応 & ガラケーの行方について考えてみた。

過去記事です。消えたデータの一部が復旧?できたので。

ガラケーとは

ガラケーガラケーと良く聞くがガラケーって何よ!?と皆さん思いませんでしたでしょうか?

知っている人はおなじみですが、

正規名称は、フィーチャーフォンです。

フューチャーではないのでご注意ください。

スマートフォンの次は、まさにフューチャーフォンがでそうだが。。。

そして、ガラケーというのは、日本独自に発展した機能がついているから、 ガラパゴス携帯 = ガラケーと呼ばれるようになりました!

主に、赤外線、電子マネーワンセグなどが日本独自の進化と言えるみたいですね。

本当に独自すぎて、世界で売れなかったのが残念ですね。。。

一部のユーザには多機能は喜ばれるが、世界規模にもなると、どれだけシンプルかが、かなり重要になってくる。

simple is the best!!

ガラケー対策

今回対応させて頂いている案件で、ま・さ・かの!!

ガラケー対応がありました。

大きく分けて3つ対策する必要があります。

  1. セッション管理(cookie)
  2. 文字コード
  3. SSL(証明書)

セッション管理

なななななんとガラケーは、cookieが使えない機種があります。

cookieが使えない => session_idが保持できない => sessionが使えない…

oh! my! session!

ログイン処理や、カート機能や、一連の動作で必要な情報が保持できません。

では、どうするか?

  • あきらめる
  • あきらめる
  • あきらめる
  • ステートレスで実装する
  • あきらめる
  • あきらめる
  • session_idをcookie以外に保持させる
  • あきらめる
  • がんばる?

まぁーおすすめはあきらめるです。

後ほど普及率など含めて、数字出しますが、アプリでこれだけ成功している事例があるってことは、ガラケー所持者見捨てても、問題ないと言っているようなもの。

しかし、ガラケーしか見れない、ガラケーだけに特化したすごいサイトを作ったら、

2台もちしている裕福層や、使いやすさにこだわった人たちなど、熱量の高い人たちへ面白いアプローチが出来るかもしれない。

ここで言いたいのは、PCもスマフォもモバイルも!というのは、贅沢だ!

いや、正直いうと実装、テストが辛い。。。ということ。

ユニットテスト、E2Eテストの自動化まで作っている時間があれば大歓迎だが、なかなか難しい。

実装はともかく、テストは単純に考えてPCだけに比べて3倍だ。。。

でも、ターゲット層の関係もあり、対応が必要こともあります。

で、今回はお決まりのcookieが使えないガラケーのみsession_idをパラメータで保持するよう対応しました。

単純に

  • sessionを読み込むときに、URLのパラメータからsession_idを取得する
  • sessionの書き込み時に、新しいsession_idを生成して保存 & URLにセットする
  • 遷移時にURLのsession_idを保持するようにする

対応になる。

セキュリティ上あまりよくはないが、毎回新しくsession_idを生成していて、一時的サイトでもあるので、問題はないと思う。

codeigniterって、ごりごりいじれるから怖いけど、使いやすい!!

コードもわかりやすいから、フレームワークの勉強には適してるかも。

ドキュメントもしっかりしているから、初めて触ったが、問題なくいけた。

文字コード

これがかなりハマった。。。

通常は、

ともに、UTF8の対応をしている。

しかし、ガラケーは基本 SJIS !!!!

そして、PCなどと共存でもあるので、

  • DB = UTF8
  • php = UTF8
  • HTML = PC: UTF8, MB: SJIS

となる。

ここまでもOK。

後何あるの?って思うのは、普通ですよね!

勉強不足でした。。。

form(post)にも文字コードの指定ができるらしいです。

formのattributeのaccept-charsetってやつですね。

これによって、post時に自動でutf8に変換してくれるようです。

codeigniterは、defaultのcharsetをutf8にして、formヘルパーを使っていると、自動的に付与してくれるようです。

よしできたー!!!

と思うのが普通です。

何とauだけ、文字化けしました。。。

auの機種はformのaccept-charsetでutf8に変換されていないようでした。。。

色々調べて行き着いた結果、問題はcodeigniterでした。。。

サニタイズするときに、UTF8前提で行っているので、SJISのまま処理されていた、auの文字は見事に意味不明な文字列になって出力されていました。。。

これだ時間かけて、コードの修正は3行!!

まぁエンジニアあるあるですね。

ちなみに、コードははれないのですが、

coreの中のUtf8.phpサニタイズしているとこで、UTF8に変換してやればOKです。

SSL

これはまだ確定ではないのですが、

元々作成した証明書がガラケー対応でない可能性が大!

そういえば・・・

ある案件でハマっている人いたなーと。

調べてみたら、結構対応していないSSLが多いみたい。

SSLのランクによっても違うみたいだし。

ここは資料がたくさんあるので、証明書とるときに対象の証明書が対応しているか確認すれば良いと思います。

がぁーと書いてきて、疲れたので、残りはまたの機会にします!

スマフォの発展の速さはすごいから、そこについて調べて見たいと思う。