その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

iOSDC 2024に登壇しました/発表準備メモと会期後のキャッチアップ #iosdc

iOSDC Japan 2024 という国内最大級 1 のiOSカンファレンスで登壇させていただきました。

初回の2016年〜2024年までで通算8回目の登壇となります。

目次

トーク内容

資料と概要

今回は「GIS入門 - 地理情報をiOSで活用する」というタイトルで発表させていただきました。プロポーザルはこちらですが、もしタイトルを修正できるなら

「GIS入門 - 地図をしくみから理解し使いこなす」

とした方がより内容の実態に近いと思います。地図がどんなデータを用いて、どう描画しているのか、しくみから理解することで色んな応用ができるよ、という話です。

スライドはこちら:

www.docswell.com

MapKitやCore LocationはiOS黎明期からあり 2、「2024年にもなって、いまさら地図の話!?」と思われるかもしれません。しかし本トークはMapKitや特定SDKの解説ではなく、地図アプリケーションを構成するデータや技術について紐解き、それら本質的理解をもって地図/GIS領域であれこれできるようになろう、という趣旨のトークなので、いまさら?と思われた方もぜひ見ていただけると嬉しいです。

GIS楽しい

整理してみると要素はこれぐらいだったりします:

ツイートにも書いてますが、このあたりのことを理解しておくだけで、世界中の色んな団体が公開してる膨大な地図データや各種統計、衛星データ、3D都市モデル等々が自分の引き出しに加わって、一気に選択肢が広がってめちゃくちゃ楽しくなります。このトークが採択され、この領域について勉強する機会を得られて本当に良かったなと思います。

フィードバックください!

発表やスライドを見ていただけた方、以下からフィードバックをいただけると大変喜びます:

https://fortee.jp/iosdc-japan-2024/me/feedback/71a271a5-faea-4083-b0f9-1fa1487e42d6

当日の発表時間帯のツイート:

togetter.com

その他本発表への反応:

このトークのゴールが、地図を仕組みから理解し、iOSでさまざまな応用ができるようになるというもので、しっかりと仕組みが理解できる分かりやすい発表でした。

作れないものは、理解ができないという考えのもと、MapKitを使わずにiOSで地図を作りながら仕組み/GISの基礎を理解していくというものでした。

「地図を作ろう」という考えに至っただけでもすごいのに、実際に最終的にはポケモンGOのようなオリジナルの地図の描画まで成功して驚きでした。 ベクタータイルのデータとスタイルを適用するだけで簡単にオリジナルの地図ができるなんて、、

【iOSDC Japan 2024 レポート】「GIS入門 - 地理情報をiOSで活用する」を聞いてきた。 | DevelopersIO

ちょうど、Map Kitを使ったアプリを個人で作っているところで、地図の仕組みについて気になっていたところでした。地図はラスターデータ/ベクトルデータ、地図タイル/タイルインデックスといった要素のもとに成り立っていることが分かりました。驚いた点としては3Dマップは3Dモデルが用意されているのではなく、3D的に描画しているという点でした。

iOSDC JAPAN 2024に参加してきた!|Shun

地図の仕組みを一から理解し、iOSアプリでさまざまな応用ができるようになることを目的としたトークです。iOSアプリエンジニアの方であれば、MapKitのAPIを使用してiPhoneの画面に地図を表示したことは、一度はあるのではないでしょうか。 一方で、地図が表示される仕組みについて深く考える機会はほとんどないと思います。本トークでは、地図の仕組みから始まり、実際にコードを見ながら地図の仕組みの解説を進めていきます。最初はベーシックな地図を表示する方法、最後はマップ上に人間とモンスターを配置した、某ゲームのようなデモを披露してくださいました。

【イベントレポート】iOSDC Japan 2024 - Timee Product Team Blog

準備メモ

例年、「そろそろ準備しないとやばいのでは」「今年はさすがに間に合わないかも...」と焦るので、昨年あたりから簡単な進行メモを書くようになりました。

自分にはこれが大変有用だったので、お試しで今年の進行メモを公開してみます:

  • 8/3

    • 技術調査に着手
      • GIS関連の本を買ったり、Mapbox Maps SDK for iOSのサンプルをビルドしてみたり
  • 8/5〜8/9

    • Mapboxの公式サンプルのコードリーディング
    • GIS本を読み、内容を実践
    • ざっくり発表の流れ案を書いた

この時期に書いた記事:

note.com

  • 8/11〜8/14
    • 「MapKitや他のSDKなしで地図実装」サンプル実装
    • マップカスタマイズサンプル実装
    • 別のサンプル実装にもこの頃着手(流れから外れるので結局発表には盛り込まなかった)

この時期に書いた記事:

note.com

zenn.dev

  • 8/15, 8/17

    • スライド作成着手
    • 友人に流れだけ見てもらった
    • 8/16は進捗なし
  • 8/18〜8/19

    • Mapbox Studioを使ってカスタムスタイル作成 → iOSサンプル実装
    • ベクトルタイルについて調査(ローカルメモのみ、時間があれば記事にしたい)
  • 8/20

    • スライド作成に戻る
    • 友人・同僚に作成途中のスライドで流れを見てもらってFBもらった
  • 8/21(発表前日)

    • 東京へ移動
    • スライドの初稿ができた
    • 初めて通しでやってみた。途中資料の修正とかをやりながら話して37分ぐらい
  • 8/22(発表当日)

    • 通し練習と資料のブラッシュアップ
      • 最後の通し練習で26分弱(デモなし) 3

今年のトークテーマもそうですが、僕の場合は「登壇ドリブン学習」が登壇のモチベなので、基本的に

技術調査 → 実装(サンプル作成) → 資料作成

の流れで登壇準備が進行していきます。作成したサンプルが発表での解説の軸になる(こういうのをどう実現するか?を解説していく)ので、基本的に準備期間の80〜90%ぐらいは 技術調査 → 実装 のサイクルを回しています。

大量のトークをいかにキャッチアップするか

高い競争率の中で選ばれた珠玉のトーク群、あれもこれも見たい。しかし会期中は自分の発表の準備や開発者同士の交流も忙しく、トークを見に行けないことも多い。

そんなわけで会期終了後に追っかけ再生でキャッチアップするわけですが、総トーク時間1,765分(30時間弱)もあるトークを忙しい日々の中でいかにキャッチアップするか。

クロージングより

例年であれば見たいトークをピックアップし、見たい順にスキマ時間をみつけては見ていく、という感じでやっていた(やろうとしていた)のですが、まーこれが頓挫します。ほぼ毎年ピックアップしただけで結局見ずに終わります。

というわけで今年はこうしてみることにしました:

  • day 0のトラックA〜D → day 1のトラックA〜D → day2のトラックA〜D、という順番でニコ生のタイムシフトを見ていく
  • 基本的に倍速再生(1.75x)し、スキップや早送りはどんどんやっていいが、戻ったり、メモのために一時停止したりは絶対にしない

この方法のポイントは、日毎、トラック毎に順番に見ていくことで、「どのトークから見ていこうかな」という優先度の意思決定が不要になることです。とにかくサッと取り掛かることができます。また全体の中でいまどのぐらい見終わったかという進捗状況も明確になります。

あとは戻ったり止めたりしないこと、これを課すことで、メモ等で無限に時間がかかってしまい途中で頓挫する問題を回避できます。どうしても見返したいトークは控えておいてあとで見返せばよく、とにかくまずは「見ようと思ってあれこれピックアップしたのに結局ひとつも見なかった」という最悪の事態を避け、「いったん見る」ことを重視した方針となっています。

今年はこれのおかげで、例年より調子良くキャッチアップできています。半日ほどで半分ぐらい見終わったので、実質4倍速ぐらいで見れているかもしれません。

→ (2024.9.12追記)8/26に半日、9/10に半日の2回で全部見終えることができました。この方法自分的にはかなり良いです。

勉強になったトーク

(たくさんあるので後でまとめます)

おわりに

今年もiOSDC最高でした!自分の勉強としても有益だったし、懐かしい方やはじめましての方、おなじみの方々ともたくさん交流できてとにかく楽しかったです。

登壇直前の様子(ta_ka_tsu さん撮影)

前夜祭後のコミュニティ飲み。iOSDC参加してない人も含め14人集まりました(かっくん撮影)

オープニングパーティー後、神山.swiftの集まりにまぜてもらいました

ブースの中にこそ立っていなかったものの、何度も立ち寄らせてもらいました

主催者の長谷川さんをはじめ運営スタッフのみなさま、スピーカーのみなさま、参加者のみなさまどうもありがとうございました!来年に向けてまたプロポーザル案を温めておきます!


  1. 今年は参加者1500人超で過去最高だったそうです。
  2. しかも近年ではプライバシー系のアップデートがほとんど。
  3. 本番、自己紹介等いろいろカットし、質問タイムをつぶしつつも最後のデモまでやり切ることができました。おそらく25分ぐらい。

try! Swift Tokyo WWDC Recap 2024 に登壇しました #tryswift

2024年7月12日に開催された「try! Swift Tokyo WWDC Recap 2024」にて、「Core MLのアップデート」と題して登壇させていただきました。

発表資料はこちら:

www.docswell.com

記事として再構成したものがこちら(スライド版よりこちらのほうがオススメです):

zenn.dev

会場はなんとApple JapanのCaffè Macs。

https://x.com/toyochang/status/1811674746838483273

発表中の様子 1

https://x.com/toyochang/status/1811677924736848178

https://x.com/toyochang/status/1811680791614881973

参加人数70名以上とオフライン発表としてはカンファレンス並みの規模/try! Swiftプレゼンツ/そして会場はAppleということでかなり気合を入れて 2 発表準備を行いました。参考になる部分があれば幸いです。

当日のツイート:

togetter.com

またパネルディスカッションにも参加させていただきました。

https://x.com/toyochang/status/1811699862779629753

運営のみなさま、Apple Japanのみなさま、参加してくださったみなさま、貴重な機会をいただきありがとうございました!


  1. 会場内は撮影禁止で、特定のスタッフの方からの写真がXに投稿されるという形式でした。
  2. coremltoolsを用いたモデル圧縮というテーマは多くのiOSエンジニアにはなじみがないと思われるため、各圧縮手法について厚めに解説を行ったり、つかみとして(よりわかりやすい)新モデルの紹介とデモを最初に持ってきたりしました。

7年ぶりにWWDC会場参加してきました

ひさしぶりにWWDCの抽選に当選し、クパチーノまで行ってきました。

2019年まではチケットが当たらなくても現地に行ってたので、現地参加は5年ぶり7回目、

shu223.hatenablog.com

チケット当選しての会場参加は2017以来7年ぶり3回目です。

クパチーノ本社開催になってからは初。

思い出

出発

  • 郊外在住なので電車遅延の可能性を考慮して3時間半前に到着するよう出発(3時間半前に到着した)
  • 同じ便で行く日本人WWDC参加勢が多く、空港でビール飲んで既に楽しかった
  • 空港でも機内でもわりと作業が捗った 1

note.com こちらの記事に空港の様子が載ってました

6/8 到着初日

  • 週末だけ工事で?Caltrain止まってたので、Lyft乗り合いでクパチーノまで移動
  • 昼の到着だったのでチェックインまで2時間ほどロビーで作業
    • 「いらないかな...」と持っていくか迷った延長コードがさっそく役立った
  • 飲み会
    • もしこの予定がなかったらホテルで寝てしまって昼夜逆転しただろうから大変ありがたかった

6/9

  • この「記事みたいなマークダウンを自動生成」するツールがだいたい完成

  • Infinite Loopで受付 & パーティー
    • かつてのバッシュみたいな感じ
    • めちゃくちゃ楽しかった

並ぶと写真を撮ってもらえる(写ってるのは @myb さん)

  • パーティーラストまで居残り、その後とあるAirbnbハウスに移動して多国籍飲み

6/10

  • 初Apple Park

  • 基調講演
    • ゆっくり来たがちゃんと席取りできた
    • 見るのは結局動画なのだけどフェス感あって楽しかった

  • Xcode 16 beta / iOS 18 betaダウンロード大会

    • 会場に有線LANと電源ケーブル完備のダウンロード用のエリアがある
    • いち早くそこに Hacking with Swift の Paul さんが来ててさすがだなと思った
    • ダウンロードしつつランチも食べた
    • たまたまそのタイミングでiOSDCの採択通知も来た(そのとき横並びにいた日本人4人が全員採択)
  • Platform State of the Unionは最前列で見た(動画を)

  • iOS 18のサンプルを一通りビルドして実機で動かして試した

  • バスケさん、inuroさんといったベイエリア在住の方々と飲み会

6/11

6/12

  • 昨日お茶した友人に案内してもらって、日本からきたデベロッパー数人とMeta社のオフィスツアー
    • MPK21ってところはMITを彷彿とさせる遊び心あるオフィスで、めちゃくちゃ良かった
    • MPK10は10年以上前にも来たことがあったのだが、あらためてめちゃ良いと思った

  • 宿をクパチーノからサンフランシスコに移動

6/13 〜 16

  • 日中はひたすらWWDC24セッションのキャッチアップ(後述)、たまに散歩
  • Appleで働く方とカニを食べた
  • Fyusion時代の元同僚(今はApple)と飲み

WWDC24の勉強

キャッチアップと発信を同時進行。記事をたくさん書いた。

⭐ の記事は全文読めるのでぜひ。

あと帰国後ですがApp Intents関連のセッションをZennの方にまとめていってます。

WWDC24雑感 - 気になる新機能

  • 本命としてはApple Intelligenceだけど、現状実際の動作としては確認できないので、まだ様子見というところ
  • ただApp IntentsはAI関係なく魅力的な機能なので、これを機にキャッチアップして対応していきたい

  • Core ML周りも生成AI時代の到来に伴ったアップデートが行われ、ローカルLLMやCore ML Stable Diffusionを触っていて一番壁に感じていた部分を解決する新機能が入ったので、いろいろなモデルをCore ML化してiOSオンデバイスで動かして遊んでみようと思う

  • 他にもML周りは気になる機能がたくさん

    • 例: "ExecuTorch"(PyTorchモデルを直接動かせる機能?)
  • あとはDockKitと、Object Captureのエリアモードあたりで遊んでみたい

今後の登壇予定

キャッチアップした内容や調査したことについて発表すべく、いろいろ登壇予定です。

全部違うネタで話す予定です。

ネタはいくらでもあるので他にも発表させてくれる場があればぜひお声がけください。


  1. ただ実装はオフラインでCopilot使えない中やっても効率悪いなと思って他のことをやってた

マネージャーからエンジニアに戻ります

昨年4月、「研究開発部のマネージャー」という自分にとってまったく新しいキャリアにチャレンジする旨を本ブログにて報告させていただきました。

shu223.hatenablog.com

それから約1年越しでの続報となりますが、この5月末をもって、この新しいチャレンジからは降りさせていただきます。平たくいうと、マネージャーやめます。

普通はこういう記事ではそのキャリアの中で挙げた華々しい成果を並べ立てるものですが、正直なところ未だにマネージャーとしてめぼしい成果は挙げられていません。やっとスタートラインに立てたかな...というような状況です。

上長やメンバーにはマネジメント経験が一切ないところから多大にサポートいただき、その恩に報いるのはこれから、というところなので心苦しさもあり、そしてマネージャーとしての景色が見えてくるのもマネジメントのおもしろさがわかってくるのもまだまだこれからという中途半端感もあり、大いに悩みましたが、年始から上長に相談を始め、2月末に正式にやめることを決めました。

4月・5月と引き継ぎを行ってきて、6月からはエンジニアに戻ります。

またフリーランスエンジニアとしてお仕事をいただけるようイチから発信して・・・

・・・と当初は考えていたのですが、エンジニアとしてSansan社に残ることになりました 1。これからはまた手を動かすことに全振りしていきます。

youtu.be

(正式にエンジニアの仕事をスタートするのは6月からではあるが、現行業務の合間をぬってプロトを作ったりは既に開始している。このタッチ名刺交換のプロトはプロダクトに正式採用されることになった 2

マネージャーとして入ってきてわずか1年で辞めることになり、研究開発部のみなさんには徒に混乱を呼び非常に申し訳なかったです。外から来た初心者マネージャーを手取り足取りサポートいただき、ありがとうございました。そして、すみませんでした。これからはエンジニアとして少しでも恩返しができればと思います。

また、エンジニアの実績としてはここ数年停滞気味であると自覚しているので、また初心に帰ってコツコツと勉強と技術発信のサイクルをしっかり回していきたいと思っております。

以上、ご報告でした。


  1. 会社側からエンジニアとしてのおもしろいポジションを提案していただいたのと、僕の方でもせっかく1年間Sansan社の「中」に入れてもらって、いろんな人にサポートしてもらいながら組織や事業や保有技術についてキャッチアップしてきたので、何かまだ「中にいるからこそ貢献できること」があるならぜひ、という感じで残ることに決めました。
  2. プロト内で使用しているのはダミー名刺。また本動画は社内Slackに投稿したものですが、会社から許可を得て公開しています。

12年間iOSだけやってきたエンジニアのキャリアチェンジ

iOSだけを12年間もやってきたフリーランスiOSエンジニアです。ここに来てついに新しい挑戦をすることにしました。

4月からSansan社に就職して、研究開発部門のマネージャーをやります。

このキャリアチェンジには3つの点で新しいチャレンジがあります。

これぐらいギャップのある今回のキャリアチェンジですが、ここに至った経緯や考えを書いておこうと思います。

経緯

価値観の変化

プログラマーになって10年近く、とにかく自分の手でものを作れることが楽しく、ただひたすらに手を動かすことだけをやってきました。楽しくて、稼げて、自由度も高い。そこに一切の疑問を持つ余地はありませんでした。

少し状況が変わってきたのが2018年9月。第一子が誕生し、家庭の事情により私がメインで育児を行うことになりました。今まで好きなときに好きな場所で好きなだけ仕事ができていたのが、まず育児の都合があり、次点で仕事をしてもよい、という状況になりました。

これによりタフな仕事、移動を伴う仕事、時間の縛りが厳しい仕事etc.は受けることができなくなり 1、「興味のある技術を学び、発信して、おもしろい仕事を得る」という10年間回してきたサイクルが初めて揺らぐことになりました。

Sansan取締役の方からのメッセージ

そんな折、Sansanの取締役でありEight事業部長 兼 技術本部長である塩見さんからFacebookでメッセージが届き、オンラインミーティングにてこのポジションについて打診をいただきました。2

数年前に同じ話をいただいていたらもしかしたらまったく興味を持たなかったかもしれません。

ただ今の私にはこれ以上なく面白いチャレンジに思えました。(後述します)

選考

最初のメッセージをいただいたのが2021年12月20日。興味ありますとお伝えし、年末年始休みを挟んで年明けから2度ほどの面接を経て、オファーをいただきました。最終的な返答をしたのが1月20日。ちょうど1ヶ月で浮上し、決まったキャリアチェンジでした。

ちなみに就職活動をしていたわけではないので、他社の選考を受けたり比較検討したりは一切していません。

面接内容で印象に残っているのは、最初に

自己紹介を10分〜15分ぐらいで話してください

と言われたことです。

いつも話が長くなりがちで短くしなきゃ短くしなきゃと思ってる自分としては「えっ、そんなに長々話していいの!?」と嬉しくなりました 3 。自分の考え方や仕事観を根掘り葉掘り聞いてくれて、非常に楽しかったのを覚えています。

興味を持った理由

冒頭で書いたとおり、私はマネジメント経験も研究開発部門がやっているような技術のバックグラウンドもないし、ずっとプレイヤー志向だった人間です。

なぜ今回のポジションをやりたいと思ったのか。また、門外漢の自分がどう貢献できそうと考えたのか。について書いておきます。

非線形な機会」だった

尊敬する先輩エンジニアの

勘違いした話しほど面白い案件はない

という言葉がとても印象に残っています。

フリーランスは何らかの既存の技術や実績を買われて仕事の依頼がくるもので、そこにももちろん新しい学びや経験は多くあるのですが、あくまで自分のこれまでの延長線上にある機会でしかありません。

しかし今回は、

  • iOSばかりやってきた人間に研究開発部門
  • フリーランスを好む一匹狼型プレイヤーにマネジメント

という「なにかの間違いでは?」と思えるようなオファー。明らかに僕がこのままフリーランスiOSエンジニアを続けていった延長線上にはない、「非線形な機会」です。

もともと、何をやるにもとにかく「時間がない」ことがボトルネックとなる状況が慢性的に続いていて 4 、今の自分にもっとも必要なのは「人に任せる」スキルでは、と何年も課題に思い続けていました。

ただ、「自分でやる」のが好きでエンジニア稼業をやっている身。なかなかそこに踏み出せずにいました。かつて「英語を話せるようになるには英語を話すことだ」と思い英語しか話せない環境に飛び込んだように、マネージャーという「人に任せることしかできない環境」に身を置く今回の機会は、自分にとって不意に舞い込んだ重要なチャンスのように思いました。

「裏方として人の人生を応援するのも良いものだ」と思えるようになった

ずっと「自分の」技術力を磨き、「自分の」手を動かしてつくることが楽しく、マネージャーやリーダーになることには1ミリも興味がありませんでした。

そんな価値観が変わってきたひとつのきっかけはコミュニティの運営です。

僕が運営するコミュニティは当初サロンとして立ち上げましたが、今では僕自身が直接提供する価値はほとんどなく、僕は空気のような存在です 5。僕より技術力の高いエンジニアの人たち、僕にはない経験をしたことある人たち 6、僕より教えるのが上手だったりコミュニケーションが上手だったりする人たちが多くいて、教え合ったり励まし合ったり雑談したり、またイベントが開催されたりと、僕の介在しないところで価値のやり取りが行われています。

そんな中で、「裏方として」立ち回って皆が楽しく過ごす場作りをするのも良いものだな、という新しい価値観が自分の中で芽生えるようになりました。

マネジメントもいろいろなスタイルがあるとは思いますが、裏方としてメンバーが働きやすい状況・環境を整えていく、というのもまたひとつの役割だと思います。そういう観点でみると、まったく畑違いの門外漢「だからこそ」裏方としてメンバーを支えることに徹することができそう、そして今の自分はそういう仕事を楽しめそう、と考えました。

まとめ

長くなりましたが、iOSばかり12年やってきたフリーランスエンジニアが研究開発部門のマネージャーをやることになった経緯と考えについて書かせていただきました。

入ったらどんなことをやるのか、どういう貢献ができそうなのか、というのはまた「後編」として別記事に書くか、追記したいと思います。

入社まで残り数日となった今、心境としては不安が5%、楽しみ95%という感じです。こういうチャンスをいただけたことに感謝し、楽しみつつがんばりたいと思います。


  1. リモートワークよりも「オフィスにいってお客さんの横で一緒に仕事をする」ことを好んでいましたが、育児の都合ですべての案件をリモートにせざるを得ませんでした。(その後コロナが来てみんなリモートになりましたが)

  2. 最初に声をかけてくれた塩見さんは、長らくEightの事業部長をされていて、フリーランスエンジニアとして何度かお仕事をさせていただいたことがありました。何かを気に入っていただけたようで、今回だけでなく、これまでも折に触れて声をかけていただいてました。

  3. もちろん僕のことをめちゃくちゃ知りたいというわけではなく、そのプロセスの中でどんな考え方をするのかを見る質問だったようです。

  4. これはもう子供が生まれるよりもずっと前から。とにかく何をやるにも時間がボトルネックとなっていた。 https://note.com/shu223/n/n46a4c4d49fc5

  5. サロンがコミュニティに変化していった経緯はこちらのYouTube にて詳しく話しています。

  6. たとえば土地を買って家を建てる経験があったり、起業・会社経営の経験だったり、車に詳しかったり、税務に詳しかったり、現役薬剤師さんだったり、自家発電して電力会社に電気を売っていたり、多くの有名なアニメで作画をしていたりと、基本的にみんなエンジニアではあるのですが本当にいろんなバックグラウンドの人がいます。