見出し画像

記事(html文書)の差分管理について

ここでは、noteなどネット上に公開されている記事(html文書)をどのように管理すればより効率的・効果的に運用できるかについて考えたい。特に差分管理について記載する。

記事を量産すると

blogとしてのnoteがすばらしい点は以下と思っている。
✔ 無料で広告なし記事をWeb上に公開できる(★これが一番大事) 
✔ 文章を書きやすい(CMSとして優れているように思う)
✔ 「下書き保存機能」が使いやすく、安定している
✔  UI が シンプルで見やすい & 使いやすい 

上記のように、noteは文章を書きやすいので短期間で多くの記事を量産することが可能である。しかし、多くの記事を書くと以下のようなことが起こりやすくなる。
  ✔  結果的に似たような記事を連発してしまう
  ✔  以前投稿した記事内容を忘れて放置状態になってしまう
  ✔  トップの記事だけ読まれて、過去記事が読まれない傾向あり
        (※)記事が流れる

欲しい機能

投稿する側として個人的に思うのは、
  ✔  同じ内容の重複投稿はできるだけ避けたい。
  ✔  同一タイトルの記事内容を改訂し続けるような運用としたい。
       (ひとつの記事を土台として、再利用して新しい記事を書きたい)

よって、以下のような機能が欲しくなる。
  1)  何らかの変更があった記事の視覚的な差分を簡単に確認できる機能
  2)  記事の版数管理機能
上記 2) は 投稿者が個人的に管理するのは比較的容易であるが、 1) は結構難しい。

「変更があった記事の視覚的な差分確認できる機能」の何が良いか?
  1) 自分の書いた記事がどう変更されたか確認できる。
  2) 他人が書いた記事がどう変更されたか確認できる。

問題点

記事の変更箇所が限定的な範囲で数箇所の場合は、特に問題ない。

しかし、比較的長文の文書の広範囲に渡って複数箇所に変更があった場合、htmlファイルの差分から見た目がどう変化したかを把握するのはかなり難しい。

✔  ネットで公開されている記事(html文書)をブラウザで読み込んだ時の
     htmlファイルには記載内容とは関係ない管理情報が多く付加されている。
     (※)余分な付加情報付きhtmlは視認性が悪く、ローカルに保存したくない

  ✔ そもそも、ブラウザ上にレンダリングされた状態の視覚的な
      差分をとるのは難しい(host側の仕様やローカルの環境にも依存する)

  ✔ 印刷イメージのpdf の 差分を取ることは可能だが、pdf作成時の仕様や
      環境に依存するため、適切なdiffを今後も安定的に取れるかは不透明

ここまでをまとめると、
html 表示状態の差分を視覚的に確認できる機能があれば良い。
しかし、html 表示状態の差分を視覚的に表現するのは簡単ではない。

実現したいこと

✔ 自分や他人が描いた記事のピュアな状態のhtmlをローカルに保存
✔ ある記事を更新・再利用する時の変更前後の正確な差分(※)をとりたい
    (※)htmlがブラウザに表示された画面表示の正確な差分

具体的に言うと、以下のような軽微な差分を同時に検出したい。
  ✔ 本文中の語句の表記改善・修正
  ✔ 本文中の特定の単語を太字から標準フォントに変更
  ✔ 本文中の特定の単語をルビなしからルビ付きに変更
  ✔ 記事中の画像を少しだけ加工(再編集)して差し替え

上記は、ほとんどのユーザーはたぶん意識していないと思われる。もしくは実は欲しいと思っているが、うまく言語化できていないだけなのかもしれない。

対策

以下のような対策で、やりたいことをある程度実現できそうだ。
  ✔ 何らかの方法で、記事htmlを軽量markup形式textに変換して保存
  ✔ 上記軽量markup形式textの差分を取る(書式情報含めtext の diff を取る)

上記軽量markup形式textとは、標準的なmarkdown書式ではなく、自分が使いやすい独自仕様を検討中である。うまくまとまれば LangDicLabオリジナルのmarkup仕様をnote で公開するかもしれない。

html の見た目のバリエーションは多岐に渡り、人によってどのような見た目に重きを置くかは大きく異なる。したがって、究極的には各個人毎にカスタマイズしやすい軽量markup形式があればベターである。

一般的な対策方法としては、たぶん以下のようになるだろう。
・Chrome拡張・javascript などにより、htmlから必要なテキストを抽出
・何らかのmarkdown記法によるtextファイル保存と差分管理

いずれにしろ、厳密に差分チェックしたい場合は、ある程度のプログラミングの知識が必要になりそうだ。

改訂(Revisions)

2022 0118 初版

(以上)

この記事が気に入ったらサポートをしてみませんか?