この記事は 2024年 夏のブログリレー 7日目のものです
他の記事を見たい方は こちら↑ のリンクをクリック!
こんにちは、23B のぷぐまです
普段は SysAd 班で Web アプリケーションを制作しています
先日リリースされた traPortfolio のフロントエンドリーダーも務めています
traPortfolio をまだご覧になっていない方は、ぜひ以下のリリースお知らせ記事とともに traPortfolio にお越しください!
…と、ここまで traPortfolio の紹介みたいになってしまいましたが、今回はペアプログラミングについてのお話です
僕は昨年度末から今年度の前期にかけてペアプログラミングに力を入れていました
具体体には、最も多かった時期では 6, 7 月の 2 ヶ月間で 8 回も行いました
この経験を踏まえて、本記事ではみなさんにペアプロの重要性と魅力をお伝えします
ペアプログラミングとは?
ペアプログラミングとは、2 人で一緒にプログラミングを行うことです
しばしばこれを略して「ペアプロ」と呼ばれることもあります
というか、略されることのほうが多いと思います
ペアプロの目的
ペアプロを行う目的を以下に挙げてみました
よりきめ細やかな育成を行う
一般的な運動系サークルでは、先輩が後輩にコツなどを教えるのはよくある話だと思います
同様に traP では部内サービスの多くを内製していることもあり、このようなサービスを保守・管理できる後輩を育成することは必須です
講習会として育成の機会は設けていますが、それでもまだ不足しているように 少なくとも僕は 感じています
そこで、より個人に注力した育成をするためにペアプロを始めました
講習会が集団授業だとすると、ペアプロはいわば個別指導です
講習会で抜け落ちてしまった内容の補填にも有用です
より実践的な環境で学べる
ペアプロは実際の制作物における開発・保守・運用の場面で行います
これは、講習会のために用意された環境で行うのとは違います
自分が過去にやったことが制作物のリポジトリ内に経緯も含めて残ります
これによって、過去に学んだことがストーリーに紐づけられて覚えやすいだけでなく、探し出しやすいというメリットもあると考えています
自分に対する属人化を防ぐ
traP での開発においてもよくある話ですが、やはり中心となる人物に対してサービス開発・保守・運用の多くを依存することがあります
もちろん、サービスの開発や運営においてはその方針を決めるディレクターのような人物は必須です
しかし、traP ではこのような先導力を持つ人が結果的に実務面でも多くの負担をしているのを度々見かけます
ペアプロでは、開発メンバーに対するきめ細やかな育成を通してメンバーに実務を任せてしまえるようにします
これにより、特定の個人に負担の偏ることのない、より安定的で持続的な開発環境を築くことができます
これは、先にペアプロを行うという労力の前借りをしてでも行う価値があると考えています
仲良くなる
上 2 つと全然違う内容ですが、これも重要です
traP の活動はデジタル創作なので、大体のコミュニケーションがテキストで済んでしまいがちです
特に学年が違うと、お互いの顔も知らない状態でずっと活動することもありえます
ただ、同じ活動をするのであればこれは何としてでもで避けたいことです
僕は traPortfolio フロントエンドのリーダーなのでメンバーにお願いをすることもあります
こんなとき、メンバーはよく知ったリーダーから指図されるのと、得体のしれないリーダーから指図をされるのとでどう感じるでしょうか?
顔の知れたリーダーのほうが、何か分からないことがあったとしても気軽に聞きやすいと思います
また、少し厳しい期日が設定されたとしても、仕方ないなと腰を上げてくれるかもしれません
サークル活動もコミュニケーションです
せっかくなら淡白なものではなく、深い関係を築いて物事を円滑に進めたいものです
例1: フタだるまくん
フタだるまくん (@Futadaruma) は今年入学したばかりの 24B です
SysAd 班での制作も初めてで、Vue の経験もそこまでない状態でした
そのため、今回のペアプロでは少し重めの改善に取り組むことで以下のことを目指しました
- traPortfolio のリポジトリ自体の案内をする
- Web エンジニアになろう講習会フロントエンド部分の全体を振り返りながら、Vue での開発に馴染んでもらう
- 単純にお互いのことを知る
https://github.com/traPtitech/traPortfolio-UI/pull/195
具体的には、この PR を通して下のような話をしました
- Vue における
props
の扱い async
やawait
を用いた非同期処理- TypeScript における Null 合体演算子
- axios ライブラリを用いた API の叩き方
これ以降、traPortfolio で様々な issue をこなしてくれるようになり、また分からないときにはすぐに聞いてくれるようになりました
今では traPortfolio フロントエンドの唯一の 24B として日々奮闘してくれています
例2: しょーごくん
しょーごくん (@shogotin) には上記のような開発に関するペアプロだけでなく、保守についてのペアプロも行いました
これによって、traPortfolio のフロントエンドとして 2 つあるリポジトリの保守作業を分担して行えるようになることを目指しました
https://github.com/traPtitech/traPortfolio-UI/pull/201
この PR を通して、大まかに以下の話をしました
- npm というパッケージマネージャーの扱い方
package.json
とpackage-lock.json
の関係性package.json
を直接書き換えずとも、npm install
やnpm uninstall
コマンドでパッケージの追加や削除が行えること
- Dependabot でのパッケージの更新時にどのようなことに注目すればいいか
- semver について
- 破壊的変更がないかどうか
これらの話を通して、リポジトリ保守については「あとは慣れるだけ」という状況に仕上げました
実際に、8 月からは traPortfolio の外部向け公開ページのリポジトリの管理をおまかせしています
さいごに
ここまでお読みくださってありがとうございました
ペアプロの目的や効果。方法について少しはイメージが湧いたのではないかな、と思います
もちろん大変である、時間を確保するのが難しいというデメリットはありますが、それを上回るメリットを感じていただけたのではないでしょうか
この記事を読んでくださった皆さんには、ぜひやってみてほしいです!
明日は…
明日は @ch4tla さんと @Takeno_hito さんです!
お楽しみに!