素人がKindle管理システムを作ってみた

eGAO終身宴会部長の、タッキーです!

ネモティが先日紹介してくれたeGAO制度の一つ、
「社内蔵書のKindle配信化」について突っ込んだ内容をご紹介。
ちょっと長いです。

技術的な事はそのうち公開

何故、システム化をしたか?

そもそもの背景としてAmazonさんの仕様ですが、

  • 本により配信数制限(本次第だが大体6冊程らしい)
  • どの端末にどの本があるかAmazonサイト上でわからない

って事がネックで本の管理をどうするか色々考えてました

結局は管理台帳的なのに書くしかないという結論に至りましたが、

  • いちいち管理台帳に書いてアップはメンドイ
  • 本のリストをWEBから気軽に見たい
  • 管理者のみ編集可能
  • 社内ツールのSlackと連携して気軽に管理

などが問題点として上がりました。

ならば「Goolgeスプレッドシート」「Google Apps Script(通称GAS)」にてシステム化!

どんな運営方法?(ざっくり)

欲しい本があったら弊社のシャッチョさんに本のURLはっつけて「欲しい~」ってメンションします
するとシャッチョサンが「おっけー」って言ってくれます。
この気楽な感じが弊社のいい所で、購入申請が気軽ですw
あとはKindle管理者の私タッキーが買って、配信
Amazonでポチる快感独り占め

本を借りたい場合は、リストに管理番号があるので
「5番貸してー」と私タッキーに言えば配信される

とこんな感じで気軽にSlack上でやり取りします。
弊社の人数的に大量のやり取りは無いので可能なやり方。
人いっぱいになったら別の方法考えます。

なお、購入申請や貸し出しに関する書類は一切ありません!

有給申請?
そんな書類知りません!

シャッチョサンなんて言ってるけどいいの?
かたっくるしい上下関係はなーーーーーーーーーーーーーい

どんなシステム?

単純にSlackで書き込むとスプレッドシートの内容を取得・更新といった内容です。

SlackとGASの連携についてはネット上で諸先輩が詳しく教えて頂いているので割愛
知識をご提供頂き、感謝致します。

弊社の場合はどんな事をしているか?を書いていきます。

まずスプレッドシートの中身ですが、

  • 一つのシートに本のリストと、誰が現在読んでいるかなどの貸出票
  • もう一つのシートには、貸与している端末情報が記載されている機材表

といった感じです。

余談ですが、元々はOutgoing Webhooksを使用していました。
トリガーは”kindle:”

ちょっと知識がついた現在はスラッシュコマンド化しております。
トリガーは”/kindle”

スラッシュコマンドの利点として、

  • コマンド入力者のみが入力内容や結果を閲覧できるようにすれば、チャンネルの流れを汚さない
  • 公開チャンネル、プライベートチャンネル、DM問わずどこでも入力ok
  • 補完が働くので楽

逆にマイナス面として

  • 3000mSec以内にコマンド入力に対してレスポンスを送信しないとTimeOutの表示が出る(GASは処理が遅いので致命的…)

といった事があります。

なんにせよOutgoing Webhooksより便利なので、断然こっちですね!

システムのざっくりした内容

ではどんな動作をするかのご紹介です。

/kindleの後にコマンドを打ち込む事で多種の動作をします。
SlackからGASに来た際にdoPostが実行され、種類毎に分かれた処理を行いSlackに結果を返します。

コマンドの種類ですが

 管理権限者では無い人
  • 所持リストの表示
    自分の借りている本の一覧が出る

 

 管理権限者
  • 配信リストに追加
    指定された管理番号の本の配信リストに、名前を追加
    リクエスト者にどの本を配信したかDM送信
  • 配信リストから削除
    指定された管理番号の本の配信リストから、名前を削除
    返却希望者に、端末から削除するようDM送信
  • 指定社員の所持リスト確認
    指定社員の配信リストを表示
  • 入社時
    機材管理リストにIDと名前を追加
  • 退社時(使いたくない)
    機材管理リストから名前を削除し、機材情報は空き端末シートへ
    貸出リストからIDと一致する名前を削除
  • 本の購入時(今後作成)
    AmazonのAPIを叩き、本の名前や購入時点での値段情報を取得しリストに書き込み
    みんなに対し、新しい本が追加された事を教える
 共通
  • コマンド未入力・コマンド指定ミス
    管理権限に合わせたヘルプメッセージの表示
    ※内容はガイドライン、コマンド一覧など

と、シンプルな機能ですが、管理する側はとても便利!
おわかりの通り、管理者用の為に作ったのがこのシステムです。
そもそも管理の簡略化が目的なので当たり前ですね
今後、本購入時の処理を導入すれば基本的にスプレッドシートは触らなくなります。

残った課題

 本を配信する時は?

これだけは人力なんです…
まだAmazonのAPIをちゃんと調べてないけど、その手のAPIがあるなら取り入れます!

Kindle管理システムを導入してみて

とにかく楽です。
まだ技術レベルの低い人間ですが、初のGAS・初のJS・初のSlack CustomIntegrationsいじりは無事に稼働しています。
GASなら無料で簡単です。なんといってもhttps!SSL!
自分みたいな素人でも社内システムが構築できて嬉しいです!
わが子のようなシステム

ソースはそのうち公開予定

いじょー、アルコールハラスメントは許さない!
宴会部長タッキーでした!

駄文でスイマセン

投稿者プロフィール

タッキー
タッキー
30超えてから異業種からIT業界に来たオッサン!楽しくなきゃ意味がないって思考のもと、eGAOでのお馬鹿さん担当してます。技術屋としてはまだまだですが、お馬鹿さんっぷりならeGAOナンバーワンを自負してます!!!