README自動作成できないか考えてみた
難しそう。
READMEの項目
- languages (transrate, link)
- badge
- created/published (
<time>
, copyright year) - name
- description
- image
- demo
- feature
- requirement
- installation
- usage
- note
- author
- name
- link
- license
- logo
- url
- sentence
- SPDX license expression
- license file link
- copyright
languages (transrate, link)
- 任意の自然言語における翻訳文を用意する
- 翻訳READMEへのリンクを用意する
- 国コード
- 国旗画像
trans
コマンドによる自動翻訳<code>
内は翻訳しない
翻訳
特に翻訳が大変。英語のREADMEさえ用意しておけば、あとは環境に応じてブラウザが自動翻訳してくれるかもしれない。最悪はそれでもかまわない。
でも、英語のREADMEを作るとき、日本語から翻訳せねばならない。私は英語がわからないから。
日本語で書いたMarkdownテキストをGoogle翻訳して英語にするとき、以下のような問題がある。
- 翻訳する箇所の選択
- 英語のままであってほしい箇所もある
- 翻訳サイトを開いて翻訳操作が必要
- 対象テキストをブラウザ・テキストエディタ間でコピペせねばならない
- MarkdownテキストをGoogle翻訳にかけるとメタ文字の前後に不要なスペースが挿入されてしまう
- スペース削除せねばならない
翻訳のせいで非常に手間がかかる。そしてこの翻訳こそ、最も対応が難しい。翻訳処理を自作しているわけではないため、Google翻訳システムの出力結果に依存してしまうのが難点。非現実的。
コードとの整合性
実際のソースコードとREADMEの整合性を保ちたい。だがコード解析までせねばならない。非現実的。
そもそもそのコードをどうやって自然言語に翻訳するというのか。それができるなら自然言語からプログラミング言語へ変換してプログラミング自体を自動化したほうがいい。AIでできるらしいが、いつ庶民の元で無料で簡単に実現できるのか。
「アレやって」と言っただけでやってくれるのが理想。「アレ」を定義すれば今でも不可能ではない。だが代名詞であるように何を指すかは状況で変わる。自分に都合よく忖度してくれるAIでなければならない。そんな自分こそアレだと思う。
badge
環境のバージョンとかテストクリアなどの状態を示す。
created/published (<time>
, copyright year)
作成日時(公開日時)。copyright文言と一致させたい。
name
ソフトウェアの代表名。リポジトリ名と同じなのが好ましい。
description
ソフトウェアの説明文。一文で表す。GitHubリポジトリのメタデータdescription
と一致させたい。
image
ソフトウェアの象徴画像。どうせならソーシャル・プレビューと共用にしたい。
demo
CLIならasciinema
+svg-term
を使いたい。元データであるjsonファイルを簡単に編集できるツールが欲しい。
feature
ソフトウェアの特徴。他とは差別化されたところ。
requirement
必須環境。
installation
必須環境と自身のインストール方法。
usage
ソフトウェアの使い方。ソフトウェア自体のアップデートと連動すべき。ただし細かいことは別ファイルにまかせてREADMEでは最小限の記載にするほうがいいかも?
note
注意点。
author
著者。名前と連絡先。連絡にはWEBサービスを使う。WEBサービスのアイコン画像・名前・URL・著者のアカウント名。
- name
- link
Author name. [![service1][service1_img]][service1] [![service2][service2_img]][service2] [service1_img]:http:// "title" [service2_img]:http:// "title" [service1]:http:// [service2]:http://
license
- logo
- url
- sentence
- SPDX license expression
- license file link
- copyright
色々と面倒が多そう。
- 各ライセンスサイトから画像をかき集めねばならない
- 決めねばならない
- マルチライセンスのときはどうするの?
- 必要なファイルは?
LICENSE.md
,LICENSE-{ID}
- ライセンスの検出は?: licensee
LICENSE.md
- 一文は?「このソフトウェアは
AAAA OR BBBB
ライセンスである。いずれかを選択すること。」 - 標準ライセンスヘッダを適用したライセンスの分だけ複数書く
- SPDX license expressionを示す
OR
,AND
等
- 一文は?「このソフトウェアは
- 必要なファイルは?
所感
これは厳しい。README.mdファイルだけでこれらを適切に編集するのは不可能だろう。
コードとの整合性は諦めるとして、一番どうにかしたい翻訳も難しそう。
それぞれの項目を個別のツールで作ることになってしまいそう。
social-preview
画像が設定されていたら![]()
で挿入してほしいasciinema
のjsonファイル編集ツールが欲しい asciinema-editasciinema
のjson→svg-term
で出力したSVGを![]()
で挿入してほしいname
はリポジトリ名をそのままセットしたいdescription
はgithubのリポジトリ生成時にWebAPIで引数としてセットしたいrequirement
はOSなど他プロジェクト間で共通するテンプレートを用意してもいいかも?- マシン名やOS名などを取得するコマンドを使えば自動化できる?
feature
,installation
,usage
,note
はプロジェクト間で独自になる。自動化不能author
はgithubのユーザごとにテンプレを作って挿入すればいいか?license
はlicenseeで検出したライセンスIDに応じて適切な形式をセットしたい- 翻訳は
trans
コマンドでできるが問題多数のため不可能- READMEのどこに挿入するか
- 英文READMEをコピーして丸ごと翻訳すればいい?
- 英語のままにしたい箇所が指定できない
- 特定の用語、
<code>
内、メタ文字等
- 特定の用語、
- READMEのどこに挿入するか
README自体を半自動化するツールもあるようだ。
これらのツール、ことごとくNode.js製だな。
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux