Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2020.09.30「freeeのAPIで作る業務効率化LINE bot」
Search
KMiura
September 30, 2020
Technology
1.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
More Decks by KMiura
See All by KMiura
運用しているアプリケーションのDBのリプレイスをやってみた
miura55
1
1.2k
Amazon Rekognitionを使ったインターホンハック
miura55
0
140
Pythonでルンバをハックしてみた
miura55
0
270
あなたの知らないクラフトビールの世界
miura55
0
480
Storage Browser for Amazon S3を触ってみた + α
miura55
0
340
Cloudflare R2をトリガーにCloudflare Workersを動かしてみた
miura55
0
340
あのボタンでつながるSORACOM
miura55
0
200
Postman Flowsで作るAPI連携LINE Bot
miura55
0
460
Lambdaと共に歩んだAWS
miura55
3
1.1k
Other Decks in Technology
See All in Technology
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
1
130
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
300
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
170
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
360
自分で立ててみるLLMサービス
y_sera15
0
150
継続的なAIコスト最適化
bgpat
1
280
ハードウェアコンペでもAI駆動開発が進んでいる話
iotengineer22
1
670
SDDの運用にめげずに向き合った話
sansantech
PRO
1
140
自主式軟體工廠
philipz
0
250
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
580
Loop Engineering これくらいでいい
mikanichinose
0
190
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
320
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
260
So, you think you're a good person
axbom
PRO
2
2.2k
Exploring anti-patterns in Rails
aemeredith
4
530
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Faster Mobile Websites
deanohume
310
32k
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