GitHubのプライベートリポジトリをストレージとして活用したシンプルなメモサービスhubeditを作っている

スマートフォンのブラウザからでもメモが書けるサービス

自分はいつも簡単なメモ書きにはEmacsか、ブラウザを開いていたら wri.pe を使っていました。

wri.pe を使い始めたのは2013年からで、かれこれ4年使っていることになります。

wri.pe で気に入っているところは

  • シンプル
  • スマートフォンのブラウザからもストレスなく使える
  • バックアップが自分がハンドリングできる場所に取れる(wri.peはDropbox

というところです。

いつでもどこでもブラウザがあれば雑にメモが取れるのが最高です。

ただ、ちょっと困っていることがあって wri.peは最近

  • ノートの検索機能が動かない (微妙に動いている!?)
  • ノートの削除機能が動かない

という状況が続いています。

これが地味に効いてきているので、「自分で作ってみようかな」という気持ちになって作りはじめています。

hubedit

hubedit.com

f:id:k1LoW:20170713071007p:plain

hubeditは wri.pe と同じように

を主眼に置いています。(まあ、つまり「自分が便利に使えるように」ということですね。)

特に「バックアップ」が特徴で、バックアップというよりもむしろバックエンドにGitHubのプライベートリポジトリを使います

OAuth連携したGitHubアカウントで my-hubedit というプライベートリポジトリを作ってそこをメモの保存場所とする、つまり、メモの操作を全部 git commit ベースで実施するというアーキテクチャです。

GitHubリポジトリということは、当然 git pull して手元のEmacsでメモを作成編集することも可能です。

つまりいつものソースコードのように、ローカルでの編集と git push による同期が可能。便利。

また、せっかくバックエンドがリポジトリなのでディレクトリにも対応しました。

アーキテクチャ

f:id:k1LoW:20170712231630p:plain

いわゆるサーバレスアーキテクチャで構築しています。

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リポジトリをバックエンドにしたチーム情報共有サービスなんて作れたりするんだろうか。)