サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
ovjang.hatenadiary.org
今日は、デザインパターンで言うところのProducer-ConsumerパターンをObjective-Cで実装してみます。(GCDで並列化する方法もありますが、今回は使いません。) 複数の処理があった場合、処理を並行に処理したいようなことがあります。 例えば、Webへのリクエストなど、レスポンスの待ちなどが発生する場合は、直列で処理するよりも並行で処理する方が格段に処理速度を改善できる場合があります。 イメージはこんな形、Producer(仕事を作る人)、Queue(仕事を置く台)、Consumer(仕事を処理する人)という登場人物がいます。 Produceが仕事を作って、作業台に置くと、作業者が仕事を取って処理を行うという動作を行います。 まずは、Queueクラス。仕事の受け渡しを行うクラスです。仕事を置くputQueメソッドと、仕事を取り出すgetQueメソッドがあります。 それぞれ、
SQLiteでテーブルにデータを追加する際、あれば更新なければ追加ということがしたかったので 1.あるかどうかのチェックをSELECT文 2-1.あればUPDATE文 2-2.なければINSERT文 という形で実装していたのですが、なければSELECT→INSERT、あればDELETE→INSERTという動きになります。常に2回SQLを発行するのがもったいない。 他のDBでは、1文で処理できるSQLがあるのですが(OracleのMERGE、MySQLのON DUPLICATE KEY)、SQLiteでは無いと思っていました。 よくよく調べてみると、INSERT OR REPLACEというのがあって、INSERT時にPRIMARY KEY制約、UNIQUE制約で重複していればDELETEを自動でしてくれるみたいです。 INSERT OR REPLACE INTO テーブル名 VALUES (
xCode4でInterface Builder(Nibファイル)を使わないで開発する方法です。 ストーリーボードいいですね、使いやすい。しかし、iOS4に対応していない。 iOS6が出て1年ほど経過すればシェアのほとんどをiOS5〜6になるとは思うのですが、今はiOS4のシェアもそこそこあるので、ターゲットとして外せないですよね。 使用しているxCodeは、4.4.1です。 起動してまずはプロジェクトを作成します。 Single View Applicationをベースに作成します。 ストーリーボードのチェックを外します。ARCはとりあえずそのままチェックにしておきました。 Nibファイルを永遠に削除します。(※NibファイルはXML化かれて、拡張子はXibに変更されています) ソースの書き換えですが、MyAppDelegateのdidFinishLaunchingWithOptions
「iPhoneアプリを作りました」と言っても、サンプルを動かしただけですが・・・ 前回、Windows環境でTitanium Mobileを使い、Androidアプリを動かしました。こんどはMacでiPhoneアプリを動かしてみます。 前回同様、開発環境の構築ははしょります。Titanium Studioを起動するところからです。 起動すると下記のような画面が立ち上がります。まぁ、Windowsと同じです。 左側にあるCreate Projectを選択するか、FileメニューからNewを選択します。 WizardよりTitanium Mobile Projectを選択します。 Project name、App Id、Company/Personal URLを入力します。※App Idは、「.」区切りの2つ以上のワードを指定する必要があります。Project nameと同じにしていたらエラー
DBテーブルからのUITableViewに表示する際に、データ数が多い場合に全部読み取るとメモリ消費も大きくなりますし、データに対して処理をする場合は時間もたくさんかかってしまいます。そのため、一度に読む量を区切り順番にページ送りして表示するようにページングを実装することが一般的です。 SQLite3でもありがたいことに、ページングをするためSELECT文にLIMIT句とOFFSET句が用意されています。 SELECT 列,列… FROM TABLE名 WHERE 条件 LIMIT 行数 OFFSET 開始行;OFFSET句で開始行(何行目から取得するか)、LIMIT句で取得する行数を指定することができます。 それでは、実際に例を示すます。例では、ユーザテーブルより名前の読み順にページングを行います。 並び替えはORDER BY句を使います。列名を指定することで並び替えをしてくれます。ペー
iPhoneアプリもAndroidアプリも作りたいけど 開発プラットフォームを用意するのが大変(Macだけで良いかもしれませんが…) 開発ツール、言語をそれぞれで覚えるのは大変 作ったアプリの資産をiOS、Andoroidで共有したい 開発プラットフォームとしてLinux、Windows、Macなどが使える。配布もiOS、Andoroidなどにできる開発ツールがいくつかあります。 ちょっと調べたところ、NOKIAのQt(キュート)や、AdobeのAIR SDKなどがあります。(その他にもいろいろ・・・) http://qt.nokia.com/title-jp/ http://www.adobe.com/jp/products/air/ (やる気がでたら)いずれ評価していきたいと思います。 今回は、敷居の低そうなAdobeのFLASH PROFESSIONAL CS5を使って、iPhone
iPhoneアプリをリリース後に、機能追加でテーブルの構造を変更する必要が生じました。sqlite3のDBファイルは、初回のアプリインストール時に作成されて、アプリをバージョンアップした際でも上書きされません。 ※アンインストールすると、DBファイルも消えます。逆にアンインストールしなければ前のままです。シミュレータも同様の動きなので開発中は、構造を変えながら進めることもあるかと思いますので注意してください。 FollowManでは、データは毎回クリアするので過去のデータは不要です。アプリ起動時に、下記のようにテーブル削除して新しい構造で作り直す処理を、初回起動時に入れることで対応しました。 -(void)dbInitialize { int wasSucceeded; // テーブルの削除 wasSucceeded = sqlite3_exec(db_, "DROP TABLE user
ナビゲーションバーの戻るボタンは、何もコーディングしなくていいので便利ですよね。普通に使う分には問題ないです。 しかしカスタマイズして、戻る(popViewController)前に処理を入れたい時って困ります。戻るを場合によってはキャンセルしたい場合もあります、例えば、「未保存ですが戻っても良いですか?」と出したい時などです。 ググってみるとナビゲーションバーのバックボタンを、オーバーライドすることができないという記事を発見。 http://osmorphis.blogspot.com/2009/03/trapping-uinavigationbar-back-button.html しかーし、同じところにThree20 Frameworkを使えば似たような、見た目のボタンが使えると書いてありました。 Three20について調べてみると、オープンソースでそこそこ利用実績もある。いろんなア
先人の知恵を拝借します。Mattさんのホームページに行き、MGTwitterEngineを利用させていただきます。 http://mattgemmell.com/source 一通りの、Twitter APIをコールするメソッドが用意されており、NSArrays, NSDictionarys, NSStrings, NSDatesの形で結果を返してくれます。 今では、OAuth認証にも対応していますので、これで一通りのことはできそうです。OAuth認証は、OAuth Consumerを使います。 https://github.com/jdg/oauthconsumer MGTwitterEngineで、何ができるかを知るには MGTwitterEngine.h を見ればいいと思います。 たとえば、statuses/public_timelineのAPIなら、MGTwitterEngine.
前回、twitterDB.sqliteというDBファイルを作成するところまでやりました。今回は、プログラムからテーブルを使える状態にする準備部分の実装をやります。 まず、前回作った「twitterDB.sqlite」を、xcodeプロジェクトに追加してください。 それと、#import の追加。そして、Frameworkにlibsqlite3.dylibを追加します。下記は、xCode4での追加イメージです。Link binary with librariesの+ボタンを押して、libsqlite3.dylibを選択します。 次に接続情報の取得です。プログラムからSQLを使って、テーブルに対するデータの追加や、中身を検索するためには、DBファイルを開くという操作が必要です。開くことでDBとの接続情報が取得でき、以降はこの接続情報をもとにsqlite3に操作の要求を投げることができるようにな
なぜいまさら、SQLiteなのか。それはCore Dataに挫折したからです。私がOracleとかSQL Serverに慣れ親しんでいるからというのもあるのですが、Core Data使いにくい。DB(データベース)を使ったことがない人はSQLが障壁になるのかもしれませんが、より複雑なこともできること、他の言語でも使えることが強みです。 やれることは、データを表形式に格納して永続化(アプリ終了しても残る=ファイルに保存)することができます。そしてその永続化データから、抜き出したり、並び替えることができます。それら操作を、行うのがSQLという言語です。だいたいのDBがこのSQLという言語を標準として作られていますので、一回勉強しておけば、サーバアプリを組むときにも使えます。ただし、方言があるためSQLite独自の関数などもあるため、SQLiteで使えるものが何なのかはリファレンスを参照ください
前回、こういうことを言ってたのですが 開発プラットフォームを用意するのが大変(Macだけで良いかもしれませんが…) 開発ツール、言語をそれぞれで覚えるのは大変 作ったアプリの資産をiOS、Andoroidで共有したい 少々、調べました。いろいろ開発ツールはでているようで表にまとめてみました。 メーカ 開発ツール コスト デプロイ 開発プラットフォーム 本家 Ansca Corona INDIE Android $199/Year Android Windows XP http://jp.anscamobile.com/ INDIE iOS $199/Year iOS Mac OSX10.6 PRO $349/Year iOS/Android Mac OSX10.6 Nokia Qt LGPL/GPL Windows/Linux/Mac OS X/Windows CE/Linux/MeeGo
このページを最初にブックマークしてみませんか?
『ovjang.hatenadiary.org』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く