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
App Runnerでパラメーターストアの値を使ってみた
miura55
0
280
ultraArmをモニター提供してもらった話
miura55
0
110
JAWS UG名古屋2023年活動報告
miura55
0
130
AWS Step Functionsの新機能「Call third-party API」を試してみた
miura55
1
100
AWS Step Functionsの新機能「Call third-party API」を試してみた
miura55
0
190
AWS CDKの新機能「cdk migrate」を試してみた
miura55
1
320
LINE DC×SORACOM UGのこれまでとこれから
miura55
0
42
社会人4年目が学生に捧げる5か条
miura55
0
130
AWSで作るGPSトラッキングシステム
miura55
0
440
Other Decks in Technology
See All in Technology
A (short) History of AI
harishpillay
0
110
なぜ NOT A HOTEL が Web3 に取り組むのか - NOT A HOTEL TECH TALK
ynunokawa
0
160
SREとその組織類型
tatsuo48
8
1.5k
エンタープライズ環境下での Active Directory の運用 TIPS
tamaiyutaro
1
1.5k
o11y入門_外形監視を利用したWebアプリケーションへの最適なモニタリング_TechBrew
k5k
2
100
小さな開発会社がWebサービスを作る理由
polidog
PRO
0
130
SIEMを用いて、セキュリティログ分析の可視化と分析を実現し、PDCAサイクルを回してみた
coconala_engineer
0
200
コードを書く隙間を見つけて生きていく技術/Findy 思考の現在地
fujiwara3
24
4.8k
DevOpsDays History and my DevOps story
kawaguti
PRO
8
1.4k
20240416_devopsdaystokyo
kzkmaeda
1
180
"好き"との生活/Regularly update profile with GitHub Actions
judeeeee
0
150
疲弊しない!AWSセキュリティ統制の考え方 #devio_osakaday1
masahirokawahara
6
5.8k
Featured
See All Featured
The Brand Is Dead. Long Live the Brand.
mthomps
48
28k
How STYLIGHT went responsive
nonsquared
92
4.8k
Fireside Chat
paigeccino
19
2.6k
Navigating Team Friction
lara
177
13k
For a Future-Friendly Web
brad_frost
171
8.9k
Debugging Ruby Performance
tmm1
69
11k
The Power of CSS Pseudo Elements
geoffreycrofte
58
5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
1
3.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
15
2.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
355
22k
The World Runs on Bad Software
bkeepers
PRO
61
6.7k
The Cult of Friendly URLs
andyhume
73
5.7k
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