素粒子の世界で自由に生きる -13ページ目

素粒子の世界で自由に生きる

iphoneアプリのレビューをしていたんですが・・
だんだんandroidアプリ開発の話になってきました。。
さらに、素粒子の話になってきました笑
自分が読み返したくなるブログ記事を書いております♪
ほぼ自己満ですが、ぜひお楽しみください!

すっかりお久しぶりな更新です。
本業ではもっぱらPHPを触ることになっていて、Androidは研修で少し教えたりする程度になっています。
iPhoneアプリも開発できるようになったのでこれからはそちらも遣って行こうかなーと。

そして、今日はPHPのフレームワークである
FuelPHPについての設定メモです。
設定系は意外と忘れてしまうのと、解説をしてみた方が自分の理解が深まるので書いてみました。

なんだかごちゃごちゃと長くなったので、纏めたのを最初にのせておきます。

1. fuelphp,smartyをダウンロードしてfuel/app/vendor/Smarty/libsを作成する。
2. fuel/app/config/config.phpを編集してalways_loadにparserを加える。
3. fuel/app/views配下にsmartyテンプレートを作成する。
4. fuel/app/classes/controller配下のControllerへView_Smartyを使用して表示するテンプレートを指定する。



fuelphpの初期設定メモ
開発環境
Mac OSX 10..7.5
Eclipse php 3.7 Indigo
PHP Version 5.4.10
Apache 2.2.23
MAMP 2.1.2
ver FuelPHP 1.5.3 2013/3/14 最新
ver smarty  3.1.13 2013/3/14 最新

fuelphp
 解凍後、/publicへアクセスするとサンプルのwelcomeページが表示される。
 初期設定にてルートがwelcomeコントローラーへ設定されている。
 
 まずは、welcomeのままsmartyが使えるように設定する。
 /fuel/app/vendorへ/smarty-3.1.13/libsをコピーする。
 
 /fuel/app/config/config.phpの編集
 L249
  'always_load'  => array(
 L262-4
  'packages'  => array(
//'orm',
),
L300
),

上記コメントアウトを外す。
/fuel/app/config/config.phpにて初期設定がコメントアウトされているので、
コメントアウトを解除するだけで使えるようになるという便利さがある。
しかし、とじ括弧をコメントアウト解除し忘れるという罠に引っかかることが・・・

コメントアウトを解除したこちらの部分
  'packages'  => array(
//'orm',
),
これに、parserを追加します。
  'packages'  => array(
//'orm',
'parser',
),
今回は、ormは使用しないのでそのまま。
そのうちconfigをもう少し読み進めておく必要がありますが、今はまだ。。


とりあえず、config.phpの設定はここまででOK
次は拡張子の設定とテンプレートの作成・表示ですね。

まず、拡張子の設定。デフォルトが.smartyとなっているため慣れ親しんだ.tplへ変更します。
そのままでよい方は触らない方向で。

/fuel/packages/parser/classes/view/smarty.phpを編集します。
L42
  public $extension = 'smarty';
ここで拡張しがsmartyに設定されているため、tplへ変更します。
public $extension = 'tpl';
これで、tplファイルがsmartyテンプレートとして読み込まれるようになりました。

次はテンプレートの作成です。
fuelphpではfuel/app/views配下へ
コントローラー名のディレクトリを作成し、view用のファイルを追加していきます。
ってどのフレームワークも大体同じなのかな。
今回は、welcomeをそのまま使用しているため、下記へsmarty_test.tplを作成します。

fuel/app/views/welcome/smarty_test.tpl

中身はこれだけ。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>{$title}</title>
</head>
<body>
{$body}
</body>
</html>


受け取る変数は、$title, $body の二つですね。
では、このテンプレートを表示するためのロジックをController_Welcomeに追加します。
Controller_Welcomeは下記ですね。
/fuel/app/classes/controller/welcome.php

/**
* Smarty表示テスト
* Smartyへのパラメーターは連想配列で渡す
* 連想配列のkeyにてsmarty側で変数が取得できる
* @return \Fuel\Core\Response
*/
public function action_smartytest()
{
$data = array('title' => 'SmartyTest',
'body' => '本文');
return Response::forge(View_Smarty::forge('welcome/smarty_test', $data));
}
さて、上記をController_Welcomeへ追記したら、
/welcome/smartytest
へアクセスしてみてください。

私の場合は、MAMP環境にて開発を行っているため
http://localhost/welcome/smartytest
となります。
無事に、設定した$bodyが表示されていれば成功となります。

では、手順を簡単にまとめておきます。

1. fuelphp,smartyをダウンロードしてfuel/app/vendor/Smarty/libsを作成する。
2. fuel/app/config/config.phpを編集してalways_loadにparserを加える。
3. fuel/app/views配下にsmartyテンプレートを作成する。
4. fuel/app/classes/controller配下のControllerへView_Smartyを使用して表示するテンプレートを指定する。

たったのこれだけなんですが、意外とはまってしまいました。
備忘をかねてメモです。
誰かのお役に立てますように。。。
 
 
 

公開中のアプリにグラフ機能を取り入れたいと思い調べる。

いくつか、グラフライブラリがあるようだが、使い方があまり出てこない。。


afreechartが一番わかりやすそうなので使ってみることにする。



afreechartを使うとこのように様々なグラフを作成することが出来るらしい。


http://afreechart.googlecode.com/svn/doc/screenshot/index.html



早速使ってみよう。


まずはここから

http://code.google.com/p/afreechart/downloads/list


afreechart-0.0.3.jar

をダウンロードする。(2011年11月16日現在 0.0.3が最新でした)



んー。使い方がわかんないのでサンプルが見たいな。

ということで、先ほどのページ から


afreechart-0.0.3.zip

をダウンロードする。

解凍すると

afreechart

afreechart_sample


という2つのファイルがあるのでこれを両方インポートする。



このときに、どうやらR.javaがけんかしちゃうようで、消してあげる。


afreechartをインポート

自動ビルド オフ

R.java 削除


afreechart_sampleをインポート

自動ビルド オン


でとりあえずOKでした。


とりあえずサンプルを実機で幾つか動かしてみる。

なかなかいいではないですか。

■ x86 Android 開発設定 ■

1. Virtual Boxのインストール

http://www.virtualbox.org/wiki/Downloads

VirtualBox 4.0.10 for Windows hosts をダウンロード&インストール


Javaを使った(eclipseで)Androidアプリの開発を薦めるブログ-virtualBox



2. x86 アンドロイドのダウンロード

http://www.android-x86.org/download

android-x86-2.2-generic.iso をダウンロード



Javaを使った(eclipseで)Androidアプリの開発を薦めるブログ-androidiso


viewをクリックすると下の画面がでてきます

Javaを使った(eclipseで)Androidアプリの開発を薦めるブログ-androidiso2


ダイアログがでてくるのでOKを押すとダウンロードできます。
Javaを使った(eclipseで)Androidアプリの開発を薦めるブログ-androidiso3




3. Virtual Boxにx86 Android 仮想マシンを作成する。

※ HDDは可変で4GB以上、SDカードを作成しないとアプリのインストールができないので注意




4. Virtual Box の ネットワーク設定を変更 (デバッグするため)

このページ参照
http://blog.goo.ne.jp/muranoya/e/1803fae6922087982dc914be084f96f7

※ この設定を行わないと x86からネットは見れるが、Eclipseから接続できない
または、Eclipseからは接続できるが、ネットが参照できない状態になる。

5. adbコマンドにパスを通す (任意)

%android-sdk-windows%\platform-tools にパスを通す

この辺参照
http://pocketstudio.jp/win/xp/path.html

作成したVirtual Boxの x86 Android を起動後接続する

コマンドプロンプト

adb connect xxx.xxx.xxx.xxx:5555 で接続

adb devices で表示されることを確認


6. Eclipseからの起動

実行の構成から設定を変更する。
ターゲットタブの Deployment Target Selection Modeを手操作に変更

実行を行い、一覧に表示されているはずなので選択して起動する。

アプリが表示されれば成功!!

※ うまくいかない場合は、Eclipseのウィンドウ → ビューの表示 → その他
Android → Logcatを表示してエラーの原因を探す。


7. 日本語入力設定

・UIの日本語化

Setting から Language&Keybord で Japaneseを選択

・日本語の入力

x86 Android用 simeji をインストール
http://www.adamrocker.com/blog/286/simeji-for-x86.html

Androidのブラウザから開く(Googleで android x86 simeji と検索)

設定 → 言語とキーボードで Simejiを有効にする。

インストール後、テキスト入力で長押しすると入力方法の
編集画面が表示されるのでSimejiを選択する。

8. 開発用設定

・設定 → アプリケーション → 提供元不明のアプリにチェック

・設定 → 開発 → スリープモードにしないにチェック



さて、このあたりで一度Androidアプリを開発するに当たって日々参考にしているサイト様達をまとめてみようと思います。
ほとんどが、検索でぱっと出てくるサイト様なんで、ご存知かとは思います。


Android Developers
いわずと知れた、本家のサイト。
ここを見ないと始まらないですよね。
日本語もどんどん対応してきて読みやすくなってきています。


ソフトウェア技術ドキュメントを勝手に翻訳
本家のサイトを日本語に翻訳してくれているサイト様です。
チュートリアルが日本語になっているのはうれしかったですね。
チュートリアルでかなり勉強させていただきました。


Y.A.M の 雑記帳
「Android Layout CookBook」という本を出されている方のサイトです。
レイアウト本を出されているだけあって、レイアウトに困ったりアイディアが欲しいときに見るとハマリます。

愚鈍人
サンプルを豊富に使って使い方を解説してくれているので、かなりわかりやすいです。
「謎めいたインテント」や「バラエティに富んだメニューを」など必見です。


主に参考に見させていただいているのはこのあたりです。
もちろん、個々にググって見つかる参考にしているサイト様は山ほどありますが。
この4サイトを押さえておくと開発効率も上がるんじゃないかと思います。


さて、ボタンのクリックイベントなのですが、
やり方が色々ありすぎてどの方法でやるのがいいのやら。。。
とりあえず、2つのやり方を比べてみよう。


その前に・・・
私事ですが。
初アプリをマーケットで公開しました。
以前に紹介したメモ帳アプリです。

開発者ページも簡単に用意したのでよかったら見てやってください。

アンドロイドマーケットはこちらです。



それでは、クリックイベントの話。

まずは、このようにボタンを作成して.setOnClickする方法。

自分は、これが一番わかりやすいので今のところコレでやっています。

((Button) findViewById(R.id.listViewBtn))
.setOnClickListener(menuBarListener);
((Button) findViewById(R.id.saveMemoBtn))
.setOnClickListener(menuBarListener);

OnClickListener menuBarListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case (R.id.saveMemoBtn):
setResult(RESULT_OK);
finish();
break;
case (R.id.listViewBtn):
Intent i = new Intent(NoteEdit.this, NoteListMain.class);
// 選択されたListViewのアイテムのidを取得して追加する
startActivity(i);
finish();
break;

}
}


次の方法は、レイアウトでクリックイベントの指定をして呼び出すメソッドを書く方法。

ボタンやテキストビューなどのプロパティを見ると、
OnClickというプロパティがあるのがわかる。

ここで、呼び出したいメソッドを指定することで
いちいちこれを書かなくてもよくなる。

.setOnClickListener(menuBarListener);

OnClickListenerを実装する必要も無いので、
ソースもすっきりする。


だけど、なんかわかりにくくなるような気がするんだよなぁ。
プロパティで全部制御していくと。

途中でWidgetTypeを変えたくなったときとか、、。
ソースとプロパティをあわせて見ないと追っかけれないし。

うーん。
まだまだここは勉強が必要です。

意見があれば教えてください。