今年の2月に出向を辞めて3月以降は主にwebサイト制作やお勉強をしていました。今回は作ったサイトの紹介と、OSSを使った勉強方法を簡単に紹介します。
作ったサイト
- 3Dモデルビュアーサイト(HentaiPose)
- 予約サイト(yoyaku)
- FastAPI+vue.js v.3のサンプルサイト(fastapi-sample)
1つ目はDjangoとThree.jsを使った3Dモデルビュアーサイトです。12月後半から4月ごろまで作っていました。その後は表示用の3Dモデルを作成してパラメーターの微調整や、デザインを組み込んでいました。
2つ目は2021年ごろ作ったDjangoで作ったオリジナルの予約サイトを改良していました。制作時期は7月下旬〜8月下旬の約1ヶ月です。
当時は制作期間が短いことや、Djangoの知識が浅かったこともありディレクトリ構造から見直したり、フォームやビューの処理で共通化できるところは共通化したり、テストを修正&追加しました。ダッシュボードには無料のテンプレートを使っています。
3つ目はFastAPIの勉強用に作ったサンプルサイトです。webAPIの需要が高くなっていることや今後非同期サーバーの需要が高くなりそうだと思って調べていたところFast APIが一番適していると思い制作しました。制作期間はFastAPIの勉強期間も含めて1ヶ月です。
Vue.js v3は1,2年前に勉強しましたがほぼ忘れていたため1から勉強し直しました。
プログラミングの勉強法
今年の6月〜7月はGitHubで公開されているDjangoで作られたプロジェクトのコード(Misago, Spirit, taiga-back, django-oscar)を読んで勉強していました。
商用レベルの大規模なコードもあるため設計方法の参考になります。
Spiritは個人開発の掲示板サイトですが小規模なので関数内の処理も理解しやすくおすすめです。
一方、taiga-backはredmineの様なプロジェクト管理サイトで大規模です。用語が多く、専門的な知識も必要なためコードを読みながら細かな仕様まで把握するのは無謀だと思いました。
そのため関数内の細かな処理は読み飛ばして関数名から処理を想像するに留めたり、ディレクトリ構造や、ファイル名、クラス設計、ルーティングの仕組みに限定してコードを読みましましたがそれだけでも非常に参考になりました。
私が初心者の頃はコードを読んでも理解できなかったり、関数の局所的なところしか理解できずクラス間の連携まで意識しながら読めなかったことがあります。
経験を積むごとにプロジェクトで携わってきたコードは少しずつ読める様になりましたが、
「今の実力は他のプロジェクトでも通用するのか?」
という不安は拭いきれませんでした。
今回世界中のプログラマーが知恵を絞って作り上げたOSSのリーディングを通して世界レベルの設計方法やコーディング方法、テスト設計方法を学べたり、自分の実力を知ることができたので上記の不安はかなり低減しました。
人気のあるOSSは質が高く、中〜大規模なので学習素材としては優れています。しかも無料なので良質なコードを書きたいプログラマーを目指している人にはおすすめです。