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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
970
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
1k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
160
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
140
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
780
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
1k
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
140
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
230
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
350
Strategic Design in the Frontend: Moduliths & Micro Frontends @DDDEurope
manfredsteyer
PRO
0
140
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.7k
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Agile that works and the tools we love
rasmusluckow
331
22k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Designing for Timeless Needs
cassininazir
1
270
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Everyday Curiosity
cassininazir
0
250
ラッコキーワード サービス紹介資料
rakko
1
3.8M
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
410
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
400
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
630
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