今日はclfreaksについて話します。今回はライブラリではありません。Lispのコミュニティサイズは絶望するほど小さくはありませんが、決して大きくはありません。Awardsの世界ランクトップの総スター数を比較すればおおよそのコミュニティ規模がわかるのではないかと言っていました。スターする人の多くはそのコミュニティに属する人だと予想できるので、正確ではなくともあながち間違った指標でもないかもしれません。Lispの一位は僕の3040です。Rubyの一位はHomebrewの75968、二位がthoughtbotの59813です。Lispの20倍〜25倍強のコミュニティサイズがあります。最近人気のGoはDockerの59126を一位として、Google、Golang、Hashicorp、CoreOSなど有名企業が並んでいます。CLの20倍ほどのコミュニティサイズです。Haskellはどうでしょうか。一位はjgmの9599です。他より小さいのは確かですが、これでもCLの3倍以上のコミュニティサイズです。同じくらいの規模だと、D言語とかですね。MLやPascalなどになります。Lispのコミュニティがどれほど小さいかが実感できます。コミュニティを大きくしたいコミュニティの規模が小さいとできることが限られてきます。代表的な問題としてはライブラリが足りないとか、あってもメンテナンスされてないとか、十分に枯れてないとか、ドキュメントがないとか、そういうことです。いったコミュニティでは何か作ったとしても誰も見てくれなければ承認欲求も満たされません。すると作り手も増えません。ライブラリは依然足りないままという悪循環。Lispにはずっとあると僕は思っています。Shibuya.lispそういう視点から言えばShibuya.lispが2008年からずっと定期的に開催され続けているというのは奇跡的かもしれません。一度運営が入れ替わり、運営方針がガラッと変わりました。3ヶ月に1回のお祭りイベントから、毎月開催のMeetupイベントへ。参加者も順調に伸びていて、発表者も毎回3人ほどいます。当初の「発表者がいない。自分はコミュニティ運営のようなマメなことは向いておらず、Shibuya.lispの運営メンバーに名を連ねてはいるものの全く手伝えていませんでした。Lisperの友人たちを集めてハッカソンをやるということを始めました。みんな多かれ少なかれオープンソース開発者なのでGitHubでどういうプロダクトを作っているとかはざっくりと知ってはいるのですが、それでも一堂に集まることには意味がありました。問題意識が共有できるし、苦手分野についてより詳しい人に直接質問したりできます。お互いのプロダクトを使い合うような間柄なので、もしIssueを上げるか迷っているような問題を抱えていたら相談もできます。プロダクト制作者としてはユーザーから直接意見を聞ける場でもあります。毎回参加する顔ぶれはだいたい同じでした。僕の知り合いくらいの狭い範囲で集まっており、これも一種のコミュニティと言えるのではないでしょうか。参加するにはメンバーからの紹介が必要なので会員制クラブみたいなイメージかもしれません。このコミュニティの名前は当初「小田急CL(仮)」でした。そのとき僕の自宅が向ヶ丘遊園駅の近くにあり、メンバーの3人が小田急沿線に住んでいたのでこの名前が(一時的に)つきました。clfreaks「小田急CL」に名前が決まったかと思われたある日、僕の気まぐれで名前が「clfreaks」になりました。会場(僕の自宅)が場所を移しても違和感のない名前をつける必要があること、それからださい、っていうのが主な理由でした。して始まったclfreaksのハッカソンですが、僕自身にはハッカソン以外にもやりたいことがありました。clfreaksというのはShibuya.lispと違っていわゆるクローズドなコミュニティです。そこで得られた知見などはメンバーしか知ることができないということです。知識がインターネットで共有されることで価値を生むということを意義としていたWebプログラマの僕としてはクローズドなコミュニティはいただけません。情報をクローズドに保つのは健全ではないでしょう。いうわけで解決策としてハッカソンと並行して始めたのがPodcastでした。Podcastまあ聴く人なんてほとんどいないと思うけど、clfreaksでPodcastやってみようぜ、ってノリで始めたPodcastだったので終始雑な感じでした。Podcastを始めてみて発見もありました。今までGitHubやTwitterやブログなどでは伝えられなかったことが伝えられるようになっているという感覚です。Lispを書いているメンバーが今何を課題と思っているのか、ってどれだけの人に伝わっているでしょうか。個々の完成物をGitHubや紹介ブログで見ることはできます。clfreaksのPodcastはそのずばり解決になっていると思っています。音声データなので聴く人は限られるかもしれませんが、まあ全くないところからは一歩進歩です。その後Quicklisp作者のZachに拾われたりしてそれなりに反響もありました。2015年2月27日twitter.comこの一年はほとんどお休みでしたが、また一段落したら集まってclfreaksを開催する予定です。おわりにclfreaksはTumblrで運用されており、Podcastで聞いたりWebページでMP3を直接聞けたりします。詳しくは以下のURLをご覧ください。http://clfreaks.org明日のアドベントカレンダーは20日目のDexadorについてです。*1:先月、運営に主に携わってくださっていた神田(potix2)さんやκeenさんから終了のお知らせがありました。それを残念がる声もありつつ、次期の運営として手を挙げてくださっている方も複数人いらっしゃるので、Shibuya.lispというのはまだ継続する可能性が高そうです。*2:ちなみにこのアドベントカレンダーは、個々のプロダクトの背景を語ることで全体としての僕の課題意識とストーリーを知れるのではないかという試みから続いています。それぞれのプロダクトの紹介というよりも作られたバックグラウンドストーリーなどが中心の内容になっています。今日はtrivial-signalについて話します。土日に細かいライブラリ紹介が並んでいるのはただの手抜きです。Lispの課題として、スクリプトを書きづらいというものがありました*1。開発時はREPLなので問題にならないのですが、アプリケーションの起動などを考えればコマンドラインで起動できなければいけません。他のUNIXコマンドとの連携を考えてもCLIから離れられるわけではありません。これは8日目に紹介したShellyで解決しようとした課題でもありますが、それでもまだその他の軽量プログラム言語ほどの手軽さはありませんでした。その理由の一つがシグナルハンドリングでした。シグナルハンドリングシグナルハンドリングはUNIXでのプロセス間通信の方法の一つです。プロセスが特定のシグナルを受け取ったときにどうするかを指定しておけば他プロセスから制御することができます。スクリプトをターミナルで起動して、C-cを押すとINTが送られます。<pid>のように送ることができます。*2、当然シグナルハンドリングもできません。C-cをするとSBCLではSB-SYS:INTERACTIVE-INTERRUPTというコンディションが発生できSIGINTのハンドリング自体はできますが、これでは2つ問題があります。処理系依存である他のシグナルはハンドリングできない処理系可搬で、SIGINT以外のシグナルもハンドリングしたい。それを解決するために生まれたのが「trivial-signal」です。誰か作ってくれtrivial-signalに関しては、他に誰か得意な人がやってくれたほうがいい、と当初から考えていました。自分自身が使う機会も多くありません。いえ誰かが都合よく書いてくれるわけでもないので今必要な自分がとりあえず書く、けれどいつか誰かに引き継げるなら引き継ぎたいと思っていました。名前に"trivial"と含まれるライブラリはAPIが自明の小さなライブラリがほとんどで、言ってしまえば標準ライブラリのような立ち位置の名前です。"Woo"や"Envy"のようなユニークな名前でなく、公共性の高い名前を敢えてつけたのは、やっぱりあまり思い入れがなくメンテナンスも頑張るつもりがなかったからでしょうかね。domain"にしており、誰でも自由に使ってもらうようにしました。浅井さん登場そしてGitHubに置いてQuicklispに申請してほんの2ヶ月ほど。Requestを2つもらいました。Lispやclfreaks界隈をウォッチしている人はご存知かもしれません。Lispライブラリを公開しています。Requestをもらったとき、もはや早くもtrivial-signalの存在さえ忘れていました。実はこのライブラリあんまり使わないし、質を高く保てる自信ないんだよね。わかったというような二つ返事であっさりメンテナを引き受けてくれました。いった経緯で、trivial-signalはこのアドベントカレンダーで紹介するライブラリで唯一僕がメンテナではありません。作者にあまり愛されずにドナドナされた不遇なライブラリだと思うとかわいそうなのでここで紹介して罪滅ぼしとします。おわりにtrivial-signalはGitHubで公開されています。https://github.com/guicho271828/trivial-signalhttp://quickdocs.org/trivial-signal/明日のアドベントカレンダーは19日目のclfreaksについてです。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。