【メモ】2022年で触れた技術を振り返る
はじめに
今回の記事では、今年一年を振り返って学習・実務で触った経験がある言語・フレームワークをまとめる。本記事を通して、読者が未知の技術に挑戦したり、私に仕事を依頼したりする人が少しでもいれば幸いである。
プログラミング言語
Python
今年も昨年と同様にPythonを中心に学習・開発を進めていた。私がプログラミング学習を開始して以来最も好きなプログラミング言語である。最大の魅力は学習コストの低さ。文法が非常にシンプルで学びやすい。
詳細は後述するものの、PythonではDjangoやFastAPIを中心にAPIを設計・開発を進めた。来年だけではなく、以後10年はPythonを中心にWeb開発を展開していく予定である。
JavaScript
フロントエンドの開発でお世話になった。基本文法や基礎知識はmdn web docsやYouTubeで確認し、Reactを筆頭としたフレームワークの学習・開発に着手した。(詳細は「フレームワーク」の章で詳細に説明する)
TypeScript
JavaScriptの上位互換であるプログラミング言語。今春にその存在を知って感動した。型定義ができるJavaScriptの存在をしれたのは非常に良い経験になった。YouTubeやO'Reillyの技術書に触れて知識を深め、TypeScriptで簡単なTodoアプリケーションを開発できるようになった。個人的には、Pythonの次に学習してよかったプログラミング言語である。
Dart
Googleが開発したモバイルフレームワークFlutterの開発言語。言語の構造はJavaScriptとC言語を足して2で割ったようなもの。JavaScriptの前提知識があったので文法の習得にはそこまで苦労しなかった。しかし、文法上の規則に文末に;
をつけなければならないことがあるので、JavaScriptで文末に;
をつけないことが癖になっている私にとっては苦労した部分だった。
今年Flutterがプログラマー間で非常に話題になっていたので、興味本位で試しに触ってみた。PythonやTypeScriptよりも優先度は低いものの、今後のWeb開発で積極的に使っていきたい。
フレームワーク
Django
2年前から非常にお世話になっているWebフレームワーク。最大の魅力はWebアプリケーション開発に必要な雛形をコマンド一つで呼び出せることにある。Django REST Framework(DRF)でREST APIの開発を進めていた。Django REST Frameworkを使った認証機能の実装や簡単なWeb APIの設計をメインに学習し開発を進めた。
PythonでWeb開発を進める際、来年も今年と同様にメインとして活用していきたい。とは言っても、今後の方針はAPIの設計・開発に積極的に取り組んでいきたいのでDRFを使う機会が増えるかもしれない。
FastAPI
今年着手したWebフレームワーク。最大の魅力は最低限の機能から生まれる拡張性の高さ。公式ドキュメントが非常に充実しており、Pythonの基礎知識で難なく学習・開発を進められた。DRFとは違って、APIに取り付ける機能を自由自在にカスタマイズできる。コマンド一つで簡易的にWebサーバを作れるのが魅力。
Djangoと同様に、今後Web開発でメインとして活用していきたい。
NestJS
TypeScriptで開発されたNode.jsのフレームワーク。最大の特徴は開発に必要な雛形をコマンド一つでインストールできること。それだけではなく、TypeScriptでバックエンドを開発できることに大きな魅力を感じた。個人的に魅力のあるフレームワークだが、2022年12月時点では、開発されてから日が浅いのか日本語の情報が非常に少ない。それゆえ、「NestJSの強化書」のベータ版を今年6月中旬にリリース。英語が苦手な人でもNestJSの学習ができるような環境づくりに貢献した。
個人的には、DjangoとFastAPIを除いて最も学習してよかったWebフレームワーク。後述するが、今年は卒論と同時進行で開発を進めていたのでNestJSの開発や「NestJSの強化書」の執筆に時間を割けられなかった。来年こそ注力して学習を進めていきたい。
React
世界で最も使用されているJavaScriptのライブラリ。学習コストの低さと公式ドキュメントの質の高さを理由に学習を進めた。JavaScriptがWeb開発で果たしている機能・役割をReactを通して学ぶことができた。
Vue
Reactと双撃を成すJavaScriptのライブラリ。こちらは昨年から触っているものの、今年はNestJSやReactに時間を割いていたのであまり学習できなかった。
余談だが、私はVueからフロントエンドの学習を始めている。
NuxtJS
個人的に最も触ってよかったフロントエンドのフレームワーク。今年にリリースされたNuxt3のおかげで、TypeScriptのフロントエンド開発の奥深さを学ぶことができた。主な魅力はデフォルトでTypeScriptを採用していることと、script setup
構文の2つである。
将来的にフロントエンド開発で生計を立てることを検討している人に、絶対にオススメするフレームワーク。
Next.js
Reactのフレームワーク。はじめての業務委託で触った。最初は多少戸惑ったものの、公式ドキュメントが洗練されていたので難なく触ることができた。NuxtJSと同様に、今後のフロントエンド開発で最も優先して触りたいフレームワーク。
Angular
今年の春頃に触ったTypeScriptフレームワーク。公式のチュートリアルの内容しか触れていないので経験は非常に浅い。他のTypeScriptフレームワークと比較して学習・開発に割ける時間が少なかった。個人的には、今後の開発で関わることはほとんどない。
Angularはフルスタックフレームワークを自称しているので、Webアプリケーション開発に必要な機能をデフォルトで揃えているのが魅力である。しかし、それゆえに機能を最小限にできず、柔軟性が高くないのが最大の欠点である。
Flutter
Googleが開発したモバイルフレームワーク。興味本位で試しに触ってみた。主にYouTubeや公式ドキュメントで知識を深めた。AndroidとiOSに両方とも対応しているアプリケーションを一つの言語で開発でき、かつ情報量が非常に豊富なのが魅力だ。Flutterで一番苦労したポイントはUI設計。Googleの画像検索やPinterestを駆使してなんとかUIを制作できた。
個人的には今後の開発ではあまり携わらない可能性が高い。
データベース
SQLite
DjangoやFastAPI、NestJSの開発で最もお世話になっていたデータベース。非常に軽量で、かつ環境構築いらずで簡単にアプリケーションのデータベースを開発できるのが最大の魅力。MySQLの環境構築ができないとき非常にお世話になった。
MySQL
実務で最も携わったデータベース。個人的には知識や使い方などが多少抜けている部分があるので、年末年始を使って学習を進めていきたい。SQLを使うデータベースの中では、私の得意分野にしたいデータベースの一つ。
MongoDB
2022年に最も触って良かったデータベース。SQLを使わないNoSQLの特徴やその面白さをザックリ理解できた。公式ドキュメントが非常に丁寧で読みやすく、かつ環境構築が簡単で学習を進められた。NoSQLの面白さや奥深さを学ぶことができた。
来年ではより多くの人にMongoDBの魅力や良さを伝えられるように、データベースに関する情報で積極的に発信していきたい。
今後の開発ではSQLiteやMySQL、MongoDBを実務で扱えるレベルに到達しておきたい。
プラットフォーム・サービス
上述の技術・サービスの中でも、本記事はGitHubとFigma、VSCodeについて詳細に言及する。
GitHub
実務だけではなく、学習・開発に必要な情報収集で最も重宝した。
Figma
Twitterのツイートで使う情報発信だけではなく、アーキテクチャの図やLTで使うスライドを作成するのに非常に重宝した。
VSCode
プログラミング学習や実務だけではなく、Zenn記事の執筆でも活躍した。今年中に自分のVSCodeにインストールされている拡張機能を見直した。そこで、Zenn記事にてVSCode】おすすめの拡張機能 21選でおすすめのVSCodeの拡張機能を紹介した。
制作物
今年は卒論の関係で執筆に時間を費やすことができなかったので、年末年始を利用してドキュメントの内容を充実させる。
OSSへの貢献
「サバイバルTypeScript」の公式GitHubで、記事の形式や問題点に関するissueを提示。直接執筆に携わることはなかったものの、良質なドキュメントの執筆に貢献する活動を行った。
OSSへの貢献をやって一番良かったことは、プログラマー同士の会話や実務で扱う内容についての詳細な情報にふれることができたこと。実務経験が1年半程度とまだ浅い自分にとっては非常に有意義なものだった。(あくまで「サバイバルTypeScript」の場合)
おわりに
2022年は卒論と両立しながらプログラミング学習・開発を進めなければならなかった。そのため、技術書の執筆に時間を費やせないなど、Web開発に取り組む時間を確保できなかった。
しかし、Twitterでプログラミング・エンジニアリングに関連する情報を毎日発信できたのは大きな収穫である。毎日情報発信を継続することで、自分の興味ある技術や得意なことを深掘りできた。
来年は自分の得意とするPythonやTypeScriptを中心に学習を進めて、企業案件を取って開発を進めていきたいと考える。
参考サイト
記事の形式や内容に関しては、一部以下の記事を参照。
なお、使用したアイコンに関しては以下を参照。
Discussion