こんにちは、Shinyaです
先日ボルダリングに行ってきました
成果はまずまずでしたが身体動かすとやっぱりスッキリしますね
運動すると失敗人格がどっかへ飛んでいきます(失敗人格に興味ある方はリンクから記事に行ってみてください)
僕は実は趣味でボルダリングを2年以上続けているのですが、ひとつ思うことがあります。それは
「ボルダリングとプログラミングって似てない?」
ってことです(名前じゃないですよ)
というわけで今回はボルダリングとプログラミングの似てるところをリストアップしてみました
完全に息抜き記事になっております
プログラミング好きな人はボルダリングも好きかもしれませんよ~笑
ボルダリングとプログラミングの似てるところ
1.ムーブ(ロジック)を組み立てる

ボルダリングは壁についたホールドと呼ばれる石を使って壁を登るスポーツです
東京オリンピックでも正式種目になったのでどこかで見かけたことがある方も多いと思います
やってないと分からないですが、ボルダリングしてる人はただ闇雲に登っているわけではありません
ボルダリングにはムーブと呼ばれる決まった形の合理的な動作がいくつもあります
初心者はムーブを知らないので闇雲に上りますが、多少ボルダリングに慣れ親しんだ人は、いくつかのムーブを組み合わせて壁を登るようになります
その方が圧倒的に登りやすいからです
なのでボルダリングしてる人は壁を登る前に今から登る一連のホールドを見て、ホールドの並びや形状や壁の角度や自分のリーチなどを加味して使うムーブを脳内で組み立てます
ムーブの組み立てが下手だと登ってる最中に動きに無理が出てきて、登れるものも登れなくなります
このムーブの組み立てはプログラミングのロジックの組み立てと近しいものがあります
プログラミングも一定の処理を実現する際にフローチャートを書いたりして個々の処理の組み合わせや順序を考えます
ここができないと処理を実現できません
2.省力する(簡潔にコードを書く)

ボルダリングは腕の消耗との戦いなので、いかに楽に省力して登るかが大事です
余計な動きを減らし、楽に楽に登ることで難しいルートを攻略する鍵になります
プログラミングも余分なコードを減らし簡潔に分かりやすくコードを書くことが大事です
冗長に書いても動くものは作れますが、エラーが出やすくなったり、保守が難しくなります
どちらも無駄を省くという点で一致しています
3.Try and Error

ボルダリングもプログラミングもエラー解決こそが醍醐味です
ボルダリングにおけるエラーとは落ちることです
ボルダリングは選んだムーブやちょっとしたバランスの配分やホールディングの仕方などで同じルートが登れたり登れなかったりします
こういった登るという行為の要素ひとつひとつを改善することで登れなかったものが登れるようになります
単純にフィジカルが足りないという場合もありますが、動作を最適化するという部分は登るための非常に大きな要因です
なのでボルダリングでは何度も落ちて、何で落ちたのか、どうしたら落ちないのか考えて試行し、また落ちてまた考えるというTry and Errorをすることになります
このTry and Errorの先に大きな達成感が待っています
まさにプログラミングのエラー解決と同じです
4.初め難しいけど誰でもできるようになる

ボルダリングを初めてやって上手く登れる人はまずいません
2年以上ボルダリングジムに通ってますが、どんなに筋力があっても一回目で上手く登れる人はいないです
ボルダリング初めての筋肉ばりばりの20台男子とボルダリング歴3か月の普通の小学生女子だったら、ほぼ100%小学生女子が勝ちます
そういうスポーツなのです。慣れの部分が初めは非常に大きいです
裏を返せば誰でも続ければ上手くなるということです
プログラミングも同じだと思います
プログラミング始めたばかりで上手くコード書ける人なんてまずいないですよね
でも続ければ初めとても難しかった内容でもなんてことなくなります
5.鍛えないと先に進めなくなる

ボルダリングはある程度までならトレーニングしなくても勝手に上達しますが、あるところから意識的に筋トレしていかないとフィジカルが足りなくて登れなくなります
これはエンジニアが常に新しい技術を学んでいかないと置いて行かれる状況に似ています
プログラミングは続けてればある程度までなら勝手に身につくけど、レベルアップし続けるためには自学が必要です
最後に
以上がプログラミングとボルダリングの似てるところでした
これだけ共通点があるのでプログラミング好きな人はボルダリングも好きかもしれませんよ!
実際、ボルダリングしてる人にプログラマーや理系人間は多い気がします
思考や行為に似たものがあるからなのでしょう
最後まで読んでくださりありがとうございました
それでは、また