Sashimi開発日記 - 実装機能

ほぼ開発メモ。

CMSとして最低限の体裁を整えるために必要な諸機能と開発項目をまとめた。上に位置するものほど優先度が高め。

  • 認証
  • 管理画面の概形
  • 投稿
  • 投稿の編集
  • Markdownエディタ&プレビュー (ace editor / marked (js))
  • スケジューラ(Quartz)
  • 予約投稿
  • カテゴリ管理
  • タグ管理
  • メニュー管理
  • 二段階認証
  • 画像アップロードAPI
  • クリップボードからの画像貼り付け
  • 簡易画像編集(Crop, Resize, Exif削除, ぼかし)
  • サムネイル作成機能
  • 引用機能(JavaScript ブックマークレット)
  • プラグインシステム
  • SNS連携(シェアボタン、Twitter Cards, OGP)
  • コメント機能(別サービス?)
  • 静的サイトジェネレータ

認証は当初pac4jというものを使用しようとしていたが、重厚さのわりにドキュメントが貧弱で、公式の実装サンプルコードも古くてあちこちがDeprecatedになっている、最新バージョンにするとコンパイルエラーになるという有様であったので諦めて自前実装することとした。依存ライブラリは少ないほうが良いだろうという思いもあり。

フロントはVue.jsで作る予定。大した込み入った処理も無いだろうと思ってる。ただ、クリップボードからの画像貼り付けや、クロップ編集画面などの画像処理系機能は充実させたいと思っているのだが、そのあたりで苦労しそうな予感がする。

クリップボードからの画像取得はこれが使えそうだ。

paste.js

JavaScriptでの画像編集ライブラリはこの辺が使えそうだ。

CamanJS
DarkroomJS

watermarkの挿入は私が使わないのであんまり実装したくないのだけど、需要があればやるかもしれない。

あと、基本的に管理機能はスマホでの使用を想定しない。スマホでブログ書く需要は殆どないと思っているので。

プラグインのやり方はGitBucketを参考にするつもり。プラグインは必須と考えているが、実装が重そうなので後回しにしている。

引用機能は、WordpressのPress Thisに相当する機能。要らないかも…。

SNS連携機能ではTwitter CardsやOGPを解釈して投稿中に埋め込むようなものを想定している。このあたりはMarkdownの書式を拡張して作ることになるかもしれない…。

コメント機能の別サービスと書いてあるのは、コメント機能自体を提供するクラウドサービスというのも考えている。これは以前から考えていたもので、機械学習であまりにも低レベルなコメントやスパムをブロックしてより建設的な議論の場として使いやすいようにする類のものだ。

また、Wordpressでは曖昧になっているメニュー、カテゴリ、タグの使い分けについて以下のように設計している。

メニュー:階層構造をもち、一つの項目が一つのページ(もしくはリンク)と対応するアイテム。
カテゴリ:階層構造を持たず、一つの記事がたった一つのカテゴリに必ず所属する。
タグ:階層構造を持たず、一つの記事に0〜n個のタグを設定できる。

1月中にこのブログをデータをインポートしたベータ版を動かしてみたいと思っているが…。どうだろ。