非プログラマ的人間がUserScriptを調整するための知識
ふだんプログラミングしないけど、Scrapboxの
UserScriptはちょっといじってみたい……という人はいると思う。私もそのうちのひとりである。
そこで、UserScriptをいじるための最低限の知識みたいなものを書いてゆけば有益かなと思った。
ちなみに書き手も非プログラマである。
ここでの「
非プログラマ」というのは、「職種としてのプログラマではない人」という意味ではなく、「日常的にコードを書かない人」を指すこととする。
まえがき
どうすればUserScriptを実行できるか
UserScriptを実行するには、自分のページに
コードブロック記法でコードを書く必要がある。
しかも、コードブロック記法をするときに、「script.js」というファイル名を付けねばならない。
実践
別なページにコードを書いて、それをimportするという手もあるが、あまり気にしなくていい。
いや、気にするかしないかは私が決められることではない。
ちなみに、
jQueryは普通に使える。その他は知らない。jQueryのことはよく分からない
JavaScriptのことを知らないのに、どうすればコードを書けるか?
ググる!
したいこと+JavaScriptでググりながら調べてゆく。
「developer.mozilla.org」で調べると公式っぽいことが分かるが、非プログラマからすればこれを見てもよく分からない。(が、これで順序だって学んでゆくのが近道かもしれない)
とりあえず私がよく使う情報を書いてゆこうと思う。
(すなわち、みなさんがほしい情報を書くのではなく)
情報
私は最近までこれを知らなかった。
知らないので、Google検索で出てくる限りでのクラス名しか知らなかったし、デバッグはアラートでやっていた。どういうことかというと、きわめて非効率的なことをしていたということだ。
デベロッパーツールはGoogle Chromeの右上のメニューを開いて、「その他のツール」というメニューのなかにある。それを押すと、画面の右側がなんかプログラミングっぽくなる。
Elementsというのも沢山使うのだが、いま紹介したいのはConsoleという部分だ。
ここにJavaScriptを書くと、何かが起こる。
(非プログラマが)ふつうに生きていても、こんなことを教えてはもらえない。
とりあえず、ここに「scrapbox.」と入力すると、色々でてくる
ここで一行ずつコードを試せる感じかな?
次に、「console.log()」というものを知っておきたい。
これをなんと説明すればいいのか分からないが、
「いま自分がやっていることを確認するためのもの」である。
UserScriptに
>こういうのは、「定数値」であって、 "こんにちは"
はどう頑張ってもいつまでも "こんにちは"
だ。
>いっぽう、「変数」というのもある。数学で使うxとかyとか。
>定数とか変数とかが「オペランド」と呼ばれるんだと思う。
> 1
とかは数値リテラルかな。 true
はbooleanリテラルなど。いろいろある。
>関数リテラルもあるらしい (function(arg1){console.log(arg1)})
みたいなやつ
この文章をConsoleに表示させる方法がある。
それが、 console.log()
である。
これは、Consoleに「こんにちは」と表示させるコード。
自分のページにこれを書いてから、デベロッパーツールを表示させたうえで、Ctrl+Rを押すと、(たぶん上に緑色のUserScriptしますか?みたいなボタンが出てきて、それを押すと)consoleに "こんにちは"
と表示されるはずだ。
いや、表示されないけど?……となる人もいると思う。
データには型がある
「型」じゃ分からない
オブジェクトとは何か?
Pythonで言うところの辞書
↑ますます分からない(

も分かってない)
連想配列
そもそも「配列」ってなに?
変数
変数に入ったものは何なのか?
文字か?
数値か?
オブジェクトか?
関数リテラルか?
↑これらを理解するために、その前に、データ型を紹介する必要がある
今日の日付の獲得
ページメニューの設定
addItem
画像あってもなくても
addButton
画像必須
ポップアップメニューの設定
jsscrapbox.PopupMenu.addButton({title: "string", onClick: function})
// ScrapboxのPop-up Menuにbottonを加える.その時の表示名は"string"で,clickしたときに動作する.
今開いているページの情報の取得
scrapbox.Page
ウィンドウを開く動作
別窓でURLを開く
window.open(url)
ページを移動する
jsconst url = "任意のURL";
window.location = url;
ウィンドウの位置を、URLのファイルに変更するって感じかな?

プログラマからのフィードバック
まずChromeのデベロッパーツールを開く
1+1と入力すると2が表示される
console.log
ここで必要性がわからないと言われそう
alertで説明したほうがいいか?
ScrapboxのUserScriptにconsole.logを書く
リロードしたらデベロッパーツールに出力があるはず
ここまでが「最初の一歩」だと思う
次にこのコードを一部間違えた時にどうなるのかを観察すると良いと思う
引用符が足りないとか、括弧の数が合わないとか
オブジェクト(辞書)とか型とかはアドバンストな内容
コーディングを支える技術 p.143