きっかけ
半年くらいNotionにメモを溜めていたのだが、ある日ふと「これ全部Notionに閉じ込められてるな」と思った。
別にNotionが悪いわけではない。使いやすいし、機能も十分すぎるくらいある。ただ、仕事のアイデア、個人的な考え事、技術的なメモ、全部が1つのSaaSに入っている状態がだんだん気持ち悪くなってきた。エクスポート機能はあるが、日常的にバックアップを取っているわけではない。もしサービスが終了したら、料金が大幅に上がったら、あるいはAPI仕様が変わったら——そういう「もしも」が頭の隅に引っかかるようになった。
Craftも試したことがあるが、同じ話だ。データはCraftのサーバーにあり、自分の手元にはない。
「自分のデータは自分の場所に置いておきたい」というのは、エンジニアなら誰しも一度は考えることだと思う。で、じゃあセルフホストのメモアプリを探そうとなった。
Memosを選んだ理由
セルフホストできるメモアプリはいくつかある。Trilium、Joplin、Logseq……どれも良いツールだが、自分の用途には合わなかった。
自分が欲しかったのは、「開いて、書いて、閉じる」だけのメモ帳だった。フォルダ構造もない、ノートブックもない、タイムライン形式でただメモが流れていく。Twitterの下書きに近い感覚で使えるもの。
Memos がまさにそれだった。
GitHubで58,000スター以上。Go製のシングルバイナリで、Dockerイメージは約20MB。データベースはSQLiteなので、別途DBサーバーを立てる必要もない。Markdownに対応していて、REST APIとgRPC APIも備えている。MITライセンス。
「軽くて、シンプルで、データが自分のものになる」——これだけで十分だった。
ただ、セルフホストは面倒
問題はデプロイだった。
Memosの公式ドキュメントにはDockerでのデプロイ手順が書いてある。docker run 一発で動くと書いてあるし、実際その通りだ。ただ、それは「Dockerが動くサーバーが手元にある」前提の話であって、そこに至るまでの道のりが結構ある。
VPSを借りる → SSHで接続する → Dockerをインストールする → ポートを開ける → リバースプロキシを設定する → SSL証明書を取得する → ドメインを紐づける……
ZennでOracle CloudのAlways Free枠にMemosを立てた記事を見つけたが、「半日かかった」と書いてあった。まあそうだろうなと思う。
自分もVPSにDockerで立てるのは何度もやったことがあるし、実際に最初はVPSにMemosを立てて使っていた。動くことは動くし、データも完全に自分の手元にある。ただ、友人に「これいいよ」と勧めるたびに「でもサーバー借りるところからでしょ……」と言われて終わる。自分自身も、もう1台VPSを管理するのは正直しんどかった。
「まず触ってもらう」ためのハードルをもっと下げられないかと考えて、PaaSでのデプロイを試すことにした。
Railwayでのデプロイ手順
Railway は、DockerコンテナをそのままクラウドにデプロイできるPaaSだ。HerokuやRenderと同じジャンルのサービスで、従量課金制。
いくつかのPaaSを比較した結果、RailwayがDockerイメージをそのまま使えてセットアップが一番シンプルだったので、ここに落ち着いた。自分のMemos環境をRailwayに移してしばらく使ってみて、問題なく動くことを確認できたので、同じ構成をテンプレートとして公開した。以下のリンクからデプロイページに飛ぶだけでいい。
→ Memos をワンクリックでクラウドにデプロイ(GitHub)
VPSもSSHもnginxもLet's Encryptも要らない。
使ってみた感想
3ヶ月ほど実際に使ってみたので、率直な感想を書く。主な用途は、仕事中に浮かんだアイデアの断片、技術的な調査メモ、読んだ記事の感想など。Notionにも書いていたような内容だが、「あとで整理しよう」と思わず済む分、書く頻度は明らかに増えた。
よかった点
起動が速い。 ブラウザでURLを開くと、すぐに入力画面が出る。Notionのように読み込みを待つ時間がほとんどない。Go製で軽量というのは本当だった。
入力のハードルが低い。 フォルダを選ぶ必要がない、カテゴリを決める必要がない。開いてそのまま書くだけ。後からタグで整理できるが、整理しなくても困らない。この「雑に書ける」感覚が思った以上に良い。
Markdownがそのまま使える。 コードブロック、リスト、リンク、全部普通に書ける。エンジニアのメモ用途には十分。
APIがある。 REST APIが公開されているので、CLIからメモを投げたり、他のツールと連携したりもできる。自分はまだ使っていないが、将来的にはn8nと繋げてみたい。
微妙な点
公式のネイティブアプリはない。 Memos自体はWebアプリなので、スマホからはブラウザでアクセスする形になる。PWAとしても動くが、ネイティブアプリほどスムーズではない——と思っていたのだが、サードパーティ製の Moe Memos というクライアントを見つけて印象が変わった。MemosのAPIを利用したモバイルアプリで、iOS/Android両対応。通知やオフライン対応もあり、思った以上に快適に使えている。公式ではないので今後のAPI互換性は気になるところだが、現時点では十分実用的だと感じた。
共同編集ではないが、複数人で使える。 リアルタイムに同じメモを編集する用途には向いていない。ただ、マルチユーザー対応はしっかりしていて、メモごとに 個人・ワークスペース・公開 の3段階で公開範囲を設定できる。友人やパートナー、チームメンバーを招待して、それぞれが自分のメモを書きつつ、共有したいものだけワークスペースに流す——という使い方がなかなか良い。日常的なメモや買い物リストの共有くらいなら、これで十分だった。
Notionの代替ではない。 データベース機能、カレンダービュー、プロジェクト管理……そういったものは一切ない。Notionの全機能が必要な人がMemosに乗り換えるのは無理がある。あくまで「メモを書く」という一点に絞ったツール。
実際にかかっている費用
Railwayの料金体系を正直に書いておく。Hobbyプランは月5ドルだが、5ドル分の無料クレジットが含まれている。つまり月の使用量が5ドル以内であれば、追加の支払いは発生しない。さらに、月1ドル未満の使用量はそもそも課金対象にならない。
自分の場合、最初は「月5ドルくらいかかるだろうな」と思って使い始めた。ところが1ヶ月後に請求を確認したら、使用量が1ドル未満で無料枠に収まっていた。MemosはGo製シングルバイナリ+SQLiteという構成で、動作時のメモリ消費が約10MB程度しかない。個人のメモ用途だと、本当にリソースを食わない。
結果として、3ヶ月使って1円も払っていない。「無料」を売りにしたいわけではないが、「試しに立ててみたら、お金がかからなかったのでそのまま使い続けている」というのが正直なところだ。使い方次第で変わるので、あくまで自分の場合の参考値として受け取ってほしい。
まとめ
ここまで書いておいてなんだが、「データを自分の手元に置きたい」と言いつつRailwayに載せているのは矛盾しているかもしれない。Railway上のデータだって、結局は他人のインフラの上にある。
ただ、NotionやCraftとの決定的な違いは、データの形式がオープンで、いつでも持ち出せるという点にある。MemosのデータはSQLiteファイル1つだ。Railway CLIでエクスポートできるし、気が向いたらVPSに引っ越せばいい。最初から完璧な環境を構築する必要はなくて、まず使ってみて、気に入ったら自分のサーバーに移す——くらいの温度感でいいと思っている。
自分にとっては「雑にメモを書ける場所」として定着しつつある。Notionも併用しているが、役割が違う。プロジェクト管理や構造化されたドキュメントはNotion、頭の中の断片を吐き出す場所はMemos、という棲み分けになった。
万人向けのツールではないし、合わない人もいると思う。ただ、興味があれば、まずライブデモで触ってみるのが早い。
