TL; DR
(某アドベントカレンダー120日目?の記事です。自己紹介を端的にするとインフラをやっているおそらく部署内で唯一の非内定者アルバイトです。)
とにかく情報共有というのは難しくて、特に文脈を伝えるのが難しい。
現状自分はなんとかやっているが、アルバイトとかリモートとかそういう立場だと特に難しいなと感じているので思っていることを書いた。
大きく階層化Wikiと非階層化Wiki に分けられると思っていて、僕は階層化Wikiが好きだけれど、最終的には非階層化Wikiが勝つと思っている。
結論は出ていなくて、これは問題提起です。
以上
本文
こんにちは。記事を書いている今は2時です。
インターンでも内定者アルバイトでも正社員でも契約社員でもなく、自分の立場についても考えつつの kyontan です。
最近、コンテストの運営であったりバイトであったりと、何かと複数人で情報共有をする機会が多いです。
これが必要になるのは自明で、なぜなら1人でできることの幅が限られているからですね。
1人であればちょっとしたメモで事足りるようなことでも、複数人で共有するとなるとコンテキストが共有できなくなったりします。
(1人だからといって雑なメモで済ませると、それはそれで後々読み返した時にわからない問題が考えられますが、今回は考えません。関連はしていますが……)
このコンテキストの共有、というのが目下の自分が直面している最大の課題です。多くの情報にはコンテキストがついて回るのですが、なかなか重要性が理解されていないものでもあります。
コンテキスト、日本語で言うならば”文脈“であり、言うならば文章のバックグラウンドとでも言えばいいのでしょうか。事前に知っておくべき情報や、それを知るにあたり知っておくべき情報、というのがこれにあたるかと思います。
これらをどのように表現するか、というのが目下の大きな課題です。例えばプロダクトの開発であれば、ある実装に対して、たまたま開発者のスキルレベルが不足していてその実装になったのか、はたまた何らかの事情がありそのような実装になったのか、そしてその実装をする必要が”今”はあるのかどうか、などというのは実装上には現れない情報として表現されます。
プログラムであればこういったことはコメントやアノテーションで表現すべきですね。最近であれば正しくTDDが回っているような開発では、テストが通る限りどのようにリファクタリングをしても問題がないかもしれません。
しかし、それがプログラムの外の情報だったらどうでしょうか?
たとえばビジネスやお金の話、コードでは書けないような交渉など、なんらかの事情があり今の形になっているにも関わらず、その理由が明文化されてないことが多いのではないでしょうか。
こういった状況で、かつ何も背景情報が伝わっていない人がその背景を理解している人に代わってその状況に対処することは難しいといえるでしょう。
もちろん、対面のコミュニケーションによってもしばしばこの問題は生じます。特に自分のような週に1, 2度しか業務に関われない立場では、タスクを割り振られるたびに、そのタスクの必要性を聞く必要が生じます。
チーム開発において、このようなことは多々存在し、これを上手く伝える方法を僕は模索し続けています。
そこで必要なのがドキュメントです。しかし、プログラムのソースのように何らかの書くべき場所が指定されていない、というのが大きな問題でもあります。
一般的にこのような状況で使われるツールは情報共有ツール(そのままですね)や、コラボレーションツールと呼ばれることが多いでしょう。領域によってはグループウェアと呼ばれることもありますね。
Wiki というのはドキュメントの1つの形態であり、どのような形であるべき、というのは定義されていない(と私は認識しています)が、それに関わる複数の人間が編集できる情報の保存場所として有用であると考えています。
Wiki を作るソフトウェアとして、日本では Pukiwiki や Mediawiki (これは Wikipedia で使われていますね) などが有名かと存じます。最近では Crowi なんかがあり、自分はとても気に入っていて、冒頭で書いたコンテストの情報共有にはこれを導入して3回に渡り使い続けています。
他にも、あまり Wiki という呼び方はされていない気がしますが、 esa なんかはこの部類に入るでしょうか。
これらの Wiki の共通点として挙げられるのが、「情報に階層があることを前提としている」ということです。
これの共通点に着目し、対抗(?)として作られたのが Scrapbox でしょうか。実は使ったことがほとんどなくて、まだ言及するに至らないレベルなので明言は控えさせて頂きたいのですが、非階層型Wiki として出てきた印象があります。(参照: 階層整理型WiKiはスケールしない – 橋本商会 – Scrapbox)
似たような特徴を持っているものとしては Qiita (or Qiita:Team) なんかも近いでしょうか。
また、Kibela のような、Wiki(集団として共有すること) と Blog(個人の備忘録, ポエム) を分けて記録できるサービスも存在しますね。
では非階層型Wikiはどのように情報を結びつけるのか、という話になりますが、基本的にタグを元にしたページ間の N:N の結びつけをすることが多いです。
階層型であると、どうしても親ページ(ディレクトリ)に対する 1:N の結びつけになってしまうので、そういった点においてタグという仕組みが有利なのではないかと考えています。
人間の記憶自体は後者に近い有機的な繋がり方をしているとされていますが、実際にそれを情報として書き出す時に、どちらの方がやりやすいでしょうか。
私は Crowi を使っていると書いている通り、(個人的に)書き出しやすい、情報の見通しが効く(ツリーで構造を可視化でき、親情報を見通しやすい)という点で勝っていると考えています。
非階層化Wikiは、たしかにタグ付けをすることにより階層化Wikiに比べ有機的な情報の繋がりが作れると考えていますが、適切なタグ付け、および関連ページの表現方法においてまだまだ難があるのではないでしょうか、どうなのでしょうか……
ただ、最終的には人間の思考に近い形の保存形態が残っていくのでは、と思っています。こういった非階層型Wikiの動向にも目を離さず追っていけたらと思う次第です。
話が飛んでしまいましたが、結局、どのようにして我々はコンテキストを共有すべきでしょうか。
階層型Wikiの利点として、正しく階層化されたWikiであれば、該当のページに至るまでの階層にそのコンテキストが埋め込まれていると期待することができる点が挙げられます。
では、果たして非階層化Wikiではどのようになるのでしょうか? 実際に自分が体験をしたことがないのですが、適切なタグ付けがされていれば、関連したタグのページを数ページ辿ることにより、階層化Wikiと同様の情報が得られるでしょう。
また、関連したページから関連したページにもジャンプすることができるでしょう。
ここで難しいのは、階層化Wikiにおける適切な階層化と、非階層化Wikiにおける適切なタグ付けがどちらも属人化した能力であることです。
これは何もWikiに限った問題ではありません。Slack や Chatworkといったチャットツールにおいても同様の問題があります。皆さんは適切な粒度でチャンネルを分けることができているでしょうか? その適切なチャンネル以外でそれに関連した情報は流れていないでしょうか?
リモートワークにてもしばしばこのような問題は生じます。最近は特に一部のメンバーがリモートな場合にどうやって情報を共有するか、テンションや気持ちを共有するか、という点に注目したブログ記事が多く散見されます。
この問題が解決しない限り、情報共有が難しいという認識を私は崩すことができませんし、解決すべきテーマであると感じています。
これらが技術の進歩によるアシスト、ないし人間のこれらの問題に対する理解によってより良い方向になることを願います。(もちろん願うだけではダメなので、やっていくしかないんですが。)
途中で日本酒を3合ほど入れた結果文体が崩れ、主語が大きくなり問題も大きくなりました。実際問題は大きいので、各自認識してやっていきましょう。