Webサイト制作の個人史の続きです。
一言で表現するなら、perlからpythonに移行してdjangoを触り、それからlaravelをメインにしたという話です。
1.python
Webサイト制作の個人史にも書きましたが、Automate the Boring Stuff with Pythonを読んで感動しました。
ちょうどそれを読んだ頃には小さい会社で事務全般の仕事をしていたため、退屈な業務をpythonで自動化しました。
別の人がexcelで作ったシフト表から、親会社に提出する勤怠フォーマットに手作業で入力するのが苦痛でなりませんでした。
入職してすぐにVBAである程度楽にしましたが、思い通りに動かすためにはpythonのほうがやりやすかったです。最終的にはほぼ完全に自動化できました。
その他、既存のexcelフォーマットから欲しいデータ形式にするためのグルーコードもpythonでたくさん書きました。
プライベートでも、スプレッドシートからtexファイルへの変換など、これまでperlでしていたことをpythonでやるようになりました。
卒論で使うためにと頼まれたtwitterからのデータ取得や、趣味で日課にしているjstageの新着論文取得も、pythonでしています。
Automate the Boring Stuff with Pythonを読んでから、オライリーの『入門 Python 3』を読み、Python Data Science Handbook | Python Data Science Handbookでデータ処理や機械学習のさわりを学びました。
余裕ができたら機械学習をもっと触ってみたいです。
2.django
pythonを使うのであればWebフレームワークとしてdjangoにたどり着くのは自然な流れでしょう。
はじめに · HonKitとDjango ドキュメント目次 | Django ドキュメント | Djangoを見ながらプライベートのローカル環境で試行錯誤し、『現場で使える Django の教科書』やDjango for Beginners: Build websites with Python and Djangoを読んで少しずつ理解を進めました。
フォルダ構成まで自動で作ってくれるのは楽である反面、どこがどうなって動いているかわからず、気持ち悪くも感じました。
前述の職場でdjangoを活用しました。
特別な業務をした際に時間や内容などを各職員がexcelファイルに入力していたのですが、これが使いづらく、しょっちゅうデータが壊され、直そうとしても複雑に関数が参照されるなどしていたので苦労しました。
djangoを使えばブラウザからデータを入力できるのでパソコンに不慣れな職員でも大丈夫だろうと判断しました。ブラウザを使うといっても、機密資料を扱っていたため、インターネットには接続せず、シェルスクリプトをダブルクリックするとローカルサーバが立ち上がるようにしていました。
また、データはsqliteでusbメモリに保存して鍵のかかるロッカーに保存するようにしました。
3.laravel
PSGI/Plackで作りかけていたウェブサービスの内容を、経営上の方針転換により、大きく作り変えることになりました。
また、将来的に複数人で開発するつもりがあるなら、PSGI/Plackよりもlaravelがよいと言われました。
そこで心機一転してlaravelで一から作りました。
振り返ると、この判断は正しかったです。
PSGI/Plackでセッション管理などに苦労したログイン周りの実装が、ソーシャルログインも含めて、laravelではとても簡単にできました。
Laravel – The PHP Framework For Web Artisansの公式ドキュメントを熟読するに限りますね。
わからないことがあれば検索して何人かの記述を読めばだいたいわかります。
Laravel: Up & Running: A Framework for Building Modern PHP Appsも読みました。
お約束としてfat controllerに悩まされることになり、Eric EvansのDomain-Driven Design: Tackling Complexity in the Heart of Softwareを読んで、自分でもいろいろ考えながら、クリーンアーキテクチャも意識するようになりました。
javascript部分は、jqueryを使うとこんなに簡単にできるのかと感心して使っていたら、jqueryはもう古く、vue.jsのほうがよいという記述を見かけました。
そこで、JavaScript Primer – 迷わないための入門書 #jsprimerを読んでjavascriptの知識をアップデートしてから、Vue.jsを読み、自分で手を動かして、ようやく大まかな動きが理解できました。
laravelのbladeで書ける部分はそれで書き、javascriptで動かす必要のあるところだけvue.jsを使うようにしました。そうするとデータの受け渡しが必要になり、vuexも必然的に導入することになりました。
vue.jsを使うとlaravelに標準搭載されているduskではテストするのが難しくなり、cypressを導入しました。
4.まとめ
これでようやくほぼ最新の情勢についていけるようになったのではないかと思います。
あとはサードパーティのAPIをどこまで使いこなせるかです。
公式ドキュメントを熟読し、エラーが発生したらきちんろメッセージやログを読むという基本の大切さを痛感しました。