Mobile Act 14 に参加してきました
ナレッジキャピタルタワーはとても大きなビルディングだった。
会場の大阪イノベーションハブの案内図があったにも関わらず、7階に行けば入れると思ってエレベーターを使わずに来ると、ガラス張りのエリアにどうやったら入れるのかわからなくて困った。代わりにテラスで大阪の空に浮かぶ朧月を拝むことができた。
Mobile Act の名の通り、 LT は iOS/Android/Flutter/デザイン/カンファレンスの話と多岐に渡りました。以下は発表された LT を時系列にまとめました。
CarPlay対応アプリを作る
CarPlay は Watch とは違って別ターゲットではなく、あくまで外部ディスプレイなので、本体のアプリとして動き、 Apple の用意してる限定的な枠組みの中でしか使えないこともあって、アプリからは item しか流せないので、できることが少ない分、おそらく想像しているよりも参入しやすい。
KMP&Compose Multiplatformでアプリ作った感想
KMP Compose Multiplatform で位置情報の連携などプラットフォームに依存しない箇所はほぼ Kotlin のワンソースで書き切ることが可能になっている。
カンファレンスを全力で楽しむ技術」
カンファレンスを楽しむためには、何よりもまず準備が大事。ヘンリー・フォード曰く、「成功の秘訣は、何よりもまず、準備すること」。出典は見つけられなかった。
桜井章一の言葉もここに添えたい。良い仕事をするためには間に合うことが大事だ。それが間合いであり、この間合いがわかっていて達成できていることが強さの秘訣である。これができていないことを間抜けと呼ぶ。タイミングがズレている。価値はタイミングによって変動する。ゆえにこの間合いは価値を成立させるために必要最低限の要素でもある。どこかで読んだ記憶があるけれど、手元の書籍には該当する記載がなくて出典が不明。
そして、参加したカンファレンスへのレポートは帰りの新幹線で書くのがおすすめとあって、この勉強会へのレポートも帰りの新幹線で書いている。人は忘れるので、時間的に近いところでレポートを書くのはとても効果が高い。実際に新幹線で書くと、およそ時速270km で物理的に移動している体感の効果なのかタイプするスピードを後押ししてくれる感覚がある。終着までに書き切ろうとする締切効果も大きかもしれない。
日付の繰り返しの話
日付の繰り返しには様々なパターンがあり、それらを網羅しようと思うと大変である。 iOS 向けに OSS を提供している。
こういった例外的な繰り返しのパターンは実際の業務でありそうと感じたし、たまにしか発生しないけど定期的に発生するパターンは、人間が苦手とし、コンピュータの得意とするところなので、アプリの機能として提供する効果はとても価値が高いと感じた。
フェンリルのSwiftUI研修
Apple から Tutorial が提供されているので、そういったものはそちらに任せて、 SwiftUI の原理原則に注力して、その仕組みについて理解を深める研修を提供している。 View の親子関係を擬人化して modifier の伝達を表現していてとても効果的だと感じた。
座学・実践・レビューを一日のサイクルで完結させて、それを十日間ほどのワンセットとして実施。一日で区切るのも効果的な印象を持った。非同期でレビューが日を跨ぐとその日にやったことの遅延評価は学習の初期においては逆効果な気がして、自分が関わった研修のサイクルを自省した。
FlutterのWidgetについて
Flutter は Widget が肝なので Widget Catalog でどのような Widget があるのか把握しておくのが重要。
中でも Widget of the Week がおすすめ。一つ一つは 1〜2分の動画で Widget の紹介してくれて、とてもわかりやすい。
この Widget of the Week の記念すべき 100 回目は FlutterLogo
Mobile Act キービジュアルのデザイン
Mobile Act のキービジュアルの作成過程の話。キービジュアルはモバイルアプリの UI と違ってユーザが触れている時間はとても短い。ユーザの好みでなければ瞬時に離れてしまう。ゆえに訴求したいユーザに合わせてこれは何だろうと考える隙を作らずに端的にメッセージを伝える必要がある
今日から始める!iOSエンジニア向け画像認識入門 【実践編】
Create ML がおすすめ
画像認識において、学習データが少ないと誤学習をする。少ないデータを真と学習し、そこから外れるものは違うものであると応用の効かないことをデータ量が少ないケースの誤学習と呼んでいる。 Create ML では、誤学習の傾向が強くなるサンプル数を指定できる。少ないデータから拡張して学習データを量産ができる。
Modern Typed error handling in Kotlin ~ Context Parametersを介したエラータイプの受け渡し ~
Context Parameters を Kotlin の言語仕様として取り込まれようとしている話。現在 KEEP で議論中。これが導入されたらエラーハンドリングの定義がより簡潔に表現できる。私はまだ一割も理解できていないと思う。
エラーの扱いに鉄道指向プログラミングを紹介していた。鉄道の分岐とフローチャートを重ねている様子。まだあまりぴんと来ていない。
Swift Testingを活用する
これまでの XCTest を置き換えるもので、 Xcode 16 からはデフォルトで Swift Testing のテンプレートでテストが生成される。
テストコードを書くのに今までは継承が必要だったが、 Swift Testing ではテストアノテーションをつければ、どこにでもテストコードを作成できるようになった。トレイトではタイムアウトなどのテスト実行条件を指定することもできる。
例外のテストには expect throws が利用できるようになって、 catch の必要がなくなった。
パラメタライズドテストの実行結果がパラメータごとに出力されるので見やすくなった。
Swfit Testing の注意点として、デフォルトでは、並列で実行される。もし実行順や並列実行に制約がある場合は serialized を明示的に指定する必要がある。
懇親会
現在働いている人や初めての人と会話できてとても有意義な時間が過ごせた。来年就職する学生から話を聞くと、 Flutter からモバイルアプリ開発を始めて、その後に Android/Kotlin の専門へと進む話が興味深かった。プログラミング言語の基礎を Dart で学ぶという前提は知っておく必要があると思った。
iOSDC や DroidKaigi 、オンライン勉強会で見ていた人と再会したり、初対面したり感慨深かった。
リモートワークで物理的な距離はゼロにできるものの、こうして対面で集まると物理的な距離はとても影響力が大きく、開催場所によって集まる人の傾向に偏りが生まれる。また終電だったりで、共有できる時間に制約も生まれる。そういった制約によって生じる偏りは尊いものなんだろうと思う。
終わりに
モバイル全般の話題を扱う勉強会ということで改めて発表内容を振り返ると非常に多岐に渡りどれも興味深くて、自分の軸を持っていないとどれも中途半端に手を出して自身の許容範囲を容易に超えてしまう危険性を感じた。今から20年前に扱っていたモバイルの領域はとても小さくて、その頃から比べて役割も細分化していて、それは必要な役割分担であると改めて感じる。一方で AI を活用することで、個人の能力を拡張可能になり、 AI 普及以前に比べたら今後は個人の責務は増えていくと思うし、より負荷軽くできるようになっていくと思う。今日扱ったテーマの中から自分はどの分野に対して知っていくのか大きな宿題をもらった。
そして、一番の収穫は参加してすぐにレポートを書き切ることができたことだと思う。やってみたら良いよをすぐに試せる分野が自分に向いていることの一つだと思うし、もし自分に向いているものは何だろうと悩んでいたとして、それを見つけるのに、こういった多様なテーマを扱う勉強会を活用できることが大きな発見でもあった。