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 Markdownを組み込む
Search
Kazuhiro Maeda
October 22, 2022
Technology
0
540
分析システムにR Markdownを組み込む
Tokyo.R #102で発表した内容のスライドです
ref)
https://tokyor.connpass.com/event/262836/
Kazuhiro Maeda
October 22, 2022
Tweet
Share
More Decks by Kazuhiro Maeda
See All by Kazuhiro Maeda
Will Positron accelerate us? (update)
kazutan
1
150
積もってく会議メモをどうにかしたかった
kazutan
0
270
Rに管理されてみる
kazutan
0
490
私とR、そしてキャリア
kazutan
2
3.9k
tubeplayR v1.0への道
kazutan
2
240
R, Git, Droneを使ってconfluenceへのKPI予測レポートを自動化した話
kazutan
2
680
週次KPIレポートをconfluenceへUpするためにやったこと
kazutan
1
1.6k
xaringanパッケージの内容をちょっとだけ
kazutan
0
1.1k
最近のRパッケージ開発事情
kazutan
0
380
Other Decks in Technology
See All in Technology
Claude Codeで実践するスペック駆動開発入門 / sdd-with-claude_code
yoshidashingo
2
4k
React 19時代のコンポーネント設計ベストプラクティス
uhyo
17
6.7k
自律型コーディングエージェントでどこまで出来るかやってみる~ Claude Code vs GitHub Copilot(Agent mode) ~ / How Far Can Autonomous Coding Agents Go? ~Claude Code vs GitHub Copilot (Agent Mode)~
jnymyk
0
180
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
800
技術キャッチアップ効率化を実現する記事推薦システムの構築
yudai00
2
120
なぜAIは チーム開発を 速くしないのか
tan_go238
8
3.3k
ECSネイティブのBlue/Green デプロイを攻略しよう ~CodeDeployとの違いから、デプロイフロー実装まで~
ideaws
3
300
Intro SAGA Event Space
midnight480
0
140
意志を実装するアーキテクチャモダナイゼーション
nwiizo
3
1.5k
xDS を活用したサービスディスカバリーで実現するブランチ別 QA 環境の構築手法
knwoop
1
200
新規事業開発でのAWS活用
amixedcolor
1
190
今、求められるデータエンジニア
waiwai2111
2
1.3k
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Agile that works and the tools we love
rasmusluckow
331
21k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
240
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
450
The Cult of Friendly URLs
andyhume
79
6.8k
Documentation Writing (for coders)
carmenintech
77
5.3k
Scaling GitHub
holman
464
140k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
Discover your Explorer Soul
emna__ayadi
2
1.1k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Transcript
分析システムにR Markdownを組み込む Tokyo.R #102 kazutan 2022-10-22
はじめに 2 / 23
はじめに 自己紹介 名前/アカウント 前田和寛(Maeda Kazuhiro) @kazutan Twitter GitHub Qiita, r-wakalang,
etc... 3 / 23
はじめに 書籍 4 / 23
はじめに 所属 LINE Fukuoka株式会社 Data Scientist DataLabs - Senior Manager
Data Science Team Machine Learning Team Data Engineering & Solution Team LINE株式会社 CDO Office 5 / 23
はじめに 今回のお話 分析のシステムにR Markdownを組み込んで構築したときのお話 具体的なところについては、すでに発表済み 週次KPIレポートをconfluenceへUpするためにやったこと R, Git, Droneを使ってconfluenceへのKPI予測レポートを自動化した話 今回はこれらを構築するときに私が意識したことや設計時のポイントについてお話しま
す R Markdownを組み込んだKPI予測システム 全体設計をするときに考えたこと Rでシステムを組むときに考えたこと R Markdownをシステムに組み込むときに考えたこと 6 / 23
R Markdownを組み込んだ予測システム 7 / 23
Background KPIsを予測して可視化/レポート化するのを自動化 daily KPIを算出 算出したKPIスコアを用いてモデリング fitting, forecast レポート作成 各KPI指標をplot, table化
関係者が閲覧できる、confluence Wiki上の適切な場所へレポートs区政 上記をすべて自動で定期的に実行できるようにする 詳細は「 R, Git, Droneを使ってconfluenceへのKPI予測レポートを自動化した話」を参照 8 / 23
Overview システムアーキテクチャ 9 / 23
全体設計をするときに考えたこと 10 / 23
プロセスを意味のあるまとまりで分離 プロセスを大きく分割する 1. データ加工 2. モデリング 3. Rmd生成/加工 4. render/publish
できるかぎり「疎」な結合にする ブロック別での開発をスムーズにするため 最適化のために必要(次のスライド) それぞれのブロックを差し替え可能にするため -> 1枚のRmdファイルで組まないこと 11 / 23
実行(利用)環境を最適化 すべてをR上で処理する必要はない データ加工プロセスはPresto/Sparkなどで実行 「Rは読めないけどSQLは読める」という人はたくさんいる データエンジニアリングを他のメンバーに託せる あるいはDWHやData Martを準備してもらう 時系列モデリングについても、適切なツールがあるならそれを利用 ただし、組み合わせるものが増えるとコストも上がる 主にメンテナンスやトラブルシューティング
パフォーマンスとのバランスなどで決定 12 / 23
Rでシステムを組むときに考えたこと 13 / 23
関数化・モジュール化の徹底 処理は関数に書き出す プロセスを構造化 後のメンテナンスコストを低下 各処理でのI/Oを明確化 テスト設計がスムーズに バグ対策にも パッケージ化とは異なることを意識 パッケージの関数は汎用性などを求める システムにおける関数化の目的は上述の通り
汎用性は二の次 14 / 23
テスト/エラー検知を意識する ちゃんと動くのが前提 動作確認はきっちりする必要あり テストは重要 単体/ユニットテストをできるように組む 「テストがしやすい」粒度での関数化/モジュール化を 増やしすぎるとコストが跳ね上がる バグを見つけやすいレベルを意識して 想定できないからエラーは発生する エラーが発生しないシステムなんてない
どの処理でエラーが発生したのかをnoticeするように 15 / 23
自分ではない人がメンテできるように マニアックよりもクオリティを 高い技術力を発揮できるのは気持ちいい でも、あなたがずっとそれを見続けるのですか? 属人化に直結する 複雑な構成にするのは避けよう どうせメンテナンス性も低下する 資料をちゃんと作る 他の人が読んでも理解できるようにする工夫を コメント充実
ドキュメントを作成 資料作成まで含めての工数を見積もること そして、1ヶ月後の自分は別人だと考えよう 16 / 23
R Markdownをシステムに組み込むとき に考えたこと 17 / 23
要件定義を忠実にRmdへ 使われないレポートは価値がない 価値 = ユーザーの期待に応えること ユーザーニーズをきっちりと把握すること そのうえで、R Markdownを設計する テンプレート化 Rmdの特徴はテンプレート化できること
定常的/定型的なレポートがいい Rmdは基本テキストファイル(md) 普通にRから文字列をいじれる glue パッケージなどを利用して動的に書き換えると楽 18 / 23
極力Rの処理を入れない Rmd内のチャンクで複雑な処理はしない Rチャンク内でのエラーは追いにくい Rでの実行環境など想定しにくいものが多い Rmdでのデバッキングはめんどくさい 毎回renderするのは大変 あくまで表出層のみに留める だいたいこんな感じに 整形済みの必要なデータ読み込み 可視化
数値の動的な代入 (必要なら)文字列の加工など 19 / 23
R Markdownを使うメリットって? 表出層を作成するときのコストがかなり少ない ベースがmd UIエンジニアリングスキルがなくても作れる Skeletonがシンプルになる 表現力が高い Pandocを活用できる 非常にパワフル Publishもいろいろできる
システム的に連携しやすい 分析環境からそのまま処理できる render 一発でいけるのは、やっぱりすごい 20 / 23
まとめ 21 / 23
要点のまとめ 全体設計 プロセスを意味のあるまとまりで分離 実行(利用)環境を最適化 Rでの実装について 関数化・モジュール化の徹底 テスト/エラー検知を意識 自分ではない人がメンテできるように R Markdownの実装について
要件定義を忠実にRmdへ 極力Rの処理を入れない 22 / 23
Enjoy! 23 / 23