Text
Page: 1
ソースコード参照 URI の考察と作成し
たツールの紹介
西田雄也
2023-09-16
Powered by Rabbit 3.0.3
Page: 2
自己紹介
西田雄也 ネットワーク応用通信研究所
GitHub: https://github.com/nishidayuya
X(旧Twitter): https://twitter.com/nishidayuya
なにかツールを作るのが趣味
git-cococo: Gitの作業ディレクトリ上で実行したコマンドによる変更を
コミットメッセージに残しながらコミットするコマンド
img_to_pdf: 画像ファイルを大きく印刷するために複数ページのPDFに
するコマンド
redmine_ruby_wasm: Redmineに書いたRubyのコードを実行
dpu: 今日紹介するもの
1/33
Page: 5
想像してください
とあるウェブサービスのクライアントプログラムの改修をして
いました.
POSTする際のデフォルトのタイムアウト時間は60秒でした.
なぜ60秒であるのか.
調べたところ,ある pull-request に辿り着きました.
4/33
Page: 9
なぜでしょうか
コメントが書かれた当時(2021-01-07)は合っていた
↓
対象リポジトリの開発が進んだ
当該コードの行番号が変わった
↓
コメントはそのままのため,不適切な位置になった
8/33
Page: 10
発生する場面
今回は pull-request のコメントでした
ソースコード上のコメント
X(旧Twitter)のポスト
ブログ記事
…
↓
ソースコードを参照する URI を書く全ての場面
9/33
Page: 13
どうすれば良かったのか
ブランチ名による URI
https://github.com/ruby/ruby/blob/master/lib/net/http.rb#L690
↑↑↑↑ここ
12/33
Page: 14
どうすれば良かったのか
ブランチ名による URI
https://github.com/ruby/ruby/blob/master/lib/net/http.rb#L690
↑↑↑↑ここ変える
↓
コミット ID かタグを元にした URI にする
https://github.com/ruby/ruby/blob/
4d0985a7bd8f591dff4b430e288bfd83af782e51/lib/net/
http.rb#L690
masterブランチに新しいコミットが積まれてもそのままで
OK!
13/33
Page: 16
GitHub.comの場合
三点リーダークリック→「 Copy permalink 」クリック
y C-l C-cでコピーしても良い
コミット ID を元にした URI が得られる!
15/33
Page: 19
でも…
いちいちウェブブラウザ上でソースコードを参照するのは面倒
テキストエディター上で読むことが多いため
手で URI を作るのも面倒
↓
手元のテキストエディターからサクッと URI を取得したい.
↓
18/33
Page: 21
エディターの拡張を書こう
自分が使うテキストエディター
Emacs: 普段使い
Textbringer: 軽い編集時
Vim: sudoで編集するとき
Visual Studio Code: ペアプロ・モブプロ時にLiveShare
↓
いっぱいある
20/33
Page: 22
エディターの拡張を書こう
自分が使うテキストエディター
Emacs: Emacs Lispで書く
Textbringer: Rubyで書く
Vim: Vim scriptで書く(らしい)
Visual Studio Code: TypeScriptやJavaScriptで書く
↓
URIを決定するのはRubyで書いて各拡張から呼びだそう!
21/33
Page: 24
dpu.gem: determine
permanent URI
gem install dpu
https://github.com/nishidayuya/dpu
タグを使った URI を生成するメソッドとコマンド
最新20タグ以内に同一内容のファイルがなかったらコミット ID を使う.
↓
ブランチ URI の悲劇は起こさない.
23/33
Page: 25
dpu.gem
なぜタグを使うか.
短い
https://github.com/ruby/ruby/blob/v3_0_0/lib/net/http.rb#L690
https://github.com/ruby/ruby/blob/
4d0985a7bd8f591dff4b430e288bfd83af782e51/lib/net/
http.rb#L690
動いているプログラムの調査をするときは,
動かしているバージョンのソースコードを調べる.
URIを見ただけでバージョンが明らか
24/33
Page: 26
dpu.gem
対応している SCM のサービス
GitHub.com
sourcehut
pull-requestいただきました
(GitLab.com)
25/33
Page: 27
dpu.gem - EmacsとTextbringer
https://github.com/nishidayuya/dpu に設定方法
Emacs
.emacsに書いて使う
Textbringer
.textbringer.rbに書いて使う
直接 dpu.gem のメソッド呼び出しをしている.
26/33
Page: 28
dpu.gem - Vim
自分が Vim script わかってない
sudoで編集するときなので作っていない
↓
どなたか作られましたらご連絡ください!
27/33
Page: 29
dpu.gem - Visual Studio Code
Marketplaceに出してます
Copy permanent URL で検索
https://marketplace.visualstudio.com/items?
itemName=nishidayuya.copy-permanent-url
2023-09-15時点のインストール数は脅威の
28/33
Page: 30
dpu.gem - Visual Studio Code
Marketplaceに出してます
Copy permanent URL で検索
https://marketplace.visualstudio.com/items?
itemName=nishidayuya.copy-permanent-url
2023-09-15時点のインストール数は脅威の
29/33
Page: 31
dpu.gem - Visual Studio Code
ruby.wasmを同梱して呼び出そうと考えた.
↓
dpu.gemのインストールをしなくても
拡張をインストールしたら使えるように
(Rubyが入っていないとしてもすぐ使える)
30/33
Page: 32
dpu.gem - Visual Studio Code
ruby.wasmを同梱して呼び出そうと考えましたが…
↓
dpu.gemは中でGitのコマンドを実行する.
https://github.com/ruby/ruby/blob/
a1dc1a3de9683daf5a543d6f618e17aabfcb8708/wasm/
README.md#current-limitation より
Spawning a new process is not supported. e.g. Kernel.spawn and
Kernel.system
ruby.wasmの下にあるwasi libcをコマンド実行に対応させる
必要がありそう…→調査できてない
31/33
Page: 33
類似ソフトウェア
Emacs
git-link: https://github.com/sshaw/git-link
Vim
vim-github-link: https://github.com/knsh14/vim-github-link
Visual Studio Code
GitHub Pull Requests and Issues
vscode-copy-github-permalink
Copy GitHub URL
32/33
Page: 34
まとめ
ブランチへの URI は古くなる→やめよう
タグまたはコミット ID を使った URI を使う
ツールもあるよ!
スターはこちら→ https://github.com/nishidayuya/dpu
Powered by Rabbit 3.0.3
33/33