11/26/2012

Android Databaseについての覚書

Androidのandroid.databaseサブパッケージではSQLite向きのクラスは提供されていない。さらにそのサブパッケージである、android.database.sqliteに実装がある。


Classes

SQLiteClosableAn object created from a SQLiteDatabase that can be closed. 
SQLiteCursorA Cursor implementation that exposes results from a query on a SQLiteDatabase
SQLiteDatabaseExposes methods to manage a SQLite database. 
SQLiteOpenHelperA helper class to manage database creation and version management. 
SQLiteProgramA base class for compiled SQLite programs. 
SQLiteQueryRepresents a query that reads the resulting rows into a SQLiteQuery
SQLiteQueryBuilderThis is a convience class that helps build SQL queries to be sent to SQLiteDatabase objects. 
SQLiteStatementRepresents a statement that can be executed against a database. 

上記の表はandroid.database.sqliteのパッケージに登録されているClassである。これらのクラスでDatabaseを取り扱うときに利用するのは、SQLiteOpenHelperである。このクラスをサブクラス化して利用する。単純な実装としてはonCreate、onUpdateを利用することが必要とされているされてる。

これに拡張的なメソッド、例えばdeleteに対して、Androidでは_idのフィールドを必ずもつことから


  • deleteById(String tableName, long id)
のような実装を追加してやることで削除のためのSQLを書くことが減るだろう。

また、利用する際の注意点としてはinsertメソッドの戻り値は、_idもしくは-1が戻ること。これに対して、delete,updateなどのメソッドでは「変更された列数」もしくは-1が戻る。この違いは注意が必要である。

追記
Androidアプリで使用するSQLiteのテーブル作成時の注意点
こちらのサイトで_idが必要なこととその後のInsertでの利用について説明がされています。

4/06/2012

iPhone開発の学習記録は有益なコンテンツになるのか

どうもJudaです。
iPhone開発の学習記録は有益なコンテンツになるのか?
有益なコンテンツというのが、後続の開発者を増やすという意味ならばアリなのかもしれない。

そもそも学習によって得られた経験を凝縮して記録することはどういう文脈で肯定されるのか、また否定されるのか。
否定される文脈は、知識の本質が秘密であることから考えると容易に想像できる。
採集された知識がそのまま力として行使可能な状態としてポテンシャルに置かれることを考えると、同様に知識をもつものが増えるとその価値が下がるというか普遍化してポテンシャルがなくなる。それは優位性を消す行為であるから、否定される。
では肯定される文脈はどうなるか。
採集された知識を他者と共有することで場を形成し、より深い知識を取得する機会を得るようにする。他者に共有される場が広がるほどにそこに再度情報を上げてくる他者が存在すれば、その循環はより深化する。つまり正の循環をもたらすトリガとなる。だから情報を共有する行為は肯定される。

肯定する文脈を採用するとして、如何なる情報が場にとって有益なのか?如何なるコンテンツも有益なのか?後続の開発者にとって有益となる情報が妥当であると考える。その時に有益だと思われるのは、

  • 特定の問題を解決するための手段
であると思われる。これに関してはどれぐらいの解決手順という期間ないしは規模を変数としてもつだろう。
  1. 単一問題の解決
  2. 一定条件下での問題の解決
  3. ソリューションの解決
規模のレベルは上記の3種で大別されるだろう。
コンテンツの有益か否かの問題は書籍を凡例に取れば理解しやすい。

Adapter+Observerについて

どうもJudaです。
Androidに関するあれこれについて一部覚書をしておこうと思う。

  • Adapterを使う場合にはBaseAdapterやArrayAdapterにしておく
  • AdapterViewを継承してCustomWidgetを作る場合にはかなり実装すべき項目が多いので注意が必要。
  • AdapterViewの継承クラスで実装すべきはViewの再利用、ViewTypeの考慮、ViewSelectorの扱い、Stateの変更、個別の子要素に対するイベントハンドリング、そしてスクロール処理である。
  • AdapterViewで生成するViewに対してViewHolderの役割をもつクラスを用意すると良い。
  • またこのクラスをObserverインターフェイスをもつようにすると更新の処理をより細かく制御できる。
  • Drawableの継承で使いやすいのはShapeDrawableであり、細かな描画の実装を行うならDrawableにまとめるほうがイイ。

1/15/2012

幸せな未来は「ゲーム」が創る 備忘録その1

どうもJudaです。
『REALITY IS BROKEN』の邦訳を読んでいる中で特筆すべき記述があったので、備忘録。

  • ひとつは、ゲーマーはきわめて貴重な―そしてほとんど活用されていない―参加容量提供源だということです。(12行 p. 329 2011年11月15日 幸せな未来は「ゲーム」が創る 早川書房)
  • ふたつ目は、クラウドソーシングプロジェクトはー本当に意欲的な目標を達成できるだけの参加容量を集められる見込みが多少なりともある場合にはー優れたゲームが与える報酬と同じような内発的報酬を与えられるように、意図的にデザインする必要があるということです。(16行 p. 329 2011年11月15日 幸せな未来は「ゲーム」が創る 早川書房)
如何にしてクラウドソーシングをして、少ない人数では達成できないように思えるプロジェクトを達成するのかということに言及している。第三部はそれまでとは一転して発展的な考察が多いので、面白い。

12/26/2011

ウォークスルーまとめ

どうもJudaです。
レビューに引き続き、ウォークスルーについてまとめます。
第8回 ウォークスルーとインスペクション--設計・開発の早期に欠陥を発見・除去し品質を作り込む
点検対象物としては,システムのDFD(Data Flow Diagram),データの正規化結果,E-R(Entity-Relationship)図,データ・ディクショナリ,画面・帳票仕様や操作仕様などの 外部入出力仕様,データベース仕様,モジュール構造や処理機能記述,各種の作業手順書などがある。

「ウォークスルー」を成功させるコツ ――ソフトウェア工学のテクニックがHDL設計を支援 part II
一般にレビューは契約ないしは,標準として定められた正式な認証行為である.これに対して,ウォークスルーはよりインフォーマルな活動を指しており,レビューにはない利点をもっている.

他人の設計ドキュメントやコードを読むのであるから,集中力が必要である.したがってウォークスルー自体は短時間に区切って進めるべきである.集中はする が,時間としては「あっさり」すませるべきだ.前述の『ソフトウェアの構造化ウォークスルー』では,ウォークスルーの時間は30分以内が望ましいとしてい る.

[1]設計された全体の構造
[2]重要で困難な設計箇所
[3]複雑なロジックを実現しているコード







総括すると、
  • 短時間で済ませる。
  • 長時間やることは不適切。例えば30分ぐらいですべてを確認する。
  • 問題全体の構造を理解できるような資料を可視化することが重要。
  • 困難な部分に焦点を当てる。
  • 問題点を対象としてウォークスルーを行う。