#format gfm # MMA RFCのススメ この記事は[MMA Advent Calendar 2016](http://www.adventar.org/calendars/1414) 15日目の記事です。 昨日14日目は、h_otterくんの[自宅サーバーラックについて](https://wiki.mma.club.uec.ac.jp/h_otter/AdventCalendar2016)でした。 置く場所辛いの分かる。なんか、研究室とかに置いてあるとかっこいいってなるのに、家に置いてもかっこいいと思うの自分だけだし、辛そう(僕はラックは買ってないです)。 さて、今日は二回目ということで、前の記事を見た方はお久しぶりです。この記事で初めてという方は初めまして。mizunashi_manaです。今回は、MMA RFCというMMAで導入して間もない仕組みの紹介を、部内外に向けてしたいと思います。 ## MMA RFCとは さて、MMAは大学の公認サークルという位置にいる団体です。基本的に何もせず、部員から部費だけを巻き上げている悪徳団体ですが、そんな団体でも、定期的に大学の公認サークルとして幾つかやるべきことが発生します。例えば、一年に一回大学に活動報告書というものを提出しなければなりませんし、部員名簿も提出しなければなりません。その他に、サークル棟の利用者として清掃に参加したり、調布祭に一サークルとして出店したりもします。また、不当に巻き上げているとはいえ、その部費を管理する必要もあります。また、大学の公認サークルとして、会則を整備する必要もあります。この辺の話は、suwagiさんが、[8日目の記事](http://46m44s.hatenablog.jp/entry/2016/12/08/000000)で解説してくれてたりしますが、まあ何しろ色々しなければならないことがあるのです。 さて、MMAは情報技術系関連の知識を持った人たちが有象無象してる、謎の団体ですが、まあおそらく理系の特質なのでしょう、結構な堅物が多くいる団体でもあります。僕もその堅物の一人です。古くから割ときちんとした方の会則が整備されていて、様々な部内での取り決めが整備されています。しかしながら、その文書データの管理方法が結構杜撰だったり、あまり守れていると言える状況でなかったり、そもそも文書データが現状に追いついていなかったりという問題があり、昔から指摘されながらも改善されていなかった点です。 そこで、この問題点を根本的に改善すべく僕が立ち上げたプロジェクトがMMA RFCプロジェクトです。今までは、取り決めや部の運用方法などの文書は部のWikiに集約されていたのですが、これを部のgitリポジトリ(GitLab)に移し、IssueとMerge Requestによって管理しようというプロジェクトです。この移行によって次の点を狙っています。 * 誰でも問題提起が簡単にできるようにする * 修正がきちんと部の目を通るようにする * 修正に対してきちんと議論ができる場所を提供する * Wiki以外でも文書が閲覧できるよう汎用的な文書フォーマットを採用する 今までのWikiでの管理は一般的には次のような管理方法になっていました。 * 文書はMoinMoinウィキフォーマットで、Wiki内でしか閲覧できない * 修正自体はWikiの差分表示機能によって確認できたが、修正内容に対して議論することはできなかった * 修正を入れる際は、一度修正版の新しいページを作成するという苦肉の策が存在した * ページに問題がある場合、Discussionページというそのページに紐付いた場所で議論がされていたが、ページの編集でコメントを付けているだけなので、リアルタイム性に乏しい上にスレッド管理がしにくかった それをMMA RFCでは次のように対応させました。 * 文書のカテゴリ別にgitリポジトリを用意する(取り決めなどはrulesリポ、マニュアルはbusinessリポなど) * 文書はMarkdownフォーマットで管理。Wikiフォーマットへの変換スクリプトを用意 * リポジトリ全体はGitBook形式で管理 * 文書への問題提起はイシューを立てるようにする * 文書への修正はマージリクエストを立てるようにする * 各イベント(イシューがたった、マージリクエストにコメントがついたなど)ごとに部内チャットへ通知 これによって、管理体制は非常に改善されたと思います。ただ、現状人の手が足りておらず、以下のことが実現できていません。 * Wikiへの文書の自動反映(自動で変換スクリプトを動かして、自動で反映させる) * 各既存のWiki文書のRFCへのマイグレート * 運用体制の明確化と、文書化、そしてその周知 ちょっと現状僕が忙しくて、あまり主導してくれる人がいないのが原因でしょうね。その辺は見直すべき点だと思っています。おそらく、もうちょっと根幹部分を確立できるようにすれば、主導者がいなくても回ってくれると思うんですけどね。ただ、まだうまく回らせるところまで達していません。 ## MMA RFCの由来 そもそも部内では、現状が取り決めなどの整備に終始しているせいで、堅物達が法学ちっくな理論をこねくり回す何かに見えているのかもしれなくて、あんまりプロジェクトへの参入者がいないのですが、このプロジェクトの由来と目的は違う場所にあるので、この機会を借りて少々紹介しておこうと思います。 RFCという名前は、情報技術の分野に携わる人なら、一度ぐらいは耳にしたことのある言葉でしょう。しかしその実態に関しては、おそらく多くの人が、「RFCに準拠」などという言葉から何やら難しげな文書を管理している何か正式な機関の名前だろうと思っていると思います。というか、僕は初めて聞いた時はそう思いました。 実はRFCの歴史については、[RFC2555](https://tools.ietf.org/html/rfc2555)というそれ自体がRFCに書き記されています。日本語に訳してくれた人が[その文書も公開している](http://radio-age.com/misc/rfc-trans/2555.html)ので、興味を持った方は読んでみると面白いと思います。また、RFCの簡単な仕組みについては、注意喚起を兼ね備えた[RFC1796](https://tools.ietf.org/html/rfc1796)を読んでみると面白いと思います。こちらに関しても、[日本語訳](https://suika.fam.cx/rfc/ja-translations/rfc1796-ja.html)があります。 さて、RFCの実際の名前は"Request For Comments"、日本語訳すると「コメント募集」です。「え?」と思われるかもしれませんね。元々RFCとは、自分たちの考えたアイデアを公表し、それについての意見を広く募集するための場を提供することを目的としたシステムであり、それを運営するワークグループでした。今は、標準化プロセスなどが整備されており、技術仕様を保存し、公開する場となっています。 上の文書で、RFCの創始に関わったSteve Crockerは、その動機をこう述べています。 > ミーティングを何ヶ月か積み重ねた後、私たちは、自分たちの考えを、書き下す必要がある、と感じたのだった。私たちは、自分たちの仕事を分担し、いくつかのメモを書き起こした。その技術的なデッサン作業に加わることに加えて、そのノートに番号を振り、配布するための簡単な手順を準備するという、管理的な役割を受けもった。私たちのグループは、公式のものでなく、幼く、お上からお墨付きをもらっていたわけではなく。だから、私はそれらが、何かをコントロールするための自己主張などではなく、ひとつの対話の始まりなのだ、ということを強調したかった。 また、その後こうも述べています。 > 最初のRFCから、30年の歳月がながれた。昔、私は、そのような覚書(ノート)たちが一時的なメモにすぎないと思っていた。一年もたったら、それとも、いったんネットワークが動き始めれば、そのシリーズは確実に死に絶えるだろうと思っていたのだが。 そう、今や画期的なアイデアの宝庫であるRFCも、最初はただ実直なアイデアと、ほんの一握りの自分たちが書いた文書を皆に見てもらおうという勇気からはじまったものなのです。そのような面もあって、多数の運用面での改善や、標準化プロセスなどが整備された今も、一つの信念を持って運用がされています。それは「誰でも閲覧可能で、誰でも議論に参加できること」です。 今日では、とても多くの文書が集まっていますが、RFCはその気軽さを常に認識できるよう(?)、現在も毎年一回以上ジョークRFCを出す慣例があります。聞いたことがある人もいるかもしれませんね。[RFC5984](https://tools.ietf.org/html/rfc5984)「超能力転送によるIPネットワークのスループット増加」、[RFC7168](https://tools.ietf.org/html/rfc7168)「給茶機向けのハイパーテクストコーヒーポット制御プロトコル(HTCPCP-TEA)」などです。 MMA RFCは名前の通り、このRFCにあやかって、「MMA内での文書やアイデアを部内で公開して、誰でも気軽に自由に意見が出せるような場の提供を目的とする」という意味を込めています。 現在は、プロジェクトに関わっているアクティブなメンバー的に、会則の文書の見直しや取り決め事項の整備に重きが置かれていて、その部分が活発ですが、MMA RFCプロジェクト自体は文書の管理方法を見直すプロジェクトで、他にも部内での役職の職務のマニュアルや、イベントの開催方法のマニュアルなどを作成するタスクなどもあります。また、RFC文書を管理するためのシステムの開発なども行っています。 ## 導入後の経過報告と展望 現在は、GitLabのmma-rfcというグループとSlackの#mma-rfcで主に活動をしています。 Wiki文書へのフォーマット変換について、いくつか不具合が見つかっていたり、MMAWikiにあってMarkdownにはない機能などがあり、その辺の見直しを行っていたり、リポジトリの分け方があまり明確になっておらず、その辺の明確化もしたいなあというところで止まっています。 現在は、主に来年の総会に向けて会則の修正や新たな枠組みの制定などに時間が取られていて、あまりMMA RFCプロジェクトでの進展はないという感じですね。 会則や諸々の規則に関してはマイグレートがほぼ済んでおり、その他に関してはあまり見直しが進んでいません。ただ、会則の修正などに関しては、前よりも見通しよく行えていて、良いという感じですね。 将来的には、まずMMA RFCの枠組みで文書を管理することに慣れていってもらいたいという感じで、そのためにプロジェクトメンバーを募集中という感じです。残っているタスクとしては、 * GitLabで扱えるように部内でGit講習/GitLab講習をするようにしたい * 運用方法を明確化して、それを文書化しておきたい * WikiへのMMA RFC文書の対応付け方法の決定 * Wikiへの自動反映ツールの開発 * Wiki上の既存文書のMMA RFCへのマイグレート * 匿名での意見を提出できるシステムの開発と運用 * GitBookでの各文書を閲覧できるサーバの開発と運用 です。興味を持ってくれた部員は僕までご連絡してもらえればと思います。 ## 最後に 人間の口で言ったことは消えてしまうことがありますし、その場では多くの人に伝わるでしょうが、より多くの人、つまり全員に無制限にアイデアを伝えるには、口よりも手で文書化することが大事でしょう。RFCのアイデアを一番最初に出したと言われているSteve Crockerも、おそらくワークグループ内での議論が白熱していき、多数の面白いアイデアが出てくる中、同じことを思ったのだと思います。 MMAでも、30年後に「MMA RFCの30年」という文書が出せるような歩みをしていければなあと思います。宜しくお願いします。 明日16日目は、ApparitionKくんの鍋会の話だそうです。 また、5日後にお会いしましょうノシ