Meet at Idobata

21世紀の開発者のためのグループチャット Idobata の開発ブログです。

お気に入り room、他

こんにちは、提督兼イカの ursm です。Idobata の更新情報をお知らせいたします。

お気に入り room

よく使うルームにアクセスしやすくなりました。ルーム名横の☆をクリックするとサイドバーで常時上に表示されるようになります。

Markdown のフルサポート

メッセージに Markdown の全記法が使えるようになりました。

(従来の挙動がお好みの場合は Settings から “Treats a message as Markdown” のチェックを外すと元に戻ります)

リンクのプレビュー表示

TwitterYoutubeSlideshare のリンクをプレビュー表示するようにしました。

idobata-hooks

新しく以下の hook がサポートされました。コントリビュートいただいた皆さま、ありがとうございました!

その他の変更点

  • 入力欄が自動で拡大/縮小するようになりました
  • メッセージを検索するとき、空白区切りで AND 検索になるようにしました
  • Enter キーの挙動をカスタマイズできるようになりました

今後の予定

しばらく新機能の追加は控え目にして、たくさんご要望いただいているパフォーマンスの改善とネイティブアプリ提供に注力していきたいと思っています。今後ともどうぞよろしくお願いいたします!

brand-new Idobata™

こんにちは、春イベントに向けてアップを始めた ursm です。

本日は皆さまに Idobata の新バージョンをご紹介いたします。今回のリリースでは元々 Bootstrap のバージョンを上げるだけのつもりだったのですが、ついでに色々やってしまった結果、コートベース全体に渡るオーバーホールとなりました。

$ git diff bs3..master | filterdiff -p1 -x  frontend/npm-shrinkwrap.json | diffstat -s
2893 files changed, 14894 insertions(+), 18598 deletions(-)

ユーザインターフェースの改善を中心として、動作の高速化や将来的な機能拡張の容易性を高める変更を行いました。テクニカルな解説は別の記事に譲るとして、今回はユーザから見た主な変更点をご紹介します。

各種ツールへの影響

Bootstrap のバージョンを 2 から 3 にアップデートしました。いくつかのクラス名が変更となっていますので、hook や bot を作成されている方はお手数ですがご対応をお願いいたします (idobata-hooks にマージされているものはすでに対応済みです)。特に badge の色指定がなくなったこと、label の色指定に使うクラス名が変更になったことが影響が大きいと思います。idobata-hooks の該当コミットもご参照ください (ここでは badge を赤くするために .progress-bar-danger を付けるというちょっとしたハックを使っています)。

Pusher のイベント名を変更しました (例: message_created -> message:created)。互換性のため message_created だけはしばらくの間以前と同じタイミングで送るようにしていますが、hubot-idobata をお使いの方はお手隙のタイミングで 0.3.0 以降のバージョンに更新をお願いいたします。 また、room_touched, all_room_touched イベントが廃止されて join:updated イベントになりました。join は room と user の中間モデルという位置付けで、未読数はこれのプロパティとなっています。hubot-idobata 以外のアダプタを作成・利用されている方は誠に恐縮ながらご対応のほどよろしくお願いいたします。

インターフェースの改善

全体的にコントラストを高め、ソリッドな印象になりました。タイトルバーの部分はモバイルでの操作性を考慮してやや大き目に、スワイプによるサイドバーの出し入れもできるようにしています。また、実験的にアニメーション効果を取り入れて操作したときに何が起きたかわかりやすいようにしてみました。

メッセージ一覧は線を減らしてすっきりとした見た目になりました。なるべくゆったりさせつつ、チャットとして大事な一覧性を損ねないよう配慮しています。メッセージの投稿ボタンとアップロードボタンはひとつに統合されました。また、新機能としてルーム内を検索できるようになりました。

設定画面はパネルを基調としたデザインに変わりました。一覧のアイテムを増やす操作は左上の緑色のボタン、絞り込みは右上のフィールドといった具合に操作性の統一を計っています。

編集項目は使い勝手と見た目を考慮して inplace editor 風のコンポーネントになりました。また、トークンや invitation URL はワンクリックでクリップボードにコピーできるようになりました (Flash が有効な環境のみ)。

パフォーマンス

サーバから取得するデータを最適化することで初回のページロードが高速になりました。ページを切り替えたときの動作も速くなってはいますが、こちらまだまだ改善の余地があります。

オフラインからオンラインに復帰したときのリロード処理が高速になりました。以前はページ全体をリロードしていましたが、今はアプリケーションの内部状態を一旦破棄して再構築することで高速化しています。欲を言えばリロードせずに差分のイベントのみを取得するのが望ましいのですが、今後の課題とさせてくださいませ。

クエリのチューニングと合わせてデータベースインスタンスのメモリを4倍に増量しました。これまで以上に快適なチャットをお楽しみいただけるものと思いいます。

キーボードショートカット

ルーム名を部分一致で絞り込んで移動できるコマンドバーという機能を追加しました。c で起動します。? でショートカットの一覧が見れますので合わせてご活用くださいませ。

Android アプリ

Idobata for Android の提供を始めました。例によって WebView を貼り付けただけの簡便なものですが、アセット一式をパッケージングしているので起動が微妙に速い……と思います。iOS 版と同じくプッシュ通知にも対応しています。ぜひご利用くださいませ。

Hook

イマイチわかりにくかった Generic を Custom Webhook と名前を改めました。既存の Generic hook については Endpoint URL 含め影響はありません。


皆さまに新しい Idobata を気に入っていただけることを願っています。今後の展開にもご期待ください!

メンバー管理機能の改善、他

こんにちは、秋イベントに向けて備蓄を始めた ursm です。Idobata の新機能と変更点をお伝えします。

メンバー管理機能の改善

organization の設定画面から「メンバーを外す」「ゲストとメンバーを切り替える」操作ができるようになりました。

room の description

room に description を書けるようになりました。書いた description は room 一覧やサイドバーに表示されます。Markdown が使えますので、お好みの画像やリンクを並べてあげてください!

Commit Status API

GitHubCommit Status API に対応しました。この API をサポートしている CI サービスをお使いの場合は、GitHub hook だけでコミットのビルド結果通知を受け取れるようになります。

「CI サービスの通知の方が好みだからこっちはオフにしたい」という方は、お手数ですが GitHub リポジトリの Settings -> Webhooks & Services から Status をオフにしてくださいませ。

その他の変更点

  • Qiita:Team hook で共同編集記事の更新者が正しく表示されるようになりました (Thanks @eitoball)
  • GitHub hook で issue のラベルを付け外ししたとき、どのラベルを操作したかがわかるようになりました
  • leave organization リンクの位置をわかりやすくなるよう調整しました
  • hook からのメッセージに @mention 形式の文字列が含まれるとき、mention として扱うようになりました
  • ユーザ名や room 名の入力補完で大文字小文字を区別しないようになりました
  • アカウント設定からアイコンをアップロードできるようになりました
  • アカウント設定からアカウントを削除できるようになりました
  • SVG ファイルをアップロードすると Chrome が死んでしまう現象を直しました
  • サインイン/サインアップ周りのエラー表示があまりに scaffold だったので少し気を利かせました

メッセージに permalink が付きました、他

こんにちは、E-6 ラストダンス真っ最中の ursm です。Idobata の新機能と変更点をお伝えします。

メッセージの permalink

メッセージのタイムスタンプをクリックすると日付ごとのアーカイブページを開くようになりました。それぞれのメッセージに id が振られているので permalink としてお使いいただけます。

Trello hook

@eitoball さんの pull requestTrello からの通知をサポートするようになりました。

あわせて読みたい: (翻訳) Trelloは何が違うのか by Joel Spolsky - 小野マトペの納豆ペペロンチーノ日記

キーボードショートカット

いくつかの操作をキーボードから行えるようになりました。他にほしいショートカットがありましたらフィードバックにてお寄せくださいませ!

画像アップロード機能の改善

ドラッグアンドドロップコピーアンドペーストでも画像をアップロードできるようになりました。

room の名前変更

room の設定画面から名前を変更できるようになりました。こちら大変お待たせしてしまって恐縮です…。

その他の変更点

hook がオープンソースになりました、他

こんにちは、司令部レベル110になっても長門が実装されない ursm です。しばらく間が空いてしまいましたが、Idobata の新機能をお知らせします。

idobata-hooks

https://github.com/idobata/idobata-hooks

Idobata で使っている hook の実装を切り出して公開しました。Idobata がまだ対応できていないサービスの通知を流したいとき、今までは hook を受け取るアプリを別途作ってそこから generic hook を叩くという煩雑な手順が必要でしたが、これからはこのリポジトリに pull request いただければ Idobata 本体に取り込むことができるようになりました。

早速 @hanachin さんから Circle CIQiita:Team 対応の pull request をいただきました (ありがとうございます!)。すでにリリース済みですので、是非お試しくださいませ。

メッセージの折り畳み

縦に長いメッセージを折り畳んで表示するようにしました。この機能は個人設定の “Fold long messages” で有効/無効を切り替えられますので、お好みに応じて設定ください。

現状はテキスト・画像の区別なく一定以上の高さであれば一律折り畳むようになっています。「画像は折り畳んでほしくない」とのフィードバックもいただいているのですが、hook から来るテキストと画像が混じったメッセージの扱いを悩んだ結果現状のようになっているのでした。メッセージの内容をある程度ヒューリスティックに判定して、画像がメインと思われるメッセージでは折り畳まないようにすればよいのかもしれません。もう少しいい感じにしたいと思っておりますので、ご意見いただけると嬉しいです。

その他の変更点

  • Pivotal Tracker hook で v5 API を使っているとき、通知の内容がちょっとリッチになりました
  • 「下の方のルームをクリックしようとしてログアウトしてしまう」事象への対応として、左下に並んでいたボタンをポップアップにしました

今後は初期ロードの高速化やお気に入りのルームにアクセスしやすくする機能をリリース予定です。ご期待くださいませ!

Heartbleed 脆弱性による Idobata への影響について

こんにちは、ursm です。巷で話題の Heartbleed 脆弱性による Idobata への影響についてご報告いたします。

Idobata が稼働している Engine Yard Cloud は OpenSSL の 1.0.0 ブランチを使っているため Heartbleed 脆弱性の影響を受けません。Engine Yard Cloud でも ELB に SSL 証明書をインストールしている場合には脆弱となりますが、Idobata は ELB を使っていないためこちらも該当しません。詳細は Engine Yard の公式アナウンスをご参照ください。

もし脆弱性の影響を受けた他のサービスと同じパスワードを Idobata に設定していた場合には、パスワードが収奪された可能性を考慮して Idobata のパスワードも忘れず変更いただけますようお願い申し上げます。

正式リリースのお知らせ

こんにちは、大型建造の沼にどっぷりハマっている ursm です。新機能と「正式リリース」についてお伝えします。

Hubot integration (experimental)

Idobata に Hubot を住まわせられるようになりました。詳しい手順は hubot-idobata の README をご参照ください。

hook に対する bot の決定的な違いは「メッセージを受け取れる」点です。Idobata に流れてきたメッセージをトリガーにして何らかの処理を実行したり、問い合わせに答えたりすることができます。

技術的には Hubot 以外の bot を一から作ることもできるのですが、API について決め切れていない部分が多いため、現時点では Hubot のみのサポートとさせてください。もちろん、hubot-idobata の実装から API を推測してオリジナルの bot を作っていただくことは何ら問題ありません (が、予告なく変更される可能性が大いにありますことをご了承ください)。

Idobata for iOS

Idobata の iOS アプリケーションをリリースしました。WebView をペロっと貼っただけの簡単なものですが、mention をプッシュ通知で受け取る機能を備えています。ゆくゆくはネイティブ化したいなあ、と考えています。

画像のアップロード

読んで字のごとく画像をアップロードできるようになりました。generic hook からも使えます。ゆくゆくはドラッグアンドドロップコピーアンドペーストでのアップロードに対応したいなあ、と考えています。

Hook のリクエスト数制限

(これは新機能ではありません)

hook の POST が短時間に集中してアプリが落ちるケースが出てしまっていたので、リクエスト数に制限を設けさせていただきました。

  • hook ごとに秒間2リクエストをリアルタイムに処理
  • それを超えた分は10リクエストまでキューイングして順次処理
  • それでも溢れてしまった分は 503 (Service Temporary Unavailable)

現状は目安として ab -c 10 -n 50 でエラーにならず、-c 50 -n 50 で20個捨てられる程度の制限です。しばらく様子を見つつ調整していきますが、もしお困りのことがありましたらお知らせください。ご理解とご協力のほど、よろしくお願いいたします。

その他の変更点

  • organization のルーム一覧でずらっと名前が並んでいるだけだとどれに入っていいものかよくわからないので、今 join している人のアイコンを出してみました
  • iOS でサイドバー開閉ボタンの反応が悪いのを直しました (代わりに少しモッサリしてしまいました)
  • iOS 7 の Mobile Safari で Add to Home Screen するとステータスバー (時計がいる領域) が消えてしまっていたので、表示するようにしました

「正式リリース」について

今回のリリースをもって Idobata を正式版とします。変化は次の2点です:

  1. ロゴから BETA の文字が消えます
  2. 弊社のサイトからリンクが張られます

要は今まで通りお使いいただけます、ということです。なぜこれが「正式リリース」かというと、当初思い描いていた「人とプログラム (bot) の協業」がまがりなりにも実現できたというのが一点、もうひとつは会社として引き続き Idobata にコミットしていくという意思表明としてです。

予定していた課金については、少なくともしばらくはやらないことにしました。Idobata を最初にお披露目してから5ヶ月が過ぎ、この間控え目に言って予想以上の反応をいただきました。課金をすればいくばくかの収入にはなるはずですが、それと引き換えに失うものもまた多くあります。Idobata を「よい」と思ってくれているユーザとの関係を「サービスを提供する側とお客様」の関係とすることが本当に適切なのかどうか、まだもう少し考えないといけないと判断しました。

ベータ期間中、海のものとも山のものとも付かないこのプロダクトをお試しいただいた皆さまに感謝します。今後の Idobata にも是非ご期待ください!