こんにちは。
今回は珍しくブログと言いますか、日記的な感じの内容となります。
まえがき
先日、iOSDC Japan 2024というiOS関連の技術系イベントが
早稲田大学の理工キャンパスにて開催されました。
私もMacBookProを普段から2台持ち歩いているヘビーiOSユーザーの為、
このような面白そうなイベントがあれば参加するしかないと思いDay0からDay2に渡り
早稲田大学まで行ってきました。
ちなみにiPhoneは持っていません。
印象に残った・興味を持ったセッション
どのセッションも面白そうで興味が尽きないセッションばかりでテーマパークに来たみたいでした。
その中でも印象に残ったセッションをリストアップしました。
が、思ったより多くなってしまったので、中でも個人的に好きだったセッションを5つのみ紹介します。
残りのリストはリンクだけ置いておくので、自分でスライドを見たり
ニコニコ生放送にあるアーカイブを何とかしてみてください。
ゲームボーイアドバンスでSwiftを動かそう
Swiftコードバトル
iPhoneの外部センサーを使わない位置測定 ~測定誤差を添えて~
ゼロから始めるiOSセキュリティ~OWASP Mobile Top10から学ぶ脆弱性対策
iPhone×NFCで実現するスマートキーの開発方法
iPhoneへのマイナンバーカード搭載におけるデータ規格についての理解を深める
ゼロから始めるiOSセキュリティ~OWASP Mobile Top10から学ぶ脆弱性対策
RaspberryPiPicoをSwiftで操作する
アプリバイナリ解析入門 ~実機向けバイナリをARM64シミュレータ向けに変換する方法を例に~
Appleウォレット/Googleウォレットにチケットを保存する方法
AppleSiliconを最大限に活用する方法
アプリ内課金と自社の認証基盤を連携する複雑な課金ネットワークを構築する
GPUの歴史~キャラクタージェネレータからNPUまで.謎の半導体メーカーの株価とともに~
ルーキーズLT
LT大会
ボーイアドバンスでSwiftを動かそう
タイトルを見た瞬間に「あぁこれはおもしろそう」ってなったセッションです。
令和のこの時代にGBA!?というかSwiftで書いたプログラムが動くの!?
って感じですよね
Go言語のTinyGoで書いたプログラムをGBAで動かせるという事だけは知っていたのですが、
SwiftでもGBAのプログラムを作れるというのはかなりの驚きでした。
スライド内でもAppStoreにGBAのエミュレータが出ていたというのも驚きでした。
とはいえ、せっかくGBAで動作するプログラムが作れたなら実機でも動かしてみたいですよね・・・
どうやったらGBA実機で自作プログラムを動かせるのか考えてみたのですが、
マジ太郎を使うくらいしか思い浮かびませんでしたが、
こちらは現代では購入することが出来ず、
海外から輸入を行うだけでもいっぱい怒られてしまう代物のため、
なかなかに厳しいのが残念です。
ちなみに私はSwiftは使ったことが無いので、次回iOSDCまでには触ってみようと思いました。
Swiftコードバトル
- https://fortee.jp/iosdc-japan-2024/proposal/d3624e15-2b17-4583-82fb-12fe6316a32d
- https://fortee.jp/iosdc-japan-2024/proposal/5b0be89b-d9db-44f2-a2d0-60ceb0f45545
- https://fortee.jp/iosdc-japan-2024/proposal/c4ded47e-9785-430e-9699-2a7e2d30878d
- https://fortee.jp/iosdc-japan-2024/proposal/897986cd-7ca2-4a73-a17e-63899669f961
- https://fortee.jp/iosdc-japan-2024/proposal/9bdaf36f-a5c5-4634-92ea-4c39ea705d93
- https://fortee.jp/iosdc-japan-2024/proposal/4764c95f-cadb-4373-b45f-17ef4aad660a
- https://fortee.jp/iosdc-japan-2024/proposal/dd2d5972-bc75-4c1b-95a6-71e1097b0b3a
手に汗握る熱い戦い
上記にも記述がございます通り、私はSwiftを使ったことがありません。
しかしそれでも伝わる緊張感と熱気
熱気は会場が暑かったからなんですけども。
どの試合も面白くて、ついつい魅入っちゃいました。
競技自体はコードゴルフという競技となっており、
いかに短く実行可能なコードを早く書くことができるかという競技です。
コードが短くなってくると言語とかがあまり関係が無いコードになってきて、
Swiftで書かれているコードにも関わらず何故か読める、
みたいな不思議な感覚が味わえたのもヨカッタです。
iPhoneの外部センサーを使わない位置測定 ~測定誤差を添えて~
端末のセンサーのみを利用した位置測定の理論などを
わかりやすく解説を行ってくれてました。
理論は中学生でもわかるようにわかりやすく解説されており、
加速度センサーやジャイロスコープを利用したデータの取り方を
情報工学系の高校生でもわかるように解説されてます。
また、セッション内に笑えるポイントが散りばめられており、
会場も盛り上がっていました。
今月中にAppleが新型iPhoneを発表するらしいという話を聞いていますので、
発表された新型iPhoneに買い替えて、このセッションで学んだ内容でセンサーを利用して
遊んでみたいなぁと思うような内容でした。
多分新型iPhone買います。
ゼロから始めるiOSセキュリティ~OWASP Mobile Top10から学ぶ脆弱性対策
皆さん大好きOWASPの話です。
発表者の方が脱獄したiOS向けのプログラムの開発者だったらしく、
ライセンスクラックに対する防衛術を他のハッカーから学んでいたりと面白いスタートでした。
ぶっちゃけモバイルアプリは全くの専門外で、開発もクラックもやったことが無く、
昔使ってたiPhone5を脱獄して延命していたくらいの経験しかありませんでした。
そのため、正直あまりよくわかっていませんが、
将来的に何かの役に立ちそうだなと話を聞いていました。
クレデンシャルを扱うならkeychainを利用しろ!とか、そもそも平文で保存するなとか
セキュリティ的にそらそうだって話ですが、
セキュリティはモバイル端末に限った話ではないって事が改めて認識できた気がします。
たまにある難読化の有効性に関する話題とかにしっかり触れられており、
アプリの一部分のリバースエンジニアリングを実際に行ってソースコード内に
ハードコードされた暗号鍵を解析して、わかりやすく解説がされていました。
デバッガ―を利用して暗号鍵を盗む方法(動的解析)の解説もありました。
やはり難読化は時間稼ぎ
やっぱり開発者も脆弱性について理解しておく事って大事なんやなぁ
って思いました。
あと脱獄検知は意味が無いと思ってるって言っててやっぱそうよねって思った。
iPhone×NFCで実現するスマートキーの開発方法
NFCに関するセッションです。
自分はFlipperZeroを持っているのですが、
あまり使いこなせているような感じはしていなくて、
組み込みの開発とかデバッグとかが主な用途となっています。
しかしFlipperZeroにはNFCとかRFIDとかの機能がついていて、
NFCとかをちゃんと使えるといいよね~って漠然と思ってました。
そんな中ちょうどいい感じのセッションがあったので見てみました。
最初に、NFCのCardEmulationMode
と、Reader/Writer Mode
と、Peer to Peer
の
3モードについての軽い解説が行われました。
次にNFCのTagTypeに関する詳細情報の話
があるのかと思いきや、仕様書を見るのに1仕様当たり$600かかるようで、
6種類のTagTypeに$3600かかるらしく、NFC Type2とType3の話だけとなりました笑
NFC Type2はMIFARE Ultralightがベースとなっていて、
NFC Forumでどのような通信をするかが定義されているらしいです。
内部書き込みロックバイト領域の話とかがありましたが、
ここで書いたら実際の映像を見てもらえないじゃんってなったので詳細は省きます。
上のロックバイトを利用してNFCをロックするとエラーハンドリングの仕方が変わるで!
ってのは気を付けないとですね
Type3は、皆さん大好きSonyのFeliCaがベースとなってます。
Type3はType2と全く違いポーリングを利用して、
IDm(製造ID),PMm(製造パラメータ)を取得し通信を行います。
CoreNFCを利用してモバイルSuicaからIDmを読み取るデモと、
WiFiモジュールが搭載されたマイコンでモバイルSuicaのIDmを読み取るデモがありましたが、
マイコンを利用するデモでは、環境の都合上オフライン環境で利用できる状態でデモとなりました。
RC-S620/SカードリーダーとArduinoMega2560を利用してIDmを読み取る、
ArduinoMegaの選定理由はESP32だとシリアルが足りないからだそうです。
Sonyが公開しているRC-S620のドキュメントがあるらしく、
そのドキュメントの通りに実行すればFeliCaの読み取りができるみたいです。
しかもArduino向けのライブラリも後悔してくれてるらしいです。
やはり公式ドキュメントは大正義なんやなぁ
今回は使って無いらしいですが。
IDmを取るポーリング中に、なんでもいいからデータをPushすると、完了というメッセージがiPhoneに表示されるらしいです。
・・・!?
デモの際に電源ケーブルが刺さってなくて「通電してんのか・・・?」っておもいながら見てたら、
一瞬焦った後に電源ケーブルを刺し忘れていた事に気づいてて笑ってしまった。
デモはちゃんと成功していて、iPhone側の画面にもちゃんと「完了」が表示されており、
Arduinoのシリアルモニタに、iPhone内のモバイルSuicaのIDmが表示されていました。
RC-S620/Sは販売終了していますが、RC-S660/Sっていう後継機が出ているらしいが、
Arduinoライブラリとか、ドキュメントが無いらしく、UARTで頑張るしかないらしいw
サンプルプログラムを見ながら頑張ったらしい、
やっぱこういうのは頑張るしかないのか・・・って感じでした・・・
なお、SDKを近日中に公開するらしいです。続報に期待。
思ってたスマートキーの作成と若干違いましたが、面白い内容のセッションでした。
NFCはロマン。
自作スマートロックとかをまた作る機械があれば、このセッションの内容を使いたいですね。
iPhoneへのマイナンバーカード搭載におけるデータ規格についての理解を深める
RaspberryPiPicoをSwiftで操作する
アプリバイナリ解析入門 ~実機向けバイナリをARM64シミュレータ向けに変換する方法を例に~
Appleウォレット/Googleウォレットにチケットを保存する方法
AppleSiliconを最大限に活用する方法
アプリ内課金と自社の認証基盤を連携する複雑な課金ネットワークを構築する
GPUの歴史~キャラクタージェネレータからNPUまで.謎の半導体メーカーの株価とともに~
ルーキーズLT
- https://fortee.jp/iosdc-japan-2024/proposal/b6ce7ca6-0e47-4a84-82a3-944298037cff
- https://fortee.jp/iosdc-japan-2024/proposal/95d397a6-f81d-4809-a062-048a447279b3
LT大会
- https://fortee.jp/iosdc-japan-2024/proposal/dac62563-24ce-4e27-aac8-8599e6b5dfeb
- https://fortee.jp/iosdc-japan-2024/proposal/03f32923-2bb1-4044-b6e8-9774d152bdc0
あとがき
実はネットワークチームとして参加をしていました。
自分はルーターとかAPとかのコンフィグをGitで管理しているのですが、
カンファレンスのNOCチームだと口伝でコンフィグが伝わってたりする事が多く、
後から設定を見返したりできないことが結構ありました。
iOSDCのNOCチームも口伝でコンフィグが伝わってたりしたのをGitでコンフィグを
管理できるように運用を変更したりもしました。
まぁこれが原因でWiFiの無線出力がデフォルト値になって緊急メンテナンスして出力を上げたりしたのですが・・・
ひやひやする事もありましたが、いい経験ができて楽しかったですね。
かなり昔にPyConのスタッフ参加とかもしていたので、
たまにはイベントにスタッフ参加するのも良いなと改めて実感できました。
コメントを残す