読者です 読者をやめる 読者になる 読者になる

最終掲示板戦争

image

こんにちは、r7kamuraです。26年なにも考えずに生きてきて、レールに沿った人生を歩んできました。

さて、数日前からなんとなく気が触れてRuby on Railsで掲示板をつくってみている。上の画像はいまつくりかけのもの。CSS全部手で書いてみてるからまだ見てくれがかなりショボい。最初に手を動かしはじめたきっかけは、2007年頃に「Railsを使って15分で掲示板をつくってみよう!」という記事を見たのを思い出したのがきっかけ。いまのところ10時間ぐらい経過している。15分はちょっと無理そう。2016年にもなって10時間以上かけて掲示板つくってるのは皮肉すぎる事実。もはや何故掲示板をつくっていたのか分からなくなってきつつある。とりあえず濁り切らない内に考えていることを書いておく。最近なんで掲示板つくってんのって聞かれることが増えてきたので、そのときにこの記事のURL出せると多分便利。

掲示板は説明力が高い

掲示板というモデルは分かりやすく、他人に伝えやすい。他社の仕事の様子を聞いていると、2016年においても業務の流れなどを説明するときに「社内掲示板に…」という言葉が普通に出てくることがあって、いまだに社内の情報共有用プラットフォームを「社内掲示板」という風に形容することがあるくらい、掲示板というモデルは説明力が高い。この掲示板というメタファーが分かりやすすぎて、Confluenceを使ってようがRedmineを使ってようがTracを使ってようが、社内掲示板という風にぼかしておけば上手く伝わるだろうという気持ちで社内掲示板と発言していることが分かる。

WikiHubは便利だけど複雑すぎる

半年前に WikiHub という Wiki + Blog + Issues みたいなコミュニティを沢山つくれるサービスを実験的につくって、この半年間色々試してみたけれど、個々の機能は上手くハマればたいへん便利な反面、総合的に見て仕組みがあまりにも難しすぎるという課題を感じた。課題を感じたって発言、なんか意識高いっぽい印象を受けますね。気を付けます。で、仮にモダンで便利な情報共有ツールをつくったとしても、高機能すぎてエンジニアしか使いこなせないみたいな状態だと良くない。

ちなみに難しすぎると確信したのは、9mとitopoidがLINE LIVEをつかって寿司食べながらインターネットしてる様子を配信しているのを見たときで、人間がWikiHubにアカウント登録して日報コミュニティに辿り着いて記事を投稿するというところまでやって、分からないところが出てきたら周りはある程度わかってるからアドバイスしており、その様子を動画で観察してる内にアーこれはダメだな、うん、ダメ、これは全然ダメだと確信した。WikiHubをつくったときはそもそもつくるのにいっぱいいっぱいだったんで、その辺のことまでは考慮できてなくて、とりあえず試してみたい機能を追加していった結果、いろいろと反省すべき点が学べたと思う。

学べたって言う発言もなんか圧が高すぎてキツさがあるな。実際そんなに何も深く考えてない。まあ複雑すぎてダメだろうなという想定は最初からあって、しかしもしかしたら何も考えなくても上手くいくなるかもという期待が若干あり、やってみたところやっぱりダメだったので、腹落ちしたという感じ。そう、自分でやってみて腹落ちしたという感覚が大事で、これを得るためにやってきたという気持ちがある。いや、なんかこう言うと「俺は最初からダメだと分かってたよ」みたいな言い方で最悪の印象を受ける。何も分かってない。何も分かってないことが分かった。

掲示板で複雑さを隠蔽してみるテスト

それで、いろいろやってきた結果「便利な機能を盛りつつその複雑さは隠蔽したい」という気持ちに至り、次の実験として掲示板というモデルにこれらの機能を押し込めることにしてみた。昔からあるモデルだし、それこそインターネット普及直後の荒れた時代でも根強く流行ったものなので、掲示板やったらあんまりITに詳しくない人、若い人、若すぎる人、年配の人とかでも理解できるんちゃうか、という気持ちでいる。

まあでも2chとか老若男女問わず理解できるかというと無理そう。掲示板だからと言って手放しに誰でも理解できるというわけではなさそうで、寧ろ半年ROMってないと理解できない程度に難しいと思う。まあシステム上で何ができるか理解するのが難しいというのと、文化としてどういう振る舞いを心がけるべきか理解するのが難しいというのは、分け隔てて考えるべきことなのかもしれないけど、恐らく文化もシステムの形態に従って勝手に生まれて蔓延るから結局一緒に考えないといけない。

機能

いまのところ、次のような機能が実装されている。語彙の説明が面倒なので板やスレのような2chを例にした用語で説明します。

  • 板の作成。誰でもつくれて板ごとにサブドメインが与えられる
  • アカウント管理。アカウントは板ごとに完全に別なのでアカウントごとにつくる
  • スレ立て。スレはアカウントをつくれば誰でも立てられる
  • スレの未読管理。一度発言したスレは購読状態になって未読のスレが分かる
  • スレのブックマーク。後から読み返したいやつをサイト内で保存しておける
  • スレのカテゴリ付け。投稿者か管理者がカテゴリを付けられる
  • スレのアーカイブ。もはや一覧に表示する必要のないスレを非表示にできる
  • Markdownエディタ。WYSIWYGエディタと切り替えられる
  • レス。レスを付けるにはログインが必須
  • レスへのいいね。1つでもいいねを付けたスレは一覧で分かる
  • 信頼度による自治。もらったいいねの数で信頼度を貯めると次第に権限が解放されていく
  • モデレーター。管理者の他に、自治してくれる人に高めの権限を与えられる
  • ユーザページ。そのユーザの過去に立てたスレや付けたレスの一覧や統計が見られる

もはや掲示板で形容できる範疇を超えているのではと思わなくもない。オープンな掲示板はともかく、最初に挙げたような社内掲示板のようなクローズドなコミュニティでも運用できるようにしたいなあと考えている。そのために今後こういう機能も付けていく予定をしている。

  • 独自ドメインの設定。何らかのサービスのユーザコミュニティとして利用するとか
  • 板の閲覧権限。招待したユーザしか見られないとか
  • 板の書込権限。誰でも見られるけどメンバーしか書き込めないとか、告知ブログみたいな使い方ができる
  • 板ごとの認証方法の設定。この板は会社で使うのでGoogleアカウントで認証しますとか
  • グループの作成。営業グループ、開発グループなど。全員にまとめてmentionしたりできる
  • グループを利用したカテゴリへの権限設定: 採用カテゴリのトピックは人事と役員しか見られませんとか
  • 通知。今までサービスごとに何度も通知機能つくってきてるけど毎回設計に悩む。今回も沢山悩みたい
  • 人気のスレ。2chブラウザだと勢いとか?。人気アルゴリズムを考えるのは単純に面白い

最強の掲示板を見せてくれ

それにしても掲示板をつくってみるというのは楽しいもので、2chとかmixiとかパソ通とか見てた人であればそういうものを現代の技術で作り直してみるというのはおすすめなので、よかったら一緒に掲示板つくってみませんか。一緒につくってみませんかというのは、一緒に開発するというのではなくて、俺は俺の考えた最強の掲示板をつくるから、お前はお前の考えた最強の掲示板をつくって、俺に見せてほしい、という意味です。この手の活動が稀に戦争と呼ばれることがあり、過去にもWikiをつくってる人で集まったり、ElectronでTwitterクライアントをつくる戦争などが行われた。この戦争に参加している人はこんな戦争にも参加しています。

以上です。流れるように上から下まで書いたつもりが見上げてみたら結構長文になっててビビった。ここまで読んでくれた人ほとんどいないと思う。読んでくれてありがとうございます。サンキューです。

聲の形みた

非同期連絡手段ブレスト

  • Slackで周知してもお知らせが流れてしまう
  • Slackには受け取ったmention一覧があり便利
  • レスポンスが早く欲しい場合もある
  • レスポンス速度と人事評価を結びつける
  • 我々はコミュニケーションにおいてもレスポンスを200ms以内に返す
  • 速度が落ちてくるとSlackにパフォーマンスエラーが出る
  • PagerDutyでパフォーマンス監視
  • ステータスページ
  • お知らせだけの場合とリアクションが欲しい場合がある
  • リアクションが欲しいかどうかシステム的にわかると便利
  • リアクションしてほしいのかどうか分からないことが多い
  • リアクションが終わったものと思っているかどうか分からない多い
  • レビューとかでコメントついたときにそれでレビュー終わった感じなのかどうか分からない
  • TODOリストを相手に送れるやつはどうか
  • 「AさんがこのPull Requestのレビューをする」というタスクをつくる
  • Aさんはレビューが終わったと思ったらタスクを完了状態にする
  • コメントでどうですかと聞くのつらいのでシステム的にアシストされると便利
  • MMORPGの依頼されているクエスト一覧みたいなのがあると良い
  • HUDで出るともっと良い (※ ff14 hud - Google 検索)
  • マイナンバー登録とか、全社ミーティング出席とか
  • この画面チャット付いてるし仕事しやすそう
  • ゲーム画面あればミーティングもできそう
  • バトル画面みたいにタスクの残りHP知りたい
  • TODOではなくてクエストの方がやる気が出る
  • MMORPGなら定期メンテ入ってもしょうがなそう
  • チュートリアルも便利そう
  • ゲーミフィケーション
  • ゲーミフィケーションというかゲーム
  • 【EpicWin】タスクをこなしてキャラクターを成長させていくRPG風のToDoアプリ。
  • 混沌の時代、あらゆるタスクを打ち倒す1人の英雄が現れる
  • 英雄の名は naoya_ito

シリーズ判定最適化前線

https://amakan.net/ では書籍のシリーズ判定に日夜取り組んでおり、ここで最近追加された変更を紹介します。

シリーズ判定とは

先にシリーズ判定の課題について説明しておくと、まず書籍タイトルからシリーズ名を抽出したいという問題があります。似たような本の集合を見つけるのは簡単ですが、集合に名前が付けられて、かつルールが明確であることが求められます。そこで、シリーズ名を集合の名前かつ検索キーワードとして利用することでこれを解決します。

また、巻ごとに表記揺れした書籍タイトルからも同じシリーズ名を抽出したいという問題があります。ミスった場合、同じシリーズ名が抽出されず、別のシリーズが作成され、複数のシリーズに分割されてしまうという問題があります。書籍名はバイトが表紙を見ながら手入力しているのではないかという精度なので、大体表記揺れしています。

以前 「Kyoto.なんか #2」というイベントで、amakanにおける書籍のシリーズ判定方法について話しました - ✘╹◡╹✘ という記事も書いたのでこちらもご覧ください。判定されたシリーズの活用例として amakanでKindle Unlimitedの上位100件を集めた - ✘╹◡╹✘ などがあります。

CHANGELOG

詳しくは https://github.com/amakan/amakanize をご覧ください。直近では「第六大陸」などと戦っています (末尾の陸が漢数字の六なのでミスって削り取られている)。