かとのぼのマイコード・マイライフ

個人開発者かとのぼのプログラミングと雑談のブログです。たまに読書と銭湯も

環境を変えるのが怖くなる話

 このタイトルだとなんか引っ越しとか転職とか人生の転換点を迎えているみたいな台詞ですが、私が言っているのがプログラミングの開発環境のことです。あと、今回の記事は雑記寄りの備忘録的な感じです。

開発環境の構築と更新の大変さ

プログラミングの開発環境って、構築するのも大変なんですけど、更新するのも面倒です。

なぜなら、最近の開発は色々なパッケージが複雑に絡んでいるので、それぞれの依存関係が深くなってしまっています。

簡単にいうと、一部バージョンを変えたりすると今まで動いていた開発環境が動かなくなってしまったりするんです。

たくさんのエラーを一つ一つ直していくと大体問題なく動くようになるんですが、結構ドキドキします。

今までなら別によかったんですね。ダメなら1から作り直せば良いし、勉強になるくらいのマインドだったんです。

ところが、いくつかウェブサービスを運営するとそんな軽い感じになれません。

万が一動かなくなったら大変ですから、慎重にならざる終えません。

オーバーエンジニアリングにならないか?

ただ、これからまた新しいウェブサービスを作り出す気なんですが、かなりローカル開発環境のバージョンをいじる必要が出て来ました。

そうなると、今までの運営サイトも大幅に改修する必要があることは目に見えてます。

そこで今頭に浮かんでいるのが、Dockerを活用することです。

Dockerは良く参考にさせてもらっているエンジニアの方の多くが利用していたので以前に少しだけ学習したことがあるのですが、その時は自分にはとっては身につけるには大げさすぎる技術だったのでその時は覚える必要はないと思っていました。しかしようやく検討する段階に入ったのかもしれないと少し考えています。

ちなみに、必要以上の技術や知識をアプリに詰め込めんでしまうことをオーバーエンジニアリングと言うそうですね。まさに「過ぎたるはなお及ばざるがごとし」です。ちゃんと設計の段階でしっかり精査する必要があると思います。

オーバーエンジニアリングの正体とその向き合い方 | POSTD

加えて、新しい技術は学習コストが高いです。ですので、次のプロジェクトはDockerを使うのが良いか、それともバージョンもあげて改修するのか、どっちが良いのかは今後見極めていきたいと思います。

学習すればするほど先輩エンジニアの便利の意味がわかってくる

初心者の時に、エンジニアのブログで、「このフレームワークは簡単!」とか、「これは便利!」とかいう記事を読んで、そうなんだ、じゃあやってみようと実際に試してみたら、全く意味がわからないってことが多々あったんですが、その理由がだんだんとわかって来ました。

結局、色々な技術がわかってきて初めて便利になるものがプログラミングの世界はとても多いのだと言うことです。

イメージでいうと、初期のマリオのゲームで、裏道を抜けるといきなりレベル1からレベル10のステージにいけるトンネルみたいな感じです。

つまり、レベル10の世界で戦う人にとって、わざわざレベル1から順番にレベル10までいくよりワープできた方が簡単だし便利っていう意味だったのです。

もし初心者が実力もないのにワープしてレベル10の世界に行っても敵が強すぎて死んでしまうだけです。それが最近身にしみてわかってきました。

だからこそ入門向けの記事のニーズがある

本題からは外れますが、最近入門者向けの記事を書いているのはこのことを実感しているためでもあります。

私の入門記事で気をつけているのは、その知識の本質的な概念を身近なものに例えたり、その学習法についてです。言うなれば初心者の中でも本当の初心者に向けての記事です。現在、こういった記事があまりにも少ないと思うのです。グーグルで検索すると、初心者向けの記事はボリュームがある記事が多いのですが、不思議なことに本質に迫った記事はどうしてもありません。読んでいてちゃんと理解した人が書いたのか怪しい記事すらあります。

ですから、まずは学習の軸になるような簡潔な入門記事が求められていると思うのです。と、そんな気持ちで書いているので暖かい目でみていただければと思います。