サイト用ファイル作成を改善した。

ブツ

インストール&実行

NAME='Electron.MyLog.20220904092353'
git clone https://github.com/ytyaru/$NAME
cd $NAME
npm install
npm start

準備

  1. GitHubアカウントを作成する
  2. repoスコープ権限をもったアクセストークンを作成する
  3. インストール&実行してアプリ終了する
    1. db/setting.jsonファイルが自動作成される
  4. db/setting.jsonに以下をセットしファイル保存する
    1. username:任意のGitHubユーザ名
    2. email:任意のGitHubメールアドレス
    3. token:repoスコープ権限を持ったトークン
    4. repo:任意リポジトリ名(mytestrepo等)
    5. address:任意モナコイン用アドレス(MEHCqJbgiNERCH3bRAtNSSD9uxPViEX1nu等)
  5. dst/mytestrepo/.gitが存在しないことを確認する(あればdstごと削除する)
  6. GitHub上に同名リモートリポジトリが存在しないことを確認する(あれば削除する)

実行

  1. npm startで起動またはアプリでCtrl+Shift+Rキーを押す(リロードする)
  2. dst/リポジトリ名/配下にサイト用ファイル一式が作成される

今回はデバッグのためアップロード処理をコメントアウトした。なのでアップロードはされない。詳しくはsrc/js/render.js参照。

今回やったこと

site-maker.js

  • 未使用ライブラリ等をアップロード対象から省く
  • アップロードファイルとして作成する
    • README.md
    • LICENSE.txt(cc0-1.0
    • index.html
      • サイト元リポジトリURLリンク追加
      • Copyright追加

replace()

作成ファイルの一部は以下のように自動置換する。

README.md

{{ProjectName}} this.setting.github.repo
{{Description}} 著者のつぶやきを掲載するサイトです。
{{SiteUrl}} https://${this.setting.github.username}.github.io/${this.setting.github.repo}/
{{MakeToolUrl}} https://github.com/ytyaru/Electron.MyLog.20220904092353

{{MakeToolUrl}}の値はいつか完成版ができたらそのURLにする予定。

index.html

{{username}} this.setting.github.username
{{repo}} this.setting.github.repo
{{year}} new Date().getFullYear()

{{year}}は現時刻の年new Date().getFullYear()である。これが実行されるのはこのファイルindex.htmlが初めてアップロードされるときなので、現時刻でよい。最初ははじめてのつぶやきのcreatedにすべきかと思ったが、この年は著作権が発動する年、つまり公開日時の年なので、はじめてpush(アップロード、公開)したときの年でよい。

発見したバグ

  • 内部リンクが機能しない
    • <a id="id-0">, index.html#id-0

内部リンクが機能しない

<a id="">にセットする先頭文字は数字だとダメらしい。そこでid-を先頭に付与してID値をセットするよう変更した。

それでも機能しない。

原因と対策

原因は動的にHTMLを作成しているせいか? ブラウザのURL欄にアンカーつきURLを入力すると、HTMLを作成するプログラムが走る。そのあとでアンカー箇所にスクロールしてほしかったが、スクロールしない。もしかすると、スクロールさえもJavaScriptで実装せねばならないのか?

根本問題

そもそも内部リンクは本当にこのような形式でいいのか?

  • つぶやき一件ごとに独立したページをもたせたほうがいいのでは?
  • それは静的HTML、動的HTMLどちらにすべき?

仮に今のまま1ページに全件表示するとしたらパフォーマンス問題が出てくる。

  • 最新順に20件ずつ表示するなどすべきでは?
  • その場合つぶやき一件ごとに独立したページも作るべきでは?

ちゃんと考えると、ものすごく大変なことになりそう。なので後回し。

課題

ライセンス

ライセンスについてまだちゃんと考えていない。Electronアプリのソースコードとサイト用コードのライセンスとは別なのでそれぞれ考えないといけない。

現状

リポジトリにはcc0-1.0のLICENSE.txtをアップしている。

対象 LICENSE.txt
Electronアプリ cc0-1.0
公開サイト cc0-1.0

なのに公開サイトのindex.htmlにはコピーライト© 2022 ユーザ名と書いてあるので矛盾した状態になっている。著作権をもつのか放棄するのかどっちだよと言いたくなる状態。

私としてはどちらに転んでもそれに対応するコードを実装できるようにしたかったので、とりあえず書いてみただけ。

どうすべきか

公開サイトのライセンスについては各ユーザが自由に設定できるのが理想。

ソースコードは私が書いたものをコピペすることになるが、データベースmylog.dbファイルは各ユーザが自由に入力したテキストになる。それがメインコンテンツになるので、その著作権やライセンスをどうするべきか。

ユーザが自由に設定できるにしても、どんなライセンスがあり、どれを候補とすべきかは調べねばならない。

ソースコードとHTML文書では別のライセンスになるっぽい。たとえば文書ならGNU自由文書ライセンスがあるし、画像や音声などの創作系ならcc-by-sa-4.0、ソースコードならmitなどがる。

コンテンツの種別や配布形態などによって、適用すべきライセンスが変わるらしい。

そもそも法律に関することなので難しそう。

それよりもちゃんとしたコードを書くほうが先なので当分は後回し。

所感

要件定義や設計など一切せずコードを書いているので、後から次々とやることが増えてゆく。思いついたらTODOみたいにチェックリストに残さないと覚えてられない。

かといって、キッチリやろうとしすぎるとしんどくなってしまう。楽しめる範囲内でやることを心がけたい。