お金を節約するための技術選定
お金は開発リソースではないと述べました。もともと個人開発は時間とモチベーションを消費するものであり、さらにお金までかかるとすると「こんなことより副業をした方が直接的なリターンがある」と考えて個人開発を止めてしまいかねません。そんな事態を避けるためには、できる限り各種SaaSの無料枠を活用して小さく始めてみましょう。
以下ではフロントエンド、バックエンド、インフラ(デプロイ先)という分野で使える無料サービスを紹介します。ただし、ここでの区分は便宜的なもので厳密なものではありません。なお、ここに記載している情報は2023年2月のものです。最新情報は各サービスの公式ページをご参照ください。
フロントエンド - OSSを使おう
早速ですが、フロントエンド開発それ単体でお金が必要になることはありません。このため、ここでは技術選定の選択肢となるOSSを紹介することにとどめます。
Webアプリケーションを作るのであれば、JavaScriptのフレームワークである React、Vue.js、Svelte は人気があります。また、Next.js、Remix、Nuxt.js、Svelte Kit といったフレームワークは、単にUIを構築するだけではなくさまざまな機能を持ったWebアプリケーションの開発に向いています。
場合によってはAstroやQwik、Rustでフロントエンドを構築するなど新しい技術にチャレンジしても良いでしょう。
モバイルアプリであればFlutterやReact Nativeが選択肢に入ります。デスクトップアプリを作成するのであればElectronやTauriといったツールが支えになるでしょう。
バックエンド - BaaSを使おう
フロントエンドだけでは、いわゆる個人開発という単語から想像されるような実用的なWebアプリケーションは構築できません。ユーザーのログイン機能やデータの保存まで考慮するとどうしてもバックエンドが必要になります。そこで本項ではBaaS(Backend as a Service)の紹介をします。
BaaSとして代表的なものはGoogle社のFirebaseです。FirebaseのSDKを自分のアプリケーションで使用することで、ログイン機能に必要な認証やデータの保存に必要なデータベース、ファイルの保存に利用するストレージを簡単に利用できます。
また、サーバーレス関数でちょっとした処理を実行するほか、ホスティング機能を使ってアプリケーションの公開までを簡単に行うことができます。ただし、データベースはNoSQLであるため、普段の開発でRDBを使用している方は注意が必要です。
また、Firebaseの代替となることを目指して開発されているSupabaseというサービスもオススメです。Supabaseはシンガポールの会社が開発しており、Firebaseと異なってOSSとして公開されていることに特徴があります。Firebaseと同様に認証、DB、ストレージとの接続機能を備えています。
DBにはPostgreSQLが、ストレージにはS3が採用されています。また、2022年12月にGraphQLを使える機能がv1に達し、API経由のデータ取得にREST APIのみならずGraphQLの利用が可能になりました。
他にはHasuraというGraphQLの利用に特化したBaaSもあります。こちらも認証機能やDB(PostgreSQL)を備えており、ブラウザでアクセスできるコンソールから各種設定が可能です。
いずれのサービスを利用しても、自作アプリケーションが大ヒットしてユーザー数が激増しない限り無料枠内に収まるでしょう。無料枠をうまく活用してトライアルアンドエラーを繰り返してみてください。
インフラ(デプロイ先)- IaaSを使おう
作成したアプリケーションは公開されなければ他の人が使うことはできません。AWSやGCPといったクラウドベンダーの各種サービスを使えばいかようにも配信できます。しかし、本節では無料でサイトを公開することを重視するため、別のIaaS(Infrastructure as a Service)を紹介します。なお、本項はWebサイトのデプロイのみを想定しています。
作成したアプリケーションがHTML、CSS、JSのみで動くのであれば、GitHub PagesやCloudflare Pages、Firebase Hostingを活用できます。また、Node.jsのサーバーを必要とするNext.jsやNuxt.jsといったフレームワークを使ったアプリケーションを公開するのであればVercelやNetlifyを利用するのも良いでしょう。
Node.js以外の他のバックエンドのプログラミング言語でアプリケーションを動かすのであれば、Dockerを使うケースがほとんどではないでしょうか。その場合は、renderというサービスを使うと良いでしょう。コンテナを簡単にデプロイできる上に無料プランも備えています。
デプロイ先の選定に関して、私が個人ブログを作成した際の経験を紹介します。私は個人ブログをNext.jsで作成し、Vercelにデプロイしていました。しかし、何年か続けていくうちにVercel無料枠の上限を超えそうになったため、後にデプロイ先をCloudflare Pagesに移行しています。結果的に、無料でのブログ運営を継続できています。
まとめ
個人開発の最初にして最大の関門はリリースです。リリースするまでは自分との戦いを続けなければなりません。しかし、一見大変なように思える個人開発には、この活動を通してしか得られない楽しさと大きな学びもあります。後編となる次回はサブタイトルを「個人開発の楽しさと大きなメリット」として、それらを詳しくご紹介できればと思います。