Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
2020.09.30「freeeのAPIで作る業務効率化LINE bot」
KMiura
September 30, 2020
Technology
1
770
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
はじめてのSLAM
miura55
0
640
ROS再入門 -Lidarセンサーを触ってみた-
miura55
0
230
たぶん日本初のArduino UNO Mini Limited Edition開封レビュー
miura55
0
280
Refactor Spacesハンズオン後半戦の紹介+α
miura55
0
72
Refactor Spacesハンズオン延長戦
miura55
0
650
SORACOM LTE-M Button Powerd by AWSを使ってSwitchBotを動かしてみた
miura55
0
320
ROS再入門 -Raspberry Piでロボットカー作ってみた-
miura55
0
700
Node-REDでLINE Payを使うノードを公開してみた
miura55
0
730
Spotifyが公開したサウンドエフェクターSDKを試してみた
miura55
0
550
Other Decks in Technology
See All in Technology
A1A会社紹介資料-2022-05-20
a1a
2
1.1k
Oracle Cloud Infrastructure:2022年5月度サービス・アップデート
oracle4engineer
PRO
0
120
srenext2022-skaru
mixi_engineers
PRO
1
800
數據的多重宇宙 @ LINE Taiwan
line_developers_tw
PRO
0
700
Stripe Search APIを利用した、LINEとStripeの顧客情報連携/line-dc-202205
stripehideokamoto
0
130
Unity Package Managerで自作パッケージを配布する方法
yunoda
0
210
CAMのサービス開発の歴史と共通基盤を使った 開発スタイルへの変遷について
ishikawa_pro
0
100
BFFとmicroservicesアーキテクチャ
hirac1220
0
110
失敗から学ぶAWSコスト管理入門 ~想定の50倍以上の請求がきた話~
msato
0
430
LIFF Deep Dive 2022
line_developers
PRO
1
540
Who owns the Service Level?
chaspy
5
1.2k
runn is a package/tool for running operations following a scenario. / golang.tokyo #32
k1low
1
220
Featured
See All Featured
For a Future-Friendly Web
brad_frost
164
7.4k
Web Components: a chance to create the future
zenorocha
303
40k
Git: the NoSQL Database
bkeepers
PRO
415
59k
Building Adaptive Systems
keathley
25
1.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
Stop Working from a Prison Cell
hatefulcrawdad
261
17k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
Rebuilding a faster, lazier Slack
samanthasiow
62
7.2k
How to Ace a Technical Interview
jacobian
265
21k
Statistics for Hackers
jakevdp
781
210k
Optimizing for Happiness
mojombo
365
63k
Navigating Team Friction
lara
175
11k
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