Webアプリを開発する際に必要な技術選定のポイント
はじめに
今回の記事では、私が実践しているWebアプリを開発するための技術選定のポイントを徹底解説する。一概には言えないが、同時に私が普段個人開発で扱っている技術を中心に紹介する。
今回の記事がプロダクトの技術選定で迷っているプログラマーに届けば幸いである。
技術選定の原則
技術選定する上で重要なポイントは、その技術を学ぶことで得られるメリットや効率化できる部分を徹底的に調べることである。この行為は単なる時間の無駄ではなく、プロジェクトの技術選定の際にもよく実施される。言い換えれば、メリットがない技術は今学ぶべきではないということだ。
調べる方法はQiitaやZennで「技術選定」と検索して、評価の高い記事(Qiitaの場合は「LGTM」が多い記事、Zennの場合は「♡」が多い記事)を中心に調べることを強くオススメする。まずは先人の知恵を徹底的に模倣することから始めよう。
時間は有限で、かつタイミングも重要だ。自分が開発したいプロダクトに最適な技術を慎重に選んでいこう。
技術選定のポイント
プログラミング言語・フレームワーク
プログラミング言語やフレームワークの選定だけで、Webアプリの開発の7割が決まる。慎重さと決断力の両方が要求される。
実際にさわる
公式ドキュメントをただ単に眺めるだけで決断してはならない。簡単なアプリでもいいので、自分でなにか実際に作ってみることが重要だ。
選択する
自分でさわってみて、自分が開発したいWebアプリに最適だと考えたら実際に選ぼう。具体的に言えば、選択する方法は以下の観点でチェックしよう。
- 複雑なビジネスロジックをわかりやすく表現できること
- コンパイラやエディタの支援があり、易しくリファクタリングできること
- コミュニティが存在し、メンテナンスされていること
- 十分な量の情報が流通していること
- プログラマーのモチベーションが上がること
普段使っている技術
私は以下のプログラミング言語やWebフレームワークであれば問題なくWebアプリを開発できる。
- Python:世界で最も使われているプログラミング言語の1つ。文法の構造がシンプルであるゆえに学習コストが低く、かつ情報量が豊富だ。少ないコード量でWebアプリを開発できるのが最大の魅力である。好きなプログラミング言語なので、個人開発で最も使っている。
- TypeScript:Webアプリのフロントエンドを開発する上では必要不可欠。TypeScriptでフロントエンドを実装する場合、バックエンドもTypeScriptにすれば効率が良い。TypeScriptの最大の魅力は型定義である。
- Dart:Flutterの開発言語。実務で扱っていないものの、最近個人で勉強している。AndroidとiOS両対応のモバイルアプリだけではなく、Webアプリもこの言語で開発できる。HTMLとCSS両方の役割を一つの言語で果たしているのが最大の魅力だ。
- Next.js:Reactで開発されたWebフレームワーク。情報量が多く、TypeScriptやマテリアルデザインとの相性が良いのでまっさきに使う。
- NestJS:TypeScriptでバックエンドを開発できるNode.jsフレームワーク。公式ドキュメントが充実している。コマンド一つでAPI開発に必要な雛形を生成でき、効率的に開発を進められるのが魅力だ。RESTとGraphQL両方の開発に対応している。個人的には最も好きなWebフレームワーク。
- Django REST Framework:個人開発で最も使っているWebフレームワーク。PythonのWebフレームワークであるDjangoでREST APIを開発できるサードパーティ製のライブラリ。
- FastAPI:簡単なマイクロサービスやAPIの開発に使う。公式ドキュメントが充実している。公式がチュートリアルを用意しているので、学習コストが低く学びやすい。
- MySQL:世界で最も使われているデータベース。原則、大規模なアプリのデータベースにはこれを使う。
- SQLite:言語やフレームワーク次第ではデフォルトで備わっているので、簡単なWebアプリを開発する上では必要不可欠。私はSQLの基本をこれで学んだ。
- MongoDB:NoSQLを代表するデータベース。公式ドキュメントが充実している。あと、自分が好んで使っている言語やWebフレームワークすべてに対応している。
- Supabase:Firebaseの競合であるBaaS(Backend as a Service)。データベースにPostgreSQLを採用しているので、SQLを使ってバックエンドを構築できる。SQLの知識や経験が無駄にならない。
総括すると、私は認証機能を実装したり、データベースを設計することが得意なのでバックエンドを中心にWebアプリの開発を進めている。
おわりに
今回の記事では、私が実践している技術選定のポイントと実際に扱っているプログラミング言語やWebフレームワークを解説した。今回の記事が実際に技術選定をする上で参考になれば幸いである。
Discussion