#kabepy ボルダリングとプログラミング(kabepy Adevnt Calendar)

#kabpy Advent Calendarの24日目を書きます。 @hirokiky です。

4日目、10日目にも書きました。

今回はボルダリングとプログラミングの関係について話します。 私はボルダリングとプログラミングが好きです。周りにも両方を嗜んでいる人が一定数いるようで、ボルダリング(ひいてはフリークライミング)とプログラミングの間には本質的に通じるものがないかと感じています。

共通点としては:

  • 技能が重要であること
  • 挑戦的な問題であるということ
  • 無駄のない完成されたものを追い求めるということ

が共通していると思います。その点を話していきます。

ボルダリングにおける技能、プログラミングにおける技能

ボルダリングにおいて、筋力、体力などの肉体的な差異はそれほど重要ではありません。 「ロッククライミング」と聞いたときのイメージとしては、屈強な男性が半裸で岩山を登っていくというのがたしかにあります。しかし実際には腕力、体力はそれほど重要ではありません。 重要なのは体(とくに手ではなく足)の使い方、バランスのとりかたなどです。 ボルダリングにおける「上手さ」いうのは肉体面のでの問題と言うよりも、技能、技術面が大きいということです。

そういった「技能」に対する姿勢がプログラミングに類似しており、好まれているのではないかと思います。短絡的に肉体的な問題で解決できるのではなく、技能や技法を駆使し、解(完登)を見出すのが面白いのです。次にその「壁」という問題についてです。

壁という問題

問題に対する挑戦が好きなのでしょう。壁はとても挑戦的で、面白い問題です。ボルダリングでも初めはうまく登れないものですが、何度も登ってみたり、周囲のアドバイスや情報を参考にするなかで登れるようになります。たしかな技術をみにつけ、それを実践することで登れなかったものが登れるようになる、この喜びや挑戦の面白さはやはりプログラミングに通じていると感じます。

プログラミングにおいても、初めは求めている機能をうまく実装できないものです。しかし、他人のソースコードや技術書、ブログを参考にする中でよい解法を見出すことができます。何度もソースコードを書いているうちに、再利用しやすく、読みやすいソースコードが書けるようになります。そして培った技術をもって素晴らしいソフトウェアを書き上げたときの喜びは代えがたいものでしょう。

ためになるブログを読んだあとに、その効率的な手法を実践してみて感動したことは誰でもあると思います。ボルダリングにおいても登り方1つを工夫するだけで登れなかった壁が登れるようになったります。ボルダリングにおける技術については、 @shomah4a さんが書いた 上達のコツとか が参考になりますので是非どうぞ。

姿勢と美的感覚

フリークライミングのなかでもボルダリングは、ロープやカラビナなどの器具を一切使わずに壁に登るというスタイルをとります。このシンプルで、無駄のないものを好む姿勢はまさにプログラミングに通じるものがあります。そしてクライミングにおける完成されたムーブ、無駄のないその姿はやはり素晴らしいものです。

プログラミングもコンピューター1つでソフトウェアを作り出すものです(そもそも「プログラム」自体はコンピュータが必須ではなく、それが偶然コンピュータで動作するにすぎませんが)。無駄なものは必要なく、己自身が必要なものです。そしてボルダリングにおけるムーブのように、完成されたソフトウェアは、無駄がなく、簡潔で、素晴らしいものです。

私が信奉するHow To Become A Hackerという文章には、ハッカー精神を身につけるうえで「格闘技」が重要とされています。格闘技における精神的な規律、これがハッカー精神にも通じているとのことです。もちろんボルダリングは格闘技ではありませんが、技能、精神的な規律や注意力、コントロールを重要とし、肉体そのものに重きを置かない点は同じだと感じています。

おわりに

すべてジョークです。私はもっとゆるふわな気持ちで壁を登っています。

と思ったけど、間違ったことは言ってない気もします。