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
Rに管理されてみる
Search
Kazuhiro Maeda
July 23, 2022
Programming
500
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rに管理されてみる
Tokyo.R #100でのプレゼン資料です。
イベントURL:
https://tokyor.connpass.com/event/253867/
Kazuhiro Maeda
July 23, 2022
More Decks by Kazuhiro Maeda
See All by Kazuhiro Maeda
Will Positron accelerate us? (update)
kazutan
1
190
積もってく会議メモをどうにかしたかった
kazutan
0
290
分析システムにR Markdownを組み込む
kazutan
0
570
私とR、そしてキャリア
kazutan
2
4k
tubeplayR v1.0への道
kazutan
2
250
R, Git, Droneを使ってconfluenceへのKPI予測レポートを自動化した話
kazutan
2
690
週次KPIレポートをconfluenceへUpするためにやったこと
kazutan
1
1.6k
xaringanパッケージの内容をちょっとだけ
kazutan
0
1.1k
最近のRパッケージ開発事情
kazutan
0
400
Other Decks in Programming
See All in Programming
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
200
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
6.9k
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
360
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
dRuby over BLE
makicamel
2
380
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
160
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
140
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
130
Creating Composable Callables in Contemporary C++
rollbear
0
150
AI 輔助遺留系統現代化的經驗分享
jame2408
1
760
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
260
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
New Earth Scene 8
popppiees
3
2.3k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
370
Transcript
Rに管理されてみる Tokyo.R #100 kazutan(前田 和寛) 2022-07-23
はじめに 2 / 27
はじめに 自己紹介 名前/アカウント 前田和寛(Maeda Kazuhiro) @kazutan Twitter GitHub Qiita, r-wakalang,
etc... 3 / 27
はじめに 書籍 4 / 27
はじめに 所属 LINE Fukuoka株式会社 Data Scientist DataLabs Data Science Team
- Manager Data Engineering & Solution Team - Manager LINE株式会社 CDO Office 5 / 27
Task Management 6 / 27
Task Management タスクを管理/運用して業務を遂行できるようにすること 私が大切にしていること タスクはかならずticket/cardにする 小さくても、終わった後でも必ずする Close/Goal基準を明確化すること 1 ticketに1つのClose/Goal基準 進行状況を確認できること
管理できなくなる 作業ログを残せること 後にtask-framework structuringで必要 ...結局は基本的なことが大事 7 / 27
Task Management Task Managementは”めんどくさい” なので、いろいろなツールがある JIRA Trello Confluence (!?) Slack(!?!?)
Excel(!?!!?!!?!?!?!?!?!?!) etc… 私は複数のプロジェクトにassign プロジェクトでツールが異なる めんどくさい 自分用にTrelloを使う(2021/04~) 8 / 27
Task Management Trello Kanbanスタイルのタスク管理ツール 詳細は公式サイトを参照 https://trello.com/ 9 / 27
Task Management Trelloのめんどうなところ アーカイブが使いづらい 検索しづらい 削除がしづらい Archived -> removeしかできない Reportが弱い
Textベース 分析できない 業務の傾向などが分析できない ...よろしい、ならばRだ 10 / 27
Trello with R 11 / 27
TrelloにはREST APIが提供されている https://developer.atlassian.com/cloud/trello/rest/ Trelloのほぼ全ての要素が扱えそう 各種APIについては今回の発表で は省略 ドキュメントがしっかりしている key/tokenがあれば利用可能 API Call制限などはそれぞれで確
認してください 管理者により制限されている場合 があります APIがあるならRでできるじゃないか!! Trello with R Trello API 12 / 27
Trello with R httrで叩いてみた key/tokenはkeyring パッケージを使って保持させてみた base_url , path あたりは雑に別途作成
雑に叩いてみた first_api_call <- GET( url = base_url, add_headers(Accept = ""), add_headers(Accept = "application/json"), path = paste(me_path, "boards", sep = "/"), query = list( key = keyring::key_get("trello_api_key"), token = keyring::key_get("trello_api_token") ), verbose() ) うまくいった 13 / 27
Trello with R いろいろ関数にしよう ほしいのは以下の通り 簡単に認証情報を保持できるもの(ベタ打ちしない) CURDの基本的な関数(低水準関数)はほしい 用途に合わせて使える関数(高水準関数)もほしい batch処理を仮想環境で実行しやすいようにしたい とりあえず作ってみよう
使っているコードは以下のRepositoryにあります: https://github.com/kazutan/trelloR 14 / 27
Trello with R key/token情報の保持 set_trello_auth_infos(force_update = FALSE) https://github.com/kazutan/trelloR/blob/master/R/api.R#L23-L56 認証情報はkeyring パッケージを利用することに
対話的にkey/tokenをセットするのでRのログに残らない すでに登録してある場合、強制的にupdateしたい場合は引数で指定 check_trello_auth_infos(key = NULL, token = NULL, null_return = NULL) https://github.com/kazutan/trelloR/blob/master/R/api.R#L71-L107 認証情報がすでにあるかどうかをチェック すでにあるならそれを持ってくる 15 / 27
Trello with R CRUD関数(低水準関数) - GET get_trello_api(base_url, path, verbose =
FALSE, content = TRUE, query = list(), key = NULL, token = NULL) https://github.com/kazutan/trelloR/blob/master/R/api.R#L136-L166 base_url , path でAPIの行き先を指定 query でクエリパラメータを指定 verboseを出すかどうかを指定可能 content = TRUE で、outputに httr::content() を当てたものを返す key , token はNULL ならローカルのkeyringへ探しに行く batch処理をする場合は、ここにSecretで渡せばOK 16 / 27
Trello with R CRUD関数(低水準関数) - PUT put_trello_api(base_url, path, verbose =
FALSE, content = TRUE, query = list(), body = NULL, encode = c("multipart", "form", "json", "raw"), key = NULL, token = NULL) https://github.com/kazutan/trelloR/blob/master/R/api.R#L173-L206 get_trello_api() とほぼ一緒 body , encode については ?httr::PUT を参照 17 / 27
Trello with R CRUD関数(低水準関数) - POST post_trello_api(base_url, path, verbose =
FALSE, content = TRUE, query = list(), body = NULL, encode = c("multipart", "form", "json", "raw"), key = NULL, token = NULL) https://github.com/kazutan/trelloR/blob/master/R/api.R#L213-L246 put_trello_api() とほぼ一緒 18 / 27
Trello with R CRUD関数(低水準関数) - DELETE delete_trello_api(base_url, path, verbose =
TRUE, key = NULL, token = NULL) https://github.com/kazutan/trelloR/blob/master/R/api.R#L253-L275 get_trello_api() とほぼ一緒 ただし、verbose = TRUE をデフォルトに 19 / 27
Trello with R 高水準関数 - メンバー情報取得 get_member_infos(base_url, member = "me",
post_path = NULL, query = list(), verbose = FALSE, content = TRUE, key = NULL, token = NULL) https://github.com/kazutan/trelloR/blob/master/R/get.R#L13-L46 メンバー情報を取得する関数 member ユーザー名もしくはメンバーIDを指定 長さ2以上のベクトルで与えた場合、purrr::map でまとめて実行する me は自分自身を指定する意味となる post_path はさらに対象を指定するときに利用 詳細はTrello APIリファレンスを参照 20 / 27
Trello with R 高水準関数 - ボード情報取得 get_board_infos(base_url, board_id, post_path =
NULL, query = list(), verbose = FALSE, content = TRUE, key = NULL, token = NULL) https://github.com/kazutan/trelloR/blob/master/R/get.R#L56-L89 ボード情報を取得する関数 board_id ボードIDを指定 あとは get_member_infos() と同様 21 / 27
Trello with R 高水準関数 - カード情報取得 get_card_infos(base_url, card_id, post_path =
NULL, query = list(), verbose = FALSE, content = TRUE, key = NULL, token = NULL) https://github.com/kazutan/trelloR/blob/master/R/get.R#L99-L132 カード情報を取得する関数 card_id カードIDを指定 あとは get_member_infos() と同様 22 / 27
Trello with R 高水準関数 - カード削除 remove_card(base_url, card_id, verbose =
FALSE, key = NULL, token = NULL) https://github.com/kazutan/trelloR/blob/master/R/delete.R#L12-L40 カードを削除する関数 card_id カードIDを指定 23 / 27
Trello with R 基本的な流れ 1. set_trello_auth_infos() でkey/tokenをセット 2. get_member_infos() でメンバー情報を取得
1. そのメンバーが所有するboard_idがこの中に含まれる 3. get_board_infos() でボード情報を取得する 1. そのboardが保有するcard情報も持ってくる 2. Trelloのリストやカスタムフィールドのマスタもboardに入っている 3. post_path でlists やcustomFields を指定して実行すればOK 4. get_card_infos() で、カード内のコメントを取得 1. カードのコメントはcardの下にぶら下がっている 5. あとはよしなに整形 1. 結構しんどいので覚悟しとく これでTrello上のデータを取得できた!!!! 24 / 27
Trello with R パッケージ化しないの? そのつもりだった 勢いで関数まで作ったけど、あとからパッケージを見つけた https://github.com/jchrom/trelloR しかも同名だった… ただ、設計コンセプトが違ったので、自分の関数をそのまま使ってる 私がおいてるRepositoryはインストールできるけど、推奨はしません
自分好みの関数を作る、これもまたよし 25 / 27
Data Science for me 26 / 27
Data Science for me 以下は公開できない情報が多いので、説明のみでご了承ください Card検索ツール flexdashboard とShiny を利用 DT
でカード一覧、クリックするとコメントを表示させる タスク可視化ダッシュボード flexdashboard 上でplotly などにより可視化 分析/予測 時系列予測を実施 起票からcloseするまでの堆積時間の分析 etc... Enjoy! 27 / 27