これは、GO Inc. Advent Calendar 2023の4日目の記事です。
はじめまして!タクシーアプリ『GO』の iOS アプリを開発している髙橋です。
GOのiOSアプリチームでは今年の5月以降、情報のキャッチアップを目的として社内勉強会を継続的に開催しています。
この勉強会は私が始めたものもあれば、チームメンバーが始めてくれたものもあります。
この記事では社内勉強会をやろうと思ったきっかけや、実際に今社内で開催している勉強会について紹介します。
たとえTipsレベルの知識だったとしても「知っているかどうかの違い」が成果物のいわゆる「品質」に大きく影響するケースがあると経験上感じていて、情報をキャッチアップし続けることの必要性を感じていました。
その一方、通常の案件開発を進めながらキャッチアップを続けるのは私にとっては大変だったのと、自分で情報をキャッチアップしようと思うと自分が興味のあるジャンルの情報ばっかり調べてしまい、網羅性に欠けるという2つの課題を感じていました。
これら2つの課題を解決する手段として社内勉強会に効果があると考え、チームに働きかけた結果、iOSチームでは今年の5月から社内勉強会を定期的に開催し続けています。
可能な限りチームメンバーが自由にそして気軽に参加できるよう、参加形態はオンラインで、自由参加・録画あり という形で進めています。
準備等についても、ファシリテートを担当するメンバーだけ若干の事前準備があるほかは、事前準備なしで参加できるようにしています。
また各種勉強会をなぜやるのか?どんなことやったのか?前回はどんなことをやったのか?と興味が出た時にすぐに確認できるよう、Confluenceに資料をまとめています。
『GO』のiOSアプリはSwiftで開発されています。
Swiftはオープンソースで開発が進められているプログラミング言語で、どのような機能を追加したのかや、この機能によってどのような課題を解決したいのかといった情報が全て公開されています。
これらの公開情報の1つにSwift-Evolutionというリポジトリがあります。
ここにはプロポーザルの形でSwiftに実装される機能の説明が格納されているので、このプロポーザルをみんなで読む勉強会を月1で開催しています。
https://github.com/apple/swift-evolution
この会は5月から開催していて、初回の開催ではSwift5.3のリリースで追加になったプロポーザルについてみんなで読みました。
https://www.swift.org/blog/swift-5.3-released/
以降の開催ではSwiftの各リリースで追加になったプロポーザル達を見ていて、11月の開催でSwift5.9で追加になったプロポーザルまでを一旦見終えました。
次回以降の開催では各トピックについて細かく見たり、みんなが興味のあるプロポーザルをじっくり読んでみたりしようと考えていて、次回はSwift MacrosとObservationについて見てみる予定です。
『GO』のiOSアプリのサポートバージョンがiOS15.0以降になった時に、SwiftUIを用いたコードに修正が入りました。
その時にチームで「SwiftUIについての勉強会があっても良いかも」と話題になり、チームメンバーの黒田さんが始めた勉強会になります。
今後『GO』のiOSアプリでより多くの範囲でSwiftUIが使われるようになったり、既存機能をリファクタリングする際にSwiftUIで画面を実装したくなったときなどを見越して、チーム全体でSwiftUIについて詳しくなっていくことを目的としています。
自分はSwiftUIについてとても詳しいわけではないので、こういったチーム全体で勉強できるチャンスがあるのをとても嬉しく思っています。
『GO』のiOSアプリはアーキテクチャにRIBsを採用しているのですが、The Composable Architecture(通称TCA、以降TCAと記述)も多くのプロジェクトで採用されてきて、実績も積まれてきている良いアーキテクチャであると感じています。
https://github.com/pointfreeco/swift-composable-architecture
リファクタリングではなく、今後SwiftUIの導入が進んだ時を見据えて、SwiftUIのプロジェクトで多くの実績があるTCAをみんなで学び、プロダクト開発に活かしていこうという意図で実施しています。
この会は他の2つの会よりも踏み込んだ詳細な技術の話を取り扱うため、開催は週1のペースで行っています。
また誰かに教えてもらうという形ではなく「習うより慣れろ」の精神で、Point-Freeが公開しているTutorialsをやっています。
先にTutorialsページの左の説明と右のコードを見くらべながら、目的や内容、背景を確認し、その後でコードをXcodeに移植して動作を確認してみる、の繰り返しで進めています。
Tutorialsが終わったら、TCAのより細かい部分についてメンバーで議論していこうと考えています。
個人的に社内勉強会は情報のキャッチアップのためだけではなく、メンバー同士の交流場になったり、特定の技術について複数の理解に触れて自分の理解をより深めるよい機会だと考えていて、今後も継続的に開催できるよう活動していきたいと考えています。
読んでいただきありがとうございました。
興味のある方は 採用ページ も見ていただけると嬉しいです。
Twitter @goinc_techtalk のフォローもよろしくお願いします!