Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2020.09.30「freeeのAPIで作る業務効率化LINE bot」
Search
KMiura
September 30, 2020
Technology
1
1.6k
2020.09.30「freeeのAPIで作る業務効率化LINE bot」
2020.09.30「freee / IBM Cloud / LINE API アプリ開発勉強会」
https://freee.connpass.com/event/186936/
KMiura
September 30, 2020
Tweet
Share
More Decks by KMiura
See All by KMiura
運用しているアプリケーションのDBのリプレイスをやってみた
miura55
1
1.2k
Amazon Rekognitionを使ったインターホンハック
miura55
0
110
Pythonでルンバをハックしてみた
miura55
0
210
あなたの知らないクラフトビールの世界
miura55
0
400
Storage Browser for Amazon S3を触ってみた + α
miura55
0
260
Cloudflare R2をトリガーにCloudflare Workersを動かしてみた
miura55
0
260
あのボタンでつながるSORACOM
miura55
0
160
Postman Flowsで作るAPI連携LINE Bot
miura55
0
420
Lambdaと共に歩んだAWS
miura55
3
940
Other Decks in Technology
See All in Technology
OCHaCafe S11 #2 コンテナ時代の次の一手:Wasm 最前線
oracle4engineer
PRO
2
130
スクリプトの先へ!AIエージェントと組み合わせる モバイルE2Eテスト
error96num
0
180
今のWordPress の制作手法ってなにがあんねん?(改) / What’s the Deal with WordPress Development These Days?
tbshiki
0
460
非情報系研究者へ送る Transformer入門
rishiyama
11
7.5k
TypeScript 7.0の現在地と備え方
uhyo
3
230
脳内メモリ、思ったより揮発性だった
koutorino
0
360
楽しく学ぼう!ネットワーク入門
shotashiratori
4
3.3k
楽しく学ぼう!コミュニティ入門 AWSと人が つむいできたストーリー
hiroramos4
PRO
1
200
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
430
アーキテクチャモダナイゼーションを実現する組織
satohjohn
2
880
AWSの資格って役に立つの?
tk3fftk
2
340
JAWS Days 2026 楽しく学ぼう! 認証認可 入門/20260307-jaws-days-novice-lane-auth
opelab
11
2.3k
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
How GitHub (no longer) Works
holman
316
140k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
140
AI: The stuff that nobody shows you
jnunemaker
PRO
3
400
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
76
Building an army of robots
kneath
306
46k
Un-Boring Meetings
codingconduct
0
220
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
Transcript
freeeのAPIで作る業務効率化 LINE bot Koki Miura(@k_miura_io)
自己紹介 • 三浦 耕生(こうき) • 名古屋のゲーム会社 のサーバーエンジニア @k_miura_io koki.miura05
アジェンダ • 今回作ったアプリの紹介 • 使用技術の紹介 • DEMO • アプリ開発のためのTips •
ソースコード
None
None
2つの困りごと • 経費精算が大変 • レシートの中身を打ち込むのがめんどくさい • 月の締日にまとめて精算するのではなく忘れないうちにやりたい • 打刻忘れが多い(昔の僕) •
打刻専用のパソコンでやらないとだめ • 忘れたら何故か理由を書かされる(未だに納得できない)
これを手元でできれば解決できるのでは?
今回作ったアプリ • freeeのAPIを連携した業務効率化する LINE bot • 打刻、打刻修正、経費精算 • レシートの文字起こし(←ポイント) •
freeeのAPIトークンを自動更新
使用技術 • Python(Flask) • freee API • Messaging API •
Clova OCR • IBM Cloud Functions • Cloundant
システム構成
アプリのメイン機能
freeeのAPI • OAuth2認証 • APIトークンの有効期限が短い(24時間) • リフレッシュトークンをつかって工夫をしなければならない (工夫については後ほど紹介) • freeeがWebで提供している各種サービス(労務、会計)
の機能をAPIで提供している • プランによって使用できるAPIに制限がある →開発者用の事業所を立てれば全部のAPIが無料で使える ※APIでやるよりもWeb上で設定したほうが早い場合も
用途 • 雇用者のID、ユーザ名の取得 • 打刻 • 打刻修正 • 経費申請(APIでは下書きのみ)
Clova OCR • 最近リリースした文字起こしサービス • 今回はレシートの画像を送信するとレシート情報を整 理してJSONが返ってくるレシート向けのAPIを使用 • 店舗名(支店名)、購入品目、金額、支払い方法などを きれいにまとめてくれる
• よくわからんがしゅごいAPI • コンテスト参加者だけに提供される(無料)!!
用途 • ユーザーが撮影したレシートの画像から購入内容を取得 • レシートの内容を立替申請としてfreeeの経費精算APIへ
Messaging API • LINE botを動かすために使うAPI • とにかく機能が多い • 無料で使い放題 •
ドキュメントめちゃくちゃわかりやすい • 各言語に対応したSDKが提供されている
用途 • botのやり取り(メッセージの受信、送信) • ユーザが送った画像データの取得 • リッチメニューの設定、切り替え • 友達追加したときの挨拶 退勤
LIFF • LINE Front End Frameworkの略 • LINEアプリ上で開くと自動ログインをする • LINEアプリ上で表示サイズを3つ設定できる
(個人的にはTallがおすすめ) • JavaScriptのSDKでユーザ情報を取得する ことができる • LINEのミニアプリの元になる技術
用途 • LINEのユーザーIDとfreeeの従業員IDの 紐付け(打刻のAPIを行うときに必要) • 表示しているfreeeのユーザー名ももちろ んAPIから取得 • 友だち追加したときに送信されるメッセージ の中にあるFlexMessageのボタンの中に
LIFF URLを仕込んでいる
用途その2 • 打刻修正のフォームを用意し日時を入力 • UIが殺風景なのは勘弁してくださいm(_ _)m • 修正ボタンを押すとLIFFを閉じて代わりにbot にメッセージを送信する
freeeのトークンを自動更新
IBM Cloud Functions • IBM Cloudが提供するサーバーレス環境 • 対応言語が豊富 • クレジットカード無くても使える(無料で使える)
• 一定時間に実行するコードを書いたりちょっとしたAPIを 作りたいときに便利
用途 • freeeのAPIトークンの有効期限が来る前に12時間おきにトークンを更新 • 取得したトークンとリフレッシュトークンはCloudantへ
Cloudant • IBM Cloudで提供されているNoSQLのデータベース • 1GBまで無料 • DBを接続するために認証情報を用意する必要あり →有効期限なし •
IBM Cloud Functionsではデフォルトで使えるように SDKがプリインストールされている
用途 • APIトークン、リフレッシュトークンの保存(初回のトークンは事前に登 録しておく必要あり) • LINE botのユーザID、freeeの従業員IDの保存 • botのやり取りの保存(ドキュメントのIDにLINEのユーザIDを使用)
DEMO
いざというときのための動画w
アプリ開発のためのTips • 動作検証でAPIを使うときには公式リファレンスにトークンを入れれば試 せる • 会計freeeのAPIであればSDKを使って開発ができる(JavaとC#のみ) • APIトークンは有効期限があることを忘れないように • APIの活用事例はfreeeの開発者ブログでも紹介されている
https://developers.freee.co.jp/
今回のソースコード https://github.com/Miura55/freee_labor_bot
END