記事一覧

オープンソースのFirebaseみたいなものを作りたい

去年の10月ごろから、趣味で開発しているグループウェアの改修(というか、リプレイスというか、リニューアルというか、)をやっています。今回は、バックエンドにSpring Boot+Kotlin、フロントエンドにAngular 6+TypeScriptを採用しました。

以前別のプロジェクトでもAngular5を使って開発をしましたが、AngularJSと比較すると、色々と開発しやすくなっています。CLIが手伝ってくれるところとか、コンポーネント化が圧倒的に容易になったところとか。

一通りの機能の実装に区切りがつき、セッション管理やら権限管理やら通知やら同期やらの実装に入ったところで、ふと、このへんをもっと抽象化して、色々なプロジェクトで使いまわせるようにならないだろうか、との考えが浮かびます。

もともと、今回のプロジェクトでは、物理的なテーブル定義を最小限にして、独自の形式で各テーブル(というかオブジェクト)の型定義を別に行い、特定のJSONをバリデーション・保存・参照するという実装と、型定義に従って、関連レコードを自動的に検索して引っ張り出してくるという実装を行い、テーブルの構成を意識せずに実装できるように開発していました。
要は、スキーマ定義が必須で、リレーションをとってくる機能がついた、NoSQLのインターフェースを開発していたというわけです。

この他に、前回のデータ取得との差分(データの新規追加とか削除とか)を取得する機能とか、項目ごとのアクセス権限の設定機能とか、項目の変更履歴を見る機能とか、色々実装したわけですが、これら全て、他のサービスを開発する中でも使いそうなものだなあと。

Firebaseを使えばほとんど不要な実装なわけですが、今回の開発では(というか趣味で開発しているグループウェアの開発では)、原則として流行りの製品以外は使わずに、自力で実装して力量を上げるという方針でやっているので、使っていません。
似たようなことができる製品は一応探してみても、今のところ見つかっていません。

ということで、オープンソースのFirebase的なものを作りたいなあ、と考えています。FirebaseのSDKはオープンソースですが、そういう意味ではなく、Firebaseみたいなことができる製品を作りたい、ということです。任意のデータを保持・同期してくれて、セッション管理とかユーザ管理とか権限の管理とかをやってくれて、通知機能とかもあって、ある程度の規模のサービスを簡単に作れる何かしらみたいな。

まあ、そんなのをオープンソースで作るよりは、プラットフォームにして料金をとったほうがいいような感じもします。(Firebaseがまさにそう)
でも、そういうのがあってもいいんじゃないか、とは思います。WordPressとかは、公式のサービスと、自分で設置して運用するやつと両方ありますが、あんな感じです。

誰でも使えるインターフェースと、誰にでも使い道がある実装をどうするかってところが一番難しそうです。たぶん、特定のイベント発生時に処理を記述する機能とか、Interceptor的な実装をする機能とかが必要になると思います。じゃあ、それをどの言語で書けるようにするんだ、とか。

できたらいいなあ
(と言っているうちは絶対にできない、と最近誰かが言っていました。でもやりたい。)

コメント

コメントの投稿

非公開コメント

プロフィール

JDB Luigi

Author:JDB Luigi
どこにでもいるようなありふれた人間・・・という訳でもなく、かと言って怪しい宗教を信仰する変人という訳でも無い。

基本的に掲載しているコード等は煮ていただいても焼いていただいても結構ですが、利用は自己責任にてお願いいします。
また、バグ・アドバイス等もしあればよろしくお願いします。