clojure-emacs org にリポジトリ提供した話
このページは Clojure Advent Calendar 2019 の6日目の穴埋めに向けたものです。
つい最近、clojure-emacs org にリポジトリを transfer しました。
あまりない経験なので clojure 色はあまり強くないですが簡単にまとめてみたいと思います。
uochan.icon2019/12/15 追記:
bbatsov 氏が CIDER 目線での ClojureDocs 対応について記事を投稿されていました!
https://metaredux.com/posts/2019/12/14/exporting-clojuredocs-as-edn.html
uochan.icon追記ここまで
経緯
Clojure を書いている人であれば Grimoire の存在を知っている人は多いかと思います。Clojure のドキュメントをまとめたサイトで、利用者が各関数の使用例などを登録できたので、具体的にどう使うのかを知りたい時に重宝していました。
とくに CIDER を利用している場合はエディタ上で Grimoire のドキュメントを参照できたので利用していた方も多いのではないでしょうか?
そんな Grimoire ですが 諸々の理由 で deprecated となってしまい、代わりに ClojureDocs を使おうという流れが CIDER でも出来ました。
Purge grimoire
ちょうど個人的に作っている vim プラグインで ClojureDocs 連携を実験していたこともあり、軽い気持ちで「こんな実装あるけどどう?」と声をかけてみたところ反応が良かったので、orchard と cider-nrepl に ClojureDocs 連携のPRを出す流れになりました。
JSON -> EDN
ClojureDocs は JSON でデータをエクスポートしていて、当初はそれを直接使った実装でした。
ただ orchard は基本的に外部ライブラリに依存しない方針であるため、JSONをパースするためのライブラリを dependencies に追加するのはいい顔をされませんでした。
なのでコアライブラリのみでパースできるので EDN 形式にしよう!という流れになったのですが、データの提供元である ClojureDocs 側は EDN 形式でのエクスポートをサポートする予定がないようで、それなら自分たちで用意すればいいんじゃね?ということで出来たのが以下の2つです。
https://github.com/clojure-emacs/clojuredocs-export-edn
clojure-emacs org に transfer 済み
https://clojuredocs-edn.netlify.com
bbatsov 氏に transfer 済み
やっていることは至極単純で、CircleCI の schedule を使って毎日 ClojureDocs から JSON データを引っ張ってきて、EDN 形式にして Netlify にデプロイしているだけです。
CIDER 0.22.0
その後データの微修正やら何やらを経て、CIDER 0.22.0 にて ClojureDocs サポートがついにリリースされました!
https://metaredux.com/posts/2019/09/12/cider-0-22.html
Another important addition to CIDER 0.22 is ClojureDocs support. This replaces completely the Grimoire support that existed in previous versions of CIDER.
ぱっと見、ClojureDocs を参照する時にしか使われてなさそうですが、関数のドキュメントを参照した際に表示される see also もこのデータを使って表示しているので、目にしたことがある方も少なくはないのでは?と思っています。
いやー良かった良かった。めでたしめでたし。崇め奉って。
となれば良かったのですが、少しずつ魔の手は忍び寄ってきていました。
100GB
発端は Netlify からのメールでした。
You’ve reached 50% of your current bandwidth allowance on Masashi Iizuka's team
50% とは?と思い Netlify の Plan details を見たところ 50GB の bandwidth を使い切ってました。
EDNファイルは現状1.5MBほどなので3万回以上ダウンロードされたということでしょうか。(1度ダウンロードするとリフレッシュするまでは1週間ローカルに保存したキャッシュを利用します)
無料プランなので 11/10-12/10 の 1 ヶ月間で上限が 100GB。メールを受け取ったのが 11/25 だったのでまぁ大丈夫かな?と思っていたところ
You’ve reached 75% of your current bandwidth allowance on Masashi Iizuka's team
追撃が4日後にきました。
4日で 25GB だと確実に間に合わないと思い急遽、Netlify のサイト毎 clojure-emacs 側で引き取ってくれないか?という打診をしてみました。
Can clojuredocs-edn-export be hosted by CIDER team?
最後に
引き取りについては色よい返事がもらえ、github のリポジトリは移管して、Netlify のサイトは手続き中です。 手続きが終わって bbatsov 氏に確認中です。
「こんなのどう?」という一言からなかなかできない経験ができたのはラッキーだったなぁと思います。
また手続きの流れで clojure-emacs org のメンバーに入れてもらうことまでしてもらったので(それまでに小さなPRを出したりはしていましたが)、気を引き締め直して clojure-emacs へもっと貢献できたらなと思います。Vimmer ですが。
#Clojure #Advent_Calendar #記事
#2019-12-06 #2019-12 #2019