[event] iOSDC JAPAN 2017
東京・西早稲田の早稲田大学 西早稲田キャンパスを会場に 9月15日(金) 〜 16(日) の会期で開催された iOSアプリの開発者カンファレンス "iOSDC JAPAN 2017"に参加してきました。16日は東京 夢の島で開催された小中高校生が参加するロボコン大会(WRO Japan 2017)にスタッフとして参加したため、15日の前夜祭と16日の1日半の参加となりましたが、登壇者と参加者から発せられる開発への熱い情熱を存分に吸い込んできました。
印象に残った発表は
- 「Objective-C++を使ってMRCで快適に開発する」 八十嶋祐樹さん
- 「Auto Layoutのアルゴリズム」 稲見泰宏さん
- 「Swift で数学のススメ 〜 プログラミングと数学を同時に学べ」 佐野岳人さん
- 「Swiftプログラマのための今さら聞けない計算量の話し」 藤本尚邦さん
あたりの発表でした。
「Objective-C++を使ってMRCで快適に開発する」 八十嶋祐樹さん
Objective-C 1.0 の "MRC(Manual Reference Counter)" から、Objective-C 2.0 の "ARC(Auto Reference Counter)" を経てSwift 1.0, 2.0, 3.0と歴史を辿ってきた開発者からすると温故知新の内容でしたが、あらためてMRCの利点、欠点を見直して、ARCの恩恵に感謝する良いきっかけとなりました。
発表後の質疑応答において「ARCではなく、敢えてMRCを使う利点は何ですか?」との質問に対して「オーディオ処理においてARCでは音質が劣化する気がする。ARCでは音が一瞬跳ぶような気がする。」との答えに、オーディオマニアの闇が垣間見れて面白かったです。何事もこだわりが大切ですよね。^_^;
「Auto Layoutのアルゴリズム」 稲見泰宏さん
Auto Layoutの基本アルゴリズムを数学の分野から線形計画法、シンプレックス法と辿りながら説明した内容でした。Auto Layoutはプログラマー(デザイナー)が与えた全ての条件(パラメーター)を満たすように実現しているわけではなく、できる限り多くの条件をクリアするようにアルゴリズムが工夫されている、その「できる限り多くの条件を満たす」という命題を解くための方法が線形計画法であり、シンプレックス法である、というストーリ立てがわかりやすかったです。
今を去ること二十数年前、私がまだ大学生だった頃に、BASICやC言語のアルゴリズムの例として線形計画法やナップザック問題などが取り上げられていたことを懐かしく思い出したテーマでした。
土曜日の午後は数学を話題にしたテーマが続けて2セッション。聴講者はパラパラと数える程度の閑散としたセッションになるのかと高を括っていたら、立ち見もでる大盛況でした。
「Swift で数学のススメ 〜 プログラミングと数学を同時に学べ」 佐野岳人さん
数学やベクトル演算といったテーマはPythonの独擅場かなと思っていましたが、SIMD(Single Instruction/Multiple Data)を意識したデータ構造の工夫とか、まだまだiOS/Swiftプラットフォームでも解決すべき課題はあるのだな、と再認識しました。
「Swiftプログラマのための今さら聞けない計算量の話し」 藤本尚邦さん
アルゴリズム/データ構造/APIの違いによる計算量(計算速度)の話。高性能のマルチコアCPUをブンブン振り回して、計算量など気にする機会も少なくなってきましたが、やはり基本を押さえて、Appleのリファレンスマニュアルの記載内容も押さえて、最適なAPIを選択してプログラムを構築する重要性を思い出すことができました。自分でアルゴリズムを実装しないまでも、せめてAppleが提供するAPIの中から目的とパフォーマンスに最もマッチした一つを選択できるようしたいと再確認しました。
そのほかにも文字コード変換の闇を語ったセッションやエラーハンドリングの方法はどれを選べばいいの?といった内容など興味深いセッションが目白押しでした。
土曜日のランチは、iOSDCのロゴが描かれたオシャレな紙袋に、オシャレなオープンサンドに、オシャレなサラダがついて、オシャレなランチになりました。お昼休みは台風18号接近直前ぎりぎりの曇天だったので、早稲田大学のキャンパスの中庭でお昼をいただきました。
土曜日の最終セッション LT (Lightning Talks)直前にビールが配られたので、ほろ酔い加減で最後は聞いていました。朝の10時からセッションがつづいて、すでに撃沈寸前でしたし… ^_^;