Scrapbox機能拡張から本体開発へ (daiiz)
こんばんは
ユーザー、インターンを経て、今月入社しました
マイブーム
左側で編集しているプロジェクトと別のStreamを流しておくのも、更新に気づけて便利です
Scrapboxを好きなだけ拡張していく話をします
5分しかないですが二部構成です
インターンに参加してさらに拡張し、入社した話
見た目のカスタマイズや独自機能を付けたい
UserCSS、UserScriptでできる
projectの見た目をカスタマイズできる
少々上級者向けの機能
自分に対してのみコードを実行できる
自分のページにコードを書けば、お手軽に実験できる
UserScriptドハマリ時期
Scrapbox上でプログラミングできる体験が新鮮だった
書いては実行して試す、の繰り返しが超簡単にできる
快適!
どうなるか?
ブラウザでのエラーを収集している
Sentryのログに
daiiz
が入ったURLが大量に出てくる
Slackに流れてきて気付いてびっくり
clientでのスクボ本体のエラーが見えない状況
やばい
UserScriptのエラーを送信しないようにしたのがインターンでの初仕事
落ち着きを取り戻した
カスタマイズを共有したい
Drinkup 1 での交流でカスタマイズ話を沢山聞けて面白かった
CSSやJavaScriptのコードを見せ合う場所が欲しい
コードが多少わからなくても、真似するものがあれば、自分流に調整できる
新作が共有されると、毎回見に行って感激しています
もっと実験しやすく、コードの更新を素早く伝えたい
Chrome拡張機能を作った
ストアを更新すると各clientが自動で最新状態が保たれるのがいい
機能ごとにON/OFFできる仕組みを考えた
Scrapboxから離れずに設定できるようにしたかったのでUserScriptで書けるようにした
js$('body').attr('data-daiiz-rel-bubble', 'off'); // 関連ページを吹き出し表示する
$('body').attr('data-daiiz-text-bubble', 'on'); // リンク先ページのテキストを表示する
$('body').attr('data-daiiz-icon-button', 'on'); // アイコンをボタンにする
仕組み
MutationObserver を使って拡張機能側で data-daiiz-*
属性の変更を監視しておく
UserScriptで data-daiiz-*
に対して値をセットする
拡張機能側で機能のON/OFFが切り替わる
主な機能
リンクをホバーして吹き出しを表示する
関連ページをその場で見れる
遷移先のページの内容をプレビューできる
アイコンをボタンとして使う
[diary-button.icon]
などと書くとボタンとして認識される
クリックすると diary-button
ページ内の code:button.js
が実行される
ScrapboxのUIを崩さずに好きなだけボタンを置ける
インターン
社内のスクボが凄い
既存コンテンツがそのまま
向けの教科書に早変わりする
新メンバーでも必要なページが自然と見つかる
一旦ページに入ると、次に読むとよいページが湧いてくる
いま知りたいこととは直接的には関係ないが、関連性はある、周辺知識を吸収できる
気になるものから作る
作ってからでないと良し悪しがわからないものもある
前から作りたかった機能を付けてみたりしたが、しっくり来なかったりした
window.scrapbox
を拡張させた
これまで
が自前で拡張していたことを、標準機能でやりやすく
TimeStamp
Ctrl+T
で日時を入力できる
UserScriptから好きなフォーマットを設定できる
見出しメニューなどを作れる
一つのページにメンバー各々の意見を書いているときなど、各人の行にジャンプしやすくて便利
Scrapbox本体機能への初コミット
外出先からも書きたい
エディタの実装を学んで、モバイルにも応用した
テキスト範囲選択のUIがよくできて気に入っている
大雑把に始点・終点をなぞればいい
最近、普通ののウェブページ上でもやってしまう
書きやすくなっているはず
入社
いちユーザーとして始めた機能拡張の最終進化
とにかくワクワクしている
Scrapboxを作り続けます
自分だけの用途にしばられた機能にならないように気をつける
究極の書きやすさと議論のしやすさ、書き溜めた情報を繋いで活かせる世界を目指したい