見出し画像

プログラミングで最も大事なことは『未来の自分にバトンを渡す意志』である

さて、突然ですが皆さんは「プログラミング」と聞いて、どういったイメージを持ったり、感じたりされるでしょうか。

「自分には難しいかな。未経験だし。」
「過去にやったけど大変そうですぐに辞めちゃったよ。」
「たまに書きますけど、あまり得意ではないですね。」
「昔から今までバリバリ書いてます。」

といった感じに、皆様は各個人で千差万別な思いを馳せることかと思います。そしておそらくはプログラミングに対して苦手意識を持ったり、もはや近づくのもちょっと嫌だ、という方も中にはいらっしゃるのではないでしょうか。

確かに実際に「プログラミングをやる!」となったら、タッチタイピング技術はある程度必要ですし、細かい文字列を追うことや、数学的な知識なども必要になります。

そういったハードルの高さは実際にあるのでしょうけど、それらのハードルを超えている人でもおそらく『とある理由により、プログラミングが嫌いになってしまう』という方が少なくないのではないか、と個人的に考えています。


それは何かというと、
「書いたコードが乱雑になってしまい、どこに何があるのかが分からなくなってしまったり、自分の書いたコードそのものを短時間で理解できなくなってしまった」
などといった理由によるものです。

読みやすいコードについては、非常に有名な著書である『リーダブルコード―より良いコードを書くためのシンプルで実践的なテクニック』などでも議論がなされています。


ただ、個人でプログラミングをやるにしても、グループで共同でやるにしても、「絶対的な書き方や法則」というものはなく、環境やグループの暗黙の了解、自身の習慣、知識に依存してその書き方というのは異なってきます。

このことについては皆様にも様々な(中には否定的な)意見もあるかと思いますが、経験上、コードをどう組み立てていくかは、意外なところでは「映しているモニタのサイズ」であったり、「使用しているデバイス」などにも依存して変化するもの、というのが私の中でほぼ確定しつつあります。

もし仮に、それが正しい(つまりリーダブルなコードというのは相対的な性質を持つ)とした場合、私達は何を軸にコーディングをしていけば良いのでしょうか?

中には『過去にずっとプログラミングをやってきていたが、つらくなってもう今は辞めてしまった』という方もいらっしゃると思います。継続して精神的、肉体的に無理のないプログラミングを続けていくには、私達は何を意識すればいいのでしょうか。

この記事のタイトルにヒントがあります。大規模なプログラムを書くのであれば何ヶ月、長ければ何年も同じプログラムのコードの集まりと向き合うこととなります。そして人間が書くことを想定した場合、それは長期かつ断続的な作業になります。

そうなるとプログラミング作業の合間合間に休憩などで時間の隔たりが生じ、それにより「やっていたこと」や「書いたこと」を忘れるということが頻繁に生じます。

つまり、基本方針は『忘れても良いようにする』です。そもそも人間の「記憶」に依存して長期間作業するというのは、何もプログラミングだけではなく、様々な分野でも高いリスクを孕みます。

このことを意識するだけでも、プログラミングをしていく上で大きなアドバンテージとなります。さらに、以下では簡単ではありますが、私のオススメの戦略をご紹介します。(より細かい議論は、各個人の性質や環境によりまちまちですのでこの記事では取り扱いません)


検索性をあげる

特に長いプログラムを書く上で、
『目的のプログラムにすぐにたどり着ける』
『必要なメソッドやコード群をすぐに利用できる』
ことは作業効率を上げ、時間の大幅な短縮になります。

それを実現するための環境を構築する第一歩として何を意識すべきかですが、私は『ポケット1つ原則』を是非ともオススメします。

簡単に言えば、情報をしまい込むポケット(インタフェース)は極力1つにし、そこを探せば必ずある、という状態を維持します。あとは Ctrl + f だったり、その他検索ツールを使って目的の情報をサッと引き出します。

また、私がアプリを開発する上でたまにやる「一時的な場所の記録方法」があります。それは、コーディング中のコード群の適当な箇所に

    // wwwww

というコメントを残す方法です。(ネットスラングでいう(笑)のような見た目ですが、別の単語などとほぼ被らないという点でかなり使い勝手が良く、見た目がギザギザしているため視認性も高いです)

これにより、ワード検索で作業中だった箇所に即座にワープすることが可能です。(これは複数設置しても使い勝手が良いです)

ー余談ー
ちょっとした小ネタですが、Xcode(MacOSやiOS向けのアプリの開発プラットフォーム)では、「command + f」 のファイル内検索以外にも、「command + shift + f」でプロジェクト内検索(つまり複数のファイルを跨いでの検索)が可能であり、上記の『ワープ用のコメント』と併用すると非常に高い効果を発揮します。


作業を中断する前に、ToDoリストを必ず作る

言葉にすると少し硬いですが、言い方を変えると『未来の「続きをやる自分」に対してメッセージを残す』ことです。人は簡単なことでもしょっちゅう忘れます。これは非常に価値が高いアイディアの可能性もあり、それは一度忘れてしまうとほぼ救出が絶望的になります。

ToDoはもちろん、アイディアも思いついたら、すぐにポケット(インタフェース)の中に記録する意識を持つことは非常に大切です。



根性に大きく依存したプランを立てない

プログラミングはやせ我慢をしてやるものではありません。継続してコードを書くのであれば、私達の生活の一部に自然に溶け込ます必要があるのです。

人間は辛いことを長期間続けられるようにはできていません。(「いや、自分はできる!」という意見も飛び交いそうですが、嫌悪感で中止とまではいかなくとも、作業効率が下がることがままあります。そうならないためにも『無理なく自然に溶け込ます』という意識はとても重要です)

例えば学生時代を思い出してみて下さい。家から学校までの行き来で、皆さんは友達と話しながら学校に行ったり、どこかに寄って楽しんだりしたことがあると思います。

長期間のプログラミング作業もそれと一緒です。日々の生活の中で、色んな経験をしていき、その日々を楽しんだり、色んなことが分かったり、(たまにはキツイ作業もあったり)、でも悪くない日々を過ごせてる、というテンションが結果的に良いものを創造することに繋がります。



最後に

プログラミングやアプリ開発を続けていると、周囲では華やかなライブラリが話題になったり、新しい技術が多くの人を魅了したりしています。それらには色んな人の人生を(良くも悪くも)変化させていくパワーがあります。

しかし、本当に大切なことは『自分のこれから』と、どう向き合うかなのだと思います。自分の、自分だけの軸を持つことで、多少の揺らぎではブレない、高い価値のあるものを生み出せるのではないでしょうか。

プログラミングの小難しいルールや概念は学んでいけば後からでも挽回はできます。(やや手間取るリファクタリング作業を伴う場合ももちろんありますが…)しかし、一度自分が記述したコードが『未来の自分にとって使いやすいのか、それとも見づらく、不便なものなのか』は書いた時点で確定してしまいます。

コードを書く段階で「未来の自分」のために工夫をこらし、困らないように愛情を注げるかどうか、これに尽きると思います。

少しプログラミングとは別の話となりますが、いわゆる「ブラックな環境」というのは、私の経験上、ほぼ確実に「片付けができていない環境」でした。どこに何があるのかも分からず、誰に聞いても解決できず、手探りに孤独に耐えながら目的のものを探すような状態です。

これでは一緒に活動する仲間同士の体力や精神はどんどん削られ、関係性も悪化していきます。私達はそういった『エントロピーの増大による関係性の悪化(と、私は呼んでいます)』に賢く対処することで、世のブラック企業を淘汰できるのではないかと時々考えます。

話を戻します。結論として、プログラミングで大切なことは『未来の自分にバトンを渡す意志』と言えます。未来の自分のために今の自分が工夫をこらしてバトンを渡していく、というサイクルを続けることで結果的に高効率かつスムーズな作業を続けられるようになります。

是非、そういった意識でプログラミング、またその枠を超えて色々な分野に挑戦してみて下さい。


以上でこの記事は終わりです。お読みいただきありがとうございました。


この記事が気に入ったらサポートをしてみませんか?