ラベル Objective-c の投稿を表示しています。 すべての投稿を表示
ラベル Objective-c の投稿を表示しています。 すべての投稿を表示

2011年1月30日日曜日

MySQL感覚でSQLiteを管理する

iPhone/iPad開発である程度のデータを扱う必要が出来た場合、真っ先にSQLiteの導入を考えたほうが良い。ややプログラミングの上での操作性に難はあるが、高速にデータを扱えるメリットを考えれば恩恵は非常に大きい。
以下はMySQLに慣れた人向けに、導入についてと、SQLiteデータベースを操作する上でのTipsなどを紹介。

導入

  • c/fe
    ここを見ればオールOK。iPhone/iPadへの組み込みから、プログラムからの操作まで教えてくれる。
  • taichino.com
    さらに詳しい内容。例も分かりやすかったのでひと通りここで紹介している順序で実装をやってみるといいかもしれない。
  • Command Line Shell For SQLite
    コマンドラインリファレンスが読みたい場合はこちら。


MySQL経験者向けTips

  • コンソールからSQLiteデータベースへの接続(Mac)
    (MySQL) $ mysql -u foo -p datase
    (SQLite) $ sqlite3 database_file.db
    DBのファイル名を引数にsqlite3コマンドを叩くとMySQLの接続コマンドと同様の振る舞いになる。
  • データベースに存在するテーブルを列挙
    (MySQL) $ show tables
    (SQLite) $ .tables
    (SQLite) $ .ta
    .tableでも.taでもどちらでもよい。よく使うコマンドなので覚えておこう。
  • テーブルの構造を表示
    (MySQL) $ show create table table_name
    (MySQL) $ desc table_name
    (SQLite) $ .schema table_name
    これもよくお世話になるコマンド。
    ※ (SQLite) $ .schema で、データベースにある全てのテーブルの構造を表示してくれる
    • その他あれば追記予定。

実務でObjective-C開発をした際遭遇した問題点など

およそ2ヶ月、Objective-CでiPhone/iPadアプリを開発した経験を忘れないようバックグラウンド含めてアウトプット。また、後続開発者の人が読んだ際一助になるよう役立つリンクも記載していく。

開発に着手する時点での自分自身のステータス
  • 商用開発での携帯端末用アプリ開発の経験はわずか(Javaで携帯アプリ開発を少々かじった程度)
  • 従ってiOSでの商用開発経験はナシ。お遊びで一本アプリを作った程度でAppStoreへ公開した経験もナシ。
  • C言語の知識はそこそこあった。
  • JavaやC#の経験をフル活用すればなんとかいけるんじゃないかと言う甘い期待があった。(これがそもそもの間違い)

初期段階でのお勉強
  • 半日ほどかけてObjective-C入門を端から端まで何度も読んだ。
  • Objective-C最速基礎文法マスターも非常に良くまとまっていた。
  • 言語としてのお約束に関しては上記2つのサイトで大体理解出来ることもあって、この段階でもまだ、なんとなくいけるんじゃないかと言う甘い期待があった。

最初の壁
  • 組み込みクラスのAPIドキュメントの邦訳が思ったより少ない。何をやるにも断片的な情報を組み合わせて試行錯誤していくしかない。
  • ガーベッジコレクションが当たり前という環境に慣れすぎていた。とにかくメモリ関連の問題につまずき続ける。

第二の壁
  • メモリ関連の理解が進まないために生産性が上がらない。書いては書きなおすの連続。
  • 正直もう少し勉強してから着手すべきだったと後悔。
  • QuartzDemoのコードを読んで勉強する。どんなブログなどの情報ソースよりも役に立ったと思う。

現段階で言えること
  • iphone/ipad開発においてはメモリ管理が全てのボトルネックになりうる。リソースが限られているのだから当然だ。
  • とにかく最初から計画立てた実装を行うことが重要。従って勉強しながら開発をするといった甘い考えは捨てたほうがいい。身を持って示した。
  • 浅いレベルの情報はブログなどを見ればある程度収集出来るが、少しでも難しいことをやるとなると情報源が限られる。出来る出来ないの問題になるので、リスクヘッジのために企画やデザインが決まる段階で他の人がやっていないことには手を出さない方が安全という事は伝えておいたほうが良い。