feature image

2024年8月25日 | ブログ記事

ペアプログラミングのすゝめ

この記事は 2024年 夏のブログリレー 7日目のものです
他の記事を見たい方は こちら↑ のリンクをクリック!

こんにちは、23B のぷぐまです
普段は SysAd 班で Web アプリケーションを制作しています
先日リリースされた traPortfolio のフロントエンドリーダーも務めています

traPortfolio をまだご覧になっていない方は、ぜひ以下のリリースお知らせ記事とともに traPortfolio にお越しください!

https://trap.jp/post/2262/

部員の活動紹介サービス traPortfolio をリリースしました
こんにちは、SysAd班 traPortfolioチームです。 今回新たにSysAd班で traP部員用ポートフォリオサービス traPortfolio をリリースしたので、その紹介記事になります。 サービス概要 traPortfolioは、traPに所属する各部員の活動内容をまとめたポートフォリオサービスです。 部員は、外部向けサイトとは別に用意された部員用ダッシュボードで自身のプロフィールや大会出場履歴などの情報を入力します。1からポートフォリオをデザインする手間が省け、traP部員としての実績を外部に公開することができます。 こちらのリンクからアクセスすることができます。 traPortfolio東京工業大学デジタル創作同好会traPに所属する各部員の活動内容をまとめたポートフォリオサービスです。traPortfolio また、GitHubのリポジトリも公開しています。 公開ページ https://github.com/traPtitech/traPortfolio-UI ダッシュボード https://github.com/traPtitec

https://portfolio.trap.jp

traPortfolio
東京工業大学デジタル創作同好会traPに所属する各部員の活動内容をまとめたポートフォリオサービスです。

…と、ここまで traPortfolio の紹介みたいになってしまいましたが、今回はペアプログラミングについてのお話です
僕は昨年度末から今年度の前期にかけてペアプログラミングに力を入れていました
具体体には、最も多かった時期では 6, 7 月の 2 ヶ月間で 8 回も行いました
この経験を踏まえて、本記事ではみなさんにペアプロの重要性と魅力をお伝えします

ペアプログラミングとは?

ペアプログラミングとは、2 人で一緒にプログラミングを行うことです
しばしばこれを略して「ペアプロ」と呼ばれることもあります
というか、略されることのほうが多いと思います

ペアプロの目的

ペアプロを行う目的を以下に挙げてみました

よりきめ細やかな育成を行う

一般的な運動系サークルでは、先輩が後輩にコツなどを教えるのはよくある話だと思います
同様に traP では部内サービスの多くを内製していることもあり、このようなサービスを保守・管理できる後輩を育成することは必須です
講習会として育成の機会は設けていますが、それでもまだ不足しているように 少なくとも僕は 感じています

そこで、より個人に注力した育成をするためにペアプロを始めました
講習会が集団授業だとすると、ペアプロはいわば個別指導です
講習会で抜け落ちてしまった内容の補填にも有用です

より実践的な環境で学べる

ペアプロは実際の制作物における開発・保守・運用の場面で行います
これは、講習会のために用意された環境で行うのとは違います

自分が過去にやったことが制作物のリポジトリ内に経緯も含めて残ります
これによって、過去に学んだことがストーリーに紐づけられて覚えやすいだけでなく、探し出しやすいというメリットもあると考えています

自分に対する属人化を防ぐ

traP での開発においてもよくある話ですが、やはり中心となる人物に対してサービス開発・保守・運用の多くを依存することがあります
もちろん、サービスの開発や運営においてはその方針を決めるディレクターのような人物は必須です
しかし、traP ではこのような先導力を持つ人が結果的に実務面でも多くの負担をしているのを度々見かけます

ペアプロでは、開発メンバーに対するきめ細やかな育成を通してメンバーに実務を任せてしまえるようにします
これにより、特定の個人に負担の偏ることのない、より安定的で持続的な開発環境を築くことができます
これは、先にペアプロを行うという労力の前借りをしてでも行う価値があると考えています

仲良くなる

上 2 つと全然違う内容ですが、これも重要です

traP の活動はデジタル創作なので、大体のコミュニケーションがテキストで済んでしまいがちです
特に学年が違うと、お互いの顔も知らない状態でずっと活動することもありえます
ただ、同じ活動をするのであればこれは何としてでもで避けたいことです

僕は traPortfolio フロントエンドのリーダーなのでメンバーにお願いをすることもあります
こんなとき、メンバーはよく知ったリーダーから指図されるのと、得体のしれないリーダーから指図をされるのとでどう感じるでしょうか?
顔の知れたリーダーのほうが、何か分からないことがあったとしても気軽に聞きやすいと思います
また、少し厳しい期日が設定されたとしても、仕方ないなと腰を上げてくれるかもしれません

サークル活動もコミュニケーションです
せっかくなら淡白なものではなく、深い関係を築いて物事を円滑に進めたいものです

例1: フタだるまくん

フタだるまくん (@Futadaruma) は今年入学したばかりの 24B です
SysAd 班での制作も初めてで、Vue の経験もそこまでない状態でした
そのため、今回のペアプロでは少し重めの改善に取り組むことで以下のことを目指しました

https://github.com/traPtitech/traPortfolio-UI/pull/195

検索結果画面で2回目以降の検索が反映されるように修正 by Futadaruma · Pull Request #195 · traPtitech/traPortfolio-UI
User descriptionclose #191 PR TypeBug fix Description src/components/Search/UserList.vueで、queryプロパティを追加し、APIからユーザーを動的に取得するfetchUsers関数を実装。src/pages/SearchPage.vueで、user-listコンポーネントにqueryプロパティ…

具体的には、この PR を通して下のような話をしました

これ以降、traPortfolio で様々な issue をこなしてくれるようになり、また分からないときにはすぐに聞いてくれるようになりました
今では traPortfolio フロントエンドの唯一の 24B として日々奮闘してくれています

例2: しょーごくん

しょーごくん (@shogotin) には上記のような開発に関するペアプロだけでなく、保守についてのペアプロも行いました
これによって、traPortfolio のフロントエンドとして 2 つあるリポジトリの保守作業を分担して行えるようになることを目指しました

https://github.com/traPtitech/traPortfolio-UI/pull/201

iconifyのアップデート by sh0go07 · Pull Request #201 · traPtitech/traPortfolio-UI
User descriptionclose #200 PR TypeEnhancement, Dependencies Description @iconify/vueを使用するようにアイコンコンポーネントをリファクタリングしました。不要な@purge-icons/generatedのインポートを削除しました。vite-plugin-purge-iconsを削除し、Vite設定…

この PR を通して、大まかに以下の話をしました

これらの話を通して、リポジトリ保守については「あとは慣れるだけ」という状況に仕上げました
実際に、8 月からは traPortfolio の外部向け公開ページのリポジトリの管理をおまかせしています

さいごに

ここまでお読みくださってありがとうございました
ペアプロの目的や効果。方法について少しはイメージが湧いたのではないかな、と思います

もちろん大変である、時間を確保するのが難しいというデメリットはありますが、それを上回るメリットを感じていただけたのではないでしょうか
この記事を読んでくださった皆さんには、ぜひやってみてほしいです!

明日は…

明日は @ch4tla さんと @Takeno_hito さんです!
お楽しみに!

Pugma icon
この記事を書いた人
Pugma

23B / 普段はWebアプリケーション全般を幅広く / 競技プログラミングもたまにつまみ食い

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2024年9月17日
1か月でゲームを作った #BlueLINE
Komichi icon Komichi
ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】 feature image
2018年11月3日
ERC20トークンを用いた宝探しゲーム(真)の提案【アドベントカレンダー2018 10日目】
Azon icon Azon
2024年8月21日
【最新版 / 入門】JUCEを使ってVSTプラグインを作ろう!!!!【WebView UI】
kashiwade icon kashiwade
2021年8月12日
CPCTFを支えたWebshell
mazrean icon mazrean
2021年5月19日
CPCTF2021を実現させたスコアサーバー
xxpoxx icon xxpoxx
2023年4月27日
Vulkanのデバイスドライバを自作してみた
kegra icon kegra
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記