組織の中でアプリを作るための技術選定
はじめまして!さざんか / sasanqua です!
この記事は ConoHa アドベントカレンダー 20 日目(大遅刻すぎでごめんなさい)の記事です
今回は、大学祭のための管理システムを構築する中でどのような技術選定を行ったか、どのような選定を心掛けたかについて紹介したいと思います!
技術選定どうしてますか?
技術選定とは
IT 業界やシステム開発における技術選定(ぎじゅつせんてい)とは、プロジェクトの目的を達成するために、どのようなプログラミング言語、フレームワーク、データベース、クラウドサービスなどを採用するかを決定するプロセスを指します。
単に「流行っているから」という理由で選ぶのではなく、ビジネス上の要件、開発チームのスキル、将来の拡張性などを総合的に判断する非常に重要なフェーズです。
by gemini
最後の方にいい感じのことが書いてあったのでそのまま持って生きちゃいました。個人開発であれば、自分の好きなテックスタックであったり、使ってみたいフレームワークや言語を採用すること自体が自分自身の開発のモチベーションになりますが、組織の中で開発を行う場合は後任の担当者への引継ぎなどについても考慮する必要があります。
実際何が問題なの?
まず、組織(特に学生組織)の中で問題となってくるのは、引き継げる人がいるかどうかです。団体の中でも例えば、TypeScript を主軸とした団体であれば必然的に TypeScript を採用するのがよいでしょう。確実に引き継げそうです。
一方で、非技術組織の場合はどのような技術スタックにするのが一番引継ぎがしやすい(そもそも引継ぎができるのかどうか)のかは大きな問題になってきます。
「学習コストが低い言語」であればいくつか思い浮かぶかもしれませんが、そもそも開発にこれまで全く触れてこなかった人に対して 0 から教育するための教育コストが大きくかかってきます。この教育コストは必要経費ですが、このコストが本来の団体の活動に影響が出てしまうのは本末転倒と言えるでしょう。
事務手続き的な話
多くの学生組織では予算と決算をそれぞれ作成しているでしょう。IaaS によくある従量課金のシステムでは予算の申請がかなり大変になります。(物理的に実態のあるものを買うことが想定されているため経理からもいい顔をされません)
なので、できる限りはサブスクもしくは事前チャージ式のサービスを使用すべきということになります。(実際はサブスク形式や事前チャージ式のサービスは多くないのですが、、、)
今回のシステムの技術スタック
さて、結論から書いてしまうと今回構築したシステムのテックスタックは
アプリケーション Next.js
プロキシサーバー Prisma Accelerator
データベース ConoHa Database
としました。
Next.js
組織内ですでに開発されていた公式 HP が今年から Next.js にリプレイスしたことを聞いて採用しました。HTML と Javascript の環境に Next.js を投入するのは引継ぎコストがある程度かかりますが、HP の引継ぎでどうにかしてくれるだろうという甘い考えです
もう一つ、バックエンドもある程度 Next の Route Handler を使用して実装できます。データベースへの接続も後述する Prisma Accelerator を採用することで TypeScript さえかければフロントエンドもバックエンドも実装できるようにしました。
Prisma Accelerator
Cloudflare 環境下(Edge 環境)からデータベースを接続するために必要不可欠なものです。Accelerator を噛ませない場合は、Edge 環境から直接データベースにコネクションが張られてしまいます。Prisma Accelerator を噛ませることで Prisma Accelerator がデータベースへのコネクションを集約してよしなに処理してくれます。
ConoHa データベース
採用した一番の理由は、事前チャージができることです。しかも、クレジットカード以外にも銀行振込などでチャージができるので振り込み先を経理担当に投げるだけで組織内での処理が終わります。(楽!)
技術的にもメリットがあり、DBaaS であれば本番環境と開発環境を両方使えない場合やデータベースの作成数に制限がある場合も多く、環境別にデータベースを作ることが難しいです。一方で ConoHa であればデータベースサーバー内に複数のデータベースを作ることができるので Prod, Stg, Dev それぞれのデータベースを作成することができます。
引継ぎに関してもデータベースの設定なんてほとんど触らないので一度構築してしまえば MySQL の教育コストをほとんど考えずに引き継ぐことができます。 余談
ConoHa のダッシュボードのこのはちゃんがかわいいので、障害対応とかでデータベース周りの設定をいじっているときに癒されます
さいごに
今回構築したシステムの中身についてはまた別の機会に記事にできればなと思います!
Have a great coding!