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

べにやまぶろぐ

技術寄りの話を書くつもり

JTF2014「Swift code in Swift」の聴講メモ #techfesta

セミナー・勉強会 JTF2014 Swift

インフラの話が大多数を占めていた JTF2014 の中にあって若干異彩を放っていたのがこちらの swift セッションでした。個人的には swift 名前しかワカンネ状態だったのでこれはとばかりに飛び込んでみたら今回の会場だった産業技術大学院大学の教授の講演で驚きました。終始ノリの良い楽しいセッションでした。

個人的に響いたこと
  • Hack での PHP 拡張と Swift の機能強化で似ている点が結構ある
    • nil を許すかどうか ? などで明示する optional value や Generics など
  • Unity に慣れているとどうも cocos2d-x や swift でのゲーム作りに敷居を感じてしまう
    • 自分で境界領域を計算して collider はらないといけないとか
  • とりあえず swift 触るときは FlappySwift) 使ってみる
講演メモ
  • Swift : Fast/Modern/Safe/Interactive
  • Objective-C は 25年前の言語
    • Brad J.Cox et al 『オブジェクト指向のプログラミング』
    • 一方 C++ といえば
    • C の中で smalltalk をインラインでかけるが若干浮いている
    • ある意味、これまでは古典言語も使って iOS 開発をしなくてはならなかったと言える
  • それまでのスクリプト言語では足りなかった機能を全部備えて現れたのが Perl
    • C はバイトを扱える、文字の配列と文字列はちょっと違う
      • 終端文字を意識しなくてはいけない、書式付き文字列変換など
    • Perl正規表現を始めとして文字列操作に強い
  • Swift は 2010 年に Chris Lattner らが開発を始めた
  • Fast
  • Modern
    • Closures, Generics, Type inference, Multiple return types, Namespaces... などをサポート
    • Switch
      • break を書く必要がない
      • where で細かい条件を制御できる
      • perl/python にはそもそも switch はない
    • Safe
      • バグの原因になりやすい C の仕様が削除された
        • goto, ポインタ, バッファーオーバーフロー, 初期化忘れ変数, 書式付き文字列など
      • ! ? で nil の許可不許可を指定(optional value)
  • Playground

  • 後半は株式会社あくしゅの山崎氏が二日でゲームを作ってみたというお話

    • 初学には FlappyBird もどきのサンプル (FlappySwift) が良かった
      • SpriteKit というゲームエンジンを使っている
        • シーングラフとイベントベースの制御エンジン
        • OpenGL を現在動かない
        • update でコマ落ちなどすると変位が大きくなってしまう (Unity で言うところの fixedUpdate はない?)
    • Ruby に近い気がする
    • オプションがあることでコンパイルとランタイムでのコードチェックの役割がとても良い感じ
    • 自分で衝突境界・領域を定義しなければならない