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
Rに管理されてみる
Search
Kazuhiro Maeda
July 23, 2022
Programming
510
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
210
積もってく会議メモをどうにかしたかった
kazutan
0
300
分析システムにR Markdownを組み込む
kazutan
0
580
私とR、そしてキャリア
kazutan
2
4k
tubeplayR v1.0への道
kazutan
2
260
R, Git, Droneを使ってconfluenceへのKPI予測レポートを自動化した話
kazutan
2
700
週次KPIレポートをconfluenceへUpするためにやったこと
kazutan
1
1.6k
xaringanパッケージの内容をちょっとだけ
kazutan
0
1.1k
最近のRパッケージ開発事情
kazutan
0
410
Other Decks in Programming
See All in Programming
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
510
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
150
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
Are APIs Still Relevant in the AI Era?
soyuka
0
390
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
3.1k
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
210
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
4
400
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.6k
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
140
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
280
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
200
Java 27新機能 / Java 27 new features
kishida
2
190
Featured
See All Featured
Between Models and Reality
mayunak
4
480
Speed Design
sergeychernyshev
33
2.1k
Raft: Consensus for Rubyists
vanstee
142
7.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
890
Optimizing for Happiness
mojombo
378
71k
The agentic SEO stack - context over prompts
schlessera
0
950
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Design in an AI World
tapps
1
340
Facilitating Awesome Meetings
lara
57
7.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
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