2011/08/31

Corona SDKでiPhone/Androidアプリをリリース

【予告】Corona SDKでiPhone/Androidアプリをリリース(予定)で予告したアプリをリリースしました。

アプリ紹介サイト
iTunesストア
Androidマーケット




スクリーンショットを見ていただければ分かるように、女性をターゲットにしたアプリです。
※動画はiPhoneで見せていますが、Androidでも全く同じUI(デザイン)です

このアプリをひと言で表すと「ピンク色の端末に似合うアプリ」です。

Corona SDKでアプリ開発をしようと思った経緯は前回書いた通りなのですが、実際にアプリのアイデアを検討している際に、以下の点から、本アプリを開発することを決定しました。

・無料の星占いAPIを見つけた点
(試してもらうために無料アプリとしてリリースしたかったので)

・カスタマイズ度の高いアプリとして女性向けにデザインされたアプリというのが合致している点
(女性向けというのはある意味分かりやすいかな?いや難しいか?)

・同類アプリが数多くリリースされている中で、デザインの差別化がどれだけ通用するか見たかった点
(本当にデザインは重要なのか? また、通用するデザインをつくることができるのか?)

・自分自身あまりやらないテイストのデザインに挑戦したかった点
(個人的なテイストとはかけはなれているので、デザインには通常よりも時間がかかりました。しかしながら、デザイナとして要件を満たすデザインは出来なくては!また出来るからこそデザイナです)

Corona SDKで開発したアプリ、しかもゲームではなくツール系で、なおかつ上記のような意味合いも含んだテストケースアプリとして、どこまでの結果が残せるか期待も込めて、しばらくは見守っていきたいと思っています。
※もちろんメンテナンス的アップデートや、プロモーション的なことはやっていきますよ!

ぜひダウンロードしてみてください m(_ _)m

Cutie Horoscope - keygx
Cutie Horoscope - keygx

Cross-platform Mobile App Development Showcase


2011/08/26

Corona SDKでSqlite3を使う時の簡単なまとめ

Corona SDKでSqlite3を使ったアプリ開発をした際に躓いたりしたので、簡単にまとめておこうと思います。

アプリ内ですからそんなに複雑なSQL文はありません。しかし、SQLの種類によって関数の使い分けが必要でした。最初そこが分からずに意図した値が返ってこないことに悩みました。
そう、値が返ってくるかどうかが、ポイントだったのです。

下記のサンプルコードを見ていただくと分かるのですが、簡単にいうと、SELECT文の時は db:row() や db:nrows() を使い、CREATE文やINSERT文の時は db:exec() を使います。
※くわしくはこちら

ドキュメントの読解力が足りず、COUNT関数の実行に db:exec() を使い、ずっと0しか返って来ない… ってことを延々やっていたわけです(^_^;)
お恥ずかしい
-- Include
require("sqlite3")

-- DB SETUP
local path = system.pathForFile("test.db", system.DocumentsDirectory)
db = sqlite3.open(path)
print("DB PATH: "..path)

local tableName = "User"
print("TABLE NAME: "..tableName)

-- Create Table
db:exec([[CREATE TABLE IF NOT EXISTS ]]..tableName..[[ (id INTEGER PRIMARY KEY, name, age); ]])

-- Insert Data
local name = "hoge" 
local age = 20
db:exec([[INSERT INTO ]]..tableName..[[ VALUES (NULL, ']]..name..[[',']]..age..[['); ]])

-- Count
for row in db:rows([[SELECT COUNT(*) FROM ]]..tableName..[[; ]]) do
  print("ROWS: "..row[1])
end

-- Select Data
for row in db:nrows("SELECT * FROM "..tableName) do
  print("NAME: "..row.name)
  print("AGE: "..row.age)
end

-- Update
age = 30
db:exec([[UPDATE ]]..tableName..[[ SET age=]]..age)
for row in db:nrows("SELECT * FROM "..tableName) do
  print("NAME: "..row.name)
  print("AGE: "..row.age)
end

-- Delete
age = 40
db:exec([[DELETE FROM ]]..tableName..[[ WHERE age < ']]..age..[['; ]])
for row in db:rows([[SELECT COUNT(*) FROM ]]..tableName..[[; ]]) do
  print("ROWS: "..row[1])
end

--
実行結果はこうなります。
※まるごとmain.luaとしてコピペで実行できるように書きました。途中ageの代入式が度々出てくるのはその為です
※上記コードには記述していませんが、適切にDBのCLOSE処理が必要です
Corona SDK≫Docs≫Data and Files≫Database (SQLite)
 
最後にTipsとして、Corona SimulatorのFile > Show Project Sandbox というメニューを選択すると、ローカルに保存されている.dbファイルの場所を開いてくれます。 この.dbファイルをLita等のGUIツールで開けば、データをGUIで確認したり、SQL文のテスト等に使えて大変便利でした。

2011/08/25

【予告】Corona SDKでiPhone/Androidアプリをリリース(予定)

ここ2ヶ月ほど、Corona SDKでのアプリ開発を試行錯誤しつつも進めており、やっとアプリをAppleに申請中というステータスになりました。
※Androidは審査がないので、いつでもリリース可ですw

そもそもCorona SDKでアプリを出そうと思ったきっかけは、まぁ気に入ったからという一言で片付けてしまってもいいのですが、あえて言うと「UIが自由に作れるということは、同じUIでiPhoneとAndroidアプリがつくれそう」という理由からです。

Corona SDKは一般的には2Dゲームに向いたプラットフォームだと思われています。これには全く以て同意なのですが、アプリの画面(シーン)を管理するDirector Classというライブラリを使った時に「普通のアプリと同じような画面遷移が作れるんだ!」ということは「普通のアプリっぽい画面を作れば、ゲームじゃないアプリも作れるよね」「だったらiPhone/Android共通のUIを作って、ワンソースで両対応のアプリを作ってみたい」となったわけです。
※最近、iPhone/Androidそれぞれの標準UIを見飽きてきた感があったのと、もうそろそろ、デザインによるアプリの差別化が本格化すると思ってます

まずは、タイトルバー、タブ、TableView(ListView)などをオリジナルでデザインしたUIのプロトタイプを作成してみました。
このプロトタイプで手応えを感じたので、リリースを目的とした(そしてCoronaのライセンスを購入する!)アプリ開発に取りかかることにしました。

色々な思惑もあり(カッコつけるとマーケティング的理由により)リリース向けのアプリは、プロトタイプで作ったデザインとは全く別物になりましたが、なかなかに良い出来です。プロトタイプで作ったUIも良いデザインなので、そのうち別のアプリで使おうと思ってます。無駄にはしません キリッ

今は、アップルに「そのまま審査通してくれ〜」と願いつつ、通知を待っています。
※リジェクトされたらされたでノウハウにはなるのですが…

『技術的に可能でもアップル的にはNGということは多くある』
という残念な結果にならないように

結果は後日!