フロイドの狂気日記

時は流れ、曲も終わった。もっと何か言えたのに。

PR

おじさんプログラマの学習曲線

PR

以前から自宅で練習がてら作りたいwebアプリがあって、慣れたやり方で作った後、vue.jsを導入してみるとか、pythonで作り直してみるとかそういうことをしようと画策していた。それでメモがてらevernoteに構成書いていって、そろそろやるかと思って自宅のMacを取り出す。

 

ひとまず「いつものスタイル」みたいなのを用意してからじゃないと、新しいことを学び始めると心が折れると思ったので、MacでできるLravel+Dockerらくらくセットみたいなのをネットから拾ってきたのよ。こういうのは本当にらくらくで、「最初のページ」をブラウザで開くまではらくらくそのものなわけ。

 

さてブラウザでapache確認したし、まずはDBから取り掛かるかと、シコシコとmigration(コマンド一発でDBができる)を書いた。あらかた書けたのでコマンドオンってするとエラーで通らない。色々調べて2時間ぐらい経って解決しなくてめんどくさくなった。それでソースコードをとりあえずgithubに上げて、環境を全部消して、らくらくセットを別の人が作ったものに取り替える。どうもdockerの設定周りの話のようだし、Qiitaに落ちているらくらくセットをまた探す。今度はnginx + mysqlタイプでセットすると「最初のページ」まではらくらくなわけ。でgitからソース落としてきて、migrationコマンド打つと同じように通らない。うんざりしてその日はやーめた、となる。

 

次の日冷静に、僕はmigrationをしたいのではなく、webアプリ実装にフォーカスしたいんだよ、と適当に理由つけて、migrationファイルを通常のCREATE,INSERT SQLに置き換える。んで、Dockerから直接テーブル作ってサンプルデータまで突っ込むところまでやれた、と。これでwebアプリにフォーカスできるぜ、とか思ってとりあえずデータ一覧だけシンプルに出そうと思うと、画面にエラーができてそもそもDBに接続できません、みたいな。ここで原因を調べるのに2-3時間かけて調べて、Dockerのyamlファイルの設定とLaravelの設定ファイル内の必要なコンスト定義の中身とかをちゃんと一致させないと至るところでエラーが出るんだろう、というところまでなんとなくわかった。

 

んで、おじさんはねえ、Dockerを使うのはついでであって別に必須じゃあない、こういうところで悩みたいとは思っていないんだよ、と自分に言い聞かせて、Dockerは諦めてMacUnixだし、そもそも昔Mac内をそのままサーバーとして使って開発したことがあるじゃないか、4-5年前だけど、と思い出して、でbrewコマンドとかを調べだす。

 

そうすると4-5年前の記憶と最新OSXの開発環境つくりがちょっと違ってる気がしてきて、まずapacheはデフォルトで入っている。まあそれはいいや、とりあえずQiita先生の言う通りに、confファイルとか設定してgitからソースを落としてくると、今度はpermissionエラーで画面が映らない。色々と設定変えてもどうにもならなくて、落ち着け、こういうときはhello worldだ、と思ってlaravelは忘れて一番シンプルなページを出すとちゃんと出る。その場所をlaravelのソースに置き換えるとエラー。

 

草生える、とか言いながら実は全然笑えなくて調べると、htaccess周りをいじれとか、ソースの所有権をapacheに変えろとか色々言ってくるんだけど、どれもこれも全然だめで、過去にも環境設定でこんなに戸惑ったことねーんだけど、とかイライラし始めて、舌打ちだけ増えて、bootcampしているwindowsで試すか?前回案件でwindowsでdocker使う資料はまとめているし、いやMacでやるべき、とか堂々巡りして、いらない何も捨ててしまおうとなって、Laravel公式のビルトインサーバーでなんとかしようと、php artisan serveコマンドでアパッチ立ち上げるとうまく行った。それ以後もMacmysql権限でどうたらこうたらでbrew uninstallするわ、設定ファイルが削除しきれてないから同じエラーでるわ、envファイルの設定がどうのこうので夕方までかかって、やっとDB取得したデータがペラ一枚のviewに反映されて、もうやめよっかこの商売となる。

 

確かに何度もやってきたんですよ。こういう準備。なんでこうもうまく行かないかというと、このあたりの環境ってクライアントがうまいこと準備していたところなんですね。それぞれの会社でやり方が違って、クライアントもその辺はPMごとにスタイルがあって、飛び入りのフリーランスにいじられたくない部分だから、おめえこれでやれやってドンと渡されて、僕はちょろっと設定ファイルいじってgit cloneして開発始めるみたいな。それで久々自分でやるとハマるハマる。

 

おじさんの学習曲線ってようは心電図なんですわ。右肩上がりで登ったと思ったら、ゼロ付近まで落ちて、また上げて。

 

根本的に何が駄目かって、stackoverflowとかQiita頼みなんですわな。Docker使うぞ、ってなったらコピペのyamlファイルでdocker-composeだけするみたいなのは本当に駄目プログラマのやることで、ちゃんとyamlファイル見るとコンテナ名とかにQiita記事作者の個性が出てたりする。そういうのってつまり作者のローカルディレクトリ名とか、workspace名とかport番号とかが反映されていて、当然そういうところも自分の環境にきちっと合わせないと、至るところで動かなくなる。dockerがprojectフォルダ指定してんのに、実際の場所はworkspaceとかいう名前になってたら、そりゃあ反映されねえでしょ。ようするにQiitaとか実はほとんど役に立たなくて、そこに記事があるから楽そうに見えて面倒くささも相まって、コピペしようとしてしまうけれど、マニュアルを読んだほうがトータルでは近道になるという。罠でしょ。

 

なのでDocker使うって思ったら、Qiitaとかブロックリストに入れてyamlファイルの書き方勉強するのが脳みそのつまったエンジニアだし、個人開発だからローカルはなんでもいいんです、って思ったら一番楽な方法に舵を切るべき。MAMPとかでいいじゃん。たかだが開発環境に妥協しながら3日かかるって、エンジニア辞めて農家に弟子入りする理由になるよね。

 

それにおじさんになると、体も言う事きかなくなるのに、パソコンまで思い通りにならないとなると、一つの停止線が来るたびに心が折れて睡眠取らないとPC起動もしたくなくなるんですよ。世の中デーテサイエンティストだ、k8sだ、テンソーフローだって言って高度で数学的知識まで要望されるようになっているのに、未だに環境開発でつまづくって端的に言って棺桶に入っているプログラマじゃないですか。

 

vueだreactだとか触る前にゴリゴリ精神削られる。まあ開発環境って一度作るとあんまり触らなくなるから、久々にやると何故かハマりまくるってのはよくある話とはいえ、もういいや、業務プログラマだし、誰か殺してくれねえかな。

 

そろそろ働かないと現実的に死ぬので営業に連絡とったら、遠い場所か、多重構造になって安い単価の仕事送ってきて、やっぱ辛えわ。朝が苦手だからちょっと単価安いけどlaravel使うし近場のに応募しようかな。そりゃあ辛えでしょ。馬鹿じゃないの、もうどうでもいい。

 

自分勝手で悪いんだけどさ!これが俺の物語だ!