自己学習でローカルを汚さない開発環境の作り方

目次
自己学習での環境構築
Webアプリケーションの世界は次から次へと新しいツールやフレームワークなどが生まれています。
これらをキャッチアップし続けるためにもエンジニアにとって自己学習の必要性は更に高まっていると言えます。
このとき、はじめに躓くのが環境構築ではないでしょうか。
手軽に始めるだけであれば参考書や学習サイトに記載のとおりにコマンドを実行し進めてもできる場合もありますが、
pip install flask
のようにバージョンを明記しないインストールコマンドを実行してしまうと、参考書時点のバージョンと現時点の最新との差異で思わぬエラーに苦しむことになったりします。
本流とは関係ないところで躓き、時間をロスしてしまうことは極力避けたいですよね。
そこで今回は「ローカル環境をいかにクリーンに保つか」という点について記載してみようと思います。
この記事では私自身の経験をもとに、自己学習における理想的な開発環境の作り方についてご紹介します。
グローバルインストールの落とし穴
私はプライベートでは2019年に購入したMacを使用しており、macOS Catalinaがインストールされておいました。
当時、MacではPHPがデフォルトでグローバルインストールされていました。
これが、少し困った挙動を引き起こすことになりました。
自己学習を進めようとLaravelのテキスト通りに環境を構築しようとしてもうまくいかなかったのです。
よくよく調べてみると、参考書通りphpenvで学習用リポジトリのPHPを固定していたはずが、グローバルインストールされたPHPを参照していたためにバージョン齟齬を起こしてしまっていました。
これにより、参考書とは書いていない箇所で詰まってしまったことを覚えています。
バージョン管理ツールの限界
こうした体験により、以降環境を構築する際はnodenvやphpenvなどのバージョン管理ツールを導入するようにしました。
ただし、これらは言語のバージョンを指定するだけなので、OSやDBのような環境もまとめてまるっと起動したいような場合では、さらなる工夫が必要です。
Dockerとの出会い
2023年、業務でDockerを使う機会がありました。
最初は「簡単にサーバーが立てられるツール」程度の認識でしたが、使っていくうちにその真価に気づきました。
Dockerを使えば、アプリケーション全体の環境をコードで定義・再現できます。
バックエンド、フロントエンド、データベースなど複数のサービスをまとめて構築・起動できるのは非常に魅力的です。
それ以来、個人の学習環境でもDockerを積極的に取り入れるようになりました。
ローカル環境を汚す心配が減り、Dockerfileやdocker-compose.ymlファイルにも慣れることができたと感じています。
Dockerでのつまずきと学び
もちろん、Dockerを使えばすべてがスムーズというわけではありません。
docker compose buildは成功するのに、docker compose upでデータベースがexited with status 0となってしまう、といったトラブルも何度も経験しました。
そうした経験を通じて、コンテナ間の起動順序やサービスの依存関係、ボリュームによるデータの永続化など、Dockerの仕組みを徐々に理解していきました。
また、ログの表示には-dオプションでデタッチモードを使い、必要に応じて以下のようにログを確認するスタイルが定着しました。
docker compose logs –tail=100 -f app
こうした細かい運用方法も、実際に手を動かして試行錯誤する中で身につくものだと感じています。
まとめ:環境構築も立派なスキル
開発環境の整備は後回しにされがちですが、安定した環境を持つことは学習効率の向上に直結します。
環境がごちゃごちゃになって別のトラブルに振り回されないためにも、参考書のバージョンと揃えてから始めることで効率良く学習が進められると感じています。
本記事を参考にしていただくことで、
pip install flask
のようなバージョンを指定しない書き方の参考書に出会ったときに
「あ、バージョン指定していないから動作に差異がでてしまうかも。参考書が前提にしているバージョンは何かな。」
と気づくきっかけになれば嬉しいなと思います。