freeeの開発情報ポータルサイト

iOSDC 2024で学んだ複雑なアプリ開発への向き合い方とAI駆動開発の実践

昨年2024年9月に開催された「iOSDC Japan 2024」に参加しました。iOS開発者にとって毎年楽しみにしている一大イベントです。振り返りがだいぶ遅れてしまいましたが、このタイミングで昨年の学びをブログとして振り返ります。約1年経った今でもiOSDCで得た学びは日々の開発に活きています。

この記事では心に残ったセッションや会場の雰囲気、そして来たるiOSDC Japan 2025への意気込みを語ります。

イベント会場の受付とブースの雰囲気

この記事で伝えたいこと

iOSDC 2024で特に印象に残ったセッションの学びをベースに、現在社内で導入しているAI駆動開発の事例を交えながら振り返ります。

この記事が、モバイルアプリ開発にAI駆動開発を取り入れることに二の足を踏んでいる方にとって、挑戦のきっかけとなれば嬉しいです。すでに導入されている方や内容に物足りなさを感じる方には、より踏み込んだ内容を別のブログで紹介できたらと考えていますので、ご期待ください。

また、iOSDCに参加したことがない方には、今後の参加モチベーション向上につながれば幸いです。


自己紹介

前職ではEdTech企業に在籍し日本の教育現場におけるICT化に携わっていましたが、モバイルアプリの導入が思うように進まず教育現場への普及には時間を要すると感じていました。そこで自身のキャリアを見つめ直し、大学で専攻した会計知識とこれまでに培ってきたモバイルアプリ開発の知見を掛け合わせられる場所を求めfreeeという選択に至りました。

経歴

沖縄で10年ほどエンジニアとして従事し2018年に上京しました。PHPやJavaのサーバーサイドエンジニアを経てiOSをベースにAndroidも含むモバイルアプリ開発を中心に活動しました。モバイルエンジニアとして活躍しながらもAWSでのサーバーレスWebアプリ開発などモバイルアプリ以外の経験も積み、現在は再びiOSエンジニアとしてfreeeで活躍しています。

freeeでの担当

入社当初はiOS版freee会計アプリを担当し現在はiOS版freee経費精算アプリを担当しています。社内のモバイルアプリエンジニアの中で先駆けてAI駆動開発を取り入れチーム内外でのAI活用を推進しています。


会場の熱気とキーノート

沖縄出身の私にとって、地元では大きなITイベントは多くないので、こういったイベントに参加するたびにワクワクします。

イベント会場は例年通りの熱気に包まれていました。開発者同士が技術について語り合ったり、最新技術のデモを見たりするたびに自身の知識がアップデートされていくのを感じとてもワクワクしました。キーノートではAppleの最新技術やAIを活用したiOSアプリの新しい開発手法など、その年の注目トピックが紹介されました。

イベント会場内のブースの雰囲気


印象的だったセッションとそこから得た学び

印象に残ったセッションはいくつかありましたが、その中でも特に印象的だったセッションをもとにAI駆動開発を始めてみて改めて感じたことを交えて紹介させてください。

複雑さに立ち向かうためのソフトウェア開発入門

fortee.jp

このセッションのテーマは「複雑さ」に立ち向かうために「認知負荷を下げる」ことです。

複雑さの正体

セッションでは以下の要素が「複雑さの正体」として挙げられていました。

  • 認知リソース
  • ワーキングメモリ
  • 認知負荷

複雑さの正体。認知リソース・ワーキングメモリ・認知負荷 ポイント。認知リソースは有限で減っていく ポイント。ワーキングメモリは重要だけど容量に限界がある ポイント。認知負荷が高いと認知リソースを大きく消費する ポイントまとめ。認知リソースは有限で減っていく。ワーキングメモリは容量の限界がある。認知負荷が高い状態は認知リソース消費が大きい

認知負荷を下げる

ワーキングメモリは容量の限界があるので、認知負荷を下げることにより認知リソースの消費を抑えることにより複雑さに立ち向かうということが示されています。

認知負荷を下げる上での事例として「情報が見つからない」と「やることが多すぎる」の2つが指摘されました。

テーマ。認知負荷を下げる 認知負荷を下げるための事例紹介。情報が見つからない。やることが多すぎる

「情報が見つからない」問題

「情報が見つからない」の対策として「早めの一手」「仕組み化」が示されました。

認知負荷を下げるための事例紹介。情報が見つからない。作業が進まない。情報を探す手間がかかる 認知負荷を下げるための事例紹介。情報が見つからない。問題点。欠けた情報の予測。タスクの切り替え。分断された情報の統合 認知負荷を下げるための事例紹介。情報が見つからない。対策。早めの一手。仕組み化

「やることが多すぎる」問題

「やることが多すぎる」問題から発生する複雑さを回避するための3つの法則として、「わける」「だす」「たよる」の具体例が示されました。

認知負荷を下げるための事例紹介。やることが多すぎる。問題点。つまらないミスを繰り返す。忘れっぽくなる。疲れ果てる。学んだことが身につかない 認知負荷を下げるための事例紹介。やることが多すぎる。複雑さを回避する3つの法則 認知負荷を下げるための事例紹介。やることが多すぎる。複雑さを回避する3つの法則。わける。だす。たよる まとめ。エンジニアにはたくさんの複雑なタスクがある。複雑さ:認知負荷≒認知リソース残量orワーキングメモリの容量の限界。複雑さに立ち向かうためには認知負荷を下げるのが効果的。認知負荷を下げる対策にも認知負荷をかけない工夫を。複雑すぎると感じたら「わける」「だす」「たよる」を実践


AI駆動開発による「複雑さ」との戦い

このセッションで得た学びは、最近導入したAI駆動開発が、複雑な開発へのアプローチをより具体的に実践することを可能にしてくれました。AIを活用することで、改めて「複雑さ」に立ち向かうことの重要性を実感しています。

AI駆動開発の具体的な取り組み

私はAIツールとしてRoo Code(VS Code拡張機能)を使用しています。iOSアプリ開発ではXcodeの併用が避けられないため多少の不便さはありますが、それでも体感で生産性は3倍に向上しました。

ここでは他のAIツールでも共通して実践できることだけを紹介します。具体的な活用法には多くのコツがありますが、詳細は別のブログでご紹介できればと思っています。

1. 「情報が見つからない」という課題への対処

「情報が見つからない」ことは、「欠けた情報の予測」「タスクの切り替え」「分断された情報の統合」といった問題を引き起こします。AIを活用することで、これらを効果的に解決できます。

  • 欠けた情報の予測

    • AIエージェントにGitHubのソースコード、PRの内容、Google Document、Confluenceといったツールから情報を読み取らせ、内容を要約させれば情報の補完が可能です。そのためには情報が整理されていることが重要ですが、その情報の整理自体にもAIを活用できます。
  • 情報が分断されてしまう:

    • AIが要約した情報や、AIエージェントとのやりとりをGitHubリポジトリにMarkdown形式で保存するのが最も有効です。これにより、「早めの一手」や「仕組み化」といった対策を実践できます。
    • Jiraでチケットを管理しているため、必要に応じてAIエージェントに実装方針やバグの原因調査結果などをまとめさせ、コメントとして残すようにしています。
  • タスクの切り替え:

    • これこそがAI駆動開発の得意分野です。私はVS Codeを複数立ち上げて、タスクを同時進行させています。人間がやるのは、主にAIが書いたコードのレビューです。作業内容はAIが記憶してくれるため、時間を空けてもスムーズに再開できます。
2. 「やることが多すぎる」という課題への対処

「やることが多すぎる」ことによって、「つまらないミスを繰り返す」「忘れっぽくなる」「疲れ果てる」「学んだことが身につかない」といった問題が発生します。これらもAIを活用することで全て対策可能です。

  • つまならいミスを繰り返す:

    • AIは、正確な反復作業が得意で、typoのような単純なミスはしません。これにより、PRレビューでtypoを指摘する必要が格段に減り、レビュワーは本質的なレビューに集中できます。
    • ただし、AIへの情報不足によるミスは発生します。AIをジュニアエンジニアとして扱い、コーディングルールなどで制御する工夫が必要です。
  • 忘れっぽくなる:

    • AIもハルシネーションを起こしたり、与えすぎた情報を忘れたりすることはありますが、人間よりも圧倒的に多くの情報を記憶してくれます。AIの「ワーキングメモリ」とも言えるコンテキストウィンドウのサイズは日々進化しており、Claudeの有料プランでは500ページ以上のテキストに相当する20万トークン、Gemini なら100万トークン以上が利用可能です。
  • 疲れ果てる:

    • AIは疲れません。私たちがコーヒーを飲んでいる間も作業を続けてくれます。
  • 学んだことが身につかない:

    • AI駆動開発は、学びの方法としても最適です。自分の知識にないことや新しい技術スキルは、AIと対話することで納得しながら身につけることができます。
    • ただし、AIは平気で嘘をつくことがあるため、鵜呑みにせず、技術書など信頼できる情報源と併せて学ぶことが重要です。
3. 複雑さを回避するための3つの法則の実践

iOSDCで学んだ3つの法則「わける」「だす」「たよる」も、AIを活用して実践できます。AIに情報を適切に分けてもらい、取り出しやすい場所に保管し、AIとディスカッションやペアプログラミングを行うことで、認知負荷を下げられます。

AI駆動開発の今後の展望について

AI駆動開発はここ数ヶ月で急激に進んでおり、過去のやり方が明日には古くなっているかもしれません。ここで紹介した具体例も、明日には通用しなくなる可能性はありますが、これらは複雑な仕組みを構築することなく、手間をかけずに対応できる可能性は高いです。

重要なのは、AI駆動開発に触れて何ができて、何ができないのかを知ることです。そのためにはAppleやXcodeの対応を待つのではなく、自ら実践することが不可欠だと個人的には感じています。


その他で印象的だったセッションについて

他にもいろいろ興味深いセッションがありました。 その中で3つ紹介したいと思います。

iPhoneへのマイナンバーカード搭載におけるデータ規格についての理解を深める

fortee.jp

iPhoneへのマイナンバーカード搭載に関するニュースは知っていましたが、このセッションで関連APIの「JPKIPassContents」がiOS 18から使えるようになったことや、PINの代わりに生体認証が利用できるといった具体的な話を聞くことができました。また、モバイル運転免許証用の規格であるISO/IEC 18013-5など、身分証としての実装を支えるデータ規格についても理解を深めることができました。

Server-Driven UI入門: 画面のStateを直接受け取るアプローチ

fortee.jp

このセッションはサーバーからUIのロジックを返すことでクライアント側では表示するだけで済むという設計手法を扱っていました。ビジネスロジックをバックエンドに集約できるメリットがある一方で、基盤構築が大変というデメリットも解説されていました。freee経費精算アプリでも最近導入しみたので機会があればブログなどで紹介できればと思います。

Swift, Playdate and Music

fortee.jp

ゲームが好きなので個人的にとても興味深いセッションでした。Panic社が発売した携帯ゲーム機「Playdate」の存在は知っていましたが、Swiftでゲームが作れることをこのセッションで初めて知りました。シミュレーターがあるため実機がなくてもすぐに開発を始められるという点が個人的に非常に興味を惹かれました。手回しクランクがついたモノクロのユニークな特徴や公開されたSDKと活発なコミュニティも面白い話でした。


iOSDCの魅力

開発者コミュニティとの交流

iOSDCの大きな魅力の一つは技術を学ぶだけでなく開発者同士が直接交流できる点です。セッションの合間のネットワーキングの時間では多くの開発者と話し、普段知ることが難しい他社の開発環境やチームの取り組み方について学ぶことができました。

ワクワクする取り組み

iOSDC2024では新たな取り組みとしてブースの説明を聞くとスタンプがもらえ、たこ焼きと交換できるという試みが行われていました。

メンバーの一人がほぼ全てのブースを周ってスタンプを集めてくれたおかげでたこ焼きを堪能しました。その他にも手作りのお菓子が無料でもらえたり、こうした取り組みがされること自体もこのイベントならではだと思います。ぜひ2025年も楽しい取り組みが実施されることを期待しています!

イベント会場のたこ焼き屋さんイベント会場のたこ焼きイベント会場のたこ焼きイベント会場の手作りお菓子

そしてiOSDC Japan 2025へ!

iOSDC Japan 2024を通して技術的な学びはもちろん、コミュニティの重要性や他の開発者との交流を通じて多くの新しい視点を得ることができました。

今年のiOSDC Japan 2025もさらなるスキルアップとネットワークの拡大を目指し、参加することを今から楽しみにしています。昨年得た知見をさらに深め、新たな技術トレンドを吸収したいです。

イベント会場のエントランスにあるウェルカムボード

写真

セッション会場の様子セッション会場の様子LT大会の雰囲気LT大会の雰囲気LT大会の雰囲気LT大会の雰囲気LT大会の雰囲気

過去のiOSDC参加ブログ

developers.freee.co.jp developers.freee.co.jp developers.freee.co.jp developers.freee.co.jp developers.freee.co.jp