開発環境
Android SDKのダウンロードとインストール。
ダウンロードはhttp://developer.android.com/intl/ja/index.html から。

Android SDK ダウンロードサイト
最新版を落としておけば過去のバージョンの環境も入るので安心。
- Windows
- MacOSX(intel)
- Linux(i386)
対応する環境のパッケージをダウンロードする。Windowsならばandroid-sdk_r06-windows.zip
ダウンロード後zipファイルを解凍して、任意の場所に配置する。ちなみにC:\に置きました。
Java開発環境
JDKのインストールが必要。今回はJDK6をインストール。実行環境のJREだけではだめ。
ダウンロードはhttp://java.sun.com/javase/downloads/index.jspから。

JDKダウンロードサイト
今回はJDK 6 Update 21のJDKを指定。
ダウンロード後インストール。
Eclipse
開発用のIDEはEclipseを使用する。
ダウンロードはhttp://www.eclipse.org/downloads/ から。

Eclipseダウンロード
最新版のHeliosではなく Older Versionsのリンクから Eclipse Galileo SR2 Packeges(v3.5.2)を使用した。

Eclipse 過去バージョン
最新版はAndroid SDKとの問題ありとどこかで見たような??
日本語化は Pleades 1.3.1を使用。http://sourceforge.jp/projects/mergedoc/releases/ から。

Pleiades1_3_1ダウンロード
下のほうにpleiades_1.3.1.zipがあるのでダウンロード。zipを解凍してできたフォルダの中にある feautures pluginsの中身をEclipseの
同名のフォルダの中にコピーする。これだけでは日本語化できない。
Eclipseのeclipse.iniファイルを編集する。
-javaagent:plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
-clean
2行をiniファイルの最後に追加して上書き保存。この後Eclipseを起動すると日本語化される。
WordPressで便利なアクセス解析ツールのWP-Slimstat-Exの最新版にアップデートしました。
本体のダウンロードはこちらからどうぞ。
wp-slimstat-ex-plugin.zip(1.2 MB)
wp-slimstat-ex-pins.zip(184.9 KB)
の二つのファイルをダウンロードして、まずwp-slimstat-exのフォルダを /wp-content/plugins/ にアップロードします。
つぎに解凍して出来た pins フォルダの中身を /wp-content/plugins/wp-slimstat-ex/pins/ にアップロードします。
あとはプラグインの管理画面で wp-slimstat-Ex を有効化します。そのあと、wp-slimstat-Exの管理画面でpinsのなかの
必要な機能を有効化してください。
すでに古いバージョンを使っている場合は、データベースが異なる場合があるので以前のデータを消す必要があるかもしれません。
日本語化は「よんよん」さんのサイトで、いつも最新版を提供していただけるので助かっています。
poエディタ使って、自分で翻訳してもいいんですが、これ結構大変な作業なんですよね。
よんよんさんに感謝しつつ こちら から日本語化ファイルをダウンロードして解凍。
/wp-content/plugins/wp-slimstat-ex/lang/ にアップロードして完了です。
pinsのなかには Bad behavior など 別のプラグインが必要なものもあります。
プラグインの新規追加から検索してインストールしましょう。マップ情報を使うGeoslimstatはグーグルマップAPIのキーも必要になります。
これで、また快適なアクセス解析が出来ます。でも、たいしてアクセス無いんですけどね。ほとんどbotだったりしてww
Xperia購入しました。
Android OS 1.6なので、躊躇していたのですが、現在国内で一番売れているとしたら、やはりXperiaなのかなと。
10月ごろにはOSアップデートで2.1にはなるようです。
はやくFroyoになってほしいのですが、とりあえず勉強のため作成したソフトが動作する実機がほしかったので。
購入費用はSoftBankのように端末代金の割戻しがないので、少しかかります。
端末は24回分割としました。月々1600円程度。ポイントがあまっていたので、月々の端末代金に充当するようにしました。
しばらくは端末代金がタダです。頭金は故障時に修理代が安くなるサービスに入ると無料にしてくれました。
しかし、このサービス月々315円で、最大5千円の支払で故障時新品と交換してくれるのですが、ペイできるか微妙なところです。
まずは、Xperiaと今まで使用していたiPhone 3GSとの比較をしてみたいと思います。とりあえず使用して気づいたこと。
1.タッチスクリーンの反応
これは、Android勉強会で色々な機種のタッチスクリーン反応を機械的に調査した結果を見ましたが、まさにそのとおり。iPhoneの反応がすばらしすぎる気がします。iPhoneに慣れているとXperiaでは誤動作頻発です。
まずスクロールがタッチになってしまう現象があります。Twitterクライアントを使っていると、スクロールを使いまくるのですがこれがタッチと誤判断されて、すぐに別画面が開いてしまいます。XperiaのTVCFでスクロールしている画面がありますが、タッチでは何も動作しない状況でやっているんではないかと疑ってしまいますね。
感覚的には画面にタッチしたらしばらくまって指をスライドしないといけない感じです。または、しっかり指を押し付けてからうんこらしょっとスクロールかな。iPhoneだと、あまり考えずに軽くスライドでOK何ですけどね。これはソフトの改良で直るものではない気がします。
スクロールだけでなく、タッチ位置の判定も微妙にずれる感があります。ソフトウェアキーボードで英字などをタッチする場合iPhoneよりミスタッチが増えました。まあiPhoneの判定がすごいのですが。このあたりはハード、ソフト両面で今後の改良が待たれます。
こういうUIの部分は、軽く見てはいけないと思います。ハードを使い始めて最初の印象になりますから、いかに優れたソフトが有ったとしてもUIのせいで使う気をなくす場合が多いと思います。
pearのNet_UserAgent_Mobileを使用して、携帯とPCのアクセスを振り分ける目論見でしたが、携帯用のページ作成には振り分けだけでなくいろいろな機能が必要だと勉強すればするほど理解しました。(某辞任表明首相風)
そういうわけでcakePHPにも利用しやすいKtaiライブラリの導入を決めました。
ECWorks Blogからダウンロードできます。
インストールと言うか、ダウンロードしたファイルを解凍してcakePHPの対象フォルダにコピーするだけです。
テンプのreadmeをよく読めば設置は難しくないですね。
ただ、今回は携帯からのアクセスとPCからのアクセスで異なるViewを表示したいことと、アドレスを分けたくなかったので
ちょっと工夫が必要でした。
/app/controllersにコピーしたAppControllerの中に必要な設定をコピーします。
ここで、コントローラ内にbeforeRender()を追加します。
function beforeRender() {
parent::beforeRender();
if (
in_array('Ktai', $this->components) &&
$this->Ktai->is_ktai()
) {
// Viewのパスへの書き換え
$view_paths = App::path('views');
$result = array_search(ROOT.DS.APP_DIR.DS.'views'.DS, $view_paths);
if ($result !== false) {
$view_paths[$result] = ROOT.DS.APP_DIR.DS.'views_mobile'.DS;
}
App::build(array('views' => $view_paths), true);
}
}
同じクラス内で
var $components = array('Ktai');
としているのでif文のコンポーネンツ判断はいらないですね。
参考にしたサイトの記述ではここのif文がarray_key_existsになってて動かなかったのですが
$componentsは[0]->”Ktai”のようになっていてKeyサーチではtrueになりませんでした。
ここでちょっとはまりました。in_arrayならうまく動作しました。
この記述でPCからなら/app/views/以下のレイアウトとテンプレートを携帯からなら
/app/views_mobile/を見に行ってくれます。
/app以下のAppControllerを変更しただけなので、トップページの場合はこのAppControllerを継承した
PagesControllerを/app/controllers/に作成します。
あとは/app/views_mobileとそれ以下の必要なフォルダを作成してdefault.ctp home.ctpなどを携帯専用として作成すればOKです。
とりあえずiMode HTMLシュミレータではうまく動作しました。
さてさて、トップページを表示させることは出来たのですが、基本的にトップページが他のページと少し違うレイアウトだったり、ただのインデックスページってこともありますから静的なページを表示することもありえます。
MVCでデータベースに紐づいたページに必ずなるとは限りませんよね。一部新しいお知らせとかが入るくらいで。
今回構築しているシステムでは、トップページはPC用はシステムの案内としようか、それとも直接サービスが使えるようにするか迷ってます。そんな感じなので、まずルーティングについて再確認しておこうと思います。
最初の読込み
http://localhost/ktai/というurlでアクセスしたら、/index.phpをまず読み込みますが、ここに他のソースが読込まれます。
require APP_DIR . DS . WEBROOT_DIR . DS . 'index.php';
appディレクトリのwebrootディレクトリですから、/app/webroot/index.phpを読み込みます。
このなかで/cake/bootstrap.phpをインクルードしている。
エントリポイントについてはここの説明がよくわかる。
このbootstrap.phpからConfigure クラスをインスタンス化している。このときに/app/config/core.phpと/app/config/bootstrap.phpが呼ばれている。
ああ、おんなじ名前が多くて混乱する。
そのあと/cake/dispacher.phpを読んでいる。ここでbaseurlなどを決めているようだ。
これに/app/config/route.phpが絡んでいる。
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
pagesコントローラのディスプレイactionでhomeを呼べとなっている。
やっと、ここまで来た。
これはデフォルトでは/cake/libs/controller/pages_controller.phpのなかのdisplayメソッドが使われる。
このように固定されていると中々不自由です。
/app/config/route.phpを書き換えてcontrollerやaction などを書き換える方法もあります。
また呼ばれるテンプレートのhome.ctpの中でレイアウト変更も出来ますね。
home.ctp
<?php
$this->layout = "main";
$this->pageTitle = "携帯用タイトル";
?>
/app/views/layoutsにmain.ctpを作っておけばOKです。home.ctpでレイアウトだけ指定して何も書かなければmain.ctpの静的なページになりますね。
認証などでbeforeFilterを加えたりする場合は、/cake/libsにあるpages_controller.phpを
/app/controller/にコピーして書き換えると自由に出来ます。