potato4dとうなすけが2020年に使用した技術をそれぞれフロントエンドエンジニアの目線とサーバーサイドエンジニアの目線から書いてくれていたので、私も感化されて記述していこうと思う。d.potato4d.me
私自身は2020年、本業としてFringe81(2020年12月で退職)でサーバーサイドをメインで触り、業務委託としてBlack Inc.でフロントエンドに近い開発をしていた。(あと数社お手伝い)
どちらかというとサーバーとフロント、両方の立場から多角的な意見を言えるような立ち位置で仕事を行っていた年になる。
また本業においては情報処理安全確保支援士として活動を始めた年になった。社内のセキュリティ向上を目標としていた。
今回は仕事で触れていた技術について、できる限りまとめていく。
---
言語
TypeScript
フロントエンドのコードを書く上でもはや欠かせない言語である。OOPartsの開発でもそうだが、個人開発、手元でちょっとしたコードを動かしたい時も大変お世話になった。
ts-node でそのまま簡単にTypeScriptを手元で実行できることを知ってから、簡単なスクリプトはこればっかりで書いている。
Scala
本業の広告のサーバーサイドで一番書いていたコード。学生時代(4年前くらい)に初めて触った言語で、久しく書いていなかったが今年はガッツリ書いた。すごく書きやすい言語で好き。
Elm
本業で異動する前にガッツリ書いていた。JavaScriptならこのライブラリがあるのになぁって思いながら自前実装してた印象がある。関数型の言語としてはだいぶ仕上がっているが、開発速度が出るか?と言われれば個人的には疑問ではある。
GraphQL
Elmで書かれたフロントとScalaで書かれたサーバー間で利用。Incrementsで働いていた時にGraphQLを触っていたので、久々であったが相変わらず使いやすい。
データ構造の表現のしやすさや直感的であること、サーバーサイドの人とのやりとりが非常にやりやすくなるのが良いポイントであった。
Ruby
業務委託で受け持っているメディアのサーバーサイドで利用。新規で採用することはなくなってしまったかなぁって印象。けどRuby3.0は気になっているので近々触る予定。
PHP
今年から個人のメディアはWordPressにしようと決めてからプラグインやテーマを編集するために書いた。ほぼ殴り書き。
Go
ツールの一部で採用。他の人が作ったツールの保守もした。後、ISUCONもGoでチャレンジした。個人的に2021年、かなり使用率が上がる言語だと思っている。
Python
Notionの非公式APIのラッパーが一番まともだったので使用。あと友人が仕事でMayaを使っているのだが、それのせいでPython2系を触っていた時もあった。あとDjangoの検証とかしたくらい。
---
フレームワーク
Next.js
OOPartsの管理画面開発でガッツリ使用。今年の後半かなり盛り上がった印象。今後もお世話になるだろう。
React.js
OOPartsの本体は「Create React App」から作られている。Next.js移行にだいぶ手間取っている。苦しい。
Play Framework
本業の広告配信や計測、管理画面のAPIは全部これ。特に際立ったことはない。普通に開発していた。
Ruby on Rails
ほぼ保守のみ。5系から6系にあげるのをサボってしまっている。ORMが優秀でサーバーの開発なら、まだ私にとっては一番早く実装できるフレームワークかもしれない。
WordPress
メディア系の案件で、開発に時間がかけられない時に選択肢としてあげていた。個人ブログもWordPressを使っている。欲しいプラグインがすでに揃っているのがやっぱり最強。大変お世話になっている。
---
ミドルウェア
MySQL
RDB使う場合はほぼこれを採用。理由は一番使い方を覚えているから。整数型のカラムに文字列を渡すと0が返ってくるのはちょっとビックリした。
PostgreSQL
herokuのデフォルトDBがPostgreSQLであるため利用。また本業の広告レポートDBもPostgreSQLであったため利用。使い方は完全にはマスターできていない。
NGINX
本業で利用。ログをゴニョゴニョしたりしてた。あとISUCONでも使った。
Docker
0からDockerfileやdocker-compose.ymlを書くことは少なくなったが、サーバサイドは大体(nodejs以外)Dockerで包まれるようになったと思っている。
Terraform
0から書いたことはないが、レビューや追記はちょいちょいしていた。AWS,GCP,Azure全てのTerraformを一応見ていた。
Kubernetes
本業の異動前に使用していた。0からは書いたことない。
---
BaaS / PaaS
Firebase
OOPartsのユーザーに近い部分のバックエンドと管理画面に採用されている。特にAuthencitaionの恩恵は凄まじい。自前実装で認証機構を書かなくなるのはだいぶ実装コストの面やセキュリティリスクの面でも助かる。
OOPartsはクラウドゲーミング サービスなので、Firebaseだけで完結することはできないのだが、世の中の大半のサービスはFirebaseである程度事足りるのでは?と思ってしまうほど良いプロダクトだと思う。
Firebaseで触ってみたサービス全ては多くなるので割愛。
Heroku
Ruby on Railsのデプロイ先に利用。 `git push heroku master` でデプロイが終わるインパクトは今年も大変お世話になった。
Netlify
OOPartsのフロントエンドステージング環境的なのに利用。
ブランチプレビューがかなり便利。転送速度は厳しいけど。。。
Vercel
NetlifyだとBasic認証を間に刺すのが面倒だったので使った。Next.jsフレンドリーなので来年はもっと使うことになると思う。
---
インフラ/CDN
AWS
本業とOOPartsともにAWSを使った。使ったサービス全て紹介するのは割愛するが、Fargate/ECSはかなり体験が良い。コンテナをそのままデプロイして動かせるのが良い。
DynamoDBも本業副業ともに大変お世話になった。JSとScalaの標準ライブラリが超絶使いづらかった印象しかないが。
あとストレージは個人でも仕事でも大体S3。もはやデファクト感が出ている。
GCP
OOPartsの開発で使った。GCPのPub/Subを初めて使った年であったが、なかなか体験よかった。
あとCloud Run。仕事でも大変お世話になったし、自前のGoで書いたボットとかを動かすのに利用。AWSのFargateを初めて触った時の驚きと似ている。
BQでゴニョゴニョ集計してた時期もあった。特にGoogle AnalyticsのデータをBQで弄るのは初見だとかなり険しかった。
CloudFlare
思考停止でCDNを刺したい時に利用。すごく分かりやすくて愛用している。無料でも全然戦える。
---
CI/CD
CircleCI
OOPartsのFirebaseデプロイで使っている。正直GitHub Actionsに移行したい。
Azure Pipelines
本業の広告サーバデプロイで使用していた時期があった。個人的には結構使いやすい印象がある。
GitHub Actions
OOPartsの管理画面デプロイで使った。あとは個人のやつとか。
---
○aaS
Stripe
OOPartsのユーザー決済とタイトル提供側の利用料支払いに使用。サーバーサイドの開発は辛そうなオーラ出てたが、フロントエンド からはとても簡単に使用できた印象。
Algolia
OOPartsのタイトル検索に利用。爆速。
imgIX
これすごい。OOPartsのOGP自動生成や画像配信に利用している。
---
エディタ
JetBrains系エディタ
開発する時の95%はこれ。というか抜け出せない。まさにIDEを体現している。
Visual Studio Code
JetBrains系エディタの弱点は起動までに時間がかかることや、単発ファイルを開く場合。そういうケースになった場合はVSCodeを利用している。
Vim
正直雰囲気で使っている。
---
その他
WebRTC
SaaSを使うケースが多かったが、個別チューニングが必要になるケースが多かったので仕組みからキャッチアップした。これを自前実装するってなると。。。って感じではある。
Material-UI
デザインが苦手なので、思考停止で使ってた時期がある。なのでデザインの勉強をします。
Bootstrap
本業の管理画面で利用していた時期がある。機能モリモリな印象。ちょっとやりすぎ感はある。
CSS
素のCSSというかSassを書いていたケースは結構あった。AMP対応のせいで。きつい。
PWA
OOPartsのプレイ体験として必須だったためにキャッチアップしていた。今後もかなり注目の話題である。
AMP
頑張ってる。個人的にJSよりCSSの制限がきつい。
Google Analytics
めっちゃ使う。見ない日ない。
Adobe Photoshop Lightroom
風景写真撮影が趣味なので。大変お世話になりました。
OBS
うなすけさんも触れてたけど、今後の必須スキルになりそう。というかエンジニアだから配信得意そうじゃね?って文脈で絶対頼られる時期が来る(来た)ので、できるできないか変わらずキャッチアップしておくべき項目に挙がると感じている。
DDD
ドメイン駆動設計はだいぶ叩き込んだ。自分の中の大事な設計思想の一つになっている。
---
おわりに
正直ライブラリや細かな技術を挙げ始めるとキリがないと思ったので省略した部分も多い。(というか覚えていない)しかし、新しい技術に触れるという目線ではあまりできなかった年かもしれない。
こうやって1年を振り返ってみるのはとても良いことであると思っている。改めてこの記事を書いてみて楽しかった。来年はもっと面白い年にする。