2020.09.30「freeeのAPIで作る業務効率化 LINE bot」

4b2f3a64637b51e81813accbe8a98083?s=47 KMiura
September 30, 2020

2020.09.30「freeeのAPIで作る業務効率化 LINE bot」

2020.09.30「freee / IBM Cloud / LINE API アプリ開発勉強会」
https://freee.connpass.com/event/186936/

4b2f3a64637b51e81813accbe8a98083?s=128

KMiura

September 30, 2020
Tweet

Transcript

  1. freeeのAPIで作る業務効率化 LINE bot Koki Miura(@k_miura_io)

  2. 自己紹介 • 三浦 耕生(こうき) • 名古屋のゲーム会社 のサーバーエンジニア @k_miura_io koki.miura05

  3. アジェンダ • 今回作ったアプリの紹介 • 使用技術の紹介 • DEMO • アプリ開発のためのTips •

    ソースコード
  4. None
  5. None
  6. 2つの困りごと • 経費精算が大変 • レシートの中身を打ち込むのがめんどくさい • 月の締日にまとめて精算するのではなく忘れないうちにやりたい • 打刻忘れが多い(昔の僕) •

    打刻専用のパソコンでやらないとだめ • 忘れたら何故か理由を書かされる(未だに納得できない)
  7. これを手元でできれば解決できるのでは?

  8. 今回作ったアプリ • freeeのAPIを連携した業務効率化する LINE bot • 打刻、打刻修正、経費精算 • レシートの文字起こし(←ポイント) •

    freeeのAPIトークンを自動更新
  9. 使用技術 • Python(Flask) • freee API • Messaging API •

    Clova OCR • IBM Cloud Functions • Cloundant
  10. システム構成

  11. アプリのメイン機能

  12. freeeのAPI • OAuth2認証 • APIトークンの有効期限が短い(24時間) • リフレッシュトークンをつかって工夫をしなければならない (工夫については後ほど紹介) • freeeがWebで提供している各種サービス(労務、会計)

    の機能をAPIで提供している • プランによって使用できるAPIに制限がある →開発者用の事業所を立てれば全部のAPIが無料で使える ※APIでやるよりもWeb上で設定したほうが早い場合も
  13. 用途 • 雇用者のID、ユーザ名の取得 • 打刻 • 打刻修正 • 経費申請(APIでは下書きのみ)

  14. Clova OCR • 最近リリースした文字起こしサービス • 今回はレシートの画像を送信するとレシート情報を整 理してJSONが返ってくるレシート向けのAPIを使用 • 店舗名(支店名)、購入品目、金額、支払い方法などを きれいにまとめてくれる

    • よくわからんがしゅごいAPI • コンテスト参加者だけに提供される(無料)!!
  15. 用途 • ユーザーが撮影したレシートの画像から購入内容を取得 • レシートの内容を立替申請としてfreeeの経費精算APIへ

  16. Messaging API • LINE botを動かすために使うAPI • とにかく機能が多い • 無料で使い放題 •

    ドキュメントめちゃくちゃわかりやすい • 各言語に対応したSDKが提供されている
  17. 用途 • botのやり取り(メッセージの受信、送信) • ユーザが送った画像データの取得 • リッチメニューの設定、切り替え • 友達追加したときの挨拶 退勤

  18. LIFF • LINE Front End Frameworkの略 • LINEアプリ上で開くと自動ログインをする • LINEアプリ上で表示サイズを3つ設定できる

    (個人的にはTallがおすすめ) • JavaScriptのSDKでユーザ情報を取得する ことができる • LINEのミニアプリの元になる技術
  19. 用途 • LINEのユーザーIDとfreeeの従業員IDの 紐付け(打刻のAPIを行うときに必要) • 表示しているfreeeのユーザー名ももちろ んAPIから取得 • 友だち追加したときに送信されるメッセージ の中にあるFlexMessageのボタンの中に

    LIFF URLを仕込んでいる
  20. 用途その2 • 打刻修正のフォームを用意し日時を入力 • UIが殺風景なのは勘弁してくださいm(_ _)m • 修正ボタンを押すとLIFFを閉じて代わりにbot にメッセージを送信する

  21. freeeのトークンを自動更新

  22. IBM Cloud Functions • IBM Cloudが提供するサーバーレス環境 • 対応言語が豊富 • クレジットカード無くても使える(無料で使える)

    • 一定時間に実行するコードを書いたりちょっとしたAPIを 作りたいときに便利
  23. 用途 • freeeのAPIトークンの有効期限が来る前に12時間おきにトークンを更新 • 取得したトークンとリフレッシュトークンはCloudantへ

  24. Cloudant • IBM Cloudで提供されているNoSQLのデータベース • 1GBまで無料 • DBを接続するために認証情報を用意する必要あり →有効期限なし •

    IBM Cloud Functionsではデフォルトで使えるように SDKがプリインストールされている
  25. 用途 • APIトークン、リフレッシュトークンの保存(初回のトークンは事前に登 録しておく必要あり) • LINE botのユーザID、freeeの従業員IDの保存 • botのやり取りの保存(ドキュメントのIDにLINEのユーザIDを使用)

  26. DEMO

  27. いざというときのための動画w

  28. アプリ開発のためのTips • 動作検証でAPIを使うときには公式リファレンスにトークンを入れれば試 せる • 会計freeeのAPIであればSDKを使って開発ができる(JavaとC#のみ) • APIトークンは有効期限があることを忘れないように • APIの活用事例はfreeeの開発者ブログでも紹介されている

    https://developers.freee.co.jp/
  29. 今回のソースコード https://github.com/Miura55/freee_labor_bot

  30. END