Open1

ログイン不要で誰でも編集できるサイトを作ろうとする試み

ちりんどりちりんどり

背景

現在、あるWikiサイトを運営しているが、エンジンの仕様上ページの編集にアカウント登録とログインが必要という問題がある。

筆者の知らない分野の情報を持っている方にwikiへの寄稿をお願いしたことがあるが、アカウント登録が面倒だからという理由で断られてしまったことが何度もある。

そのため、もっと手軽に情報を書き込めるようにするためには、アカウント登録が不要で、だれでも簡単に編集に参加できるようにすることが重要だと考えた。

方針

原則として、現在のサイトで使用している機能を損なわないようにしたい。

以下のような機能を実装する必要がある。

  • アカウント登録不要で編集可能
    これは絶対。
  • Gitリポジトリでのコンテンツ管理
    GitHubのエコシステムを活用したコンテンツのバックアップ、レビューの仕組みを利用したい。
  • コンテンツのソースはMarkdown
    文法が簡単で普及しているMarkdown並びにその拡張記法(MDX, attributeあるいはdirectiveなど)を利用して執筆できるようにする。
  • コンテンツの内容の高度なカスタマイズ
    現在のサイトは、ページごとのmetaデータの指定などができない。
    これをより柔軟にできるようにしたい。
  • 編集しないときは静的サイトとして完結させる
    現在のサイトはゴリゴリのCSRであり、初回ロード時間もそれなりに長い。
    機能を拡張するために大量のCSSとJavaScriptをインラインに挿入しており、負荷をさらに増やしている。
    なるべくサーバーサイドやビルド時に処理を済ませ、最低限のリソースのみを配信するようにしたい。
  • 無料のサービスのみを利用する
    筆者は近年のウェブサイトにみられる、ほとんど閲覧不可能なほどの大量の広告を使用した収益モデルが嫌いである。
    広告を使用せずに済むよう、なるべく安価なサービスのみを利用したい。
  • コンプライアンス
    現在利用しているシステムは海外で作られたものであり、日本法及びそのガイドラインに照らして理想的な機能を提供しているシステムではない。

構成(案)

  • サイトホスティング
    • CloudFlare Pages
    • とにかく簡単で安価
  • コンテンツ管理
    • GitHubリポジトリ
    • 多くのSSGで対応しており、開発者にも馴染み深い
  • フロントエンド
    • サイト本体はAstro、編集UIなどインタラクティブな部分にはSvelte
    • ユーザーの目に見えるサイト本体と編集UIを提供
  • コンテンツ認証
    • reCAPTCHA v3またはCloudFlare TurnstileとCloudFlare Workers
    • フロントエンドで行われた編集をサーバーレス関数で認証
  • Pull Requestの作成
    • CloudFlare WorkersとGitHub Actions
    • 認証された編集結果のPull Requestを代理で提出
  • 編集の検討
    • GitHub
    • 提出されたPull Requestを自動または手動でレビューしソースに反映

他の検討したサービス

  • Decap CMS (旧 Netlify CMS)
    言わずと知れたgitベースのCMS
    サイトに編集UIを埋め込むこともできるようだが、adminの利用を想定しているようなのでパス
  • MicroCMS
    APIを利用すれば簡単にコンテンツのアップデート、編集が行えるが、GitHubとの連携が課題