そろそろかなと思い
超ひさびさの投稿です。冗談じゃなくてガチで修行してました。(今も)
開発エンジニア3年目という節目でそろそろアウトプットしていこうと思い再開しました。
私は開発の現場を経験する中で、自分なりのスキルや知見が少しずつ積み重なってきました。
これからは、学んだことをどんどんアウトプットしていき、誰かの役に立てたらうれしいなと思っています。
この記事について
本記事は「Anaconda+Jupyter」自体を否定するものではありません。
ただ、それが 最初の一歩として適切なのか? という視点で見直してみようという提案です。
故に多くの初心者がつまずきやすい「環境構築」や「開発スタイル」について、実際の現場で役立つ情報をシェアしたいと思っています。
- 「Pythonを始めたいけど何から手を付けたらいいかわからない」
- 「AnacondaやJupyterで始めたけど、なんだか重いし使いづらい」
機械学習を学びたい方にも言えますが、まずはPythonを習熟しないことには始まりません。
なのでまずは「Pythonを効率良く学べる環境」を作ることが大事なのです。
1. Anaconda+Jupyterでつまずいたあなたへ
つまずいて当然なんです。
「Pythonを使うだけで、なんでこんなに大変なの?」――そう感じたなら、あなたは正しい感覚を持っています。
つまずいたあなたも、スムーズにやり切ったあなたも。
まずはここで一度、認識をアップデートしてみましょう。
Python学習における「Anaconda+Jupyter」は、決して唯一の正解ではないということを。
むしろ開発という視点で見れば最適解ではないことも多いのです。
2. 初学者ルート:Anaconda+Jupyterの黄金パターン
Pythonの学習を始めると、ほぼ確実に見かける言葉があります。
「まずはAnacondaをインストールしましょう」
「JupyterNotebookを使えば簡単に始められますよ」
YouTubeや教材もこぞってこのルートをすすめてきます。
実際pandas
でCSVを読み込んで、matplotlib
でグラフを描く…という流れは、とても「Pythonしてる感」があって楽しいものです。
しかし問題なのは環境構築が難しすぎて「Pythonまでたどり着けない」のです。
私はこの問題がありつつも、なぜこの 黄金パターン が存在し続けるのか考えました。
それは単純に「そういう記事が多く」、その分サンプルが増えて「Anaconda+Jupyter」以外の選択肢が埋もれてしまうからなのではと。
では 黄金パターン から始めるPython習熟が適さない理由をここから見ていきましょう。
3. Anacondaはなぜ初心者をつまずかせるのか?
Anacondaが便利って聞いてインストールしたはずなのに気づけば何時間も経ってる——そんな経験、ありませんか?
インストーラは数GB。
途中で止まったり、ネットワークエラーが出たり、インストールだけでつまずく人も少なくありません。
インストールが完了しても安心できません。
環境PATHがごちゃごちゃになってPythonのバージョンがどれを指してるのかわからない。
謎のエラーが出ると思ったら、Pythonライブラリのバージョンの競合。
そして極めつけは「Anaconda Navigator」。GUIで操作できるように見えて、裏で何が起きているのか全く見えないのが難点です。
その結果、Pythonを学びたいだけなのに、気がつけば 「環境構築の沼」に沈んでいる のです。
4. じゃあJupyterNotebookはどうなの?
JupyterNotebookコードを書いて・実行して・結果をすぐ確認できるという意味で、直感的でとても使いやすいツールです。
でも実はこのJupyterNotebook、中身はIPythonというPythonライブラリを拡張したIDEです。
つまりJupyterNotebookでやっていることの多くは、ターミナル上でipythonを使えばほぼ同じ体験が得られるのです。
もちろんグラフを表示したりMarkdownでまとめたりといったプレゼン用途にはJupyterNotebookのほうが適しています。
しかし必ずしもJupyterNotebookじゃないと再現できないというわけではありません。
また開発や検証の段階では、GUIに頼らずコードと真正面から向き合うことが、スキルとして後々効いてきます。
JupyterNotebookは「見やすさ」と「手軽さ」に優れたツール。
ただ、それに慣れすぎると「コードをどう構造化するか」「どう管理するか」といった本質的な部分が置き去りになりやすいんです。
5. 現場のリアル:Python開発で求められるもの
Jupyterで作ったノートブック、綺麗にまとまってるし動く。
「これがそのまま現場で使えるのでは?」と思うかもしれません。
……でも、現場ではJupyterはほぼ“プレゼンツール”扱いです。
実際の開発では、コードをファイルに分割し、モジュール化し、テストを書き、Gitで管理して、CI/CDで自動化するのが当たり前の世界です。
Pythonが活躍する現場では、見た目の手軽さよりも、再現性と構造の堅牢さが求められます。
6. 本当に必要なPython開発環境
WindowsとMacの両方を使って開発を経験しましたが、そのうえで所感を述べると
WindowsよりもMacのほうが開発に適しています。
というのも、macOSはUNIXベースのOSなので、iTermやターミナルを開けばすぐにbash/zshが使えるから。
そのまま pyenv virtualenv 3.10 myenv
で仮想環境を作ったりと、Linuxライクな操作ができます。
でもWindowsは事情がちょっと違います。
標準のコマンドプロンプトやPowerShellでは、venvで仮想環境を作ってもactivateがうまく動かなかったり
パスや文字コードでトラブルが起きたりと、「なんでこれ動かないの?」という小さな詰まりが多発します。
他にもいろいろありますが割愛します。。。
そんなときに登場するのが WSL2.0(Windows Subsystem for Linux)。
これを導入すれば、Windows上でUbuntuなどのLinux環境が動き、Macとほぼ同じ感覚で開発環境が構築できるようになります。
特にPythonの仮想環境構築では、WSLを使うことでLinuxと同様のスクリプト・パッケージ管理ができ、さらに
VSCodeとシームレスに連携できるといった恩恵を受けられます。
つまりWindowsでPython開発を快適に行うなら、WSLは実質必須なんです。
WSLが入っていない状態は、例えるなら包丁のないキッチンで料理しようとしているようなものです。
Windows
- 実行環境:WSL2.0(apt)
- エディタ(IDE): VSCode
- 仮想環境管理: pyenv、venv
- コード品質維持: pytestなど
- 世代管理: Git + GitHub
Mac
- 実行環境:そのまま(homebrew)
- エディタ(IDE): VSCode
- 仮想環境管理: pyenv、pyenv-virtualenv
- コード品質維持: pytestなど
- 世代管理: Git + GitHub
7. VS Code拡張機能で開発効率を加速せよ
先ほどからVScodeっていう単語がちょくちょく出てきていますが、気になりますよね?
これはMicroSoft社が提供している公式のエディタツールです。
これのすごいところは専用の拡張機能が充実しているという点です。
では具体的な例をいくつかあげます。
- Japanese Language:VSCodeを日本語化、迷子回避
- Python(+Pylance):補完・型チェックが神レベル
- 変数や関数の定義元などを参照できる、超便利
- GitHub Copilot:AIが先回りしてコードを書いてくれる(一部有料)
- もはや神
- GitHub Copilot Chat:コードの意味や改善案を対話で聞ける、または修正してくれる(一部有料)
- いうまでもなく神
- Remote SSH / WSL:VSCode上でリモートの環境(クラウドやサーバーなど)へアクセスできるようになる
- 必須、これがないとRDPなどをして、その環境に構築しなおさなければならなくなる
環境構築~Windows~
作成中
ここには具体的にどのようにして環境を構築するか、手順を記事にする予定です。
環境構築~Mac~
作成中
ここには具体的にどのようにして環境を構築するか、手順を記事にする予定です。
まとめ
つまるところ「VScode」を使いましょうという話です。
一度使えばわかります、その便利さが。
Pythonを始めるとき、たいていの人が「Anaconda+Jupyter」という黄金ルートに足を踏み入れます。
しかし時としてそれは、遠回りで、足元がぬかるんでいることもあります。
- Pythonを動かすだけなのに、なぜか環境構築で何時間も奪われる
- 「便利そう」に見えるけど、実は“実戦”とはちょっとズレている
本当に必要なのは、軽くて扱いやすく、再現性が高く、保守しやすい開発環境 です。
それを作るのに、AnacondaやJupyterは 「絶対に必要」 なわけではありません。
もし今、Pythonの勉強でつまずいているなら、環境を一度見直してみてください。
たったそれだけで、グッと前に進めることもあります。
Pythonは楽しい言語です。
最初の環境構築で嫌いになってしまうには、あまりにももったいないと私は思っています。