コミュニティ

2019年01月30日

現役エンジニアに学ぶ「ペアプログラミング実践中に重要なポイントとは?」

Aws4 request&x amz signedheaders=host&x amz signature=441a875a81c66e059446c0aea521fe7e2255eb1e4195d83b39370ce74315e608

現役エンジニアを招いてペアプログラミング実践講座開催!

2019年1月22日、DIVE INTO CODEにてペアプログラミング実践講座が開催されました!

ペアプログラミング実践をリードしてくれるのは、株式会社万葉の現役エンジニア、櫻井さん。
以前もペアプログラミングの意義や手法にについてお話いただきました。

前回開催の記事はこちら
チーム開発の効率を向上させる黄金習慣、「ペアプログラミング」とは?

前回のお話では時間の都合上実践までできなかったため、今回はPCを開いてペアプログラミングを実践します!

受講生・メンターも交えてのペアプログラミング実践

しりとりプログラムを作ってみよう

今回のテーマは「しりとりプログラム」。

みなさんご存知の「しりとり」の相手になってくれるプログラムを、ペアプログラミングをしながらの開発にチャレンジします!

コードを書く前に確認すべきこと

なにを作るのか概要はわかっていますが、このままコードを書き始めるのはよくありません。
なぜなら、仕様の共通認識がまだないから。

今回開発するの「しりとり」にも様々なローカルルールがあります。

例えば、「紅茶」などの拗音で終わった時に、次の人は「ちゃ」から始まる言葉を返すのか?「や」で始まる言葉を返すのか?など、様々なルールがあります。

このようなルールをしっかり「仕様」として落とし込み、チーム全体で共有しましょう。

仕様が変わると実装が変わります。

実際の開発ではプロダクトオーナーが仕様を決めることが多いため、まずは仕様の確認と共有をしっかりしましょう!

ペアプログラミング実践中に意識すべきこと

仕様の確認ができたら、いざコードを書いて行きましょう!ペアプログラミング実践開始です。

Image from Gyazo

ここで、櫻井さんから重要なアドバイスがありました。

仕様の確認と共有は大事。しかし、仕様通りに作ろうとしてもダメです!

矛盾しているように聞こえるかもしれませんね。どういうことかというと、
仕様通りにするのではなく、実現可能な仕様かどうかを検証しながら進めることが大事ということです。

例えばこのしりとりプログラムの場合、「使っていいのは名詞だけ」というルールがあったとします。
「入力された言葉が名詞かどうか?」を判別させるのは結構大変ですよね。

しかし、このプログラムの大筋は「入力された言葉の最後の文字から始まる言葉を返す」ことです。
名詞かどうかを判断させることに固執してしまい、そこから先に進めない!ということになっては元も子もありませんね。

いきなり全ての仕様を完璧に作ろうするとリズムに乗れません。まずできるところから進めて、自分たちのリズムをつかみましょう!

Image from Gyazo

受講生同士、夢中になってコードを書いています。

ペアプログラミングだからこそ可能な開発

エラーが起こり原因の特定に集中し過ぎてしまうと、ついつい全体像が見えなくり、「今何を実装しているんだっけ?」となってしまいがちです。

そんな時はアドバイザ役の人が「今何をすべきか」を確認して相槌を入れてあげることで、迷走から抜け出すことができます。

ペアで開発を行うことのメリットは、このように自分以外の視点でコードを見られるということ。更に一人でやるよりも多くの知識を得ることができるということです。

二人でやると二倍時間がかかると思ってしまいがちですが、一人で筋の良くないコードを書いてしまったとしたら、その後のメンテナンスにはもっと多くの時間が必要になります。
二人でやることでコードの質が上がり、知識や経験のシェアをすることで、普段の自分とはちょっと違うものを獲得できる。一人でやるよりも色々なことを得ることができる。これがチーム内で循環していくと、チーム全体のレベルが上がる。

ペアプログラミングに正解はない

このように二人一組になって行うペアプログラミングですが、手法にこだわってはいけないと言う櫻井さん。

大切なのは「開発を効率よく進めるために、チームを有効活用すること」

それが達成できれば、ペアでなく大勢でしても良いし、プログラミングでなくリーディングしても良いんです。チームで取り組むことで、知識の共有ができることが重要なのです。

櫻井さんのようなベテランエンジニアでも、一人で悩み始めたらペアプログラミングを実践するそうです。
ペアプログラミングの習慣が、櫻井さんや櫻井さんのチームのスキルを底上げする要因のひとつであったことは確実と言えそうですね。

ペアプログラミングを終えて

Image from Gyazo

今回のペアプログラミング講座に参加した受講生からはこんな声が上がりました。

途中でテンパってしまったのですが、楽しかったです
じっくり時間をかけて基幹システムの開発をしていたが、時間が限られると焦ってしまう
何をやっていけば良いのかわからないところから、初め段々と進めていくことで明確にになっていき、良かった。
「if〜」 でどんどん書いてしまうけども、機能一覧を作ってから実装する大切さを気づきました。

みなさん、新たな気づきがあったようです。

スキルアップのためには欠かせない手法とも言えるペアプログラミング。みなさんもチャレンジしてみてください!

DIVE INTO CODEのことをもっと知ってみませんか?