プログラミングの極意は「説明する」こと?煮詰まったら”ペアプロ”がおすすめ!
2023/09/12
現役プログラマーとして様々な活動をされている鳥井雪氏による、プログラミング通信をご紹介します。こちらのコラムでは、「実際のプログラマーが毎日どんなことを考えてプログラミングしているか」や「実生活でプログラミング的思考がどのように役立つのか」などを、わかりやすく分解してご紹介いただいています。
★こちらの「こどもプログラミング通信」も合わせてご覧ください!
本記事の筆者:鳥井雪(とりい・ゆき)氏
小学校高学年むけプログラミング入門書『ユウと魔法のプログラミング・ノート』著者。
Railsプログラマーとして活躍し、女性にプログラミングの技術を解放する世界的ムーブメント「RailsGirls」の、日本での普及にも尽力する。その功績を認められ、2013年楽天テクノロジーアワード ルビー賞受賞。
RailsGilrsの創始者の一人である、リンダ・リウカス著のプログラミング教育絵本『ルビィのぼうけん』を翻訳、1カ月経たず3刷2万部のヒットとなり、プログラミング教育必修化にむけての一助となる。
翻訳に『ルビィのぼうけん こんにちはプログラミング』『ルビィのぼうけん コンピューターの国のルビィ』『プログラミングElixir (笹田耕一と共訳)』
プログラマーが活用する"ペアプロ"とは?
プログラミングって、一人でずっとパソコンに向かって作業しているイメージがありますよね?
けれど実際の仕事では、二人一組であれこれ話し合いながら進めることもあります。これを、”ペアプログラミング”と言います。略してペアプロと呼ぶことが多いです。
では、なぜそんなことをするんでしょう?
ペアプロの目的の一つは、お互いの知識を補い合うことです。
たとえば、あるプロダクトにプログラミングをして機能を追加したいとします。そのプロダクトのプログラムに詳しいAさんと、最近プロジェクトに参加したばかりのBさんがいます。そこで、いきなりBさん一人に機能追加を任せるのではなく、二人で同じプログラムを見ながら、
「Aさん、ここのプログラムはどうしてこうなっているんですか?」
「ああ、このシステムでは、ユーザーの契約内容によって使える機能が違うんです。その切り替えをしています」
といった会話をしながら進めて行くことで、スムーズに開発が行えるのです。その知識を伝えられたBさんは、次からは同じ箇所でつまずくことなく一人で開発を進められるでしょう。
そしてペアプロには、もう一つの重要な利点があります。それは、”人に説明しながらだと、考えが整理できる”ということです。
プログラムはコンピューターに命令を与えるものですが、そのためには、「こういう条件のときには、こうしてほしい」といった内容がはっきり自分でわかっていなければいけません。自分の言葉で説明できないものは、プログラミングできないのです。
ペアプロでは、プログラムを書く役割(ドライバー)と、それにあれこれ口を出したり、必要な知識を調べたりして補助をする役割(ナビゲーター)に別れ、交互にその役割を交代しながら進めていきます。プログラムを実際に書くドライバーは、今、自分がどう考えて、何をコンピューターにさせようとこのプログラムを書いているのかを、ナビゲーターに説明しながら書いていきます。そしてなぜか、人に説明しようとすると、一人で考えているだけのときよりずっと、考えが整理されたり、今まで気づかなかったことに気づきやすくなったりするのです。
ペアプロならぬ、”○○プロ”でもOK!
ペアプロでなくても、うまく動かないプログラムに一人でずっと悩んだあと、どうしようもなくて人に助けを求めることがあります。そのとき、何に悩んでいるかを説明している途中で考えが整理されて、自分で解決策を思いついてしまうのは、有名な”プログラマあるある”です。
「ねぇAさん、ここのプログラムの動きがおかしくて。この種類のユーザーがログインした時はトップ画面に、こっちのユーザーがログインしたときは…あ、そうか、こうすればいいのか」
といった感じです。
このように利点の多いペアプロですが、二人でやることなので、なかなか相手をみつくろえないことがあります。そんな時はどうするか?
この問題には、有名な対処法があります。
パソコンのとなりに、くまのぬいぐるみを置いて、プログラムに悩んだら話を聞いてもらうのです。するとあら不思議。ペアプロの時と同じように、「人に話す」の効果で考えがすっきりまとまります。
くまのぬいぐるみでなくても、話を聞いてくれそうな何かならもちろんなんでもいいです(お風呂のおもちゃのアヒルちゃんを置く人も派も多いです)。
でも、わたしはくまのぬいぐるみをお勧めします。なぜなら、この対処法の名前は「”ベア”プログラミング」と呼ばれているからです。
お子さまがプログラミングに詰まった時はもちろん、ご自身が考えを整理したいときも、プログラマー気分で”ベアプログラミング”をぜひ試してみてください!