2020年の振り返りと2021年に向けて
- # 振り返り
年越しなので、今年を振り返りつつ、来年の目標を書いてく
就活を終えて一区切りって感じだったので、去年は 3 月ごろにに前のブログで書いた
(´-`).。oO(見返してみると、割としっかり書いててビビる
大学
Covid-19
の影響もあって、大学はほぼオンライン授業になった
3 年間のんびり単位を拾ってきてたので、卒業単位が揃いきってなくて授業受けつつ研究進めて…みたいな生活を送ってた
リモート授業は通学時間とか、身支度の時間を他の時間に当てられるのでとても良かった(小並感)
研究
4 年生なので、卒業研究に当てた時間が多かった
研究対象は、ゲーム AI で、モンテカルロ木探索 を使った 3D ゲームの AI を構築してる
Unity も触ったことないし、C#も触ったことなかったので、本筋以外のところで結構苦労した(してる)
新年は、まずは研究ひたすらすることになりそう
サクッと終わらせて開発やりたい。。。
会社立ち上げを手伝った
友人が会社を起こしたので色々手伝った
時間的にもスキル的にも厳しいのでさすがにシステム開発はしなかったけど、要件とかデザイン作って外注したり、社内の IT っぽいとこ全般やらせてもらった
技術活動
去年から本腰をいれて Web 開発をやり始めたけど、全くの初心者だったので、モノリス開発から初めて Web API を作って…みたいなことをしてた気がする
去年はバックエンドをメインに触ってたので、今年は主にフロントを触った
あと、最近はバックエンド → フロントに責務が移りつつあることもあって、僕の関心がフロントに向いたのもある
フロントエンド
去年も SPA のライブラリ(Vue.js, React, Elm とか)を使ってちょっとしたものを作ってみたりはしていたけど、今年はもうちょっと本格的にフロントを触るようになった
『フロントなんもわからん』状態だったので、結構学びは多くて
- webpack 周りを自分で書いて環境作ったり
- CSS をプリプロセッサ通して書いたり
- (JS ではなく) TypeScript を使ったり
するようになった
動けば良いじゃん、からパフォーマンスも意識するようになった
必然的に、create-react-app
とか vue create
でただの SPA を作るより、SSG こそ正義って感じになった
元々は Vue をよく使ってたけど、
辺りが理由で、最近はほぼ React を使うようになった
同様の立ち位置のフレームワークとして、Vue の Nuxt.js でも SSG はできるけど、やっぱり SSR がメインの印象が強いし、SSR をしたい場面は正直なかなか見つからない
SEO の問題はもう解消されている(参考: SPA and SEO: Google (Googlebot) properly renders Single Page Application and execute Ajax calls | by Lucamug | Medium) し、初回レンダリングが遅い問題はむしろ SSG のが速いから、あえて Node.js ランタイムを用意する必要がある SSR でってなかなかならない。
一応、
- ビルドするコンテンツが多すぎて SSG だと時間がかかりすぎる
- マイクロサービスアーキテクチャで、複数の API を叩くからまとめたりするのに BFF 層が欲しい
みたいなユースケースは想像できるけど、いかんせん趣味規模の開発じゃあんまり。
とりあえずしばらくは個人開発でも Next.js で SSG して、更新頻度の高い動的なコンテンツは API 叩くなりって形になりそう
バックエンド
今年は、バックエンドはそんなに触ってない
TypeScript を使った体験が良すぎて、漸進的型付け最高かよってなって、Python でも mypy を使うことが多くなった
mypy を使って、Python でも型チェックをする | きむそん.dev
なんだけど、
- 型が間違ってたり
- サポートされてなかったり
- そもそも型付けのしようがなかったり
で結局ツラミのが多かった気がする
Django は比較的 mypy の型周りがサポートされてる方だと思うけど、それでもやっぱりしんどかった(もちろんないよりマシではあるんだけど)
そんなこんなで、バックエンドも TS でやりたいなーと思うようになってきてる
とはいえ、やっぱり Django のパワーはやっぱり強いので個人開発だとその恩恵に預かりたかったり。。難しい。
あとは、フロントで TS を使うようになったので、フロントに型付けを提供しようみたいなところに関心が向いた
Django REST framework でシリアライザから TypeScript 型定義を自動生成する | きむそん.dev
開発体験はかなり良かった(こなみ)
OSS に初コミットした
VSCode の拡張に求める機能がなくて、プルリクを送って採用されたりした
なんてことない 1 行コミットだけど、OSS への初コミットだったので嬉しかった
開発したもの
上に書いたけど、会社立ち上げを手伝ったので、伴って必要なものを作った
- コーポレートサイト (Vue.js + プリレンダリング)
- 企業ブログ (Gatsby + Contentful)
- GAS で業務ツール・自動化
辺り
GAS はサーバー代いらずでそれっぽいもの作れて楽しかった
趣味開発では、
- 技術ブログ (いま書いてるやつ, Gatsby)
- ウェブ通話系のサービス (開発中, Django + Svelte)
- DeepL 翻訳をラップした API (ローカルで使うやつ、FastAPI + selenium)
- …etc
を作ってたりする
SkyWay 使うと、WebRTC が簡単に実装できてとても良きだった
あと、部分的に使うだけで React とか Vue のバンドル読ませるのは気が引けたから Svelte を使ってみたけど、結構良かった。こういう用途では積極的に使ってく気がする
来年の抱負
とりあえず、卒論やばいなので 2 月までは卒論に集中する
キャリアを意識する
基本的には、技術者として価値あるものを世に出していけたらそれでいいかなーと思っているけど、これでご飯を食べていく以上、どういうスキルが価値があって、どうやって生き残っていくみたいなことを意識していかないとなーと思ってる
現在なら NoCode でもプロダクトは作れるし、コーディングするにしても IDE や FW のパワーが強くなってきてるので、とりあえず作ること自体はさして難しくなくなってきてる → 単価が落ちる
じゃあ、なにが大事なのかって話だけど、実際にコードを書いて作る部分というよりも
- 規模が大きくなっても保守しやすいシステム設計
- ビジネス的なゴールをシステム的解決策に落とし込む力
- セキュリティ
- パフォーマンス・チューニングができる
辺りの能力が大事になるはず
でまあ、キャリア戦略としては、ある程度固定のメンバーと開発する環境に身を置くなら、どこか圧倒的に得意みたいな分野を持つべきな気がするけど、新卒なのでまずはどれも最低限できるようになるところを目標にしたい
この辺は技術書でインプットすることはできても、実際にアウトプットする機会は学生だとなかなかなかったので、インプットとアウトプットのバランスをとりつつ身につけていきたい
個人開発
ビジネスレイヤーの能力も大事だと思っていて、個人開発だとその辺も自分でできるからやっていきたい
ただ、広告が打てない(カネがない)から、ネットワーク効果に依存しないサービスにしたいけど、それだとそもそも Web との相性が悪い気がする
いっそ、ネイティブとか作るのもありかも。幸い React Native なら学習コストもそんなかからないと思うし
あとは、個人開発だと思いついたときにとりあえず作ってみながらってことになりがちで、結果設計ひどくてあとから泣きたくなるみたいなことが結構あったから、ある程度ちゃんと作るって決めたらトップダウンで考えながら作る癖をつけたい
触るぞー
個人開発(というか勉強)だと、好きに技術触れるから、弱いところを触りたい
- CDN: ほぼデフォルトでしか使ったことない
- GraphQL: Gatsby でクライアントとして使うくらいだった
- インフラ周り: VPS 借りてきてアクセスできるようにはできるで!くらい
- k8s とか触りたいけど、高いよ…
- DB: ORM 通して触ってばかりなので、SQL 直で書いたことがほぼない
この辺触りたいなー
結構長くなっちゃった
あと書くのも疲れた
とにかく来年も気楽に頑張ろう