読者です 読者をやめる 読者になる 読者になる

Cocoa勉強会関西第50回 メモ

データ

  • 2013/06/01 14:00〜18:30
  • 記念すべき第50回(実は0始まりなので第51回目)
  • 今回、内容が盛り沢山でめっちゃ面白かった。
    • CocoaでUnitTest、BDDは今後チュートリアルみたいなのがほしいな。


 3Dフレームワーク for Mac 意味検索 & SceneKit Wordnet 30分

シソーラス辞書検索

 資料は後ほど公開。

  • WordNet -> iOS!無料!日本語版!
  • 文字判定 -> n-gram形態素解析
  • n-gramなら網羅。いらないもの含む。
  • 形態素解析なら必要な物のみ。抜けはありうる。
  • 使うのに必要なもの
    • wnjpn.dbとかいろいろ

 確かOSXにMecab入ってなかったかなと思ってググるといくつか出てきた。


SceneKit

  • OSXのフレームワーク
  • 3Dの表示が簡単にできる
  • iOSにのる?(のって欲しいなぁ)

  • .deaファイル(COLLADA)

  • 文字が簡単に使える
    • ファイル作らなくてもできる


 アイコンメモを支えるWeb技術 30分

アイコンメモとは? * iPhoneのホーム画面に付箋紙を貼るアプリ

前提条件

  • そもそも審査に通るのか?
    • いろいろしがらみが……

実現の流れ

  • ネイティブ->Safari->Webアプリ
  • Webアプリ
    • Safariの中で動くもの
    • フルスクリーンで動くもの <- こっち!
  • フルスクリーンの仕方やアイコンの指定の仕方がある
    • 書き換えるには? -> サーバの画像を変更、別の街像ファイルを指定
    • サーバサイドの処理 <- 今回はしたくない
    • data URI Scheme
      • Webページに直接データを埋め込むためのURIスキーム
  • テキストを画像に変換するには?
    • HTML5 Canvas!
    • 文字も描画できる!
    • 書いた絵でData URI -> toDataURL()
  • メモの記憶
    • サーバならMySQLとかMongoDBとか
    • localStorage
    • アプリケーションキャッシュ
  • 技術的にはクリア。しかし審査は通るか? -> ネイティブっぽくしたい
  • フレームワーク的なもの -> bootstrapとか
    • jQuery Mobileを使う
      • ネイティブっぽくするために大変な思いをした
  • 軽くしたい
  • デバッグ


 BLEモジュール基板について 30分

  • LSD-BLE112
  • デモとして手旗を動かす。

個人的な感想として、iOS+BLEの発表が多くなってきたなという印象。 ボードを売り出す!4800円ぐらい。


 NJKWebViewProgressについて 20分

  • UIWebVIew Progress Interface -> プログレスAPIを持っていない -> 作ろう
  • GitHUbで300☆

中身

  • ロードされるリソースを数える
    • UIWebView Delegateをフック     * 全部取れるわけではない
  • あくまでそれっぽく見えれば良い
  • UIWebViewとViewControllerで通信したい
  • ViewController -> UIWebView
  • 逆は?
    • iframeを使う
  • プログレス値
    • メンタルモデルに合うように
    • webkitの実装を参考する
    • Sleipnirプログレスバーが面白い(一定の速度でバーが進んだあと、床屋のくるくる回るやつみたいエフェクトで見せる)
  • 組み込みやすさ
    • UIWebViewDelegateが必要 -> もう使ってる
    • プロキシにしよう!
      • 他の方が黒魔術版を作る
      • 個人的にはプロキシのほうがわかりやすい

cocoapodsいい!便利!

  • OSSを意識すると色々捗る


 Kiwi最高 30分

  • OCUnit(ビルトイン)
    • ⌘+U LOVE
    • 非同期とかだとうまくやらないとダメ(よきに計らってくれない)
  • GHUnit
    • Powerful
    • 非同期とか使える
  • Kiwi
    • BDD for iOS
    • Simple to setup and use
    • ⌘+U
    • Blocksを使う
      • 準備・後始末も細かくできる
      • 重要なのはshould
  • Nocilla
    • HTTP stubbing for iOS
    • なんかUnderscore.mを思い起こす書き方
  • テスト難しい

 紹介ではfor iOSとされていたけど、一応KiwiはOSXでもつかえる模様。


 Cocoa で CUI ツールを作る 20分

  • LLとかいろいろめんどくさい -> Cocoaでうまいことやればいいんじゃね?
  • JSONがみづらい
  • Pythonでやる -> 日本語読めない(Unicodeエンコーディングのせいだと思われる)
  • Objective-Cでやる
    • コマンドライン引数どうする? -> DDCli
    • jsonは -> SBJson
  • man pageを書く -> めんどくさいのでmarkdownで書いてPandocで変換
    • Pandocまじ便利です。
  • jqがあったよ……


 ワタシはSingletonがキライだ 45分

前提と問題

Singletonはstatic結合をまねく……Singletonは単体テストの敵

解決策

  • DI(依存性注入)     * 取りに行くから問題になる。必要なら与える!
  • DIコンテナ -> Springとか
  • オブジェクト生成は大仕事
    • 生成と仕様を分ける
  • Cocoa向けDIコンテナ結構ある
  • Typhoon Framework
  • AppleのサンプルにTyphoonを適用 -> AppDelegateに書かれていたコードを一掃
  • DIの気持ち悪さ
  • DIコンテナの誤解
    • コンテナへのアクセスが多発する? -> アクセスはごく一部
    • テストコードでコンテナを使う -> 別に使わなくていい
    • initialzerが長い -> 本当かも
  • Singletonはきらいだー!


次回の予定

 7月の終わりらへん。-> 8月3日。

懇親会

  • 第0回から今回までを振り返るスライド。
    • 懐かしい話題がいっぱい。
  • Singletonはありかなしかで、酒が進む。