最近サーバーサイドのアプリも開発したいと思い、Ruby on Railsの学習を始めました。
将来的にはandroid端末とサーバーで連携したアプリを作りたいと思っています。


「railsによるアジャイルWebアプリケーション開発」の本を読みながら学習しているのですが、早速色々はまったので、自分用にメモしようと思います。


p59の設定テストで、RailsがMySQLに接続出来なかった。エラーログ


$ rake db:create RAILS_ENV='development'
(in /Users/username/rubys/work/depot)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
no such file to load -- mysql

(See full trace by running task with --trace)

今入れているRails2.2ではドライバが外されているみたいなので、ドライバをインストールしなければいけないらしい。

色々調べてよく分からなかったけど。

ここで説明している ドライバのインストール
http://d.hatena.ne.jp/sugilog/20090729

sudo port install rb-dbi +dbd_mysql

と打ったら解決しました。ブログを書いて下さった方には感謝、感謝です。




アプリを作るとき、カスタムリストを作る機会が多いいと思いますが、そのときリスト内に、ボタンなどを配置したときリスト自体をタップすることが出来なくなりました。そのとき自分が解決した対処方を書きます。


$isaoのブログ


例えば自分が作ったアプリはこのようにリスト内にチェックボックスや、ボタンが配置されています。
リスト作るAdapterクラスにリストのレイアウトをただインフレートすると、レイアウトに配置しているボタンなどにフォーカスがいき、リスト自体をタップすることが出来ませんでした。

そこで、下記のように(自分のアプリで使用したリスト用レイアウトを抜粋)、ボタンなどのウィジェットにfocusable要素をfalseにするとリストにフォーカスがいって、リストをタップすることが出来ました。
とりあえず、全てのウィジェットにfocusable要素を追加しました。



<?xml version="1.0" encoding="utf-8"? >
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"

>
<!-- android:focusable="false" がないとリストのクリックイベントが発生しない -->
<TextView
android:id="@+id/list_set_start_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13pt"
android:textColor="#000000"
android:layout_alignParentLeft="true"
android:focusable="false"
/>
<TextView
android:id="@+id/list_run_day_or_week_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="6pt"
android:layout_below="@id/list_set_start_time"
android:layout_alignParentLeft="true"
android:textColor="#000000"
android:layout_marginBottom="20dp"
android:focusable="false"
/>
<TextView
android:id="@+id/list_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13pt"
android:text=" ~ "
android:textColor="#000000"
android:layout_toRightOf="@id/list_set_start_time"
android:focusable="false"
/>
<TextView
android:id="@+id/list_set_end_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="13pt"
android:layout_toRightOf="@id/list_txt"
android:textColor="#000000"
android:focusable="false"
/>
<CheckBox
android:id="@+id/list_run_check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:focusable="false"
/>
<Button
android:id="@+id/list_location_check_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/gps_location_btn"
android:layout_toLeftOf="@id/list_run_check_box"
android:focusable="false"
/>
</RelativeLayout>

こんにちは。外出するときなど、持ち物を確認するアプリを作ってみました。

https://market.android.com/details?id=jp.isao.lost_property_prevention



isaoのブログ


isaoのブログ


isaoのブログ



このアプリは、予め設定しておいた時間にGPSが起動し、設定しておいた場所から離れると、バイブと音が鳴ってユーザに知らせるアプリです。


例えば学生さんですと、曜日ごとに持ち歩く教科書などが変わると思いますので、曜日ごとの持ち物をこのアプリにセットしておきます。そして出かける時間になったら、通知が出ているので持ち物をチェックすればGPSは停止します。もし通知に気づかずに家を出ると(設定した距離以上離れると)バイブと音でユーザにお知らせします。



今回が初めてのアプリ開発ということあって、使って下さる人の端末でちゃんと動作するのだろうか、など正直不安でした。
もちろん実機デバックなど行い、正常に動作すること(今のところ)を確認しました。
自分の検証した実機はHTC社製のDesire ZでOSはAndroid2.3.3です。


もし不具合などありましたらお知らせして下さると嬉しいです。またプログラム的な不具合は対処できると思いますが、端末自体の不具合(例えばもしかしたら、Android2.3でのGPSのON/OFFの切り替えはできないかもしれません)は対処できないかもしれませんので、予めご了承下さい。