個人でGitHub有料プランの人しか使えないサービス作っている
— k1LoW (@k1LoW) 2017年7月5日
スマートフォンのブラウザからでもメモが書けるサービス
自分はいつも簡単なメモ書きにはEmacsか、ブラウザを開いていたら wri.pe を使っていました。
wri.pe を使い始めたのは2013年からで、かれこれ4年使っていることになります。
wri.pe で気に入っているところは
というところです。
いつでもどこでもブラウザがあれば雑にメモが取れるのが最高です。
ただ、ちょっと困っていることがあって wri.peは最近
ノートの検索機能が動かない(微妙に動いている!?)- ノートの削除機能が動かない
という状況が続いています。
これが地味に効いてきているので、「自分で作ってみようかな」という気持ちになって作りはじめています。
hubedit
hubeditは wri.pe と同じように
- シンプル
- スマートフォンのブラウザからも使える
- バックアップが取れる
を主眼に置いています。(まあ、つまり「自分が便利に使えるように」ということですね。)
特に「バックアップ」が特徴で、バックアップというよりもむしろバックエンドにGitHubのプライベートリポジトリを使います。
OAuth連携したGitHubアカウントで my-hubedit
というプライベートリポジトリを作ってそこをメモの保存場所とする、つまり、メモの操作を全部 git commit
ベースで実施するというアーキテクチャです。
GitHubリポジトリということは、当然 git pull
して手元のEmacsでメモを作成編集することも可能です。
つまりいつものソースコードのように、ローカルでの編集と git push
による同期が可能。便利。
また、せっかくバックエンドがリポジトリなのでディレクトリにも対応しました。
アーキテクチャ
いわゆるサーバレスアーキテクチャで構築しています。
HTMLや、そのHTML上のJavScriptが叩くAPIから全てを、API Gateway / AWS Lambdaで実装しています。メモファイルの操作は全部GitHub API v3で操作しています。
とりあえず早く使えるようにしたかったので、今のところ画像は皆無で、CSSやFont、JavaScriptなども直書きか cdnjs ベースにしています(そのうち気が向いたらS3の静的Webサイトホスティングなども活用しようかと思います)。
取得したGitHubのOAuthトークンだけはS3バケットに置いていますが、これもS3バケットのライフサイクルポリシーで1日で消えるようにしています。
ストレージは各々のGitHubリポジトリなので、hubeditの利用をやめたいときはGitHubでOAuth連携をはずすだけで完了です。
まだ微妙な点
- GitHub API + S3をバックエンドとしているのでレスポンスがもっさりしている
- DynamoDBをつかったら少しは早い?まあ、あきらめている
- メモの編集が2コミットに分かれている(削除と追加)
- ちゃんとコミットを作りたい
- Vue.jsを初めて使ったので、コードが微妙っぽい。JSファイルの読み込み方法も開発モードのまま
- UIが雑。ローディングアクションすらない。
- ロゴがない(またか)
というわけで
個人利用としてはまあ満足です。
とりあえずwri.peのメモを変換して git push
したので、このまま本格利用してみようと思っています。
PUBLIC BETAとして公開していますので、興味ある方は自己責任でご利用下さい。
(これってもっとがんばって組んだら、GitHubリポジトリをバックエンドにしたチーム情報共有サービスなんて作れたりするんだろうか。)