ぽよメモ

レガシーシステム考古学専攻

内部向けWikiに技術記事を書くモチベーションと意義,そして今の悩み

はじめに

 これはあくあたん工房アドベントカレンダー2019,2日目の記事です.技術の欠片もないポエムです.

 他の記事はこちらからご覧頂けます.

adventar.org

内部向けWikiとは?

 例えばサークル・研究室・企業など,何らかの集団において,そのメンバーが様々な情報の共有に使用するドキュメンテーションツールを指しています.どういったツールを使っているかは,その集団の特性等に大きく左右されると思います.例えば

などなど,色々なツールが開発・利用されています.僕自身はサークル・研究室共にesa.ioのお世話になっています.
 まだ学生の身なので企業内部でのWikiの使われ方はよくわかりませんが,今回の記事の中には通ずる部分もあるだろうと思っています.

ありがちな問題

 こういったツールの問題として,基本的に「よく書く人と全く書かない人に分かれる」というのがあると考えています.書かない人たちからは

  • 書くことが無い(何を書いたら良いか分からない)
  • ググれば出てくる
  • 書かなくてもみんな知ってる

などの声を聞くことがあります.特に,「既にググれば出てくるであろう知識」を書くモチベーションは欠けてしまいがちになっているように感じます.

ググって出てくるから書かなくて良い?

 そもそも,ググれば出てくる==書く必要が無いは本当に真なのでしょうか.

 現代のインターネットは非常に便利で,どう考えてもマイナーな内容でもググれば数件はヒットするという世界です.しかし一方で,現代は情報が氾濫しており,情報の取捨選択が難しいという問題が起きています.ゆえに自分に代わって情報の取捨選択をしてくれるキュレーションメディアが流行し,乱立していると言えるでしょう.

 また,Google検索にはノイズも多く,

  • プログラミングスクールの薄っぺらい記事
  • StackOverflowの機械翻訳サイト
  • 既に使えなくなっている古代の知識で書かれたブログ

などなど,分かっている人にとってはただただ邪魔な,分かっていない人にとってはより混乱の原因となるノイズが多数紛れています*1

 まとめると,ググって出てくる情報は

  • あまりにも数が多く,その価値の判断が難しい上に時間がかかる
  • 多数のノイズを効率よく弾くだけの基礎知識が必要

ということです.内部向け技術記事ではこの逆を目指していきたいというのが今回の記事の主旨です.

みんなに書いてもらうために

身内だけで通じる価値観を理解する

 一部のスーパープログラマを除いて,大抵の技術者は世の中からほとんど認知されていません.その実力がどれくらいなのか,何に詳しいのか,どういうことに興味があるのか,そういった情報は基本的に明らかではありません. そのため,インターネット上に溢れる大抵のまとめ記事は価値が非常に低く見積もられがちです*2

 一方で,特定の集団内においては互いのことをある程度知っています.そのため,その人の書く記事がたとえ同じようなまとめ記事だったとしても信頼度が大きく変わってきます.もちろんその信頼性は多くの場合身内だけに通じるものなので,外部に公開するかどうかはそれを書いた本人がその価値を見積もって考えれば良いと思います.少なくとも,内部に向けた情報を記述するに当たって,ググれば出てくる情報の焼き増しをすることを恐れる必要は無い,ということは言えると思います.

 つまり「ググれば出てくるから書かない」と言われたら,

  • インターネット上の赤の他人の記事よりは,身内の記事の方が信頼できる(質問もできる)
  • 既存の記事をまとめただけのものであっても,自分で探す手間が省けるから助かる

と言いましょう.

気軽に書ける雰囲気を作る

僕は少し前にサークル内向けに以下の様なLTをしました.


 そもそも書くハードルを低くしておかなければ誰も書いてくれません.そのためには使いやすいツールを用意することが不可欠です.僕は前述したようにesa.ioを活用させて頂いており,その利便性に日々感謝しています.おすすめです.

 また,どういった内容を書くのかについて,小さいチームなので特にルールを定めていません.弊サークルではメンバーごとに自分のネームスペースを持っているため,ただのメモ書きのようなものも好きに書けるようにしています*3.大きいチームでの運用に当たってはこの辺りの「遊び(余裕)」の調整が必要かとは思います.

既にある記事の更新を躊躇わない

 知識はどんどん古くなっていきます.記事として残した情報も,いつかは古くなってしまう物です.「これは自分より詳し い〜〜さんが書いた物だから」とか「自分が書いても間違ってるかも」とか思わずに,どんどん更新されていくべきです.

 簡単なtypo,実行するコマンドの変更,一部APIの使用方法の変化,…etc,細かい変化は常に起こり続けています.気が付いたら「バージョンXXからはYYはZZになりました」程度で良いので更新していければ,記事が陳腐化していくことを避けれるのではないでしょうか.これは個人ブログではなかなかできないので,多数の人間が関わって管理しているからこそ得られるメリットであると考えています.

 集団で知識を蓄えていくというのはそういうことであり,上で述べた「書くハードル」にも近いですが「更新するハードル」も低くあるべきです.そのためには個人間で変な縄張り意識を持たず,自分の書いた記事への他の人からの変更を歓迎することが大事かも知れません.GitHubでPull Request出してくれた人にThank youと言うのと同じような文化が技術記事にも根付くと嬉しいです*4

書くメリットを意識する

 「そうは言われても書いたからって給料が上がるわけじゃないが?」みたいなことを言われればそれはそうなのですが,そもそも書くメリットを認識できていない人が多いのかなという気がしています.個人的に思っているメリットについていくつか書きます.

  • 自分自身の理解の向上に繋がる
  • 書くことで集団内での自分のブランディングができる
    • 〜〜に詳しい人,みたいな
  • 他人に教えるときに「とりあえずこれ読んで」と言える
  • 他人に理解してもらう文章を書くのは難しいので,普段からそれを意識して書いておくことは,対外発表の練習にもなる

これは内部Wikiではなく,公開するブログに書く場合も同様なので,そもそも他人に見てもらうものを書く習慣があるかどうかの違いが大きいと思います.不特定多数に対して公開するブログと違って,明確にその集団のレベルアップに貢献できるという意味で,内部Wikiの方がメリットはわかりやすいかも知れません.

 これは別にメリットではないんですが,僕は普段色々なブログ等にお世話になっているので,何か貢献できたらいいなという気持ちでブログを書いています.「GitHubでコントリビュートするのは難しいけど」みたいな人は,感謝の気持ちを込めてブログを書きましょう.

あるべき内部Wikiの姿

 何か調べたいときに,まず最初に調べる場所が内部Wikiになるのがベストだと個人的には思っています.

 そこには既に見知った人間がまとめた情報があるはずで,自分でググりながら真偽を確かめていく過程を省くことが出来るからです.その上で,その内容では足りない・間違っているなど追加/修正の必要が生じれば記事を更新する,そもそも記事が無く今後も必要となると判断したなら記事を書く,そういうサイクルをうまく回していけると,ナレッジベースとしての内部Wikiがうまく機能するのではないでしょうか.

今の悩み

どのレベルから知識を共有するか

 当然個人間のスキルセットには差があるため,全員がどこまで理解していて,どこから分かっていないかを決めることは難しいです.例えばDockerの使い方について記事を書くとして,僕は「仮想化」というもので何を実現したいのか,どういうことが起きるのかをなんとなく理解していますが,今までそういったやり方に触れてこなかった人にはまずそこの説明から必要になってきます.しかしそれを書くためにじゃあLinuxカーネルってなんだ,そもそもLinuxってなんだ,OSとは?コンピュータとは?みたいなことまで書くかと言われれば,(僕自身の知識不足ももちろんありますが),時間的にも,費用対効果的にもしないでしょう.

記事が増えすぎたときにどうなるのか

 今はせいぜい数百程度の記事しかなく,一覧で見てもなんとかなります.しかしこれが数千,数万に膨れ上がったら?それはソフトウェアで解決するのだろうか?というのは気になっています.

 もちろん検索はあるので,キーワード検索やタグ検索などの方法をとることは可能です.しかし,「検索したいワードが分かっていないと検索は出来ない」という問題があり,そもそもどう検索すれば良いのかわからないシチュエーションでは内部Wikiもうまく効果を発揮できません.そもそもそれ以上時間をとらずに済むからWikiに書いたのに,「Wikiに書いてある内容を検索するための質問」とかをされるようになったら本末転倒です.

結局当人以外が記事を更新しない

 特に研究室などでは,数年ごとに人が入れ替わります.そのため,過去に誰かが書いた記事がそのまま放置され,閲覧も更新もされない死んだ情報になってしまう可能性があります.属人性を排除するために記事として残したのに,その情報の修正/更新が属人化してしまっては元も子もありません.

 更新されない理由として

  • どういう記事があるのか知らない
  • それを更新して良い物なのか判断できない

などがあると思っていて,今どういう記事が存在するのかをなんとなくでいいので把握しておくことが重要だと思います.僕は新しく記事を書いたときにSlack等で「こういうのを書きました」みたいなことを一言言うようにはしていますし,後輩と話しながら「じゃあそれ追記しておいて」とかは気軽に言うようにしています.とはいえ,そもそもSlackすらまともに見てくれない人たちや,自分がいなくなった後に入ってくる人たちにまで知らせることは難しいです.僕は他の人がどういうものを書いたのか見るのが好きで,更新があれば軽く覗いたりコメントしたりしているのですが,全員がこれをやる必要があるとまでは絶対言えないので,何かうまい対策が必要だなと感じています.

 また,内容を盲目的に信じ切ってしまう人が出てくるのも課題だと感じています.「書いてあるから」「そうらしいから」などと信じ切ってしまう人が出てくると,その情報は更新もされずただただやってみたが上手くいかなかった「使えない情報」として処理されたり,時代錯誤なやり方が残って負の遺産となってしまう可能性があります.個人のレベルはまちまちなので仕方ないと言えばそれまでなのかも知れません.

最後に

 情報が氾濫している現代では,情報の価値はそれを書いた人を自分がどれくらい信頼できるかで決まっていると感じています.同じ内容を知らない学生が言うのと,親しい友人が言うのではその重みが違うように,インターネット上でも知っている人の書いた情報と,赤の他人が書いた情報の間には大きな隔たりがあるはずです.
 内部Wikiは現代では貴重な「ある程度信頼できる人が集まって作ったナレッジベース」であり,そこに情報を蓄積することは,自分だけでなく組織全体にとって意味があることです.全員が発信していける場を作り,全員で高め合っていけると最高ですね.


*1:僕はuBlacklistのお世話になっています

*2:一部例外もあります.何書いてもバズる人というのが世の中にはいます

*3:スマブラのキャラ対策・論文のメモ等色々乱立しています

*4:Qiitaの編集リクエスト機能はまさにこれのはずなのですが,全然うまく機能しているように思えません.悲しい