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.2k
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
Bedrock Knowledge baseを使って今年の上半期のニュースを聞いてみた(リベンジ編)
miura55
0
140
Is it wrong to use a web framework with Lambda?
miura55
0
100
Bedrock Knowledge baseを使って今年の上半期のニュースを聞いてみた
miura55
0
110
AWS×IoTについて語り合う会
miura55
0
78
クラウドを活用して家電をハックしてみた
miura55
0
72
Amplify Gen2でLambda構築してみた
miura55
0
98
Amplify Gen2でLambda構築してみた
miura55
1
680
Amplify Gen2がGAされたので試してみた
miura55
0
110
VS CodeとVimが好きなエンジニアが考えた最強のエディタ
miura55
0
230
Other Decks in Technology
See All in Technology
【Λ(らむだ)最近のアプデ情報 / RPALT20240904
lambda
0
170
CRTO/CRTL/OSEPの比較・勉強法とAV/EDRの検知実験
chayakonanaika
1
950
目標設定と習慣化で今よりも一歩生産性を上げる
sansantech
PRO
7
2.4k
React Aria で実現する次世代のアクセシビリティ
ryo_manba
4
910
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
41k
[RSJ24] Object Retrieval in Large-Scale Indoor Environments Using Dense Text with a Multi-Modal Large Language Model
keio_smilab
PRO
0
230
AWSを始めた頃に陥りがちなポイントをまとめてみた
oshanqq
1
3.1k
ロボットアームを遠隔制御の話 & LLMをつかったIoTの話もしたい
soracom
PRO
1
220
バックログを導入し やっぱやめた話
ota42y
0
180
20分で分かるIAM全機能 (拡大版) / 20240903-jawsug-yokohama-iam
opelab
3
130
エンジニアリングマネージャーが紐解く、事業視点から組織文化まで、包括的アプローチの探求 / READYFOR
9ma3r
14
2.3k
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
2
170
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
22
3.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
38
9.1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
502
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
25
2k
Creatively Recalculating Your Daily Design Routine
revolveconf
215
12k
Designing on Purpose - Digital PM Summit 2013
jponch
113
6.8k
It's Worth the Effort
3n
182
27k
Writing Fast Ruby
sferik
623
60k
Making Projects Easy
brettharned
113
5.8k
A Modern Web Designer's Workflow
chriscoyier
690
190k
4 Signs Your Business is Dying
shpigford
179
21k
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