2014年10月28日火曜日

CloudKitハマりどころその2

お疲れ様です。

さて、前回はコンテナーという概念があるのと、あとシミュレーターでもちゃんとiCloudのアカウント登録しとかんと動かへんのよ。。というお話をしました。

次はCloudKitのデータの登録についてです。

基本的にCloudKitのテーブルを構成したりするのはCloudKit Dashboardという、デブ専から行けるWebベースの画面から行います。しかしこのCloudKit Dashboard、CSVとかからインポート出来たりとかそんな親切機能はございません。1つ1つデータは手入れです。

そんな事はやってられないので、アプリからコネコネしてデータを入れる事をやっているのです。まあ、それはなんとかなります。

で、あとは本番環境へDeployだ!と言うところですが。。CloudKit DashboardにはDeploy to Productionというボタンがあって、これでスキーマとデータを移してくれるんよねホイ?っと思ってたら、、そんなに甘くはありません。まあ当たり前ではありますが移るのはスキーマだけでした。。

さて、どうやって本番環境にデータを?と言うことでいろいろやってみました。

・リリースビルドしてシミュレータから本番にから送り込む → 駄目でした
・リリースビルドしてiPhone実機繋いでRunして実機から送り込む → 駄目でした
・リリースビルドしてipa作って実機にインスト、そっから送り込む → OK!!

実はipaにArchiveする時に「iCloud Container Environment」を選べる画面が出て、
そこでテストか本番か選べるのでした。。ちゃんちゃん。。


2014年10月24日金曜日

CloudKit解決!

このまま1日坊主で終わってしまいそうな雰囲気だったSwift挑戦記ですが、
無事2日めに突入出来そうです。

さて、前回CloudKitが全くもってクエリを返してくれないという事で難儀しておりましたが、またもやK君の力添えにて解決。

まずハマりポイントその1

CloudKitにはContainerという概念があります。まあスキーマを保存する入れ物でしょうか。普通のRDBですとデータベースというレイヤーに当たる所だと思います。

んで、今回はCloudKit + Today Extensionという組み合わせで作っていたために、CloudKit側に本体とExtension2つのContainerが出来ていました。

よく分かっていなかったのでCloudKit DashboardにてExtension側にデータを突っ込んでいたのですが、、、

var db: CKDatabase! = CKContainer.defaultContainer().publicCloudDatabase

ネットからかっぱらってきたこのソース、よく見るとDefaultのContainerを取ってくる用でした。設定の方で、他のContainerを指定してから、、










var db: CKDatabase! = CKContainer(identifier: "iCloud.com.subakolab.@@@@@@@@@").publicCloudDatabase

という風にソースを変更してやります。(@@@@@@@@@はContainer名)

そして次のソース

//
let p = NSPredicate(format: "TRUEPREDICATE")
let q : CKQuery = CKQuery(recordType: "※テーブル名", predicate: p)        
db.performQuery(q, inZoneWithID: nil) { (results, error) -> Void in
    self.texts = results as [CKRecord]
    self.tableView.reloadData()
}

これでUITableViewにレコードが表示出来るはず。。。。が、いくらやってもサーバからエラーしか返ってきません。。な。。。ぜ。。。だ。。。。

ここでハマりポイントその2




















CloudKitはiCloudにログインしていないと使えないサービスです。
(2014-11-07追記 ★ログインしなくても実機ではReadは出来るみたいです。ただし、やはり何故かシミュレーター上ではiCloudの設定は必要なようです。)

なので、、、当然iOS Simulator上でもiCloudにログインしていないと使えないのでした。。当たり前ですがこれに気づかず。。。

というわけで、これで無事データを取ってくる事が出来ました。

サーバの用意いらず費用いらずの素敵MBaaSサービスのCloudKit、これから色々活用出来そうです。ただ、DashboardがデータのImport/Exportも出来ないなど使い勝手は本当に最低限なので、そのあたりが充実する事を切に願う次第であります。

またそのうち続きを書きます。

では。。


2014年10月1日水曜日

Xcode6 + Swift挑戦記 その1

大変ご無沙汰しております社長です。

さて、やらなければいけないこと満載の最中ですが、現実逃避のために
Xcode6+Swiftでアプリを作ってみることにしました。

今回はiOS8のCloudKitとTodayExtensionを使った、モンスターストライク(©mixi)の降臨チェックウィジェットアプリを作ってみる事にしました。完全に個人的に欲しいがために作ります。

まずはXcode + Swiftで本体側のアプリをつくります。

本体側の構成は、TabViewControlerで各テーブルを操作するような感じです。なので、一覧表(TableView)と単票(ScrollView)の組み合わせみたいな感じ。

まずはTableViewに固定データを出す所からドハマり。
詳細はまたいつか書く。

次、ScrollViewでハマる。スクロールしません。
詳細はまたいつか書く。

なんやかんやで社員K君の助けにて両方解決。

さて次はCloudKitです。
はい、うまくいきません。
CKDatabase.performQueryをぶっこみますが、
errorが帰ってきます。CKErrorDomain : code:7 と。。。
なんですかcode7って。

完成は遠そうです。


2014年1月10日金曜日

新年あけましておめでとうございます

本年もどうぞ宜しくお願い致します。

周囲の想像どおり3日坊主化していたブログですが、今年はアウトプットの年ということで、なんとか毎日とは言わずとも週1では書いていこうと固く心に誓ったのであります。

お仕事の方は相変わらずバタバタバタバタしております。
今年は2月に某ぶっとい書籍系なアプリをリリースする予定です。某なのは請負のお仕事だからです。結構ビッグなタイトルです。昨年秋からK君M君2人で命を削りながらコツコツコツコツ作っていって、ようやくゴールが見えてまいりました。。
同時にもうひとつ某ぶっとい書籍系アプリもリリースです。最近こちらの書籍版についての記事がTwitter界隈やネットニュース界隈を少し賑わしておりましたので、タイムリーなうちにリリースしたいところ。。

次は1年前から進めていた写真系アプリの方が、昨年秋に急に大型タイアップが決まりまして沈黙状態から急にバタバタバタバタ〜っと進行しております。こちらもまだ詳細は書けないのですが、アプリリリース自体は1月下旬の予定、タイアップ発表は来月初旬の予定です。はやく詳細を書きたい所ですが我慢我慢。。リリース自体は弊社ブランドではないですが、こちらは社名を出して良いとの事ですので、リリース後は盛大に宣伝していければと思ったりしております。同類アプリも立て続けに出していければと計画しており、ちょっと個人的に熱い感じになってきております。

自社タイトルのアプリとしては、秋に少し表のブログに書いた「たまぴんびゅーん」がようやくリリース間近。ところがお試し申請を出してみたところ、毎度おなじみのMetadataリジェクト。。でもまあ大丈夫でしょう。来月には出せるかなと思っています。
こちらroom6ブランドで出します。room6はうちのアパートの6号室で開発しているエンターテイメントアプリのブランドです。萌え系アプリを出そうということでブランドを変えましたが、まあ今となってはそれはどうでもいいのですけども、今年はゲームもK君の手によって立て続けにリリースしていく予定!!

ゲームですが、最近社内では「ドミニオン」がプチブーム。
個人的にも家で子供とカードゲームを遊んでいまして、やはりこの方面が熱いです。
まだこういったカード・ボードゲームでアプリの方のヒットと呼べるものは無い気もしますので、ガンガン狙っていければと思っている今日このごろ。

他にもいくつかの請負案件が並行で進んでいて、人は少ないくせになんだかバタバタと忙しい状態というのがずっと続いております。それもあって、久しぶりに僕も開発をする予定。まいどおなじみのRailsですけども。そろそろiOSのアプリが作りたいです。小ネタを色々仕込んでるので、時間作って作ろうと企んでいるのですがなかなかまとまった時間が。。毎日メールやら経理やら電話やら調整やらでいつの間にか日が暮れます。

たぶんカッコイイITベンチャーの社長さんからするとかなりイケてない仕事っぷりなのですが、また社長の仕事っぷりについては何か書けたらなと思いつつ、気がついたら保育園のお迎えの時間が近づいてきたのでこのへんで。



2013年9月25日水曜日

iPhone5s

タイムリーな時期を完全に外しておりますが、iPhone5sに機種変しましたのでブログを書いてみます。

機種変したのは近所のソフトバンクショップ。いつもは10:00開店なので、9:30過ぎに言ってみますとすでに店はオープン、2人が外の椅子に座ってウェイティング。。あれ?なんで?と思って聞いてみますと、今日は8:00から開けているとの事。。ななんと。。

まあとりあえず僕も座ってウェイティン。。ショップのお姉さんが機種と色・容量を聞きに来ます。色はどうしようかと悩んでいたのですが、お姉さんいわくゴールド&シルバーは東京のソフトバンクショップとアップルストア、大型量販店にしか無いとの事。京都には入荷0台。。仕方ないのでスペースグレーの64Gにしました。64Gも2台しか入荷しておらず、僕のでラストだった模様。

んで、すぐに順番が回ってくるかと思いきや、夕方に来いと。。ガクっ。。というわけで夕方に行って機種変完了。対応の店員さんはiPhone5に機種変した時と同じ方でした。

んで、iPhone5sですが何がiPhone5と変わったんだと言う事になりますが、ぱっと見はほとんど一緒です。裏面が若干シルバー気味。あとはホームボタンが指紋認証付きになったので、中の四角いマークが無くなりました。指紋認証は認識どんなもんやろと思ってましたが実に良い感じの認識率です。ちょっと未来っぽくてグー。

iOS7はβでさんざん弄ってたので目新しさを感じないのもありますが、普段使いしてみても思ったより違和感は感じません。しかし、個人的にはマルチタスクのアプリ選ぶとこはアプリの画面SSが出ちゃいますがこれはいらんというかけっこう大きく映るのでなんだか人に見せるのが恥ずかしかったり、あと見せたくないものを見られちゃったりなので、違うモードも用意してもらえればと思ったりします。

あとは各種アプリのiOS7対応ですが、こまごま落ちたりおかしい挙動します。まあ、これはしばらく待つしかないでしょう。。

というわけで、とりあえず今のところ違和感なく移行出来ております。

2013年8月1日木曜日

またまたLeapMotion

3回続くとさすがに誰も見てないこんなブログですらちょっと飽き飽き感が漂ってきますが、個人的にもうちょい突っ込んでいきたいネタなので続けて参ります。

さて、社員K君がデモアプリを作ってくれました。
諸々ブログに書いてくれてます。

http://laboyukai.blogspot.jp/2013/07/leapmotion-box2dweb.html

しかしK君、プログラミングが大嫌いという割には異常にプログラミングの覚えやとっつきが早いので、おそらく嫌いすぎて逆に大好き///ということなのかなと推測。

今回もさっそくちゃんとLeapMotionで動くデモを作ってくれました。
GoogleのJS物理エンジンbox2dwebを使ったデモです。色々遊べそうなものが作れそうなので、楽しみであります。



2013年7月29日月曜日

Leap Motion続き

さて、ひとしごと終えたのでブログをば。

本日は社員の皆にLeap Motionをさわってもらいました。
実に面白いデバイスなので皆の反応も上々。

しかーし。
こんな素敵なLeap Motionですが、どこをどう考えても一般消費者がこぞって買うようなものではございません。79ドルもしますし、普通の人がこれを手にするような事はまだまだ先のようです。さてさて、こいつをどう料理しようか。。

まず考えたのがデジタルサイネージです。
iPadと組み合わせてすごく面白い広告が作れそうな気がします。
しかしiPadとそのまま組み合わせるのは難しそうで、Macなどを経由しないとダメそうなのでちょっと面倒っぽいです。それなら、iMacをそのまま使うサイネージなども良さそうです。

あとは、店舗などでの商品デモとか、そういったものにも使えそうです。HVのような飲食店の電子メニューのもっと未来っぽい版としても良いかも。

今日話していたのは、Twitterのストリームを指でぽいぽい掴んで読めたりするようなUIのアプリを作ってずっと流し続けるのも楽しそうというアイデア。

これは実はいま同じようなiPhoneアプリを作っているので、それを流用して作れそうな予感です。面白そうなので明日早速企画にして開発メンバーに色々いじってもらいます。

正直なかなかお金にはならなさそうですが、こういうデバイスは夢が広がりますしインスピレーションも掻き立てられてて実に良いですね。

よいものが出来たらどこかでデモとかしてみたいです。

ではでは。