サイト用ファイル作成を改善した。
ブツ
インストール&実行
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みたいにチェックリストに残さないと覚えてられない。
かといって、キッチリやろうとしすぎるとしんどくなってしまう。楽しめる範囲内でやることを心がけたい。