はじめに
GameWith Advent Calendar 2019の19日目の記事になります。
今回の記事はiOSエンジニアの自分がWebの新施作をフロントエンジニアとペアプロをしながら実装した時の話です。
自分は普段GameWithの価値検証チームという少人数のチームで、アプリやWebの大幅な数値改善が見込めそうな施作をメインに企画・進行・実装まで一通り担当しています。
基本的に価値検証フェーズと本実装フェーズで分けて実装しており、価値検証フェーズにて目標数値に達したもののみ本実装フェーズに移行しています。
価値検証フェーズでは片方のみに展開することでUXが下がるといった施作以外は基本的にはスピード重視と施作を撃てる数を増やすためにiOS・Androidのどちらかのみで実装しています。
今回の施作はコンテンツの性質などから両OSで実装するのがベターとの判断になったので、Webで実装したものを両OSのWebViewで表示するといった形式を取っています。
Webの知識
自分は去年、Vue.js(+Element UI)
とFirebase
を使い、GameWithアプリとは別に担当していた動画アプリの管理画面を0から実装しましたが、Webの技術領域にはあまり明るくなく正直 JavaScript
, HTML
, CSS
とかも普段全然触らないので当時勉強し直しながら作りました。
それから1年以上経っていたのと、今回はGameWith Web 内の新機能だったので、ドメイン知識もそこまでなかったため、要所要所でペアプロという形式を取り進めることにしました。
去年のブログ
Firebaseをプロダクトに採用して得た知見 #GameWith #TechWith
ペアプロ
エンジニアの方には馴染みがある言葉だと思いますが、ペアプロの定義を引用して貼っておきます。
ペアプログラミング(英: pair programming)は、2人のプログラマが1台のワークステーションを使って共同でソフトウェア開発を行う手法という説明が起源である。(wikipedia)
上記は社内でペアブログ(共同でブログを執筆)していた時の写真なのですが、上記のように基本的にはひとつのモニターを見ながら進めていきました。
ペアプロでは実際にキーボードを操作してコードを書く人を**「ドライバ」、もう1人を「ナビゲータ」**と呼ぶのですが、自分はドライバの役割でした。
進め方
まずWeb側の開発環境の準備・整備など基本的には、先に社内の手順ドキュメントを見ながら済ませておきました。
今回のペアプロでは基本的には、1日30分〜最大2時間を目安に行っていました。
1日1画面の実装を目標に、まずペアプロで大枠の進め方の確認。
他の画面のコードの書き方などを参考にしながら、なぜこのように書くのか、なぜこのような使い方をしているかなど社内独自のルール的なものまで共有をしてもらいました。
ペアプロが終わった後は一人で基本的に作業を行い、次の日に前日生じた疑問などを質問したりして、疑問を解消してからまた、実装画面の進め方を決めるなどの作業を繰り返しました。
ペアプロのメリット
ペアプロを大体一週間ほどして以下のメリットを感じました。
(※ ドライバとナビゲータ間のスキル度合いが同等の場合、また別のメリットがあるかとは思いますが、今回はWebのスキルに差がある二人でのペアプロでの効果例です)
作業効率の向上
普段の一人で開発を行う業務よりも集中力が維持できました。
個人個人で集中できる時間の範囲は異なるとは思うのですが、一度だけ2時間がっつりペアプロを行った日に終始プロジェクトに向き合い、頭を使い、話し合いながらコードを書いたため終わった後に疲れて軽く頭が痛くなるくらいの集中でした。
実際にペアプロでは個人の作業よりも怠けることなく作業を進める可能性が上がるといった規範意識の増大の効果が見込めるそうです。
効率の良い教育的側面
個人で勉強し、調べながらでも実装を行うことはできますが、ナビゲータがいることによって設計の質が向上したり、コードレビューをリアルタイムで受けながらコードを書くことができるので、素早く学習することができます。
コードの正確性の向上もそうですが、知識や技術の共有をペアプロを通して効率よく受けることができました。
終わりに
今回、新機能を一通りWebで実装したことで、今後新しいWebの施作が価値検証チーム内で上がってもiOSエンジニアの自分が担当できるなといった自信がつきました。
また今回のペアプロを通してWeb技術への興味が以前よりも湧いたことも大きな収穫です。
[iOS][Swift]JavaScriptと相互通信といった内容を両者自分で実装することでより深くWebとiOSの連携についても理解することができました。
今回は教育的側面の強いペアプロでしたが、非常に有意義な時間だったので、またスキルが同等なiOSエンジニア同士でiOSアプリ実装のペアプロもやってみたいなと思いました。
ナビゲーターをやってくれたtiwu_officialさんありがとうございました!