2014年7月29日火曜日

【イベント】石巻ハッカソン行ってきた

先日の金土日曜と石巻ハッカソンに行ってきました。

伝説の始まりの地、石巻です。
ライダーです。



















うまいもの
寿司がうまかったです。
特にあなご寿司が超うまかったです。
口に含んだ瞬間ほろっと柔らかく、脂が乗っていて、甘みの効いた味付けが絶品でした。
シャリが温かいのを使っていて柔らかく、あなごとのマッチングが最高でした。




















開発
今回はiOSエンジニアとしてチームに参加しました。
チームのスキルセットが最強でした。
デザイナー、音楽・動画強い人、サーバーエンジニア、iOSエンジニア2人。
実はアプリの工数を頭の中で見積もった時、時間が足りるかかなり不安でしたが皆さん仕事が早くてなんとか良いところまで出来ました。感謝でいっぱいです!

軽いエピソードとしては開発初めの大事な4時間が謎のエラーにより、自分なんも出来てないかったのがもはや笑い話です。なんとか解決出来たので深夜に取り返せました。

そして普段ハッカソンに出ていてiOSをやる人が多くないという印象を持っていたのですが、今回はリッチに自分含めて2名体制で開発することが出来ました。
普段はぼっちでやっていてなかなか他のiOS開発をやっている方と一緒に開発することが無かったのであれこれと設計考えたり相談したりする時間が楽し過ぎました。

色々な勢いあまってフル徹夜開発をやってしまいましたが、それも含めて楽しく開発出来て良かったです。

イベント全体を通して





















なんかすごいイベントでした。
超有名ベテランエリートエンジニアの方々が東京の方から参戦していたり、あまり開発をしたことのない高校生達が居たり、はたまたプレゼンからアプリ開発まで慣れた様子でこなす小中学生が居たり...。
参加者の多様性や熱がとんでもないイベントでした。

ハッカソンを通した人との出会いや縁、新たな発見もまた得られて良い週末でした。
自分に足りてないスキルの確認やすごい人に触発されて熱が高まったり、悔しさを覚えたりで質の良い燃料が得られたのでまた当分頑張れます。

成果物は後でどこからかあげられるか、あげるかしますので、その時はまたチェックしてみてください。

2014年7月28日月曜日

【iOS】Could not launch "アプリ名"というエラーについて

先日ハッカソン中に出た謎のエラーについて。

Could not launch "アプリ名"

process launch failed: NotFound



こんなエラーです。
エラー文が簡潔過ぎてよくわからないです...orz

ビルドは通るのだけれど、実機にアプリを流して起動しようとするとこのエラーが出ました。

色々調べてみたところ、iOSのバージョンを最新にしたらうまくいきました。
今までiOS7.1.1でやってきていたのですが、7.1.2はうまくアップデート出来ないエラーがあるとのことでアップデートをしないで放置していました。

信仰心の薄れが今回の問題を引き起こしたという事ですかね...。

2014年7月15日火曜日

【IT】TestFlightのバージョンナンバー管理

軽くメモ

TestFlightでバージョンナンバーを変えるには

1.プロジェクトのInfo.plistのBundle versionを変える
2.アーカイブして新しいipaファイルを出力する
3.TestFlightにアップする

2014年7月7日月曜日

【イベント】SmartLife Hack in 仙台に行ってきました

最近は雨も多くて蒸し暑くて嫌な季節だなと感じますが、湿気にまけずなんとか生きてます。
こんにちは、田中です。

7/5,6の土日二日間はSmartLife Hack in 仙台でした。
これはDocomoさん主催の
「自分たちの生活、環境、街をITの力でよりよいものにしていこう!」
というテーマでハードウェアやAPIを使って行うハッカソンでした。
提供されたハードウェアとAPIの一覧は上記URL先に一覧があります。

楽しい・愉快なものから硬派なものまで、様々なハードウェアやAPIが提供されていて出てきたアイデアもユーモラスで実用的な物が多かった印象です。
仙台会場は他の会場と比べて人数は少なかったようですが、参加者一人一人のスキルが高くハード連携というなかなか難しい分野ながらもしっかりした形でのアウトプットが出来ていてレベルの高いイベントでした。



アイデアを出して投票の多かった物を元にチームを組んでアプリを作っていくという方法でした。
自分はしばらく悩んでいましたがポッと頭にうかんだアイデアが見事選ばれてチームを組むことになりました。



作ったもの
どんなアイデアが通ったかというと
「会議におけるファシリテーションを自動化する!」
というもの。
システムの名前は「God Father Facilitations」です。

概要は以下。
静まり返った会議や盛り上がりすぎた会議をCOCOROBOが声がけして関連ワードを投げかけて発想の転換休憩を促してうまくコントロールしてくれます。
そのコントロールの元となるデータとしてはHVCからの参加者の感情のデータと音声認識APIの会議内容のテキストを形態素解析にかけてはてなキーワードAPIで関連ワードの抽出を行ったものになります。
その結果をWeb上に展開して、会議参加者がそれを見ることも出来ます。

スライドはこちら



使ったものと役割(打ち消し線は今回組み込めなかったもの)
・Windows Azure:サーバー。集約データの総括とアウトプット
日本語形態素解析API(Yahoo!):音声認識で送られたテキスト形態素解析
はてなキーワードAPI(はてな):形態素解析のデータを元に関連ワードの抽出

Web:サーバーからの集約データの可視化

・iOS端末:会議の音声をひろうのと、COCOROBOの発話制御
音声認識API(docomo):iOSで拾った音声をテキスト化

HVC(オムロン):顔認識と感情データの取得
・Android端末:HVCから取ったデータをサーバーに上げるのと、COCOROBOの移動制御

COCOROBO(SHARP):サーバーからきたテキストをiOSを通してPOSTされたものを音読するのと、HVCのカメラの制御のための回転移動

こうやって箇条書きにするととんでもなく色んなものに手を出したものだなと。
そしてAppleとWindowsとGoogleが仲良くそれぞれに適した形で組み込まれてるのがスゴイと思った!w

システムの外観はこんな感じ。




システムの擬人化
今回、本来人の担うべき役割である会議のファシリテーション役をシステムにするということで親しみやすくするためにシステムの各担当部分を擬人化しました!(エヴァのMAGIシステムのような感じ)
システム概略と見比べながらご覧下さい。

ファシリテーションチームを一つのファミリーとして考えました。
キャラ(システム部分)と担当者
・ちやちゃん
iOS+音声認識API+COCOROBO発話担当。
会議参加者の話を聞いて、会議を和やかにしてくれるみんなのお姉さん。

・クラウディオ
Android+HVC+COCOROBO回転制御担当。
会議参加者の顔色や感情を読み取るのが得意な気遣い屋のお兄さん。

・ごっどふぁーざー
Azure+HatenaAPI+形態素解析API+もろもろのI/O担当。
家族の意見を聞いてそれをうまくまとめるのが得意な家族の大黒柱。

・ミンディ
Web担当。
お父さんから聞いたことを素直に友達(ユーザー)に自慢する可愛い妹。

ファシリテーション一家。絵になると華がある。




今回の自分の反省点
良かった事
・チームのメンバーが凄腕揃いでとても助かった!
・チームのスキルセットがぴったりとマッチしていた。
・使ったものが多かったけどうまくまとまった。
・各メーカーさんがとても親切に助けてくれた。
・サーバーとかRESTとか出来ると色んな事が出来そうって分かった。
・ハード連携とHTTPメソッド周りが少し分かった

悪かった点
・準備に時間をかけなかったために、発表がグダグダになって聞いてる人に伝わらなかった。悔いが残ったので今度からはしっかりやりたい
・docomoAPIを使いこなせなかった
・デモの時にCOCOROBOをうまく喋らせられなかった。テスト不足


まとめ
面白いハードやAPIが大量に使える滅多にない機会に参加出来て良かったです。
テーマと内容的にスキルの高い人達と一緒に作業が出来る良いイベントだったと思います。
また次回があれば参加したい!

2014年7月1日火曜日

【IT】DelegateとNotificationの違い

実はまだNotificationを使ったことがないです、田中です。
Delegateは使ってる。
よくNotificationを使えばいいよとは聞いていたけどDelegateとどう違うの?ってのがわからなかったので調べました。

ここがすごくわかりやすかった。
DelegateとNotificationの使い分け

どう違うかを簡単にまとめると
Delegateが隣にいる人と細かいやりとりをするのに対して、Notificationは遠くの人に起きたことを一方的に伝えるイメージかもしれません。(上記サイトから引用)
ということらしい。

あとは
Delegateは通知を受けるオブジェクト(通知先)が1つだけであって、通知元と通知先で相互的なやりとりがある。
のに対して
Notificationは通知を受けるオブジェクト(通知先)が2つ以上あって、通知元からの一方的な通知である。つまり通知先からの応答を期待しない。
というところが特徴的。

各クラス間の緊密度を意識しつつどちらを使うかを決めれば良いということらしいですね。