社内で使われるメモ帳をクラウド化してセキュアに





シンジです。入社時からの習慣であったり、周りがそうしてるからとかいろいろきっかけはあれど、手軽で便利で使いやすい数々のメモ帳に、パスワードや業務内容をしれっと書き込んでローカル端末に保存することはよくあることだと思います。テキスト形式で保存されるこれらのデータは端末を使う本人の管理能力が問われるし、ファイルごとポイッと他人に共有することもあるはずです。メモ帳の在り方を考え直して、クラウド化したお話です。

メモ帳の魔力

Windowsに標準搭載のメモ帳も便利ですが、ある日こんなことを言われるかも知れません。そのメモ帳だと問題がでるから、さくらエディタにして欲しいとかなんとか。

エディタだけで考えても最近ではVS Codeも無料だし便利ですが、スクリーンショットを撮ってメモを書きながら保存するから、ウチは基本的にWordを使ってますよってケースもありますよね。

クラウドストレージを利用している場合は、例えばBoxやDropboxには、会社が管理するクラウドストレージに直接アクセスできる専用のリッチなメモアプリが提供されていて、こういったものを積極的に使っていこうなんて流れもあったりします。

パスワードだけにフォーカスすれば、1PasswordやLastPass、Dashlaneなどを会社で導入して、パスワードはメモ帳で共有しないでパスワードマネージャを使おうねというケースも。

それでもローカルのメモ帳って便利よね。何も考えずにスッと使えるあの感じ。

Box Notesを辞めたかった


ウチの会社でもなるべくメモ帳はBox Notesを使って、複数人が同時で編集できて、検索性能がそれなりにあって、いやこりゃ今までのメモ帳よりも便利じゃんってやってたんですが、Box Notesには致命的な欠点がありました。

それは、再利用性がない、あるいは低いということです。

ただの雑メモでも、議事録でも、提出用ドキュメントでも、マニュアルでも、全てBox Notesから外に出せないんです。再利用できない。印刷機能でPDFにすればってことではなくて、内容の一部をSlackにコピペしたり、ファイル形式が違うものに移設したりしたいわけですが、それができない。

Box Notes形式で保存されているから、いろいろ便利なんだなってことなんです。

誰もが使えるセキュアなエディタを探した

オフラインで使えるツール群は、軽量で便利なのは確かです。ただ、全員がVS Codeのようなコーディング機能を必要としていないわけですし、VS Code使えよとは言えなかった。

メモ帳が必要とされるシチュエーションも考えました。まず議事録。社内はまぁアレとしても、相手ありきの議事録は、相手に提出したときの会話の言った言わないを防ぎやすいし、なんやかんやで後から見返すことも結構あります。

次に検証や作業記録。スクリーンショット埋め込みまくりの資料を作り上げることになるはずです。

そしてこれは個人的な趣味嗜好、マークダウン書式で書けること。従業員は、せめてMD形式で、複雑な記述はできなくても、ブログを書く程度のMD利用者になってほしいという思いです。

Markdownエディタを探した

Markdownで書ければ、かなり再利用しやすくなるなっていうのと、ブラウザで動いて画像とかもポイポイぶちこめるのがいいなって思って探しました。できれば自社のBoxに保存してくれたらもう最高。

で、この世の中、Markdownを意識しているエディタって沢山あるんですよね。おそらくほぼ全部試しましたが、その中もBoostnoteというアプリがありまして。

これを作っているBoostIO株式会社のCEOである横溝 一将さんと、

CTOである崔 俊英さん(サイさん)は、

しょっちゅう俺んちに来てはタダ飯食って帰るほどの仲で、Markdowsエディタとはどうあるべきなのかとか、俺たちはこうしたいんだみたいな熱い思いを沢山聞いて、たくさんの酒を交わして(誰も飲まないからソフトドリンク)、そして分かりました。俺はBoostnoteを使うことなく自分で作るしかねえなと決意しました。

Boostnoteはコーダーにとってはめちゃ便利で、今回は用途が合わなかっただけなのでMDエディタでエンジニアっぽいものが欲しい人はお試しあれ。最近メジャーアップデートして中身も見た目も激変してるので気になる方は是非どうぞ。
https://boostnote.io/

エディタをいちから作るのは大変なのでOSSを使います

そこでCodiMDです。
https://github.com/hackmdio/codimd

インフラは自前で作ります。AWSにしました。どこでもいいです。それが嫌な人向けに、SaaSとしてHackMDというものもあります。ごりごりのカスタマイズは出来ません。なので今回は使いません。
https://hackmd.io/

シンジが考えた要件

  • Markdown形式で書くとプレビューちゃんとしてくれる
  • .md形式で自社のBoxに保存してくれる
  • リアルタイム保存がいい
  • 複数人同時編集に対応してほしい
  • シングルサインオンに対応これ絶対
  • ポイポイぶちこんだ画像も自社のBoxに入れてほしい
  • ブラウザで動いて欲しいそしてレスポンシブでスマホからも見たい
  • 見た目はとても大事

で、とりあえずそのまま使ってみると分かりますが、CodiMDを会社で利用するには致命的な問題がいくつか標準機能として実装されています。

やべえ標準機能

  • 「画像は自動的に imgur にアップロードされるので心配する必要はありません」心配しかねえよ
  • 公開するボタンが危険すぎる
  • ログインしなくてもURL知ってたらアクセスできちゃうの嫌だな
  • 管理画面とかAuditログとかあんのこれ
  • ユーザーの削除ボタンこれ押したらやばそうじゃねなんで誰でも押せるの

まぁ他にもいろいろあります。

エディタとしては超優秀

機能が豊富すぎるので詳細はこちらをどうぞ
https://hackmd.io/s/features-jp

2019年2月から標準状態で使い始めて

よし、、、もう作り込んで、これで行こう、、、と決めたのが2019年10月のこと。ウチの変態エンジニアであるセバニキに頼んで作り込み開始。デザインもデザイナーに頼んで可能な限りおしゃんにしてもらいました。

追加設定した機能

欲しいと思ったものは全部実装、やばそうな機能は全て排除した上で。

  • まず見た目。検索性。タグクラウドみたいなの入れた。
    あと会社のロゴとか。大事ですよこーゆーの。

エディタ画面は、ほぼそのまま利用しています。ヤバそうな機能は消しました。

  • Oktaからシングルサインオンします。Oktaじゃなくても一般的なIdPなら対応しています。
    SAML対応は元々コードに含まれていたので、さくさく繋がりました。

  • ファイルの保存先は全て自社のクラウドストレージを指定しています。今回はBox。
    S3は標準でありましたが、Box APIも利用してBoxのファイル共有機能を有効にして相互通信してます。ファイルの実態はBoxのみ存在していて、エディターにはファイルは存在しておらず、インターフェースのみが提供されています。

  • Slackから呼び出したりプレビューしたりできます。
    Slackのコマンドで打ち合わせのチャンネルからそのままMarkdownのURLを発行するので、一斉に参加するような感じです。これが地味に便利みたいで、社内ではかなり利用されていて、お陰で利用率が急増しました。

インフラはAWSですが

EC2です、ごめんなさい。セバいわく、中身がsocket.ioだからとりあえずEC2だけど、サーバーレスに出来るかどうかはまだやってるところ、らしいです。今のままだとスケールが大変らしい。といっても同時アクセス数万人とかいうレベルかなと思われるけども。そこまでいくとBox APIコール数が心配になるな。

ログはAzure Sentinelにぶち込んでます

アクセスログや編集ログなど様々なログがぶち込まれてますがスクショはありません。今回のブログはモザイクが多くてちょっともう。

ウチもそれ欲しい!みたいな方がいたら

セバのやる気がもっと出るかもしれないので教えて下さい、ライセンスはGPLなのでもっと作り込む予定です。