サイト用ファイル作成を改善した。
ブツ
インストール&実行
NAME='Electron.MyLog.20220904092353'
git clone https://github.com/ytyaru/$NAME
cd $NAME
npm install
npm start
準備
- GitHubアカウントを作成する
repoスコープ権限をもったアクセストークンを作成する- インストール&実行してアプリ終了する
db/setting.jsonファイルが自動作成される
db/setting.jsonに以下をセットしファイル保存するusername:任意のGitHubユーザ名email:任意のGitHubメールアドレスtoken:repoスコープ権限を持ったトークンrepo:任意リポジトリ名(mytestrepo等)address:任意モナコイン用アドレス(MEHCqJbgiNERCH3bRAtNSSD9uxPViEX1nu等)
dst/mytestrepo/.gitが存在しないことを確認する(あればdstごと削除する)- GitHub上に同名リモートリポジトリが存在しないことを確認する(あれば削除する)
実行
npm startで起動またはアプリでCtrl+Shift+Rキーを押す(リロードする)dst/リポジトリ名/配下にサイト用ファイル一式が作成される
今回はデバッグのためアップロード処理をコメントアウトした。なのでアップロードはされない。詳しくはsrc/js/render.js参照。
今回やったこと
site-maker.js
- 未使用ライブラリ等をアップロード対象から省く
- アップロードファイルとして作成する
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みたいにチェックリストに残さないと覚えてられない。
かといって、キッチリやろうとしすぎるとしんどくなってしまう。楽しめる範囲内でやることを心がけたい。