iOSDC Japan 2017で宇宙について話したよ

iOSDC Japan 2017について

「iOSエンジニアのお祭り」という感じで楽しかったです。
会場やフォトスポット、オープニングなどの演出、ノベルティに至るまで、本当に素晴らしいカンファレンスでした。
(特にTシャツがかっこよくて気に入っています。)
これだけ大規模なカンファレンスの準備は大変だったと思います。スタッフの皆様には感謝感謝です。

日程について

9/15-17、金曜日の夜と土日で開催でした。
実際に行くまでは平日開催のほうが嬉しいなと思っていましたが、いざ行ってみると参加者の人みんなが「休みの日もiOSやりたい」熱気にあふれた人たちだったので楽しかったです。

トークについて

パフォーマンスや、アーキテクチャについての話とかも面白かったですが、特にサービス運用の泥臭い話がとても面白かったです。
来年はもっといろんなサービスの泥臭い話が聞ければいいなと思っています。

自分のLTについて

全体的な感想としては大失敗でした。皆さんの貴重な5分間を無駄にしてすみませんでした。

🍺🙅

そもそもの失敗の原因は、CfP提出のとき。
iOSDCのCfP受付期間中、引っ越しと不動産屋との喧嘩で非常に消耗していて、今年はiOSDCに行かなくてもいいかなという気持ちでした。
しかし、締め切り2時間にビールを飲みながらプロポーザル一覧を見ていたら楽しくなってしまって、勢いでCfPとざっくりとしたシナリオを書いて、「よっしゃなんとかなる」と決断をして送信ボタンを押しました。

酔っ払って書いたCfP

宇宙は可能性に満ちています。
あらゆる状態が同時に存在する多次元宇宙で、我々はどのように情報を設計し、アプリの画面に落とし込めばいいのでしょうか。
このトークでは、アプリの画面の階層を正しく設計し、人類のための画面遷移を人類が開発・運用するためのプラクティスをついてお話しします。

ビールを飲んでるときにCfP書いちゃだめ。絶対。

宇宙

完全に宇宙について無知だったので、採択されてから発表までの資料作成の時間の殆どの時間を宇宙についての勉強に費やすことになりました。
読んだ本はこちら。

勉強すればするほどわからないことが増えていきました。
宇宙ヤバイ

資料作成

相対性理論、標準理論、超ひも理論、M理論、ダークエネルギー、ダークマター…宇宙についての面白い話題はいっぱいあったのですが、どうやってiOSに着地させればいいのか。ずっと悩みました。
もっと設計寄りの話に落とし込みたかったのですが、解決策が見つからず、仕事で作っているアプリのRootViewControllerのコードの解説に落ち着きました。
すべてのアプリに適用できる(無意識に適用されている?)構造なので、共感してもらえるかと思ってたのですが、皆さんの反応を見る限りそうでもないようですね。

発表資料

サンプルコード

GitHub – haranicle/RootViewControllerSample

よかったところ

  • 自己紹介を削ったおかげで内容について話す時間を確保できた
  • いっぱい練習したおかげでほぼ時間ぴったりだった(手元の時計で4分40秒ぐらい)
  • 色確認用スライドを作って事前にプロダクション環境で色とフォントサイズのチェックした
  • なんとか5分間壇上に立っていられた


プロダクション環境でテストする様子

よくなかったところ

いっぱいありますが、CfP以外だと…

  • カンファレンスのLTはナマモノ感があった方が面白いかなと思って、直前にスライドをいじってしまった
    • そもそもアドリブが効かないのにそんなことしちゃだめ
  • LTでコードを出してしまった
    • スピード感がなくなる
    • そんな短時間でコード読めない
  • マイクを持った状態で発表練習をしていなかった
    • マイクを持ちながら話すことになれていないので、マイクを持った瞬間パニック
    • 死ぬほど緊張して、カミカミになってしまった

LTを終えて

LTは大失敗でしたが、懇親会で色んな人に話しかけてもらえたし、面白かったという感想をいただいたので素直に嬉しかったです。
iOSエンジニアみんなやさしい…

iOSDC Japan 2018

期待しています!
次はビールを飲んでいないときにLT以外でCfP出したい。


YosemiteにしたらCocoaPodsがうごかなくなった

エラーメッセージ

$ pod install
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in `mkdir': Permission denied - /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-14 (Errno::EACCES)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:245:in `fu_mkdir'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:219:in `block (2 levels) in mkdir_p'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:in `reverse_each'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:217:in `block in mkdir_p'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:in `each'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/fileutils.rb:203:in `mkdir_p'
	from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:210:in `write_gem_make_out'
	from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:132:in `build_error'
	from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:171:in `rescue in build_extension'
	from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:156:in `build_extension'
	from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:198:in `block in build_extensions'
	from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:in `each'
	from /Library/Ruby/Site/2.0.0/rubygems/ext/builder.rb:195:in `build_extensions'
	from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1436:in `block in build_extensions'
	from /Library/Ruby/Site/2.0.0/rubygems/user_interaction.rb:45:in `use_ui'
	from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:1434:in `build_extensions'
	from /Library/Ruby/Site/2.0.0/rubygems/stub_specification.rb:60:in `build_extensions'
	from /Library/Ruby/Site/2.0.0/rubygems/basic_specification.rb:56:in `contains_requirable_file?'
	from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:925:in `block in find_inactive_by_path'
	from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in `each'
	from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in `find'
	from /Library/Ruby/Site/2.0.0/rubygems/specification.rb:924:in `find_inactive_by_path'
	from /Library/Ruby/Site/2.0.0/rubygems.rb:185:in `try_activate'
	from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:132:in `rescue in require'
	from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:144:in `require'
	from /Library/Ruby/Gems/2.0.0/gems/xcodeproj-0.17.0/lib/xcodeproj/ext.rb:4:in `<top (required)>'
	from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /Library/Ruby/Gems/2.0.0/gems/xcodeproj-0.17.0/lib/xcodeproj.rb:30:in `<top (required)>'
	from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.33.1/lib/cocoapods.rb:2:in `<top (required)>'
	from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /Library/Ruby/Gems/2.0.0/gems/cocoapods-0.33.1/bin/pod:32:in `<top (required)>'
	from /usr/bin/pod:23:in `load'
	from /usr/bin/pod:23:in `<main>'

解決法

これでなおった。

$ sudo gem uninstall cocoapods && sudo gem install cocoapods