プログラミングとボルダリング

壁 Advent Calendar の記念すべき1日目の記事です。

最近、イケてるスポーツNo.1の呼び声高いボルダリングですが、IT業界のエンジニアの間で特に人気らしいです。これには理由があるはず。理由ある太郎です。プログラミングとボルダリングは似ているのです。

ぼくとプログラミングとボルダリング

ぼくは昨年の11月に転職してエンジニアになり、プログラムを書いたりポエムを書いたりしています。割合で言うとだいたい1:9くらいです。転職先(現勤務先)には、社員同士の交流活性化を目的とした部活動制度があり、その中に「ボルダリング部」なるものがありました。直属の上司と同僚が声をかけてくれて参加しました。これが初めてのボルダリング体験です。つまり、ぼくはプログラミング歴≒ボルダリング歴≒約1年なのです。

ちなみにボルダリング歴1年というのは、まだまだひよっこで、グレードでいうとRP3級・OS4級くらいです*1。 一方で、エンジニア歴1年、これはもう完全にひよっこ中のひよっこで、グレードでいうと酩酊状態のオランウータンにギリ勝てるくらいです。 そんなぼくが両者について語るのは本当に痴がましいのですが、普段「プログラミングってボルダリングと同じだったんだ!」と思うことが多々あるので、そのあたり、特に深い意味もなく適当に書きます。

目的の明確さ・達成感

  • プログラミング:自分の技術を使って機能を実装する
  • ボルダリング:自分の技術を使ってゴールに到達する

ボルダリングには予め定められたゴール、プログラミングには実装すべき機能という明確な目的があります。また、他の多くのスポーツとは異なり(コンペで記録を競う場合を除いて)、競争相手がいません。相手の調子が良かったから負けた、みたいなのがないです。自分の技術があればゴールに到達できるし、到達できないのならば自分の技術が足りないだけのことです。

登る前のイメージと実際の動きが完璧に一致して一発でクリアできるのがベストですが、大抵は何回か挑戦することになります。一連の課題のうちある箇所で毎回落ちてしまう場合などは、そこだけを切り出して練習したりします。この問題を細分化する過程も似ています。

技術習得の過程

  • プログラミング:他人のコードを読んで、実際に書き、改善していく
  • ボルダリング:他人のムーブを見て、実際に登り、改善していく

ボルダリングは基本的にはひとりでやりますが、他人から学ぶところは多々あります。あるムーブをすれば落とせる課題でも、その存在を知らないまま延々とトライするのは非効率的です。自分よりも経験があり、ムーブの引き出しが多い人が登るところをみてそれを真似することで、自分の中にもムーブのパターンが蓄積されます。

ボルダリングを始めたばかりのころ、上司に上達のコツを聞いたら、「どれだけ長い時間壁を触ってきたかで上達のスピードが決まる。」と言われました。本・動画をみることやイメージトレーニングも重要ですが、実際に登ってみることが最も上達スピードを上げることを、1年間やってきた今でも実感しています。プログラミングも同じで、自分で書いてみないと身につきません。本とか読んでわかった気になってても一瞬で忘れます。

ボルダリングのコンペ(大会)では、ひとつの課題に対して少ないトライ数で落としたほうが有利です。一撃で落とすのがベストですが、難しい課題だと、ひと目で正解ムーブを見つけるのはかなり難しく、複数回のトライを経て徐々にゴールに近づくのが普通です。失敗を分析し、自分の技術を踏まえてムーブを再設計し、次のトライに活かすことが重要です。プログラミングも、一発でうまく書けることはほとんどなく、リファクタリングを通してよりよい形に落ち着いていきます。

最適解の追求

  • プログラミング:無数の実装方法からよりよい実装を模索する
  • ボルダリング:無数のムーブからよりよいムーブを模索する

ボルダリングでは課題ごとにホールドが指定されており、それらを使ってゴールに辿り着く方を考えます。人によって力・柔軟性・身長・体重が違うため、その方法は様々です。自分が登った方法とはぜんぜん違う方法でほかの人が登っているところをみることもよくあります。プログラミングでも、同じ機能でも人によってそのコードは全然違います。

ボルダリングの課題は、設計者が「こういうムーブをしてほしい」という意図を込めて作っています。「正解ムーブ」は、とても自然で無駄がないです。一度正解にたどり着くと、なぜいままでそうしていなかったのか不思議なくらいしっくりきます。課題をクリアできたとしてもムーブに違和感がある場合、真の解のために試行錯誤することも多々あります。より美しく実現したいという志向もよく似ています。

まとめ

書いている途中で薄々気づいていましたが、あんまりそんなこと考えていませんでした。本当は以下です。

  • 一人で黙々と楽しみたい(会話が苦手だから。)
  • 体力を消耗したくない(10分程度の徒歩で使い切るくらいの体力しかないから。)
  • サッカーや野球やテニスを嗜むウェイ勢に近寄りたくない(怖いから。)

ていうか、3年前に同じようなことを書いている方がいらっしゃいました。綺麗にまとまっているのでこっちを読んでください。ぼくが書いたことは忘れてください。明日以降のアドベントカレンダーに期待しましょう。みなさんがちゃんと書いてくれるのか不安しかないですが*2、とても楽しみです。最終週の4日分がまだ空いています。ちょっとでも興味ある方、書いてください。マジ。マジお願い。

kyabatalian.hatenablog.com

ボルダリングやってみたくなった方、いつでもご連絡をお待ちしています。

*1:ホームジムが甘めとの噂もあります

*2:もはやボルダリングのことを書いてもらうことは諦めました