ハンバーガーボタン
ハンバーガーボタン

Pythonの実行環境遷移についてのポエム

LOG

チョット息抜きにタイピング練習でポエムを書く!そんな習慣をつけるとおそらくタイピングは早くなると思います。どうも龍ちゃんです。今回はがっつりポエムを書いてみました。手段が目的にすり替わるそんな瞬間がありませんか?僕は先週そんなことがありました。目的を見失った作業は地獄の扉をたたくみたいなものですんで、気を付けましょう。

Python実行環境の遷移 あっちに行ってこっちに行ってやっとで落ち着きましたっていう小話

ご挨拶

どもども!最近は暑すぎて家から出ることを全力で拒否している龍ちゃんです。家の中で一番熱いところがトイレという一番落ち着く場所なので悲しいです。低温サウナぐらいになっています。

さて、今回はPythonを勉強していく過程で実行環境が遷移していったのでそこについてまとめていきたいと思います。よく考えるとPythonとは長い付き合いです。でも一向に仲良くなった気配がないところがつらいところですね。ほかの子とは仲良くなれた気がするんです…ただこの子だけはずっと喧嘩しています。でもふら~っと書くには便利なんですよね。そんな雑なお話です。

ブログを通り越してほぼポエムなので読み物だと思ってスルーしてくださいね。

Pythonさんとの出会い

実行環境の遷移なので、入社前の話から振り返って書いておきます。Pythonとの出会いは、大学2年生の冬でしたね。ちょうど先輩が機械学習系のことをやっていて、連名で学会に連れて行ってくれたので、ちょこっと手伝おうと思って書き出したのが始まりです。文法も何も知らない人がいきなり学習系のことをやろうとしたので、何もできませんでした。なんなら環境構築からこけましたね。はい!第一の決別です。それからいやになって半年ぐらいPythonという言語が存在しないものとして扱っていました。よく考えると悔しかっただけなんですよね。

次にトライしたのは、そこから半年とちょっと経った後です。Webhookを受け取ってLINE Botを実装したかったのでHerokuとFlaskでデプロイしました。この時も2週間ぐらい悪戦苦闘して結局Herokuの設定ミスという悲しいやり取りをしていました。大学三年生の夏終わりですね。そこから喧嘩しながら大学4年生ぐらいまで、「スクレイピング」とか「データ成型」で遊んで暮らしてました。この時までは「Pure Python」でvenvも使わずに環境を汚しまくっています。

大学院からは機械学習やAIの学科にいたので、がっつり使っていました。この時は仕事では「Google Colab」を使っていました。あとは先輩にvenvの良さについて力説されたので仮想環境というものを初めて学びましたね。そう考えるとまだまだ仲良しではない可能性が大ですね。

とりあえず入社前までをポイっとおいておきます。

大学時代:Pure Python
機械学習入門・Webhookで拾うFlaskアプリ・データ成型とか?  大学院時代:Python venv & Google Colab
研究で使う機械学習・学校の課題などなど・WEB アプリ(Django,Flask)など

ここ数週間の動き

やっとで書きたかったことが書けそうです。なぜPythonの実行環境を作るという話になったのかというと「FastAPI」の勉強をしたかったからです。結論から話すと「venvに行って、Dockerに移管してDevContainerを使う」という遷移になりました。

Python (venv)
FastAPIの基本構文を抑える練習
ディレクトリ構造で動かないということを体験
心が折れそうになったがテストを動かすところまで成功  Docker(Python+Postgres)
DBをいじれるようにDockerでDBを構成しよう。
管理しやすいようにPythonもDocker環境に移管しよう  DevContainer(Python+Postgres)
VSCodeの機能でコンテナを起動できるらしい
開発体験が上がるぞ!と思い泣きながら3日の沼にはまる  環境はまとまっていないと後で困る
VSCodeの補完機能が使えない!!
再起動大切!!!

目的としては「FastAPIの勉強をしたかった」になります。何もわからないからスタートしたため、何も考えずにvenvで構成しました。基本構文を抑えたり、テストのディレクトリ構成をカスタマイズしたりとゆったりと勉強しました。pythonのモジュール化とFastAPIの仕様で喧嘩しました。なんやかんやして構築は終わってひと段落したのでDBを使いたくなりました。

DBの選択肢としては、いろいろあったのですが「postgres」を使うことになりました。環境構築としてDockerで作ることになりまして、泣きながら環境を作っていました。完成はしたのですが、環境が二つに分かれることに疑問を持ちました。ここからが地獄の始まりです。ちゃんとDockerの勉強をするという決意の元と陸始めました。動かないを三日ほど続けて、やっとの思いで「Python+Postgres+Pgadmin」の構成が終了しました。「さぁ開発を始めるぞ!」と意気込んだのは良かったのですが、「Docker環境でマウントすると、VSCodeがPythonのインタープリンターを見つけることができなくて、補完が効かなくなる」という致命的な問題に気付いて絶望しました。

すると「DevContainer」経由でDockerを起動することで、問題解決ができるとの記事を見つけ取り組んだわけです。はい!もうここからは意地です。一昨日ぐらいにやっとで動くようになりました。WSLをリブートしてなくて、設定が反映されていなかった問題を覗けば、順調だったのような気がします。嘘です。めっちゃ失敗しました。もうガチ泣きレベルで失敗しました。

ポエムなので説明なんてものは乗っけません。だってコードを開きたくないので!!

学んだこと

さて!実行環境の構築に苦しめられて学んだことについて書いていきます。

手段が目的になる瞬間には気を付けよう!!!

今回は、「FastAPIの勉強」をすることが目的になっていました。いつの間にか「Docker」の勉強が目的になってしまいました。結局、「FastAPI」の勉強が少なくなってしまいました。やはり目的を見失うことが大きな課題ですね。

実際、学びは多くありました。Dockerfile・docker-compose.ymlの書き方・実行・デバックなどいろんな経験ができました。

というか今回のトピックで言うならば、「Postgres」のみのDocker構築でよかったはずです。というかそういう風に変更します。最小構成で取り組むべきだなと反省です。というわけで明日から、その環境構築に取り組みます。そして爆速で「FastAPI」の勉強を終わらせます。

ん~悲しいです。

ではまた!!!ポエムでした。

以降僕が書いたブログ張ってます。真面目なブログから不真面目なブログまであるので、是非時間つぶしに使ってください。

スマホのトップイメージ
遊びに行くもっと知るレターをもらう職業を選ぶ