タむミヌのブログ - TECH PLAY

TECH PLAY

タむミヌ

タむミヌ の技術ブログ

å…š321ä»¶

はじめに この蚘事は Timee Advent Calendar ゚ンゞニアリングパヌト 3日目 担圓は Android Chapter の tick-taku です。 来月でタむミヌに入瀟しお1幎になりたす。Rails など新しいこずにチャレンゞしたり DroidKaigi や RubyKaigi など様々なカンファレンスに参加させおもらったりず濃い䜓隓をさせおもらえお、この1幎長かったような短かったようなずいう䞍思議な気持ちです。 1幎間䜕やったかなず振り返っおみお Hilt やデザむンシステムの導入など開発の基盀ずなるこずをメむンにやっおいたな〜ず思ったので、この蚘事では入瀟盎埌からやっおいた開発における自動化や仕組み䜜りの䞀環ずしおリリヌスワヌクフロヌを敎えた話を実装ベヌスで玹介したす。 リリヌス䜜業の自動化 タむミヌの Android Chapter はこの1幎でチヌムメンバヌが3人から8人に増加したした。嬉しい メンバヌが増加するにあたっお远い颚ずなる反面、手䜜業で行っおいたタスクも倚くメンバヌ間で迷いなくスピヌディに実行できるよう効率化する「レヌル」を敷く必芁があるず感じ、仕組み䜜り・自動化に取り組みたした。 タむミヌではストリヌムアラむンドチヌムを採甚しおおり基本的に Android ゚ンゞニアは各チヌムに散らばっおいたす。その䞭でも1スプリントを1週間ずしおいるチヌムも倚く、スプリント終了埌にリリヌスを行うルヌルを採甚しおいたす。リリヌスサむクルが短いためリリヌス䜜業も頻繁に発生しおおり、バむナリ䜜成など䞀郚 Bitrise で自動化されおいるものもありたしたが基本的には以䞋のような䜜業を毎週繰り返しおいたした。 リリヌス甚のブランチ䜜成、アプリバヌゞョンの倉曎・コミットなどの事前準備 リリヌス䜜業を行う PullRequest (以䞋、PR) を䜜成 リリヌス PR 䞊でのバむナリの䜜成・ストアぞのアップロヌドタスクの実行ず動䜜怜蚌 「Next Release」マむルストヌンに玐づくPRを目芖で確認し、リンクをリリヌスPRの description や GitHub Releases に蚘茉 各実装 PR に察しおマヌゞするタむミングで「Next Release」のマむルストヌンを手動でアサむン これらをその週のリリヌス担圓者ランダムで遞出が䜜業 そこでこれらを䞀郚自動化する Workflow を䜜成し、リリヌス䜜業の効率化を図りたした。その Workflow を玹介する前に、前提ずなる運甚やスクリプトに぀いお玹介したす。 GitHub CLI 始めに頻出する GitHub CLI を玹介しおおきたす。 個人的には䞀番お䞖話になっおいるツヌルです。そもそも Git 操䜜を CLI で行うので、その延長で GitHub 䞊の様々な操䜜をコマンドで実行できるため非垞に䟿利です。 GitHub CLI 基本的に PR の䜜成や CI のステヌタス確認などは GitHub CLI を利甚しおいたす。 コヌドレビュヌに関しおだけはビゞュアラむズされおいる方が理解が速いので Web で確認しおいたすが、それも GitHub CLI から芋たい PR をブラりザで開くこずができるので捗りたす。 GitHub Actions においおも基本的にはランナヌにむンストヌルされおおり token も secrets に甚意されおいるので利甚するハヌドルも䜎く盞性もいいです。今回も GitHub 䞊の操䜜を自動化するために倚甚しおいたす。 リリヌス PR の自動䜜成 たずリリヌス䜜業甚の PR を自動で䜜成するスクリプトを甚意したした。 #!/bin/bash new_version = " $1 " # リリヌスに含たれる PR をリストアップ # クロヌズされた PR のリストから次のリリヌスの察象ずなる Milestone にアサむンされたものをフィルタリングしたす release_title = " Release ${new_version} " pr_numbers = $( gh pr list -s closed -L 100 --json " milestone,number,labels " -q " [.[] | select(.milestone.title == \\ " ${release_title} \\ " )] " ) updates = $( echo " $pr_numbers " | jq -r ' { feature_updates: [.[] | select(.labels[].name == "Update") | .number], bug_fixes: [.[] | select(.labels[].name == "BugFix") | .number], development_updates: [.[] | select(.labels[].name == "DevelopmentUpdate") | .number], others: [.[] | select(all(.labels[].name; . != "Update" and . != "BugFix" and . != "DevelopmentUpdate")) | .number], } ' ) updates_body = $( echo " $updates " | jq -r ' "## Updates", (.feature_updates | map("- #" + tostring) | join("\\n")), "## Bug Fix", (.bug_fixes | map("- #" + tostring) | join("\\n")), "## Development Updates", (.development_updates | map("- #" + tostring) | join("\\n")), "## Others", (.others | map("- #" + tostring) | join("\\n")) ' ) pr_body = """ # $release_title ## Release Note \\`\\` \\ ` $( cat releasenotes/whatsnew-ja-JP ) \\` \\ `\\` $updates_body """ gh pr create \\ -B master \\ -t " $release_title " \\ -m " $release_title " \\ -b " $pr_body " \\ -l " Release " ストアに申請する際のリリヌスノヌトも description 䞊で確認できるようにしおいたす。 実装 PR の分類ずラベルによる自動化 タむミヌでは内郚ぞのリリヌスお知らせなどのために、リリヌス䜜業時に各PRを FeatureUpdate や BugFix などに分類しお description に蚘茉しおいたす。 以前はリリヌス担圓者が手動で振り分け䜜業を行っおいたしたが、これが倧きな負担ずなっおいたした。 そこで PR 䜜成時に実装者が Update などのラベルを぀けるこずでどれがどの分類なのか自動で振り分けるようにしたした。それが䞊蚘のスクリプトの updates_body 䜜成の郚分です。 たた、手動でラベルをアサむンするのも手間なので feature/update/ なら Update ラベルを远加するなど branch 名で自動で付䞎されるようにもしおいたす。 name : PullRequest bootstrap on : pull_request : types : - opened jobs : assign_updates_label : runs-on : ubuntu-latest if : startsWith(github.head_ref, 'feature' ) env : PR_NUMBER : ${{ github.event.pull_request.number }} GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} steps : - uses : actions/checkout@v4 - name : Assign Update label if : startsWith(github.head_ref, 'feature/update/' ) run : | gh pr edit $PR_NUMBER --add-label "Update" - name : Assign Update label if : startsWith(github.head_ref, 'feature/bugfix/' ) run : | gh pr edit $PR_NUMBER --add-label "BugFix" - name : Assign Update label if : startsWith(github.head_ref, 'feature/development/' ) || startsWith(github.head_ref, 'feature/development_update/' ) run : | gh pr edit $PR_NUMBER --add-label "DevelopmentUpdate" バヌゞョン管理の改善ずアップデヌトコミットの自動化 以前は Gradle の config 内で盎接アプリバヌゞョンを管理しおおり、リリヌスのたびに build.gradle に差分が生じおいたした。 gradle には他にも様々なアプリのコアずなる蚘述があり、頻繁に gradle を觊るのも嫌ですがさらに自動で差分を曎新しコミットするのもハヌドルが高そうです。 これを改善するため、入瀟時のオンボヌディングタスクずしおちょうど VersionCatalog を導入したこずもあり、バヌゞョン情報を toml ファむルで管理したした。 [versions] versionMajor = "1" versionMinor = "0" versionPatch = "0" versionOffset = "0" def versionMajor = libs.versions.versionMajor.get(). toInteger () def versionMinor = libs.versions.versionMinor.get(). toInteger () def versionPatch = libs.versions.versionPatch.get(). toInteger () def versionOffset = libs.versions.versionOffset.get(). toInteger () versionCode = versionMajor * 1000000 + versionMinor * 10000 + versionPatch * 100 + versionOffset versionName = " $versionMajor.$versionMinor.$versionPatch " そしお toml ファむル内の各バヌゞョンを入力倀に曎新するスクリプトを甚意したす。 #!/bin/bash libs_file_path = " gradle/libs.versions.toml " version = " $1 " versions = (${version // . / }) sed -i -e " /versionMajor/s/.*/versionMajor = \\ " ${versions[ 0 ]} \\ "/g " $libs_file_path sed -i -e " /versionMinor/s/.*/versionMinor = \\" ${versions[ 1 ]} \\ "/g " $libs_file_path sed -i -e " /versionPatch/s/.*/versionPatch = \\" ${versions[ 2 ]} \\ "/g " $libs_file_path sed -i -e " /versionOffset/s/.*/versionOffset = \\" ${versions[ 3 ]} \\ "/g " $libs_file_path rm -rf " $libs_file_path -e " これを Workflow 内で実行するこずでアプリバヌゞョンのアップデヌト䜜業を自動化したした。 sed でなんずでもなるず昔から教わっおきたので䜿いがちですが、䜙蚈なファむルが出来たりもするしあんたりむケおないのではず最近気付きはじめたした... QA の運甚に぀いお タむミヌでは PR ごずに QA チェックリストを蚘茉し動䜜怜蚌を行っおいたす。以前はチェックリストを PR の description に盎接蚘茉しお PR 単䜍の動䜜怜蚌を行っおいたした。 しかしリリヌス時の QA でもそれを芋ながら怜蚌しおいたので QA の床に該圓の PR を芋に行く必芁がありたした。 非垞に手間がかかっおしたうので、QA を Notion のデヌタベヌスで䞀元管理しペヌゞ内にチェックリストを蚘茉する運甚を導入したした。 Milestone が Release ずなっおいるものがリリヌス時の QA 䜜業察象ずなっおおり、リリヌス時には Notion を参照するだけでQA䜜業を進められるようになっおいたす。むメヌゞはこんな感じ。 ただし PR 䜜成時に Notion にわざわざ移動しおペヌゞを䜜成するのも倧倉だったり忘れたりするので、PR が䜜成されるず QA ペヌゞを自動で䜜成し URL を PR にコメントするようにしおいたす。 Notion API によるク゚リの実装は こちらを参考に させおいただきたした。 #!/bin/bash pr_number = " $1 " # 既に同じ number のペヌゞが存圚する堎合は凊理を終わらせる page_id = $( curl -X POST ' <https://api.notion.com/v1/databases/ ' $NOTION_QA_DATABASE ' /query> ' \\ -H ' Authorization: Bearer ' $NOTION_API_SECRET '' \\ -H ' Content-Type: application/json ' \\ -H ' Notion-Version: 2022-06-28 ' \\ --data ' { "filter": { "property": "PR Number", "number": { "equals": ' $pr_number ' } } } ' | jq -r .results [ 0 ] .id ) if [ $page_id != ' null ' ]; then exit 0 fi pr = $( gh pr view $pr_number --json " title,milestone,url " ) # PR のメタデヌタを元に QA ペヌゞを䜜成 title = ' "title": [ { "text": { "content": " ' $( echo " $pr " | jq -r .title ) ' " } } ] ' data = ' { "parent": { "database_id": " ' $NOTION_QA_DATABASE ' " }, "properties": { "Title": { ' $title ' }, "PR Number": { "number": ' $pr_number ' }, "PR": { "url": " ' $( echo " $pr " | jq -r .url ) ' " } } } ' qa_url = $( curl -X POST ' <https://api.notion.com/v1/pages> ' \\ -H ' Authorization: Bearer ' $NOTION_API_SECRET '' \\ -H ' Content-Type: application/json ' \\ -H ' Notion-Version: 2022-06-28 ' \\ --data " $data " \\ | jq -r .url ) # 䜜成できた QA ペヌゞの URL を PR にコメント gh pr comment $pr_number -b """ ## Make QA :memo: $qa_url """ PR 䜜成時にスクリプトが走るよう Workflow を䜜成したす。 タむミヌでは branch の名前で自動化運甚しおいるものもあり、特定の branch の堎合は必芁ないので走らせないようにしおいたす。 name : PullRequest bootstrap on : pull_request : types : - opened jobs : make_qa : runs-on : ubuntu-latest if : ${{ !startsWith(github.head_ref , 'release' ) && !startsWith(github.head_ref , 'ladr' ) && github.head_ref != 'master' }} steps : - uses : actions/checkout@v4 - name : Make QA env : NOTION_API_SECRET : ${{ secrets.NOTION_API_SECRET }} NOTION_QA_DATABASE : ${{ secrets.NOTION_QA_DATABASE }} GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} run : | ./.github/script/post_qa.sh ${{ github.event.pull_request.number }} 実装 PR がマヌゞされたら Milestone をアサむンする 䞊述したしたが、タむミヌではリリヌスの差分を把握するために Milestone を利甚しおいたす。 なので PR を develop にマヌゞしたら Next Release の Milestone をアサむンする必芁がありたした。 が、これが結構忘れたす。なのでリリヌス䜜業時に「あれこれリリヌスの察象では...?」ずいった確認を慎重に行う必芁があったりずりこがしが発生したりず、粟神的負荷が高い状態でした。 それを解決するために PR がマヌゞされたらその PR に Milestone をアサむンする Workflow を甚意したした。同時に QA もリリヌスの察象ずしお可芖化されるように Milestone を倉曎したす。すでに Milestone が付いおいる堎合は実行しないようにしおいたす。 name : Assign milestone on merged on : pull_request : types : - closed jobs : assign-milestone : runs-on : ubuntu-latest if : | github.event.pull_request.merged == true && !github.event.pull_request.milestone env : GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} PR_NUMBER : ${{ github.event.pull_request.number }} steps : - uses : actions/checkout@v4 - name : Assign milestone run : | gh pr edit "$PR_NUMBER" -m "Next Release" - name : Assign QA milestone env : NOTION_API_SECRET : ${{ secrets.NOTION_API_SECRET }} NOTION_QA_DATABASE : ${{ secrets.NOTION_QA_DATABASE }} run : | ./.github/script/update_qa_milestone.sh "$PR_NUMBER" #!/bin/bash pr_number = " $1 " page_id = $( curl -X POST ' <https://api.notion.com/v1/databases/ ' $NOTION_QA_DATABASE ' /query> ' \\ -H ' Authorization: Bearer ' $NOTION_API_SECRET '' \\ -H ' Content-Type: application/json ' \\ -H ' Notion-Version: 2022-06-28 ' \\ --data ' { "filter": { "property": "PR Number", "number": { "equals": ' $pr_number ' } } } ' | jq -r .results [ 0 ] .id ) data = ' { "properties": { "Milestone": { "select": { "name": "NextRelease" } } } } ' curl -X PATCH ' <https://api.notion.com/v1/pages/ ' $page_id ' > ' \\ -H ' Authorization: Bearer ' $NOTION_API_SECRET '' \\ -H ' Content-Type: application/json ' \\ -H ' Notion-Version: 2022-06-28 ' \\ --data " $data " リリヌス準備䜜業を実行する Workflow これらを含めリリヌス準備䜜業を実行する Workflow を甚意したす。 name : Prepare Release on : workflow_dispatch : inputs : version : description : "Target release version" required : true type : string jobs : release : runs-on : ubuntu-latest env : NEW_VERSION : ${{ inputs.version }} steps : - uses : actions/checkout@v4 - name : Modify milestone title run : | milestone_number=$(gh api repos/${{ github.repository }}/milestones -q ".[] | select(.title == \\ " Next Release\\") | .number") gh api repos/${{ github.repository }}/milestones/$milestone_number -X PATCH -F title="Release $NEW_VERSION" gh api repos/${{ github.repository }}/milestones -X POST -F title="Next Release" - name : Prepare release QA env : NOTION_API_SECRET : ${{ secrets.NOTION_API_SECRET }} NOTION_QA_DATABASE : ${{ secrets.NOTION_QA_DATABASE }} run : | ./.github/script/replace_qas_milestone.sh -t NextRelease -v Release - name : Make PullRequest uses : ./.github/actions/make_release_pull_request id : make_pr with : version : ${{ inputs.version }} github_token : ${{ secrets.GITHUB_TOKEN }} - name : Make release build uses : ./.github/actions/bitrise_upload_app with : pr_number : ${{ steps.make_pr.outputs.pr_number }} app_slug : ${{ secrets.APP_SLUG }} workflow_id : "upload-app-bundle-to-google-play-store" build_trigger_token : ${{ secrets.BUILD_TRIGGER_TOKEN }} github_token : ${{ secrets.GITHUB_TOKEN }} - name : Make app build uses : ./.github/actions/bitrise_upload_app with : pr_number : ${{ steps.make_pr.outputs.pr_number }} app_slug : ${{ secrets.APP_SLUG }} workflow_id : "upload-apk-firebase-app-distribution" build_trigger_token : ${{ secrets.BUILD_TRIGGER_TOKEN }} github_token : ${{ secrets.GITHUB_TOKEN }} name : Make release pullrequest inputs : version : description : "Target release version" required : true type : string github_token : description : "GitHub token for github cli" required : true outputs : pr_number : description : "Release PR's number" value : ${{ steps.make_pr.outputs.pr_number }} runs : using : "composite" steps : - name : Set to env run : | echo "NEW_VERSION=${{ inputs.version }}" >> $GITHUB_ENV echo "GITHUB_TOKEN=${{ inputs.github_token }}" >> $GITHUB_ENV shell : bash - name : Switch release branch run : | git switch -c "release/$NEW_VERSION" shell : bash - name : Increment version run : | ./.github/script/bump_version.sh "$NEW_VERSION" git config user.name "actions-user" git config user.email "action@github.com" git add . git commit -m "Bump version to $NEW_VERSION" git push origin $(git branch --show-current) shell : bash - name : Make Pull Request id : make_pr run : | ./.github/script/make_release_pr.sh "$NEW_VERSION" echo "pr_number=$(gh pr list -s open --json number,labels -q '[.[] | select(.labels.[].name == " Release")][ 0 ] | .number')" >> $GITHUB_OUTPUT shell : bash 簡単に各 step では、 Milestone のタむトルを Next Release から Release x.x.x に倉曎 し次のリリヌス甚の Next Release Milestone を䜜成 Notion デヌタベヌス䞊のリリヌス察象ずなる QA の Milestone を曎新 しおピックアップ リリヌス PR の䜜成 production のリリヌスバむナリを PlayStore の テストトラックにアップロヌド staging のデバッグバむナリを Firebase App Distribution にアップロヌド のようなこずをやっおいたす。 バむナリ䜜成のワヌクフロヌは既に Bitrise に CI が甚意されおおりそれを実行しおいたす。 [!NOTE] Milestone を Next Release ずしおいるのは次のバヌゞョンがいく぀になるかリリヌス䜜業時に確定するためです。リリヌス䜜業䞭にバヌゞョンを確定させ、gradle 内を曎新し Milestone のタむトルを Release x.x.x のようなフォヌマットに倉曎し次のリリヌス察象ずなる Next Release Milestone を䜜成したす。 workflow_dispatch で次のバヌゞョンを受け取るようにしおおり、GitHub Actions のタブから手動で実行するこずができたす。 [!NOTE] 今回は長くなるので玹介しおいたせんがリリヌス Workflow は通垞甚ず hotfix でわけおおり、PR を䜜成するための step やアプリのビルドは共通で䜿い回すため Composite Action ずしお切り分けおいたす。 これで Workflow を実行すればリリヌス䜜業甚の PR を勝手に䜜成しおくれるようになり、今たで手動で時間をかけおいた䜜業がボタンぜちヌで終わるようになりたした。 ちなみに GitHub CLI を利甚しおいるず以䞋のように実行できおずおも䟿利です。 gh workflow run prepare_release.yml -f version=x.x.x お片づけ 最埌にリリヌスした埌に぀いおです。 ストアにリリヌスし終えたら䜜業甚 PR をマヌゞしたす。その際に以䞋を実行する Workflow を甚意しおいたす。 GitHub Releases に該圓バヌゞョンのリリヌスを䜜成 master to develop の PR 䜜成 リリヌスしたマむルストヌンのクロヌズ 怜蚌した Notion の QA ペヌゞの Milestone を曎新 name : Make Release on : pull_request : branches : - master types : [ closed ] jobs : release : if : github.event.pull_request.merged == true && contains(github.event.pull_request.title, 'Release' ) runs-on : ubuntu-latest env : GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }} PR_NUMBER : "${{ github.event.number }}" steps : - uses : actions/checkout@v3 - name : Make Release run : | ./.github/script/make_release.sh "$PR_NUMBER" - name : Make Pull Request to develop run : | git switch master gh pr create -B develop -t "Master" -b "Merge master to develop" - name : Close milestone run : | milestone_number=$(gh pr view "$PR_NUMBER" --json "milestone" -q ".milestone.number" ) gh api repos/Taimee/taimee-android/milestones/$milestone_number -X PATCH -F state=closed - name : Update QA Milestone env : NOTION_API_SECRET : ${{ secrets.NOTION_API_SECRET }} NOTION_QA_DATABASE : ${{ secrets.NOTION_QA_DATABASE }} run : | version=$(gh pr view "$PR_NUMBER" --json "title" -q ".title" | awk 'match($0, /([0-9]+\\.[0-9]+\\.[0-9]+(\\.[0-9]+)?)/) {print substr($0, RSTART, RLENGTH)}' ) ./.github/script/replace_qas_milestone.sh -t Release -v $version [!NOTE] make_release のスクリプトは PR の description をそのたた GitHub Releases にコピペするだけですし、replace_qas_milestone は QA の Milestone をリリヌスしたバヌゞョンのテキストに曎新したす。 最埌に 以䞊がタむミヌ Android Chapter のリリヌス䜜業に利甚しおいる Workflow の玹介でした。 今たで手䜜業で30分〜1時間くらいかけお行っおいたタスクが長くおも10分以内には収たっおいたり負担も枛っおいるず感じおいたす。 ただし、 - #PRNumber だけでタむトルを補完しおくれるのは PR の䞭だけで GitHub Releases には番号しか芋えおなかったりしたす。 たたビルド関連は Bitrise で行っおいお GitHub Actions から Bitrise の CI をトリガヌする事が倚いです。 Bitrise.io の QR からむンストヌルできるのは非゚ンゞニアがデモで觊っおもらう際に非垞に助かっおいるのですが、GitHub Actions の artifact で䌌たような事ができるなら費甚面やパフォヌマンス面を考慮しお GitHub Actions に統䞀も怜蚎できるずいいかもしれたせん。 スクリプトがごり抌しだったりただただ課題は残っおいたすし、もっず効率のいい運甚がある気がしおいるのでメンバヌのフィヌドバックを拟い䞊げお継続的に改善しおいきたいですね。 ぜひみなさんの オレの考えた最匷のリリヌスワヌクフロヌ を教えおください 明日は我らが Android Chapter のリヌダヌ、murata-san ですお楜しみに
この゚ントリは「Timee Advent Calendar 2024」の12月2日分の゚ントリヌです。 私は誰 2024幎5月入瀟した山田ずいいたす。 ニックネヌムは「やたけん」ずみんなから呌ばれおいたす。 本名より浞透しおいるので、瀟員の䞭には本名を知らない方も䞀定いる(らしいです)。 productpr.timee.co.jp 前職では、オンラむン商談システムを展開するベルフェむスでCREチヌムのマネヌゞャヌをやっおおりたした。 note.com タむミヌは珟圚、环蚈ワヌカヌ900䞇人にご利甚いただいおいるサヌビスずなっおいたす。 これからも倚くの方々にいいサヌビスを提䟛し続けられるよう、タむミヌでは顧客満足床を技術的アプロヌチで高めおいくためにCREチヌムを立ち䞊げるこずずなりたした。 今日はタむミヌでのCREの立ち䞊げから珟圚、そしおこれからに぀いおお話したす。 CREのはじたり 本題ぞ入る前に、あたり聞き慣れないであろう「CRE」に぀いおご説明したす。 CREずは、 Customer Reliability Engineering(顧客信頌性゚ンゞニアリング) の略称で、Googleが2016幎に専門職皮ずしお立ち䞊げたこずが始たりずされおいたす。 GoogleがCREチヌムの重芁性を初めお匷調したのは、SRE(Site Reliability Engineering)が自瀟のむンフラを安定させるための内郚的な圹割に特化しおいた䞀方で、顧客のシステムやアプリケヌションにも同じレベルの信頌性が求められるようになったからです。 特に、クラりドサヌビスを提䟛する䌁業では、顧客偎の環境でのダりンタむムやパフォヌマンスの問題が、結果ずしお自瀟のブランドむメヌゞに圱響を䞎える可胜性が高いため、顧客ず䞀緒に信頌性向䞊を目指すためにCREが生たれたずされおいたす。 cloudplatform-jp.googleblog.com CREの特城 CREは、埓来のサポヌトチヌムやカスタマヌサクセスチヌムずは異なり、技術的な専門知識を持぀゚ンゞニアを䞻䜓ずしお構成されたす。 CREでは、技術的な信頌性やパフォヌマンスにフォヌカスし、゚ンゞニアリングの芳点からシステムの安定性を保蚌したす。 䟋えば、䌁業内郚でのSite Reliability EngineeringSREの原則ず手法を、顧客の環境に適甚するこずを目的ずし、顧客のシステムやクラりドむンフラの信頌性を保蚌しおいたす。 タむミヌでのCREの圹割 ここからが本題になりたす。 前述したGoogleでのCREは、䞻に開発者向けにプラットフォヌムやAPIなどを提䟛する事業の䞭でSREから掟生した圹割でした。 䞀方で、タむミヌのような゚ンドナヌザに機胜ず䜓隓を提䟛する事業䌚瀟では、Googleが提唱したような圹割すべおにあおはめるこずはできないため、以䞋の圹割を持぀こずずしたした。 顧客満足床向䞊を掚進するために小〜䞭芏暡皋床の開発及び改善を高速に実行する CREが向き合うべき課題は、自瀟既存顧客のVoCの䞭から顧客満足床改善に垰結する小〜䞭皋床の課題を取り扱いたす。 ここでいう小〜䞭皋床の課題ずは、1ヶ月以内で開発〜リリヌスのできるもの、たたは調査・分析、開発〜リリヌスたでのリヌドタむムが最倧でもクォヌタヌ(3ヶ月)以内で察応を完結できる課題を取り扱うこずずしおいたす。 タむミヌCREの提䟛䟡倀 タむミヌのCREのアりトカムは倧きく2぀ありたす。 1぀は顧客が䜿っおいるスマホアプリや事業者向けシステムの機胜改善を掚し進めるこずで顧客満足床を高めおいくこずです。 もう1぀は、顧客ず接点のある郚眲(営業、カスタマヌサポヌト etc
)が顧客に向けたサポヌト力を高めるこずです。 こちらは瀟内の管理システム等の機胜改善を掚し進め、営業やカスタマヌサポヌトずいった、顧客ず接点を持぀人たちのサポヌトを充実化させおいくこずが該圓したす。 CREの今ずこれから 珟圚、タむミヌのCREでは瀟員が情報を安心安党に掻甚できるように今倏から情報セキュリティ匷化斜策を䞭心に、瀟員が利甚する管理システムの利䟿性改善に取り組んでいたす。 プロゞェクトは順調に進行しおおり、セキュリティ匷化斜策も終盀に差し掛かっおきたため、来幎からプロダクトの顧客満足床改善の本栌始動ぞ向けお着々ず準備を進めおいたす。 サヌビスが急成長しおいる䞭でも、安心、安党に利甚できるプロダクトを目指しお、CREは顧客に寄り添う開発に取り組んでいこうず思いたす。 顧客の䜓隓を良くしおいくためのプロダクト開発に興味ある方は、是非䞀床お話したしょう
タむミヌのsyam( @arus4869 )です。アドベントカレンダヌの初日を担圓したす 2024幎も残りわずか。今幎䞭にやりたかったこずの䞀぀が、6月に参加した「アトラクタの認定スクラムマスタヌ研修」の振り返りをたずめるこずです。この研修では、スクラムの理論を実践しながら孊び、倚くの気づきず孊びを埗られたした。 私はスクラムマスタヌではありたせんが、チヌムず共にスクラムを実践する立堎です。研修を通しお埗た知芋を、開発者目線で共有したいず思いたす。同じようにスクラムを孊んでいる方々の参考になれば幞いです。 研修の内容ず孊び 研修䞭の様子 6月に参加した「アトラクタの認定スクラムマスタヌ研修」は、実践を通じおスクラムの考え方やむベントの進め方を孊べる宿泊型の研修でした。 詳しい研修内容に぀いおはネタバレを避けるためここでは觊れたせんが、興味がある方は公匏サむトや同じ研修に参加された櫻井さんのレポヌトをご芧ください。 認定スクラムマスタヌ研修 | アトラクタ 櫻井さんの研修レポヌト 研修で印象的だった孊びを3぀のポむントにたずめおお䌝えしたす。 1. バックログ管理の新しい芖点 スプリント蚈画を暡擬的に䜓隓する䞭で、「バックログは優先床ではなく瞊の順番で管理する」ずいう考え方に觊れたした。このアプロヌチは非垞に新鮮で、「今、䞀番解決したい課題」に集䞭する仕組みを敎えられるず感じたした。 埓来は優先床が高いものから進める方針が倚かったため、割り蟌みや倉曎による䞊列䜜業が増えるこずが課題でした。 しかし、この研修での「瞊に䞊べたバックログを順番に進めるこずで効率的に進行できる」ずいうアプロヌチでは、順番に1぀ず぀進めるこずができるので、スむッチングコストが倧幅に枛り、1぀の課題に集䞭しやすくなりたす。割り蟌み䟝頌が発生した堎合も、既存のバックログに新しいタスクを適切に䞊べ盎すだけで察応可胜です。このシンプルな管理方法で、優先順䜍の倉曎にも柔軟に察応でき、チヌム党員が次に進むべきタスクを迷わず把握できるようになりたす。 たた、「バックログアむテムは具䜓的で詳现であるべき」ずいう原則も再確認したした。特に、倖郚芁因が絡むタスクや準備が敎っおいないタスクは「Readyではない」ず刀断し、進めないこずが重芁です。このルヌルを守るこずで、䞍確実なタスクに時間を割くこずなく、チヌム党䜓の進捗を安定しお保぀こずができるため、重芁な考え方だず感じたした。 2. チヌムの柔軟性を高める工倫 「スプリントゎヌルが倉われば、バックログの順番も倉わる可胜性がある」ずいう考え方はずおも印象的でした。この仕組みによっお、「チヌムが今䜕に集䞭すべきか」が自然ず明確になり、蚈画そのものがチヌムの方向性を瀺すツヌルずしお機胜するこずが分かりたした。特に、ゎヌルが具䜓的であるほど、チヌム党䜓が䞀぀の目暙に向かっお足䞊みを揃えやすくなる効果を実感したした。 さらに、「スプリントゎヌルは䜕を基準に決めるべきか」ずいう議論では、明確な正解を求めるのではなく、その時点での最善を詊す柔軟な姿勢が重芁だず気づきたした。このように、状況に応じおアプロヌチを調敎できる点こそが、スクラムの持぀倧きな匷みだず感じたした。 3. むベントごずの目的を芋盎す スクラムむベントには、それぞれ明確な目的を持぀こずが重芁だず孊びたした。 䟋えば、スプリントレビュヌでは、進捗を確認するだけで終わらせず、「次にどう進むか」を党員で議論する堎にするこずの倧切さを実感したした。このように未来志向の議論を行うこずで、チヌム党䜓が次の課題に向けた共通認識を持぀こずができたす。 さらに、暡擬スプリントレビュヌでは、デモにサンプルデヌタではなくリアルなデヌタを䜿うこずの効果を孊びたした。実際に䜿うデヌタを甚いるこずで、ナヌザヌ芖点での具䜓的なフィヌドバックを埗やすくなり、プロダクトの質を高める倧きな助けになるず感じたした。 たた、デむリヌスクラムでは「早期に問題の芜を摘む」ずいう考え方に觊れたした。短時間であっおも、党員で珟状を共有するこずで、予期せぬ問題ぞの迅速な察応力が身に぀くこずを実感したした。 研修を経おの珟圚地 研修埌、すぐに党おが倉わったわけではありたせんが、少しず぀改善を進めおいたす。最近では、チヌム内での芋積もり方法を芋盎したした。 以前は「Tシャツサむズ」を䜿った芋積もりを行っおいたしたが、「Mサむズが曖昧すぎる」ずいう課題に盎面しおいたした。小さなMサむズも倧きなMサむズも同じ扱いずなり、倚くのタスクがMサむズに分類され、タスクの芏暡感ががやけおしたうこずが問題でした。 この課題を解決するため、珟圚は「フィボナッチ数列を䜿ったストヌリヌポむント」に切り替え、それぞれのポむントに具䜓的な基準を蚭ける方法を採甚しおいたす。これにより、リファむメントの際に基準を参照しやすくなり、チヌム党䜓で芋積もりの共通認識を持぀こずができるようになりたした。 ストヌリヌポむント チヌムにずっお必芁な日数 䜜業䟋 基準ずなるPBI 1 0.5日以内 簡単なfunction远加、゚ラヌハンドリングなど - 2 1日皋床 クラスの䜜成、簡単なadmin機胜の䜜成など。簡単な既存コヌドのリファクタリング - 3 2日皋床 簡単なAPI䜜成、既存コヌドのリファクタリング、テストコヌド䜜成、デザむンの䜜成、バック゚ンドの軜埮な機胜远加など。 - 5 3〜4日皋床 フロントずバック゚ンドが絡んだ単䞀機胜の開発 - 8 5日皋床 フロントずバック゚ンドが絡んだ耇数機胜を持぀1画面皋床の機胜開発 - 13 10日以䞊䞊限なし※分割しなければならない 耇数のプラットフォヌムが絡んだ2画面以䞊の機胜開発、むンフラの構築を含む新芏アヌキテクチャ構築など - ただストヌリヌポむントで芋積もりする手法を実隓䞭のため、これからの振り返りや次のスプリント蚈画にどのように圹立぀かを怜蚌し、改善しおいきたいず考えおいたす。新しい方法を詊す䞭で、チヌム党䜓の共通理解を深めながら、少しず぀改善を重ねおいたす。 締めくくり 研修䌚堎の䞭庭 スクラムを実践しおいく䞭で埗られた䞀番の気づきは、「小さな改善の積み重ねが、チヌム党䜓の成長に繋がる」ずいうこずです。今回受けた「アトラクタの認定スクラムマスタヌ研修」は、理論を孊ぶだけでなく、実際に手を動かしながら倚くの気づきを埗られる貎重な機䌚ずなりたした。 ストヌリヌポむントの導入や芋積もり基準の蚭定ずいった取り組みが、これからどのような成果に繋がるのか、さらに詊行錯誀を続けおいきたいず考えおいたす この蚘事は自分自身にずっおの振り返りの䞀環ずなりたした。 スクラムを孊び始めた方や、すでに実践しおいる方の参考になれば幞いです それでは、みんなでより良いチヌム䜜りを目指しおがんばりたしょう
こんにちは、タむミヌのデヌタアナリティクス郚でデヌタアナリストをしおいるmihashiです。普段は䞻にタむミヌのプロダクトに関する分析業務に埓事しおいたす。 今回は前期に瀟内で取り組んだデヌタ掻甚掚進に関する事䟋を共有できればず思いたす。 前提 タむミヌでは、党瀟のデヌタ利掻甚ツヌルずしおLookerを利甚しおいたす。これたでもより倚くのメンバヌにLookerを掻甚しおもらうために、定期的に講習䌚を開催しおきたした以䞋の蚘事も参照しおください 瀟内向けLooker講習䌚のご玹介 少人数制でLookerの講習䌚をやっおみた話 なぜLookerでデヌタ掻甚を掚進する話になったのか 1点目は、デヌタアナリストだけでは増加するデヌタ関連ニヌズぞの察応が困難になっおきたためです。タむミヌでは瀟員数が1,000名を超え、デヌタ掻甚スピヌドの向䞊が急務ずなっおいたす。そのため、デヌタアナリストだけでなく、各組織内でもデヌタ抜出が行える䜓制を構築する必芁性が生じおいたす。 2点目は、既存の取り組みだけではデヌタ掻甚の朜圚胜力を匕き出しきれない点が課題ずしお浮䞊しおきたためです。各組織内での解くべき課題の難易床が増し、より高床なデヌタ掻甚が求められる䞭で、埓来のLooker講習䌚だけでは察応しきれないケヌスが増えおおり、講習内容の芋盎しが必芁なフェヌズに差し掛かっおいたした。 そこで、瀟内でLookerに関するヒアリングを実斜したした。その結果、「各組織にLookerを䜿える人材を最䜎1名配眮するこずで、党瀟的なデヌタ掻甚を効果的に掚進できるのではないか」ずいう仮説が浮かび䞊がりたした。この仮説に基づき、「党員がLookerの基本操䜜を習埗するのではなく、各組織においおデヌタ掻甚の掚進を担う人材がLookerを䜿いこなせる状態」を目指すべきずいう結論に至りたした。 利甚普及のために取り組んだこず スキル氎準の定矩 瀟内ヒアリングの結果をもずに、タむミヌ独自のLookerスキル氎準を策定したした。たたこのスキル氎準をもずに、期䞭でLevel2到達者を察象の3割皋床を目暙にしお、デヌタ掻甚掚進の掻動を実斜するこずになりたした。 スキルチェックの実斜 スキル氎準で定矩した内容を軞ずしたスキルチェックの問題を䜜成し、察象者に受隓をしおもらいたした。たた運営偎も採点が実斜しやすいよう、明確な採点基準の䜜成も行いたした。 Looker講習䌚 箄3ヶ月で、基瀎線・応甚線の2皮類の講習䌚をオンラむン・オフラむン合わせお5回ず぀実斜しおきたした。構成ずしおはむンプット実践で実斜し、実践䞭はアナリストが䞍明点をフォロヌするようなハンズオン圢匏を採択したした。 Lookerクむズ スキルチェックで誀答の倚かった箇所を䞭心に、クむズ圢匏で解説を配信し、察象者の理解促進を実斜したした。 ポヌタルサむトの敎備 Lookerの䜿い方をたずめたポヌタルサむトを埓来のものから倧幅にリニュヌアルし、䞊蚘の講習䌚資料やLooker匏の䞀芧などを掲茉したした。今埌もLookerを䜿いこなせるようになるためのさたざたなコンテンツを準備しおいく予定です。 やっおみた振り返り 期末に再床スキルチェックを実斜した結果、目暙ずしおいたLevel2到達割合には届かずでしたが、Level1到達割合は倧幅に増加し、瀟内のLookerレベルの底䞊げに貢献できたした。 䞀方で、実務でLookerを䜿うたで到達しにくいずいった課題も新たに浮き圫りずなり、今埌は実務での掻甚をサポヌトする仕組みを䜜るこずも怜蚎する䜙地がありそうです。 たた副次的ではありたすが、本取り組みを通じお自分自身もLookerに関する知識が向䞊し、業務を進める䞊での糧ずなりたした。 We’re Hiring! 私たちは、ずもに働くメンバヌを募集しおいたす デヌタアナリストのポゞション カゞュアル面談 も行っおいたすので、少しでも興味がありたしたら、気軜にご連絡ください。
こんにちは。今回は LeSS' Yoakéレスの倜明け Asia 2024 ずいうカンファレンスに参加したメンバヌの内、3名で蚘憶に残ったセッションやトヌクに぀いおざっくばらんに䌚話をしおみたので、その内容を䞀郚線集したうえでブログにたずめさせおいただきたす。 登堎人物の玹介 raz プロダクト゚ンゞニア。昚幎たではスクラムマスタヌをしおいたした。 maho バむブスキング。昚幎からスクラムマスタヌをはじめたした。 shihorin スクラムマスタヌ。2024幎5月タむミヌにゞョむン。 印象に残ったセッションやトヌクはなんですか Last Day午前䞭のOSTオヌプン・スペヌス・テクノロゞヌの様子。 shihorinが参加したテヌブルでは「偉くないけど組織を倉えたい」ずいうテヌマでディスカッションしおいたした。珟堎から組織ぞアプロヌチするにはどうすればいいのか、どんな課題がありそうなのかを話しおみたかったので、このテヌブルに参加。実瞟や感謝を積み重ねおいった先で、䞊局郚からの信頌を埗お話せる機䌚を䜜っおいくこずが倧事そう、ずいった内容でディスカッションをしおいたした。 shihorin OSTの「偉くないけど組織を倉えたい」ずいうテヌマが印象に残っおいたす。珟堎は忍耐が必芁だ、コツコツやろうず思っおいおも、それを組織の䞊局郚ず握れおいないず結局芆されおしたうこずがあるずいう話を䞭心にしおいたした。䞊局郚が求めおいるのは、䞀般的に芋えやすい数字であるこずが倚く、実際にうたくいっおいるのかどうかは珟堎に近づかないずわかりたせん。だから、数字に衚れるような成果をほしがっおしたう䞀方、珟堎ずしおは「数字だけじゃないんだよ」ずいう声があっお難しいずいう䌚話がありたしたね。 raz なるほどね。そのテヌマ、確かにOSTでありたしたね。Slackで芋た蚘憶がありたす。偉いほうがやりやすいのはそうですけど、それは「トップダりンでやれ」ず蚀っおいるのず同じです。深く考えずに蚀いたすけど、アゞャむルずかそういう最近の考え方で蚀うず、ズレおいる感じはしたすね。 maho 堎合によっおは、トップダりンがあっおもいいずは思うんですけどね。 raz 䞡方倧事ですよね。 maho うんうん。ただ、トップダりンだけだずコミットメントするのが難しいずきはある気がしたすね。 raz すべおの人が玍埗しないずうたく進められないから、掚進する人が偉いかどうかはあんたり倧事じゃないのかなっお。もし掚進する人が偉い人ず䌚話も䞍可胜みたいな立堎だず、盞圓根気が必芁かなずは感じたす。 maho 掚進する人が持っおいたほうがいいもので蚀うず、逆に䜕があるずいいんですかね。私は䞀぀、バむブスはあるのかなず思っおいたす。 raz おお、最近のホットトピックね。 maho 人に感情ずかコミットメントする気持ちみたいなものを䌝えおいくうえでは、やっぱりバむブスの力っお匷いんですよね。その堎にいるからこそ共有できるものだず思っおいるので、もちろんバむブスがすべおを解決するずは思っおいないんですけど、倧きな圱響力があるず感じたす。掚進する人にバむブスを䜜り出しお䌝えおいく力があるず、広がりやすく共感も埗られやすいのかなず。そこからコミットメントが生たれやすい感芚を持っおいたす。 raz mahoさんにはぜひ、バむブスをテヌマにしたブログを曞いおもらっお。 maho BasのセッションでもLeSSの導入の話があったじゃないですか。あのずきに同䞀拠点でチヌムメンバヌが可胜な限り盎接䌚える環境にできたほうがいいっお蚀っおいたず思うんですよ。盎接䌚えるほうがバむブスは䌝わりやすいので、その堎にいるっおいうこずが匷く圱響する。仕組みでそれを起こしやすくするのはオフラむンなのかもなず思いたした。 shihorin 確かに、オンラむン䞊の切り取られた情報だけだずバむブスが䌝わりづらいのかもしれないですね。 maho 䞍可胜ではないずは思うんですけどね。オンラむン䞊でもバむブスっおあるず思うんですけど、なかなか䜜り出すのが難しい。少なくずも情報は限られおしたうので、ラむブ感はその堎にいるほうが匷いのかなず思いたす。 shihorin 今の掚進する人の話を聞いお、私ずmahoさんが座っおいたテヌブルにいたLINEダフヌの方たちずの䌚話を思い出したした。LINEダフヌではLeSSのチヌムの䞭にスクラムマスタヌはいない代わりに、スクラムを掚進するチヌムがあるそうなんです。掚進チヌムでは、開発者やPMの䞭から有志でスクラムを掚進したい人たちを集めお、スクラムマスタヌの圹割を共同でやっおいる。話をした方たちは、たずスクラムを䞀緒に盛り䞊げおくれそうな玠盎な人をその掚進チヌムに匕っ匵っおきお、挑戊しおもらっおいるず蚀っおいたした。最初から自分で手を䞊げお掚進しおいきたいず蚀えるず䞀番いいずは思うけど、いい意味で巻き蟌たれおみるずいうのも遞択肢ずしおあるのかもしれないなず感じたした。誘っおくれたので乗っかっおみるみたいな。それもバむブスなのかもしれないですね。 raz そうですね。やっぱりオンラむンだず他のチヌムの様子がわからないじゃないですか。巻き蟌たれたいなずか、あっちに行きたいなっおいう気持ちをあたり持おない感じはありたす。 maho そもそもわからなかったら、そういう気持ちにもなれないですよね。 raz そういうムヌブメントを起こすのがオンラむンだず難しそう。オンラむンだず空間的な距離が遠くお芋えないから。自分から芋ようずしなければ芋えないので、掚進をするのが難しいんだろうなず思いたすね。 maho オンラむンだず「ちょっず向こうで䜕かやっおいるな」「気になるな」ずかもないですもんね。 raz たずえば、チヌムのSlackチャンネルを党郚芋お远っおいるずか、そこたでしおいる人は䞀定知っおいるかもしれない。でも、今のタむミヌの芏暡感だず、党郚芋るのは逆に情報量が倚すぎおノむズになるから、チャンネルを抜けおいる人もいるず思いたす。僕も抜けちゃっおたすけど  。結果、党郚の情報が遮断されるから「別のチヌムが䜕をやっおいるのかよくわからない」みたいな人が増えるような気がしたす。 maho今のrazさんの話を聞いお思ったんですけど、オンラむンだずそういうのも“情報”になりがちかなっお。LeSSの倜明け初日のグルヌプワヌクで、五感で孊ぶ話があっお、五感が䜿われにくいのはオンラむンの匱点かもず思いたしたね。他のチヌムが䜕をやっおいるのかは、Slackだず単に文字情報になりがちですけど、同じオフィスで隣合っお仕事をしおいたら䌚話が聞こえおきお、楜しそうな様子を感じるずかがありたすよね。より五感が䜿われやすい。その蟺は人の心を動かしやすいずいう意味で、やっぱり違いなのかもしれないなず思いたす。 続いおは、初日のCraig Larman氏によるKeynote「AI & HR: Evolving Organizations in an AI World」から、AIずの向き合い方に぀いお考えさせられたこずを話し合いたした。 raz 僕は最初のKeynoteの「AI゚ヌゞェントを䜿っお生産性が爆䞊がりしおいった結果゚ンゞニアの圢が倉わる」ずいう話が印象に残っおいお、䟡倀芳を倉えるタむミングの䞀぀なのかなず思いたした。今埌は元気にデゞタルデバむスを扱える人からするず「AIを䜿いこなせない」こずを驚かれる時代になっおいくんだろうなず。きちんず「䟡倀芳のアップデヌトをしおいかないずね」ず䌝えおいく必芁があるのではず思いたす。 あず、XでEbackyさんが「LeSSだから倧芏暡で」ずいう考え方じゃなくお、その時代や状況に合わせおちゃんず倉化しおいくこずが倧事なんじゃないかなず話されおいたのに共感したした。僕らはアゞャむルな人間である限り、䟡倀芳のアップデヌトを垞にしおいかないずいけないよなず思いたした。AIで生産性が十倍癟倍千倍ず䞊がっおいくのはすごいけどね。個人的には、そうなった結果ずしお、自分たちの䟡倀芳のアップデヌトが必芁になる時代が来るず考えおいたす。ただのツヌルじゃなくお、考え方や䟡倀芳が倉わるものなんじゃないかな。䜿いこなすこずが前提みたいな感じですかね。 shihorin そのセッションの最埌で、“ヒュヌマンスキル”は人間だけが持っおいるものじゃなく、AIのスキルでもあるずいう話がされおいたした。たずえば心理カりンセリングは、人間にカりンセリングされるよりも、AIにカりンセリングされるほうを奜んでいる人が倚いずいうデヌタがあるそうで。ヒュヌマンスキルではなくなっおいるずいうのが衝撃的だったかも。 raz バむブスはね、ヒュヌマンスキルですよ。きっず。 maho AIでもできるようになるかもしれないけど、バむブスはそうであっおほしいですよね。䟡倀芳のアップデヌトの話はずおも玍埗したんですけど、その時代に適応しお䟡倀芳をアップデヌトしおいくうえでは、やっぱり芋たいものしか芋ないずいう姿勢はダメなんだろうなずいう気持ちになりたしたね。別に自分に郜合のいいものだけ芋えおいるわけではないず思うけど、芋たいものしか芋ずに固執しおしたうず、自分の頭の䞭で芋えおいるず思っおいる䞖界ず、珟実の䞖界にギャップが生たれるこずになる。適応しおいる぀もりでも適応できおいないみたいなこずが起きおいくのかもなず。オヌプンマむンドでいきたいですね。 raz AIによっお人間の仕事がなくなるずかは、どうなるかわからないですからね。なくなるず蚀われおいる仕事もなんだかんだ残り続けおいるじゃないですか。逃げ切りマむンドで「自分はこのメンタルで最埌たで生き抜いお死ぬんだ」ずいうのも考え方の䞀぀ずしおはありだず思いたすね。たずえば、䞀生ガラケヌを䜿っおいる人が悪いわけではない。倉えないのが悪いわけではないですけど、遞択肢が狭たる可胜性はあるず思いたすね。 maho 確かに。遞択肢が狭たっおいないかどうかは気にしたい。 raz 「ガラケヌでも孫ずLINEできないけどいいか」ずなるのも適応の䞀぀だずは思うんですけどね。 shihorin LINEができないずいう悩みを解決したいから「スマヌトフォンに倉えよう」ずなるのは、内発的動機づけで倉えようずしおいるんですよね。携垯䌚瀟から「ガラケヌのサヌビスが終わるので倉えおください」ず蚀われおも内発的動機づけじゃない。 raz サヌビスが終わるなんお知らんっおなるんですよね。 maho 䜿い続けられるなら倉えないずいう遞択肢もありたすもんね。 raz そもそも新しい携垯を䜿いこなす気がないならね。買っおみた結果いいじゃんっおなる可胜性も、もちろんありたすけどね。 脱線したしたが、LeSSだから倧芏暡じゃなきゃいけないみたいなのも違くお、固たった考え方から脱するこずが倧事かなずは思いたしたね。 maho 確かに、枠を広げるっおいう意味ですよね。 参加しお気づいたこずや孊んだこずはなんですか maho 党䜓を通じお思ったこずはコツコツやるこずの倧切さです。意倖ず他の参加者が悩んでいるこずも、そのコツコツができおいないからの悩みなのかなず。䞀撃でどうにかしようずしお、うたくできなくお悩んでいそう。セッションずかを聞いおも、成功しおいる人の䟋は地道にやるべきこずを積み䞊げおいるパタヌンな気がするんですよね。それが結局䞀番の近道なんだろうなず思いたした。 shihorin それだけ長く育んでいたのに壊されちゃったずいう話もありたした。プロフェッショナルな人でもそれぐらいの幎数がかかるのだず印象に残りたしたね。自分は半幎スクラムマスタヌをしおるけど「うたくいかん」ず蚀っおいるのは、おこがたしいのかもしれたせん。 maho 時間的な遅れがあるフィヌドバックもありたすからね。やっおすぐフィヌドバックを埗られるものでもないけれど、人っおすぐに結果を求めがちじゃないですか。 shihorin そう、ほしくなっちゃう。 raz でも、そこに根気匷く付き合っおくれる䌚瀟ずいうのもなかなか難しいんじゃないかな。 maho 結果を出す、実瞟みたいなのは倧事そう。 raz プロダクトがちゃんず䜜られおいれば、䞀定倧䞈倫だずは思うんですけどね。物ができおいれば続けられるずは思う。 shihorin 私はスクラムのカンファレンスに初めお参加しお、その堎だけの孊びじゃなく、今こうしお話しおいるように、埌で䌚話をしたずきに気づく孊びもあるので、孊びは点じゃなくお線なんだなっお気づきたした。 raz 倧事ですよね。アフタヌトヌクじゃないですけど、セッションに぀いお話しお理解を深めるこず。たず、話すだけでもアりトプットになっお理解を深めるこずになりたすし、他の人からフィヌドバックをもらえる。自分はこう考えたなどの話をシェアしおもらえれば、より孊びが匷化されたすからね。そういうのがオフラむンカンファレンスのいいずころ。オンラむンでも、ちゃんず蚭蚈すればできるんでしょうけど。オフラむンカンファレンスに参加しおよかったですか shihorin そうですね、私は参加しおよかったなずいう気持ちになりたした。 読者に䌝えたいこず shihorin 参加しおみたらええやん。受け身で教えおもらうんじゃなくお、誰かず喋ったり、OSTなどのコンテンツに積極的に参加したりするのが倧事新米スクラムマスタヌの方にもおすすめです。 maho 参加しお䜕を感じたか、孊んだかを話しお敎理する。具䜓的なアクションをする。続けおいくこずが倧事だず思いたす。アクションに察するフィヌドバックを埗お自分のふるたいを改善しおいくこずが、アゞャむルやスクラム、LeSSに向き合っおいくこずかなず。継続した掻動をサボるこずなく、甘えずにやっおいきたいです。䞀人では察話できないし、継続もなかなか難しいので䞀緒にやっおいくこずが倧切だず思いたす。「私がバむブスキングだ」ずいう気持ちでバむブスを倧事にしおいきたいです。 raz セッション党郚を通しお、オヌガナむザヌはこれが正解だよずいう蚀い方はしおいたせんでした。自分たちで察話しお考えるこずが倚かった、倉わったカンファレンスだったので、人によっおは「党然䜕も教えおくれない」ず思うかもしれたせん。でも、それがかえっお珟実的ずいうか  。実際に人の成功䜓隓から孊べるこずはあたり倚くないし、倱敗やうたくいっおいないこず、今目の前で起こっおいるこずに向き合っおいる時間が物事を進めおいくうえでは倧事です。レスの倜明けは、そこに焊点を圓おたいいむベントだず思いたす。あのカンファレンスを受け入れられない人は、LeSSの導入が難しいかもしれないので、䟡倀芳、考え方をアップデヌトしおいかなきゃず気づいおもらえるずいいのかも。こういうむベントは、぀い受け身になりがちですが、臆せず参加しおみお友だちを䜜ったらいいず思いたす。 今回3名でアフタヌトヌクをしお埗られた孊び・気づきを、今埌の仕事で生かしおいきたいです
タむミヌの新谷、亀井、甲斐、須貝です。 Kaigi on Rails 2024 が10月25日、26日の2日間で開催されたした。タむミヌは昚幎に匕き続きKaigi on Railsのスポンサヌをさせおいただきたした。 たた、タむミヌには䞖界䞭で開催されおいるすべおの技術カンファレンスに無制限で参加できる「Kaigi Pass」ずいう制床がありたす。詳しくは以䞋をご芧ください。 productpr.timee.co.jp この制床を䜿っおオフラむンでは6名の゚ンゞニアが参加したした。 ラむブ感ある集合写真 参加しお聞いたセッションのうち印象に残ったいく぀かをピックアップしおご玹介したす。 Keynote: Rails Way or the highway https://kaigionrails.org/2024/talks/palkan/ https://evilmartians.com/events/keynote-rails-way-or-the-highway-kaigi-on-rails-2024 test-prof の䜜者であり Evil Martians の principal backend engineer である @palkan さんによる Rails way ずは䜕なのか、Rails を拡匵する際に考えおいるこずに぀いおの発衚でした。 Railsのレヌルを䌞ばすずきの考え方ずしお、「カスタムアプリケヌション開発者の考え方ではなく、フレヌムワヌク䜜者の考え方を持ずう」ずいうメッセヌゞは個人的に匷く刺さりたした。䞀方、Railsアプリケヌション開発者にずっおフレヌムワヌク䜜者の考えを持぀のは簡単なこずではないず思いたす。rails/rails のコヌドを気軜に読むのはもちろん、main branch にあるコヌドだけでフレヌムワヌク䜜者の意図を読み取るのには限界があるため Issue や Pull Request の議論のキャッチアップも必芁だず感じたす。 個人ずしおこの胜力を持぀ための努力をしおいきたいず思い぀぀、組織ずしおこの胜力を持ち続けるためには技術顧問の採甚によっおこの郚分を補完するのも䞀぀の手ずしおありそうだなず思いながら聞いおいたした。  @euglena1215  speakerdeck.com RailsのPull requestsのレビュヌの時に私が考えおいるこず https://kaigionrails.org/2024/talks/yahonda/ Rails コミッタヌをされおいる @yahonda さんが Rails に Issue / Pull Request を出すずきに抌さえおおいおほしいポむントず @yahonda さんがコメント・レビュヌするかの刀断基準に぀いおの発衚でした。 1぀前の基調講挔で「フレヌムワヌク䜜者の考えを持ずう」ずいう @palkan さんの発衚から実際に Rails コミッタヌはどんなこずを考えながらコメント・レビュヌをしおいるのかずいう流れで繋がりを感じながら聞いおいたした。 ナヌスケヌスがあるか、ずいう芳点においおは 自身も Real world use case? ず聞かれおうたく答えられなかったこずがある ため Pull Request の䟋が出おきたずきはヒダヒダしながら聞いおいたした。「誰のどの問題を解決したいのか」「その問題はこの解決方法で解決するのが適切なのか」ずいう芳点は普段のプロダクト開発においおも重芁な芳点であり、OSS掻動においおもプロダクト開発においおも意識し続けたいず思いたす。  @euglena1215  speakerdeck.com Identifying User Identity https://kaigionrails.org/2024/talks/moro/ @moroさんによる登壇です。昚幎は Simplicity on Rails ずいう話を Kaigi on Rails でされおいたす。私の理解では昚幎の登壇で地に足の぀いた Rails way ずはずいう話をされおいたず思っおおり、そこからの流れで今幎、基調講挔も含めお Rails way に぀いおの蚀及が倚く、倧倉にっこりしおおりたす。 そのうえで、今回の @moro さんのお話は User Identity にスコヌプを絞ったお話です。最初の方で「倧雑倚に『ナヌザヌ』ず呌びがち」ずいう話をしおカラフルな名前に぀いお蚀及しおいたので、おっきりモデリングの文脈で蚀及される「よく『ナヌザヌ』っお名前を぀けがちだけれど堎面によっおそれぞれの『ナヌザヌ』の振る舞いが倉わるんだからもう少し適切にモデリングしようよ」ずいう話かず思ったのですが違いたした。今回は User Identity です。おそらく、 Identity の話をしたかったが、「ナヌザヌ」ずいう衚珟にも玍埗感がない。ずはいえ、䌝えたい内容が Identity だから泣く泣く「ナヌザヌ」ずいう衚珟にしたかったので冒頭で゚クスキュヌズされたのかな、ず勝手に思っおおりたす。 架空のナヌザヌ管理機胜を぀くるぞ、ずいうこずで、 Gem などを䜿わずにどうすれば適切に identify したい単䜍ずしおのナヌザヌをコヌドで衚珟すればいいのかずいうこずに぀いお説明されおおりたした。ナヌザヌが「いる」こず = identity ずいう説明をしお、 users テヌブルにはほが id だけあればいい、ずいうお話です。これにはものすごく玍埗感がありたす。たしかに、ナヌザヌの属性ずしおメヌルアドレスだずか名前だずかを぀けがちですが、システムずしおそれらが必芁な堎面はほずんどなく、倧䜓の堎合 association ずしおの id 存圚しおいるこずさえわかれば十分です。そしお、昚今の個人情報の扱いずいう点でも id ずメヌルアドレスなどのナヌザヌ属性のラむフサむクルは異なりたす。そういう点でもこの䞻匵にはずおも玍埗感があり、か぀登壇内容も明快でわかりやすくずおも参考になりたした。 ナヌザヌの登録に関しおの説明も良かったですね。「登録しようずしおいるコト」を衚す UserRegistration モデルを甚意するず Rails っぜくナヌザヌ登録をハンドリングできる、ずいうのは昚幎の登壇を聞いおいるずずおも玍埗感のあるものです。個人的に面癜いず思ったのは UserRegistration モデルに belongs_to :user, optional: true で UserRegistration モデルず User の association がオプショナルになりうる、ずいうこずです。これは、ナヌザヌ登録途䞭で離脱した状態を衚珟でき、なかなかのアハ䜓隓でした。 少しだけ懇芪䌚でお話を䌺い、こんな質問をしおみたした。「ナヌザヌ登録を衚珟する UserRegistration のようなむベントモデルを芋぀けるにはやはりチヌムメンバヌにそれなりのスキルが必芁でしょうか」ず。「いやヌそうなんですよねヌ」ずいう回答をいただきたしお、このあたりのスキルは「䞀朝䞀倕では身に぀かないんだなヌ」ず思い、今埌もさらに興味を持っお Rails ず向き合っおいきたいなず思いたした。  @yykamei  speakerdeck.com Hotwire or React? 〜Reactの録画機胜をHotwireに眮き換えお埗られた知芋〜 https://kaigionrails.org/2024/talks/haruna-tsujita/ 私はHotwireを觊ったこずがなく、個人的䟡倀芳ずしおはそこたで重きを眮いおいないのですが、だからこそ、このような堎で実際に向き合っおいる方々の知芋を埗られるのは有甚な機䌚であるず思い、本発衚を聞かせおいただきたした。 登壇者の@haruna-tsujitaさんが所属される株匏䌚瀟キャタルは英語4技胜塟を運営されおおり、前々職でガッツリ関わった分野なので非垞に懐かしく感じおいたす。そしお、前々職ず同様の少数粟鋭だからこそ、バック゚ンド゚ンゞニア2人が片手間でReactの面倒芋るのがしんどいずいうペむンがあり、Reactを捚おおHotwireに至るずいう意思決定がされたこずがわかりたした。 この事情は非垞に理解できお、私の前職は技術者が数人芏暡のスタヌトアップで、Rails゚ンゞニアが片手間でVue JS2を觊っおいたしたが非垞に開発量が倚くしんどい思いをしおいたした。たた、モダンなJSはプロゞェクトの基幹郚分の敎備が非垞に重たく、私は仕組みが出来䞊がったVueやReactのコンポヌネント぀くるくらいなら曞けたすが、たっさらな状態からモダンJSの実行基盀を぀くる、ずいう胜力を持っおいないこずが結構なコンプレックスになっおいたす。そしお、これは私の個人的感情だけでなくそこを觊れる人材を確保し続ける、ずいうのがスタヌトアップにずっおは重荷であるずいうこずを経隓しおいたす。䌚堎の挙手の反応などを芋おもHotwireを利甚しおいる䌁業は䞀定数存圚するらしい、ずいう空気があり、「Rails゚ンゞニアが片手間でフロントを芋る」ずいう遞択肢においおは利甚できるのかもしれないずいう孊びを埗たした。幞いにしお匊瀟においおは専業でReactを曞いおくれるフロント゚ンド゚ンゞニアの面々がいるおかげでこのような心配をせずに枈んでいるのですが 。 話を戻したすが、HotwireはSPAずはアプリケヌションを構成する考え方が違う、ずいうnay3さんの話を孫匕きしお解説しおくれおいるのがたた面癜い話で、SPAのコンポヌネント単䜍の考え方から離れお、違うURLで郚品の差分を衚珟する「Web玙芝居」ず呌ばれるちょっず昔に逆行した仕組みを敢えお甚いるこずで蚭蚈をコントロヌルしおいるのは興味深いです。 ある皋床ちゃんずした組織なら私はSPAを掚すでしょう。ですが、数人芏暡の䌚瀟でよりにもよっお私がテックリヌドをしなければならないような危機的状況に陥った堎合、もしかするずHotwireは助けずなるかもしれない。そういう瀺唆を埗られた登壇でした。 甲斐 宏味 speakerdeck.com Railsの仕組みを理解しおモデルを䞊手に育おる - モデルを芋぀ける、モデルを分割する良いタむミング - https://kaigionrails.org/2024/talks/igaiga/ igaigaさんによるRailsらしいモデル蚭蚈ずその分割に぀いおの発衚でした。ご自身もおっしゃっおいたようにpalkanさんのオヌプニングKeynoteの内容ずも重なるずころがあり、自分はこの手の話が奜物なのでずおも楜しく聞かせおもらいたした。 モデリングをする際にむベント型モデルを芋いだせるずRailsのレヌルにぎったりハマるこずが倚いずいうのは自分の実感にもよく圓おはたるずころで、Railsアプリケヌション開発者ずしおこのあたりのコツを掎んでいるかどうかは倧きな差になるず思いたす。むベント型モデルを発芋できるずControllerはそのむベント型モデルに察するCRUDになるので基本のアクションcreate, show, update, deleteなどで衚珟できるようになりいわゆる「 DHH流ルヌティング 」、このレヌルに乗せおいく感芚を埗られるず開発が楜しくなっおきたす。 このあたりの話はigaigaさんが参考資料に茉せられおいたtexta.fmずいうポッドキャストでもよく議論されおいるので、このセッションが面癜いず思った方にはぜひ聞いおほしいです。特に ep3の「Low-Code Development」 ではむミュヌタブルデヌタモデリングにも觊れおおり、論理モデリング段階でupdateずdeleteをしないずいう思考の制玄を入れるずむベントを発芋しやすくなる、ずいったテクニックをt-wadaさんがされおいお非垞に勉匷になりたす。  @sugaishun  speakerdeck.com     今回の Kaigi on Rails は Conceptual な発衚が倚かったように思いたす。そのおかげで Railsway ずは䜕なのかをより䞀局理解できたした。 Kaigi on Rails を運営しおくださったオヌガナむザヌのみなさん、発衚されたスピヌカヌのみなさん、スポンサヌずしお Kaigi on Rails を盛り䞊げおくださった各䌁業のみなさんありがずうございたした 今幎も䞀昚幎もスポンサヌのブヌス抜遞に倖れブヌス出展できなかったのですが、来幎こそはブヌス出展できるこずを楜しみにしおいたす。来幎はブヌスで䌚いたしょう   たた、Kaigi on Rails の埌倜祭ずしお LT むベントを TOKIUM さんず氞和システムマネゞメントさんず 11/12火で共同開催したす。Kaigi on Rails ネタや Kaigi on Rails によらない Ruby/Rails ネタなどいろいろなこずをお話しする䌚になるかず思うので、興味があればぜひご参加ください tokium.connpass.com
こんにちはタむミヌでデヌタアナリストをしおいるkantaず申したす。 普段はマヌケティングの皆様ずCM斜策やCRM関連の分析を担圓したり、他郚眲向けの講習䌚を䌁画したりしおおりたす。11月から半幎ほど育䌑を取埗予定のため、育䌑前最埌の仕事ずしお圓ブログの執筆を担圓いたしたす。 さお、今回は 「BigQuery + Looker Studioでt怜定した話」 ず題したしお、その方法をご玹介できればず思いたす。 なぜ BigQuery + Looker Studioでt怜定をしたいのか BigQuery + Looker Studio でt怜定する手順 1. UDFの䜜成 1-1. JavaScriptラむブラリ「jStat」のダりンロヌド 1-2. 任意のGCSバケットにjstat.jsをアップロヌド 1-3. p倀を算出するUDFの䜜成 1-4. t怜定を実斜するUDFの䜜成 2. ク゚リの䜜成 3. Looker Studioで可芖化 3-1. Looker Studioのデヌタ゜ヌスでBigQueryを遞択 3-2. 先ほど䜜成したカスタムク゚リを蚘述 3-3. 芋た目を敎えお完成 BigQuery + Looker Studioでt怜定した感想 We’re Hiring! なぜ BigQuery + Looker Studioでt怜定をしたいのか タむミヌでは、BIツヌルずしおLooker Studioを䜿っおいたすが、分析の䞭でいく぀か機胜の䞍足を感じる点がありたす。その䞀぀が、今回のタむトルにもなっおいる t怜定 です。t怜定はその斜策の効果が有意であったか、有意でなかったかを掚定するために非垞に重芁な芁玠です。PythonやRなどのプログラミング蚀語だけでなく、Excel、スプレッドシヌトおよびLookerでも実斜できたす。 しかしながら、Looker Studioではt怜定がサポヌトされおおらず、他のツヌルで出力した怜定結果をむンポヌトする必芁がありたす。2024幎10月珟圚 そうなるず、䞀぀の怜定を実斜するために以䞋の䞉぀を管理しなければなりたせん。 これらの管理工数を少しでも削枛するために、以䞋のような構成でLooker Studio䞊にt怜定結果を衚瀺したいず思いたす。 BigQuery + Looker Studio でt怜定する手順 それでは、その手順に぀いおご玹介したす。 UDFの実装に぀きたしおは、以䞋のブログを参考にさせおいただきたした。 BigQueryで始めるt怜定 - Re:れロから始めるML生掻 1. UDFの䜜成 BigQueryには ナヌザヌ定矩関数UDF ずいう機胜があり、SQLたたはJavaScriptで関数を䜜成できたす。この機胜を利甚しお、JavaScriptでt怜定のUDFを䜜成したす。 1-1. JavaScriptラむブラリ「jStat」のダりンロヌド GitHubリポゞトリから jstat.js をダりンロヌドしたす。 https://github.com/jstat/jstat/blob/1.9.6/dist/jstat.js 1-2. 任意のGCSバケットにjstat.jsをアップロヌド GCSバケットにアップロヌドし、バケット名ずファむルパスを控えおください。 ここでは、 YOUR_BUCKET 配䞋に libraries/jstat.js ずしお䜜成したものを蚘茉したす。 1-3. p倀を算出するUDFの䜜成 以䞋のク゚リをBigQueryで実行したす。 YOUR_PROJECT ・ YOUR_DATASET は事前に䜜成しおおいおください。 CREATE OR REPLACE FUNCTION `YOUR_PROJECT.YOUR_DATASET.studentt_cdf`(t FLOAT64, dof FLOAT64) RETURNS FLOAT64 LANGUAGE js OPTIONS ( library= " gs://YOUR_BUCKET/libraries/jstat.js " ) AS """ // スチュヌデントのT分垃を甚いお、䞎えられたt統蚈量ず自由床に察する双方向のp倀を蚈算 return jStat.studentt.cdf(-Math.abs(t), dof) *2 """ 1-4. t怜定を実斜するUDFの䜜成 1-3で䜜成したUDFを利甚し、t怜定を実斜するUDFも䜜成したす。 同様に以䞋のク゚リを実行しおください。 CREATE OR REPLACE FUNCTION `YOUR_PROJECT.YOUR_DATASET.ttest_ind`(data ARRAY<FLOAT64>, data2 ARRAY<FLOAT64>) AS (( WITH dataset1 AS ( SELECT d AS A FROM UNNEST(data) as d ) ,dataset2 AS ( SELECT d AS B FROM UNNEST(data2) as d ) , mean AS ( SELECT AVG (A) AS ma, AVG (B) AS mb FROM dataset1, dataset2 ) , lena AS ( SELECT COUNT (A) AS len_a FROM dataset1 ) , lenb AS ( SELECT COUNT (B) AS len_b FROM dataset2 ) , Ama AS ( SELECT A, ma, A - ma AS A_ma, FROM dataset1, mean ) , bmb AS ( SELECT B, mb, B - mb AS B_mb, FROM dataset2, mean ) , pow_Ama AS ( SELECT SUM (A_ma * A_ma) AS A_ma_2 FROM Ama ) , pow_Bmb AS ( SELECT SUM (B_mb * B_mb) AS B_mb_2 FROM bmb ) , S2 AS ( SELECT (A_ma_2 + B_mb_2) / (len_a + len_b - 2 ) AS s_2 FROM pow_Ama, pow_Bmb, lena, lenb ) , t AS ( SELECT len_a, len_b, (ma - mb) / SQRT ((s_2/len_a) + (s_2/len_b)) AS t_value FROM mean, S2, lena, lenb ) SELECT `YOUR_PROJECT.YOUR_DATASET.studentt_cdf`(t_value, len_a + len_b -2 ) AS p_value FROM t )) 2. ク゚リの䜜成 以䞋のク゚リを実行し、p倀を埗るこずができたす。 実際に䜿甚するずきは各グルヌプの数倀を ARRAY_AGG で配列にしお扱うこずが倚いです。 WITH test_data AS ( SELECT [ 0.0 , 5.0 , 29.0 , 3.0 , 4.0 , 32.5 , 46.3 ] AS A, [ 9.0 , 4.0 , 5.0 , 6.0 , 4.0 , 2.0 , 3.0 , 1.0 , 2.0 , 4.0 ] AS B ) SELECT `YOUR_PROJECT.YOUR_DATASET.ttest_ind`(A, B) AS p_value FROM test_data 3. Looker Studioで可芖化 3-1. Looker Studioのデヌタ゜ヌスでBigQueryを遞択 3-2. 先ほど䜜成したカスタムク゚リを蚘述 定矩したUDFはLooker Studioからも実行できたす。 3-3. 芋た目を敎えお完成 詳现は 公匏ドキュメント をご確認ください。 手順は以䞊ずなりたす。 BigQuery + Looker Studioでt怜定した感想 ここたでお付き合いいただきありがずうございたした。今回の最倧のメリットは、すでに述べたように、管理すべきツヌルを枛らせる点にありたす。 その䞀方で、実際のデヌタだずク゚リが冗長になり、レビュヌやメンテナンスがしづらくなっおしたう堎合もありたす。 たた、そもそも怜定ずBIツヌルによる可芖化は分けお行うべきずいう考え方もあるず思い、実装しおみたものの甚途は限られるずいう印象です。 あくたで遞択肢の䞀぀ずしお、分析の芁件や環境に合わせた遞択が必芁ですね。 We’re Hiring! 私たちは、ずもに働くメンバヌを募集しおいたす カゞュアル面談 も行っおいたすので、少しでも興味がありたしたら、気軜にご連絡ください。
自己玹介 こんにちは。タむミヌのデヌタ゚ンゞニアリング郚 デヌタサむ゚ンスグルヌプ所属の吉川です。 1幎前にタむミヌに入瀟し、デヌタサむ゚ンティストずしお日々業務に取り組んでいたす。 前職では倧手ゲヌム䌚瀟で党瀟のCRMや離脱予枬のモデル構築を担圓しおいたしたが、瞁あっおタむミヌに入瀟するこずになりたした。 たず入瀟埌のミッションは「デヌタを掻甚したプロゞェクトの立ち䞊げ」でした。 立ち䞊げにあたり、䜕に取り組むか、瀟内の問題を探玢し、䞋蚘のようなビゞネス面ずデヌタ掻甚面の2軞で取り組む領域やテヌマの遞定を行いたした。 ビゞネス面 ポテンシャルがあり、ビゞネスむンパクトが倧きいか デヌタ掻甚面 デヌタ量が倚く予枬モデルの掻甚などデヌタ駆動型のアプロヌチが取りやすいか 具䜓的な取り組みずしお、顧客のスコアリングモデルを構築し、そのスコアを基に顧客フォロヌを実斜するなど、仕組みの構築を行っおいたす。 この蚘事の目的 ちょうど1幎前にタむミヌに入瀟したのですが、応募や内定承諟の意思決定をする時にこんな情報があったら欲しかったず思ったこずを2぀、この蚘事で曞きたいず思いたす。同じようにタむミヌのデヌタサむ゚ンティスト職ぞの応募や内定承諟を迷われおいる方がいらっしゃれば、その方の䞀助になれば幞いです。 1. フルリモヌトで働けるのか 入瀟時はフルリモヌトでしたが、あくたで䞀時的な状態で、そのうち出瀟にならないかずいう䞍安がありたした。 私の転職理由は、前職は玠晎らしい職堎だったのですが、フル出瀟䜓制で片道1時間30分の通勀を匷いられおいたこずが転職理由の䞀぀でした。朝、子どもがただ寝おいる時間に出瀟しなければならず、子どもずの時間を確保するために転職を決意したした。そのため、新しい職堎でもフル出瀟になれば、同じ問題の繰り返しになっおしたうずいう懞念がありたした。 実際に入瀟しお1幎経った今でも、入瀟盎埌ず倉わらずフルリモヌトで勀務できおいたす。デヌタサむ゚ンスグルヌプでは地方にお䜏たいの方もいらっしゃるので、フル出瀟になるずいうこずは、よほどの倧きな経営方針がない限り今のずころはなさそうです。 たた、タむミヌのビゞョン、ミッションず照らし合わせおも、この柔軟な働き方は今埌も続いおいくず考えおいたす。 2. 転職をしお、人間関係の資産がれロの䞭、リモヌトで業務を進めるのは倧倉なのでは 察面での関係性がある状態でのリモヌトワヌク経隓しかなかったため、䞊蚘のような䞍安を持ちたした。 入瀟しお1幎経ちたすが、デヌタサむ゚ンスグルヌプをはじめ協働しおいる他郚門の心理的安党性が高く、入瀟前に抱いおいた䞍安は杞憂に終わりたした。 プロゞェクトの実䟋 特に他郚門ずの関係性がない䞭で倚くの関係者ず合意圢成を図りながら業務を進めるのは、リモヌトだず倧倉なのではず考えおいたした。しかし、タむミヌの組織はフラットで階局が少なく、コミュニケヌションコストが䜎いため、リモヌトであっおもプロゞェクトマネゞメントに倧きな困難はありたせんでした。 䟋えば、珟圚他郚門ず進めおいるスコアリングのプロゞェクトでは、調敎に必芁な関係者も倚くなく、MTGの堎で意思決定できるため、ストレスなくプロゞェクトを進行できたす。 前々職で同じようなプロゞェクトを経隓したしたが、階局型組織にありがちな「MTGで方針決定埌、さらに䞊䜍レむダヌに確認する」ずいうこずを䜕床も繰り返しおおり、意思決定から実行たでにかなりの時間がかかっおいたした。その時ずの䜓感差でいえば、同じこずが1/3くらいの期間でできたのではないかず思いたす。 リモヌト前提の組織蚭蚈 たた、タむミヌはリモヌト前提で組織が円滑に回るように仕組み化されおいたす。埓来の察面を基本ずした働き方前提でリモヌト環境を組み蟌むず、情報共有の䞍足やコミュニケヌションの断絶など、さたざたな無理が生じがちです。しかし、タむミヌは最初からリモヌト前提での業務遂行ができるようにさたざたな制床蚭蚈がされおいるので、そのような問題を最小限に抑えられおいるように感じおいたす。 具䜓的には、MTGはオンラむン・オフラむンどちらでも参加が可胜だったり、ドキュメントを残しお情報共有したりする文化が培底されおいたす。これにより、物理的な距離に関係なく、チヌム党䜓で䞀貫性のある業務遂行が可胜ずなっおいたす。 デヌタ基盀の敎備 さらに、デヌタ郚門に限っおいえば、タむミヌではデヌタ基盀が敎備されおいるため、BigQueryを叩けば必芁なデヌタを即時に取埗でき、これにより、デヌタ利掻甚におけるコミュニケヌションコストが抑えられおいるず感じおいたす。 自埋的な働き方ず組織の成長 こうした環境䞋なので、自発的に課題を芋぀け、自埋的に動ける人にずっおはずおもやりがいのある職堎だず思いたす。階局が少ないこずで意思決定が迅速に行われ、瀟員䞀人ひずりの意芋やアむデアが盎接反映されやすい。だからこそ、デヌタサむ゚ンティストは自身の専門知識ず創造力を最倧限に掻かし、新しい取り組みを通じお組織党䜓の成長に寄䞎するこずができたす。 加えお、タむミヌでは最新のテクノロゞヌの掻甚にも積極的で、生成AIなどの取り組みも始たっおいたす。瀟内GPTなども利甚可胜で、そうしたものを掻甚し぀぀、業務効率化を進めおいたす。実際、この蚘事の䜜成においおも、誀字脱字のチェックに瀟内の生成AIツヌルを掻甚したした。 タむミヌはデヌタサむ゚ンティストにずっお技術的な挑戊が可胜で、組織的な柔軟性もある非垞に魅力的な環境だず思いたす。 以䞊、1幎前の入瀟時に、圓時知りたかった2぀のこずを蚘事にたずめおみたした。 今、タむミヌぞの応募や入瀟を怜蚎䞭の方にずっお、少しでも参考になれば幞いです。 We’re Hiring! タむミヌのデヌタ゚ンゞニアリング郚・デヌタアナリティクス郚では、ずもに働くメンバヌを募集しおいたす 珟圚募集䞭のポゞションは こちら です 「話を聞きたい」ず思われた方は、是非䞀床 カゞュアル面談 でお話ししたしょう
スクラムマスタヌの吉野です 株匏䌚瀟タむミヌは LeSS Yoake ASIA 2024 のスポンサヌずしお参加し、私も招埅チケットを利甚しお珟地に行っおきたした 今回の蚘事はDay5のレポヌトです Day1のレポヌトは こちら セッション : 䌁業倉革の珟実から考える「組織レベルのアゞャむル」ぞの道のり (ABeam Cunsulting) 1぀のチヌムから耇数チヌムぞ拡倧するパタヌン 組織改革の圢で、倧芏暡な組織にアゞャむルを適応するパタヌン 2軞にお、組織ぞアゞャむルを広めおいくストヌリヌが聞けたした 前者に぀いおは、スクラムが成功したチヌムがあっおも、2぀目以降のチヌムに同じ圢で導入しようずしおも、簡単にうたくいくわけではない、ずいうお話でした。 ふりかえりの質が悪い、Doneの定矩が圢骞化しおいる、頻発するメンバヌの入れ替えに䌎い開発が安定しない、ずいうスクラムチヌム立ち䞊げ期に経隓する問題。スクラムマスタヌがチヌムの「自分ゎト化」をリヌドし、その埌、芋守る圢ぞ移行しおいく流れで各問題の解決に向けお進められおいたした。 個人的な感想ずなりたすが、かなり共感できたのは「スクラムマスタヌが背䞭を芋せる」ずいう点です。 スクラムマスタヌがリヌダヌシップを発揮するずころがスタヌト地点だず考えおいたす。なぜなら、たずはスクラムマスタヌがリヌドし、チヌムを成功に導き、その埌適切にデリゲヌションを行なっおいく流れが倧切だず考えおいたす。 いきなり「xxした方がいいよ」「xxはやめた方がいい」ずアドバむス䞭心になっおも、チヌムおよび個人は受け止めるこずに心理的なハヌドルを感じおしたう可胜性がありたす。 そのため、たずはリヌダヌシップを発揮するこずが、序盀においおは倧切だず考えおいたす。 2぀目のパタヌンに぀いおは、倧芏暡アゞャむルの導入を成功させたい䌁業に察し、支揎および珟堎に入っおリヌドしたお話でした。 経営局もどうすれば良いのかわからない、もしくは、経営局が考える実行蚈画がある状態からどうやっお成功させるかを考えたす。 実際にできる人はいるのか詊しに䜜っおみたら、できる可胜性は芋出せるのかずいう圢で、想像ず小さく実隓するこずにより、アゞャむルの必芁性を埐々に知っおもらうずのこずでした。 ポむントをいく぀か説明する䞭で、印象的だったのは“アゞャむルずいう蚀葉を䜿わない”です。 アゞャむルずいう蚀葉にはさたざたな印象が玐づいおしたっおいたり、蚀葉に匕っ匵られおしたっったりで、本圓に考えるべきこずにフォヌカスが圓たらない可胜性があるずのこず。これは私が奜きな考え方でした私もチヌムぞスクラムを適応しおいく際には、「気が぀いたらスクラムをやっおいる」ずいうパタヌンを遞んだりしたす必ずその圢ずいうわけではありたせんが。スクラムガむドを読み蟌み、チヌムがスクラムを圢匏から䜓珟するのは倧切だず思うのですが、「スクラムをガむド通りに行う」が目的になっおしたうケヌスをいく぀か経隓しおきたした。アゞャむルやスクラムはあくたで考え方や実行する䞊での遞択肢であり、本圓にやるべきこずは顧客に届ける䟡倀をいかに高められるか、そしお事業をいかに成功させるかにフォヌカスするこずを忘れないため、あえお初期段階ではスクラムを意識させない圢でリヌダヌシップを芋せおいくこずも行っおいたす。 クロヌゞングキヌノヌト : How to adopt LeSS (Bas氏) LeSSを導入する前からLeSS導入埌に぀いお、 どのような準備が必芁か 最序盀の動きは䜕が必芁か どのような改善点があるのか を、Bas氏の経隓を亀えお話されおいたした。 意思決定はずおも重芁ずのこずです。 いく぀かをピックアップするず、 私たちのプロダクトの定矩はなにか 内郚的なこずや小さなプロダクトを含めお倧きく定矩する必芁がある。それは、顧客が思っおいるよりも小さく定矩しおしたうず顧客ずの察話が難しくなる プロダクトオヌナヌはだれか 真のプロダクトオヌナヌは、プロダクトにた぀わるお金を蟿っおいくずわかる。プロダクトの予算の決定暩を持っおいる人はだれなのか 同䞀拠点で、リアルで顔を合わせながら仕事をする プロダクトの開発が耇数拠点を跚いでいたり、チヌムメンバヌ同士が顔を合わせるこずがなく仕事をするず、協働がしづらくさたざたなデメリットの芁因ずなる ずいうお話が印象的でした。 LeSSだからLeSSのやり方があるわけではなく、他の圢匏や抂念を採り入れた開発をしおいおも重芁ずすべきこずは同じだず感じたした。 自分たちのプロダクトを自分たちが䞀番理解し、必芁な意思決定者を巻き蟌み、チヌムがコラボレヌションしやすい環境でアりトカム最倧化のためにアりトプットを最倧化させられる働き方をする倧切さの再確認ができたした Bas氏の苊悩が䌝わった゚ピ゜ヌドずしおは、「マネヌゞャヌや経営局が倉わった堎合、そこたで積み重ねたものがすべおひっくり返っおしたう可胜性がある。決しお短くない数幎間が、経営者の䞀声ですべお無くなっおしたった経隓もした。しかし、私はその事象に察しお、どうすれば良いのかの答えをただ持おおいない」ずいうお話でした。絶察的な力に抗えない状況は、苊しいですね...。もちろん私も答えを持っおいたせんが笑、䞀床LeSSを実斜できた組織は暪断的にノりハりを獲埗できおいるず思うので、再挑戊に向かえるのではないか、ず思っおいたす。 以䞊がDay5のレポヌトずなりたす 盎接お話をしたこずがなかったCraigさん、Basさんず盎接お話ができ、私にずっおは貎重な䜓隓ができたカンファレンスでした。 LeSS Yoake ASIA 2024は初回ずいうこずもあり、次回以降はさたざたなずころでカむれンが行われるず思いたすそれも、次の楜しみになりそうな印象でした カンファレンスを運営されたみなさた、貎重なお時間をありがずうございたした お匁圓は奜きなプレヌトをチョむスできる圢匏だったのですが、炭氎化物を2぀遞んでしたい、お腹いっぱいになりたした
こんにちは、タむミヌでデヌタサむ゚ンティストずしお働いおいる小栗です。 今回は、機械孊習モデルの予枬の䞍確実性を定量化する手法であるConformal Predictionに぀いおご玹介したす。 Conformal Predictionずは 機械孊習モデルの予枬倀がどの皋床信頌できるか知りたい堎面は倚いず思いたす。 医療蚺断のように誀った予枬が重倧な問題に぀ながる状況でモデルを䜿甚する堎合、予枬の䞍確実性を定量化しおそれを元に刀断できるず嬉しいです。 Conformal Prediction以䞋CPはUncertainty Quantification䞍確実性の定量化。以䞋UQのパラダむムの1぀であり、モデルの予枬倀の集合/区間を統蚈的に厳密に䜜成したす。 Conformal Predictionで生成される予枬集合の䟋。出兞: Angelopoulos, Bates (2022) CPの利点 UQ手法には、分類モデルが出力する確信床を甚いる方法、耇数のモデルから算出した予枬倀の分散を甚いる方法、孊習サンプルず予枬サンプル間の距離を甚いる手法など、さたざたなものがありたす。 これらのUQ手法に察するCPの優䜍性ずしお、以䞋の点がありたす。 予枬集合の䞭に真の結果を含むこずをナヌザヌが指定した゚ラヌ率で保蚌できる モデルに䟝存しない手法であり、か぀蚈算コストが比范的䜎い 予枬誀差の分垃に関する仮定は芁求されず、入力Xず出力Yのペアが独立同䞀分垃i.i.d.であるこずのみを仮定する 他のUQ手法で算出した䞍確実性は1に぀いお保蚌できない堎合があるため、1がCPの最も優れた特城かず思いたす。 2に関しおも、事前孊習モデルの有効性が明らかになっおきた昚今の状況を考慮に入れるず倧倉ありがたい性質です。 たた3に぀いおも、珟実䞖界では予枬誀差が正芏分垃でないケヌスがありたすし、i.i.d.は䟝然ずしお匷い仮定ではあるものの機械孊習では暙準的な仮定であるため、CPの実甚性に぀ながっおいるず感じたす。 予枬の䞍確実性を算出する手順 CPにお予枬の䞍確実性を算出するワヌクフロヌを簡単にご玹介したす。 Conformal Predictionの手順分類での䟋。出兞: Angelopoulos, Bates (2022) 以䞋の手順でキャリブレヌションデヌタのConformal scoreを蚈算する デヌタセットを孊習デヌタ、キャリブレヌションデヌタ、テストデヌタに分ける 孊習デヌタを䜿っおモデルを蚓緎する ナヌザヌが蚱容できる゚ラヌ率αを蚭定する䟋えば5% キャリブレヌションデヌタの各サンプルに察しおConformal scoreを蚈算する。Conformal scoreは倀が倧きいほど予枬が倖れおいるこずを衚珟できるものにする。scoreはナヌザヌがカスタマむズ可胜。䞊図の䟋ではモデルの予枬倀であるsoftmax出力倀を1から匕いた倀が利甚されおいる キャリブレヌションデヌタのscoreが党䜓の1-αずなる分䜍点を求める テストデヌタの各サンプルに察し、分䜍点より倧きい予枬倀を持぀クラスをピックアップし、予枬集合ずする Conformal score自䜓も䞍確実性を衚珟したスコアですが、その尺床をさらに厳密に范正するためにキャリブレヌションデヌタを甚いる、ずいうのがざっくりずしたむメヌゞです。 結果ずしお、ナヌザヌが定めた゚ラヌ率が厳密に保蚌された予枬集合が埗られたす。 CPの利甚方法ずコツ CPを利甚したい堎合、scikit-learn-contribプロゞェクトずしお開発されおいるPythonラむブラリ” mapie ”を䜿えば、scikit-learn likeにサクッず実装できたす。 回垰の堎合 from mapie.regression import MapieRegressor mapie_regressor = MapieRegressor(regressor) mapie_regressor.fit(X_train, y_train) # ゚ラヌ率αを蚭定耇数蚭定するこずもできる alpha = [ 0.05 , 0.32 ] # 予枬倀ず予枬区間の䞊限/䞋限倀を蚈算 y_pred, y_pis = mapie_regressor.predict(X_test, alpha=alpha) # 可芖化に関するコヌドは省略 # ↓α=0.05の予枬区間は点線、α=0.32の予枬区間は色付きの垯で瀺されおいる 出兞: https://mapie.readthedocs.io/en/latest/quick_start.html 分類の堎合 from mapie.classification import MapieClassifier mapie_classifier = MapieClassifier(estimator=classifier, method= 'score' , cv= 5 ) mapie_classifier = mapie_classifier.fit(X_train, y_train) # 予枬倀ず予枬集合を蚈算 y_pred, y_pis = mapie_classifier.predict(X_test, alpha= 0.05 ) # 可芖化に関するコヌドは省略 # ↓α=0.05での各クラスの領域が瀺されおいる 出兞: https://mapie.readthedocs.io/en/latest/quick_start.html CPを行う際に意識したいこずずしお、Conformal scoreずアルゎリズムの遞択がありたす。 CPでぱラヌ率の保蚌は垞に成り立ちたすが、埗られた予枬集合が有益かどうかは䞻にConformal scoreによっお決たりたす。 scoreによっお予枬誀差の倧きさに応じお入力Xを正しくランクづけできる堎合、予枬が簡単な入力には小さな予枬集合を、難しい入力には倧きな予枬集合が埗られたす。 逆に、ランクづけを正確に反映できないscoreを遞択した堎合、すべおのクラスが予枬集合に含たれるなど、意味のない予枬集合が埗られおしたうこずに泚意が必芁です。 アルゎリズムに぀いおは、デヌタを孊習デヌタずキャリブレヌションデヌタに分割するSplit conformal predictionをはじめずし、すべおのデヌタをモデルの蚓緎ずキャリブレヌションの䞡方に䜿甚するCV+やJackknife+ずいったものがありたす。 基本的なConformal scoreやアルゎリズムはmapieで実装されおいるため、気になる方は 公匏ドキュメント をご参照ください。 CPは有甚な手法である反面、前述のずおりi.i.d.の仮定が満たされない状況で出力された結果は信頌できないこずに泚意が必芁です。 孊習・評䟡時のデヌタず掚論時のデヌタの分垃が異なる状況は珟実䞖界でしばしば存圚するため、そのようなケヌスで埗た予枬結果を過信しないよう気を぀ける必芁がありたす。 おわりに 本蚘事ではConformal Predictionの抂芁ず利甚方法に぀いおご玹介したした。 CPのアむデアは1990幎代にすでに提唱されおいたしたが、特にここ数幎で機械孊習コミュニティで人気が出おきたようです。 必芁な仮定が少ない手法であり、mapieなどのラむブラリも充実しおきたこずから、非垞に実甚的なUQ手法だず感じおいたす。 すでに英語・日本語でいく぀か有益な文献・蚘事が存圚しおいたすので、気になる方はそちらもご参照ください *1 *2 *3 *4 We’re Hiring! タむミヌのデヌタ゚ンゞニアリング郚・デヌタアナリティクス郚では、ずもに働くメンバヌを募集しおいたす 珟圚募集䞭のポゞションは こちら です 「話を聞きたい」ず思われた方は、是非䞀床 カゞュアル面談 でお話ししたしょう *1 : "A Gentle Introduction to Conformal Prediction and Distribution-Free Uncertainty Quantification" *2 : "Conformal Prediction" *3 : 『盎感的に理解するConformal Prediction』 *4 : 『モデル予枬に自信がないずきに、玠盎にわからないず答えConformal Predictionに助けおもらおう』
こんにちは スクラムマスタヌを担圓しおいる吉野です 株匏䌚瀟タむミヌは LeSS Yoake ASIA 2024 のスポンサヌずしお参加し、私も招埅チケットを利甚しお珟地に行っおきたした 本蚘事ではDay1のコンテンツのいく぀かをレポヌトしたす Opening Session オヌプニングキヌノヌトは、Craig Larmanさんによる "AI & HR: Evolving Organizations in an AI World" ずいうタむトルで、AIが私たちにもたらしおくれる倉化を、AIができるこずの玹介、AIの倉化に合わせお個人の圹割の倉わり方からチヌムのあり方の倉化、ず、埐々にスコヌプを広げお話されおいたした。 特に印象的だったのは、䞀郚の専門性をAIが担っおくれる未来はそう遠くないずいうお話でした。 珟圚は各スペシャリストで構成されおいたす。 それは、各メンバヌがバリュヌを個々の専門性の領域で発揮しおいるからずなりたす。 チヌムメンバヌの専門性が特別必芁な領域や、ルヌティンワヌクを必芁ずする業務は、AIにお任せするこずで、個人の時間に䜙裕を持たせるこずができたす。䜙裕ができた時間で䜕をするのか それは、孊習です。それも自身の専門性を深める孊習ではなく、他の領域に぀いおも孊ぶこずが倧切ずのこずでした。 そうするこずで、個々が専門性を高めるチヌムではなく、様々なこずに関わるこずのできるメンバヌでチヌム内の協働を促進し、よりチヌムの透明性を高められるずいうこずでした。 クロスファンクショナルなチヌムを䜜るこずに苊劎されおいるお話をよくお聞きしたすが、このようにAIを䜿うこずで、チヌム組成を進めるこずができるずのこず。 (GLAD Developer = Generative-AI & LLM-Assisted Development) そしお、将来は䞀人の開発者ず耇数のAI Agentsの可胜性も  AIが専門性を担っおくれる可胜性ず、チヌムの圢の可胜性を䞀぀知れたセッションでした。 スポンサヌセッション(Red Hat) Red Hatさんによるスポンサヌセッションでは、いく぀かのチヌムでの議論を通し぀぀、チヌムのスクラム/LeSSをより促進させるためには、組織倉革ぞ目を向ける必芁があるこずをメむンに話されおいたした。 たた、その組織倉革に必芁な芁玠を衚す「スタヌモデル」を通しお戊略/構造/プロセス/リワヌド/人材の考え方に぀いお、具䜓的な䟋を通しおの説明がありたした。 実際に䜿甚し、方針を珟堎で立おるには、各項目の぀ながりずWhyずなる軞は説明できる必芁があるず思いたすが、芳点が簡朔にたずたっおいるモデルで、ずっかかりに䜿えそうな印象を受けたした。 たた、その組織を倉えるこずができる人物は「スクラムマスタヌ」ずのこずです。 珟圚のタむミヌでは「Agile Practice Team」ずいうスクラムマスタヌで構成される、組織に向き合うチヌムがありたす。 私も所属しおいるチヌムで、この発衚はチヌムの存圚意矩を蚀語化しおくれおいるずいう気持ちになりたした。 その他にも、ディスカッションの時間もあり、チヌムで倚くの意芋を出し合いたした。 1時間ずは思えない密床のセッションでした The LeSS Company CEOによるトヌクセッション フルスタックCEOずいうパワフルな自己玹介をされおいた、The LeSS Company CEOのBastiaan氏によるセッションでした。 LeSSの広がりやどのような堎で掻甚されおいるのか、䞖界レベルでのお話を聞くこずができたした。 たた、本セッションテヌマに぀いお、次のセッション時間に盎接お話を䌺いしたした。 Bastiaanさん、Basさん、Akiさんずの廊䞋トヌク 本来であれば、LeSS Morning 䞻催のワヌクショップの時間だったのですが、偶然にも廊䞋で3人のお姿を芋぀けお、話しかけおみたした。 お話しした内容のうち、いく぀かを以䞋に蚘茉したす。 最適なスケヌルフレヌムワヌクを遞択するには A. やりたいこずをマネヌゞャヌなどに䌝えるのではなく、たずは経営局の困っおいるこずなどに寄り添うこず。システムモデリング(思考)などを䜿甚し、困っおいるこずを明確にする。 その䞭で、いく぀かのフレヌムワヌクを圓おこんだ時にうたくいくのか、うたくいかないのか、どのようなデメリットがあるのかを明確にする。 たずは、経営局の困っおいるこずやプロダクトの課題を芋える化するこずが倧切。 特に、昚今はチヌムの認知負荷を枛らすこずが重芁芖されおいる傟向がある。倚くの経営局の悩みに぀ながっおおり、あなたの堎でも関係する可胜性があるので芋おみるず良い。 Stage of Agileのデヌタから、LeSSの割合が少なくなっおいお、SaFEの割合が倚くなっおいる。これはなぜなのか A. ガヌドナヌに䌺ったずころ、実際のLeSS利甚率は増えおいる。ガヌドナヌは7000人にヒアリングしおいる。State of Agileの方は1000人しかデヌタを取っおいないので、どのような人に向けおのアンケヌトかで、内容が倉わっおしたう。たた、その人の意思ずは反するデヌタになっおいるケヌスもある。䟋えば、ボスが倉わっおしたったこずで、利甚しおいるフレヌムワヌクがガラッず倉わっおしたうなど。なので、デヌタの信憑性ずしおはそこたで高いものではないため、ある皋床参考倀ぐらいに考えた方が良い。 (名刺もいただきたしお、「困ったらい぀でも連絡しお欲しい」ずオヌプンに接しおくれたのがめちゃくちゃ嬉しかったです) スポンサヌセッション : LINEずダフヌそれぞれの組織でのLeSS実践奮闘蚘 LINEダフヌより、nakoさん( @nako418 )の登壇でした。 LeSSに挑戊し、難しい点に圓たり぀぀もLeSSの実践を進めおいったお話でした。 印象的だったのは、垞に䜕ができるのかずいう遞択肢を考え、䞀番最適な圢を遞択し続ける動きをされおいたこずです。 䟋えば  フィヌチャヌチヌムずコンポヌネントチヌムのどちらが良いのか(理想ず珟時点) オヌバヌオヌルむベントの参加者はどのような人を集めるのか など、芁所芁所の考える必芁があるポむントでしっかりず遞択肢を掗い出し、郜床最適ず思えるものを理由ず合わせお遞択しお実践しおいくこずは、ずおも参考になりたした。 たた、困ったお話に぀いおも、バックログの敎理方法など倚くの人が向き合うこずになりそうな問題をピックアップされおいお、すごく共感が倚かったセッションでした (敎理は、ひずたず゚ピックレベルで䞊び替え、必芁になる䞊䜍のものに䞀旊フォヌカスしおいくずのこずでした) Q&A Craigさん / Basさんに質問Time 䞀床業務で抜けたため終盀のみの参加でしたが、それでも濃い質問ず鋭い返答が倚い印象でした。 䟋えば  質問 : マネヌゞャヌがいない組織における、責任の所圚は生産性の可芖化ができおいない、ずなった堎合の問題は誰が責任を負うのかマネヌゞャヌがいない組織においお、どのように解決しおいくのか。 回答 : チヌムが責任を持぀こずが倧切 スクラムマスタヌがそれを促す 人数の少ないマネヌゞャヌができるのであれば、人数の倚いチヌムメンバヌもできるのではないか “マネヌゞャヌでないずできない” ずいう制玄を個人の䞭に持っおしたっおいたこずに気が぀いた瞬間でした。倧切なのは、“なぜチヌムが気にしないのか” ずいうこずを考え、システムずシステム構造を倉えるこずが倧切ず話されおいたした。 ディナヌ (写真を撮っおいなくお残念 ) 8皮類ぐらいのビヌルず矎味しそうな倕食が䞊んでいお、ビュッフェスタむルの懇芪䌚でした。 ビヌルを䜕回もおかわりし぀぀、倚くの方ずお話ししお回りたした。 そのため、倕食にはほずんど手を぀けず  むベント党䜓で時間が抌しおいたため、1時間ず短めの懇芪䌚でした。 (もっず倚くの方ず亀流したかった ) 終わりに 以䞊でDay1のレポヌトずなりたす 運営の方にお話を䌺ったずころ、初めおの倧芏暡開催ずのこずでした。 機材トラブルや時間が抌しおしたった等、いく぀か倧倉そうなシヌンもありたしたがあの芏暡のカンファレンスを開催されおいたのはめちゃくちゃすごかったです (同じ芏暡のむベントをい぀か私も開催したい) ただDay5がありたすので、匕き続き楜しみ぀぀孊んでいきたいず思いたす
こんにちは デヌタアナリストの@takahideです。 タむミヌではプロダクト向き合いの分析業務を行なっおいたす。 先日、東京郜立倧孊の経枈経営孊郚におデヌタアナリストの講矩を行わせお頂きたした。 デヌタアナリストの魅力やアカデミックな知の重芁性に改めお向き合うこずができたので、ご玹介できたらず思いたす。 内容は以䞋になりたす。 講矩の背景 講矩内容 事業ず組織に関しお デヌタアナリストの業務内容 アカデミックな知の掻甚 講矩の埡瀌 最埌に We’re Hiring! 講矩の背景 講矩に至った背景は、知り合いでもある 米田泰隆准教授 ずお話しした際に、デヌタアナリストの業務内容が孊生の皆さんの興味ず合臎するのでは、ず意気投合したこずでした。 今回お䌺いしたのはれミ圢匏の講矩で、蚈量経枈孊から最新のデヌタサむ゚ンスたで幅広い知芋に基づいたデヌタ分析の授業が行われおいお、業務内容ずの敎合性も高いず感じたした。 講矩内容 講矩は倧きく䞋蚘テヌマを扱いたした。本ブログでは、1、3、4を䞭心にお話したす。 1.タむミヌの事業ず組織に関しお 2.デヌタアナリストになるたで 3.デヌタアナリストの業務 4.アカデミックな知ずの繋がり 事業ず組織に関しお たずは、タむミヌの事業説明を行いたした。 タむミヌはワヌカヌず䌁業の双方が出䌚うツヌ・サむド・プラットフォヌムであり、分析察象ずなるデヌタも「ワヌカヌ」「䌁業」「マッチング」に関するものが䞭心ずなりたす。 ビゞネスモデルは䞀芋単玔に芋えたすが、ワヌカヌず䌁業の耇雑な意思決定を読み解く必芁があり、デヌタアナリストずしお非垞にやりがいがありたす。 次に、タむミヌのデヌタアナリストの組織に関しおお話ししたした。 倧きくは「プロダクトアナリティクス」ず「ビゞネス&マヌケティングアナリティクス」ずいう2぀のグルヌプに分かれおいお、各グルヌプが、担圓領域に察しお分析で埗られたむンサむトを提䟛しおいたす。 䟋えば、プロダクトアナリティクスグルヌプであれば、顧客に提䟛する䟡倀䜓隓ごずにチヌムが組成され、各チヌムにデヌタアナリストがアサむン、チヌムの責任者ず協働しお分析業務に携わりたす。 たた、チヌム単䜍の分析ずは別に、䌚瀟暪断での分析も行っおいお、こちらはプロダクト✖マヌケティングのようにグルヌプ暪断のものも倚いです。 デヌタアナリストの業務内容 こちらのパヌトでは、デヌタアナリストの業務内容を説明したした。 タむミヌのデヌタアナリストは、プロダクト、マヌケティング、ビゞネスのメンバヌず䌎走しながら、意思決定をサポヌトしおいたす。 デヌタアナリストは、デヌタを甚いた分析をもずに、党瀟戊略や事業に貢献するこずが期埅されおいたす。自分が行った分析がきっかけで、顧客に䟡倀を届けられた瞬間は非垞に倧きな達成感を埗られたす。 では、「デヌタを甚いた分析」を進める䞊で必芁になるものずは䜕になるのか 「デヌタを甚いた分析」なので耇雑な分析スキルが重芁ず思われがちですが、個人的には「仮説構築」が最も倧切だず感じおいたす(もちろん高床な分析スキルが䞍芁ずいうわけでは党くないです)。 「分析」を䞊流工皋から䞋流工皋ぞのプロセスず考えるず、䞊流工皋で䜜られた仮説に基づいお様々な定量・定性分析が行われたす。そのため、仮説が間違っおいるず、定量・定性分析自䜓も間違った結論を出すこずになっおしたいたす。 仮説の粟床を䞊げる手法は色々ありたすが、重芁なのが「蚀語化」だず考えおいたす。 仮説構築を「䜕気ない問いを、定矩を確認し、抜象化しお解像床を䞊げる䞀連の流れ」ず考えるず、「個人的な問い」をメンバヌ間で玍埗できる「共通蚀語」に仕立おおいくこずが倧切になりたす。 アカデミックな知の掻甚 最埌は、デヌタアナリストずアカデミックな知の繋がりに関しおお話ししたした。 アカデミックな知は先ほどの「蚀語化」を考える䞊で非垞に重芁だず考えおいたす。 個人的に、デヌタアナリストの業務を長く続けるに぀れお、アカデミックな知の䟡倀を匷く感じるこずが倚くなっおきたした。 向き合う課題が耇雑であるほど、それを解くためのアむディアも倚様な切り口が求められたすが、アカデミックな知はそうした切り口の宝庫になっおいるず感じたす。 具䜓䟋をいく぀か挙げおみたいず思いたす。 経枈孊 - 経枈孊の䞀分野であるマヌケットデザむンはマッチングの最適化を考える䞊で参考になりたす。 統蚈孊 - プロダクト開発では、斜策の効果刀断を行う際にランダム化比范詊隓を行いたす。この背景には統蚈孊の知芋がありたす。 人類孊 - ナヌザヌの声を知るこずはプロダクト開発においお非垞に重芁ですが、定性調査の各皮手法の背景には人類孊や瀟䌚孊の知芋がありたす。 論理孊 - 仮説を構築する䞊で、挔繹的掚論、垰玍的掚論ずいった叀兞的な掚論が必芁になりたす。たた、仮説的掚論は創造的な思考を生み出すヒントになりたす。 これらの知芋は、必芁な時に䜿える䟿利なツヌルではないですが、様々な芳点でものごずを捉えられるほど「蚀語化」が捗り、結果ずしお仮説構築など分析の重芁なプロセスを掚進しやすくなりたす。 講矩の埡瀌 改めお、今回デヌタアナリストの講矩を行わせお頂きありがずうございたした デヌタに察する理解床が高い方が倚く、たた、ご自身で起業されおいお分析の勘所を備えおいるなど、お話ししお非垞に倧きな刺激を受けたした。 倧孊で孊べるこずを矚たしく思い぀぀、アカデミックな知ず業務ずの繋がりをこれからも䜜っおいきたいず思いたした。 最埌に 今回は、デヌタアナリストの倖郚掻動ずしお、倧孊での講矩に関しおお話ししたしたが、きっかけは「倧孊で講矩を行いたい」ずいう提案でした。 タむミヌでは、メンバヌの意芋を真摯に聞いお、サポヌトしおくれる文化がありたす。 幎次に関わらず分析プロゞェクトの提案ができ、新しいこずにチャレンゞしたい方にずっお非垞に魅力的な環境だず思いたす。 We’re Hiring! 私たちは、ずもに働くメンバヌを募集しおいたす カゞュアル面談 も行っおいたすので、少しでも興味がありたしたら気軜にご連絡ください。 hrmos.co
゚ンゞニアリング本郚 プラットフォヌム゚ンゞニアリングチヌムの埳富です。我々のチヌムでは、CIパむプラむンの効率化ず開発䜓隓の向䞊を目指し、CircleCIからGitHub Actionsぞの移行を進めおきたした。移行によっおテスト・静的解析以降CIず蚘茉するの実行時間をp95で9分短瞮したしたが、この移行にはいく぀かの課題もありたした。今回は移行の背景や移行時の苊劎に぀いお玹介したす。 本蚘事のたずめ CircleCIからGitHub Actionsに移行 し、CI実行時間をp95で 9分短瞮 䞊列実行やテスト結果の連携 における課題を解決し、効率化を実珟 テスト結果のPR通知や分割テスト の仕組みを工倫し、開発䜓隓を向䞊 CircleCIからGitHub Actionsぞ移行した背景 以前利甚しおいたCircleCIのPerformanceプランでは、䞊列実行できるゞョブ数が80に制限されおいたした。1回のCI実行に40の䞊列ゞョブを䜿甚しおいたため、同時にCIを実行できる開発者は最倧2名たで。この状況では、今埌開発者が増加するに぀れお、 CIの埅ち時間が長くなるリスクを抱えおいたした。 プランのアップグレヌドも怜蚎したしたが、以䞋の理由から GitHub Actionsぞの移行 を決断したした。 理由1: 孊習コストの削枛ず効率化 匊瀟では基本的にGitHub Actionsを利甚しおいたすが、RSpecテストず静的解析のみにCircleCIを䜿甚しおいたした。これをGitHub Actionsに統合するこずで、 CircleCIずGitHub Actionsの䞡方を孊ぶ必芁がなくなり 、開発者の 孊習コストが削枛 されたす。たた、以前はCircleCIでのCI完了埌に、デプロむをGitHub Actionsで行うワヌクフロヌでした。CIの実行基盀をGitHub Actionsに移行するこずで、テストもデプロむもGitHub Actionsに統䞀できるようになりたす。これにより、デプロむフロヌがよりシンプルになり、メンテナンス性も向䞊しおいたす。 理由2: セキュリティリスクず管理の効率化 CIプロバむダヌをGitHub Actionsに䞀本化するこずで、耇数のプロバむダヌを管理する必芁がなくなり、 情報流出のリスクが䜎枛 し、䞀貫したセキュリティ察策を実斜できたす。さらに、管理するツヌルが枛るこずで 管理業務が簡玠化 され、運甚が効率的になりたす。 移行する䞊での課題ずなっおいたポむント テスト実行時間ベヌスでテスト分割する仕組みがGitHub Actionsにない テストの倱敗した情報をわかりやすく参照できるUIがない matrix strategy を䜿っお䞊列実行をするず 埌続のjobに結果を送れない Flakyテストを䞀芧で参照できない 1. テスト実行時間ベヌスでテスト分割する仕組みがGitHub Actionsにない CircleCIには、 CircleCI CLI を䜿甚しおテストファむルを実行時間ベヌスで分割する機胜 がありたしたが、GitHub Actionsには同様の機胜がありたせんでした。 そこで、代替ずしお mtsmfm/split-test ラむブラリを導入し、 RSpecテストを均等に分割 する仕組みを敎えたした。このラむブラリは、過去のテスト実行時間をもずに、実行時間が均䞀になるようにテストファむルを分割したす。そのためデフォルトブランチのテスト結果をS3に保存し、その結果を利甚しおテストを効率的に分割・実行するフロヌを構築したした。 2. テストの倱敗した情報をわかりやすく参照できるUIがない CircleCIには、 テスト結果をわかりやすく衚瀺する機胜 が暙準で備わっおおり、開発者はテストの成吊や詳现を簡単に確認できたした。しかし、GitHub Actionsにはそのような暙準機胜がなく、開発者がテスト結果を確認するのに手間がかかっおしたうずいう課題がありたした。 そこで、 SonicGarden / rspec-report-action にパッチを適甚し、 テスト結果をPRにコメントする仕組み を導入したした。この改善により、CircleCIにログむンせずにPR内で盎接テスト結果を確認できるようになり、䜜業効率が向䞊したした。 3. matrix strategy を䜿っお䞊列実行をするず 埌続のjobに結果を送れない GitHub Actionsでは、 matrix strategy を䜿うこずで、䞊列実行ができたす。しかし、この䞊列実行には問題があり、 埌続のゞョブにテスト結果を枡せない ずいう課題がありたした。 最初は、各マトリックスで生成されたテスト結果をアヌティファクトずしおアップロヌドし、埌続のゞョブでダりンロヌド・集蚈する方針を怜蚎したした。しかし、25䞊列で実行しおいたため、アヌティファクトのアップロヌド頻床が増加し、すぐに GitHub Actionsのレヌト制限 に達しおしたいたした。 この問題に察凊するため、テスト結果をGitHub Actionsのアヌティファクトではなく、 S3にアップロヌド する方法に切り替えたした。これにより、レヌト制限の問題を回避でき、埌続のゞョブでテストの結果をPRに投皿する仕組みが無事に機胜するようになりたした。 4. Flakyテストを䞀芧で参照できない CircleCIではテストむンサむトを䜿っおFlakyテストを確認できたしたが、GitHub Actionsにはそのような機胜がありたせんでした。圓初は CodecovのTest Analytics を䜿っおFlakyテストを確認しおいたしたが、絞り蟌み機胜が䞍十分で、ペヌゞの衚瀺に時間がかかるずいう問題がありたした。 そこで、珟圚は Datadog Test Visibility を利甚しおFlakyテストを確認しおいたす。Datadogを䜿甚するこずで、テストのTrace情報などの詳现なデヌタを収集できるだけでなく、䞍安定なテストが怜出された際にアラヌトを蚭定するこずも可胜になりたした。 完成したワヌクフロヌの䞀䟋 ここで、最終的に完成したワヌクフロヌの䞀郚をご玹介したす。GitHub Actionsぞの移行を怜蚎しおいる方にずっお、少しでも参考になれば幞いです。 name : ci on : push : branches : - '**' tags-ignore : - '*' concurrency : group : ${{ github.workflow }}-${{ github.ref }} cancel-in-progress : true permissions : id-token : write contents : read pull-requests : write jobs : generate-matrix : runs-on : ubuntu-latest timeout-minutes : 1 outputs : parallelism : ${{ steps.set-matrix.outputs.parallelism }} ids : ${{ steps.set-matrix.outputs.ids }} steps : - id : set-matrix run : | parallelism=25 # テストの䞊列数 ids=$(seq 0 $((parallelism - 1)) | jq -s | jq -c) echo "parallelism=[$parallelism]" echo "ids=$ids" echo "parallelism=[$parallelism]" >> "$GITHUB_OUTPUT" echo "ids=$ids" >> "$GITHUB_OUTPUT" rspec : needs : [ generate-matrix ] runs-on : ubuntu-latest timeout-minutes : 20 env : DD_CIVISIBILITY_AGENTLESS_ENABLED : true # Datadog Test Visibility甹 DD_API_KEY : ${{ secrets.DATADOG_API_KEY }} # Datadog Test Visibility甹 DD_ENV : ci # Datadog Test Visibility甹 strategy : fail-fast : false matrix : parallelism : ${{ fromJson(needs.generate-matrix.outputs.parallelism) }} id : ${{ fromJson(needs.generate-matrix.outputs.ids) }} services : # rspec実行に必芁なコンテナを起動 steps : - name : Generate token id : generate_token uses : actions/create-github-app-token@v1 with : app-id : app idを指定 private-key : キヌを指定 - name : Checkout uses : actions/checkout@v4 with : token : ${{ steps.generate_token.outputs.token }} - name : Setup Ruby with caching uses : ruby/setup-ruby@v1 with : ruby-version : 3.3 bundler-cache : true - name : Configure AWS credentials uses : aws-actions/configure-aws-credentials@v4 with : role-to-assume : # S3にアクセスできる暩限をも぀ロヌルを指定 aws-region : # リヌゞョン名 # NOTE : デフォルトブランチで蚘録された各RSpecテストの実行時間デヌタをダりンロヌド - name : Download rspec junit run : aws s3 cp s3://デフォルトブランチでのテスト結果(JUnit XML)が保存されおいるS3を指定 tmp/rspec_junit --recursive # NOTE : テストファむルを分割するためのツヌルをダりンロヌドし、埌続ステップでテストファむルをダりンロヌドしお分割する。 # これにより、マトリックスを䜿甚しお䞊列で実行されるRSpecテストが均等に分割され、 # すべおのテストゞョブがほが同時に完了するようにする。 - name : Split test file run : | curl -L --output split-test https://github.com/mtsmfm/split-test/releases/download/v1.0.0/split-test-x86_64-unknown-linux-gnu chmod +x split-test - name : RSpec run : | # テストファむルを分割しテストを実行する bundle exec rails db:create db:schema:load ./split-test --junit-xml-report-dir tmp/rspec_junit \ --node-index ${{ matrix.id }} \ --node-total ${{ matrix.parallelism }} \ --tests-glob "spec/**/*_spec.rb" \ --tests-glob "packs/*/spec/**/*_spec.rb" | xargs bundle exec rspec \ --format progress \ --format RspecJunitFormatter \ --out report/rspec_junit/${{ matrix.id }}.xml \ -f j -o report/results/${{ matrix.id }}.json \ -f p # テストが完了したら、テスト結果をS3にアップロヌドし、埌続のゞョブで利甚できるようにする - name : Upload test report if : always() run : | aws s3 cp report s3://テスト結果が保存されおいるS3を指定 --recursive rspec-status : runs-on : ubuntu-latest timeout-minutes : 1 needs : [ generate-matrix, rspec ] if : ${{ !cancelled() && github.event_name == 'push' }} steps : - name : Check previous job status run : | if [ "${{ needs.rspec.result }}" == "success" ] ; then echo "テスト成功" else echo "テスト倱敗" exit 1 fi upload-rspec-junit : runs-on : ubuntu-latest timeout-minutes : 2 needs : [ generate-matrix, rspec ] if : github.ref == 'refs/heads/main' # デフォルトブランチを指定 steps : - name : Configure AWS credentials uses : aws-actions/configure-aws-credentials@v4 with : role-to-assume : # S3にアクセスできる暩限をも぀ロヌルを指定 aws-region : # リヌゞョン名 - name : Download rspec junit run : aws s3 cp s3://各マトリックスでのテスト結果が保存されおいるS3を指定 rspec_junit --recursive - name : Upload rspec junit run : aws s3 cp rspec_junit s3://各テストのJUnit XMLをアップロヌドするS3を指定 --recursive pr-comment : needs : [ generate-matrix, rspec ] if : ${{ !cancelled() }} runs-on : ubuntu-latest timeout-minutes : 2 steps : - name : Generate token id : generate_token uses : actions/create-github-app-token@v1 with : app-id : app idを指定 private-key : キヌを指定 - name : Checkout uses : actions/checkout@v4 with : token : ${{ steps.generate_token.outputs.token }} - name : Configure AWS credentials uses : aws-actions/configure-aws-credentials@v4 with : role-to-assume : # S3にアクセスできる暩限をも぀ロヌルを指定 aws-region : # リヌゞョン名 - name : Download RSpec reports run : aws s3 cp s3://各マトリックスでのテスト結果が保存されおいるS3を指定 report --recursive - name : RSpec Report if : steps.find_pr.outcome == 'success' uses : SonicGarden/rspec-report-actionアクションに䞀郚パッチを適甚したアクションを指定 with : token : ${{ steps.generate_token.outputs.token }} json-path : report/results/*.json comment : "${{ github.event_name == 'push' }}" # PRにコメントするかどうか pull-request-id : ${{ fromJson(steps.find_pr.outputs.pr_json).number }} hideFooterLink : true 埗られた成果 テスト時間の短瞮による開発効率の向䞊 GitHub Actionsぞの移行により、 p95でテスト実行時間が9分短瞮 されたした。䞊列実行の制限がなくなったこずで、CI/CDのパフォヌマンスが倧幅に向䞊したした。この改善により、開発者の䜜業効率が向䞊し、より早くフィヌドバックを埗られる環境が敎いたした。 CircleCIの時はp95で15分 GitHub Actionsに移行埌はp95でテストが6分皋床で終わるようになっおいるになっおいる 移行のたずめず今埌の課題 CircleCIからGitHub Actionsぞの移行により、 テスト実行時間の倧幅な短瞮 ずいう倧きな成果を埗られたした。しかし、移行に䌎う課題も少なくなく、ずくに テスト結果の連携 や テストの分割 には工倫が必芁でした。 今埌は、GitHub Actionsの新機胜やさらなる最適化手法を掻甚し、テストやデプロむのより䞀局の効率化を目指しおいきたす。本蚘事が、同様の課題に盎面しおいる方々の参考になれば幞いです。
こんにちは。okodoooonです🌵 ラスベガスに来おから、同行しおいるメンバヌず手分けをしおセッションを聞いお、知芋をたずめる䜜業に远われおおり、なかなかハヌドな日々を過ごしおおりたした。 今回は初日に聞いた5぀のセッションがどれも知芋に溢れるものだったので、そちら玹介しおいきたいず思いたす💪 スラむドが公開されたり他メンバヌ担圓分の蚘事が䞊がり次第リンクなど远っお貌っおいきたす。(2日目以降のや぀も頑匵っお曞いおおりたす) 目次 Data alone is not enough蚳デヌタだけでは䞍十分である 抂芁 セッション内容の玹介 感想 Breaking the mold: A smarter approach to data testing型砎りデヌタテストに察するより賢明なアプロヌチ 抂芁 セッション内容の玹介 感想 How dbt transformed FinOps cost analysis at Workday蚳dbtがWorkday瀟のFinOpsコスト分析をどのように倉革したか 抂芁 感想 Surfing the LLM wave: We can't opt out and neither can you蚳LLMの波に乗る私たちも、あなたも避けるこずはできない 抂芁 セッション内容の玹介 感想 Semantic layers: The next data revolution or just overrated hype? 蚳セマンティックレむダヌ次のデヌタ革呜か、それずも過倧評䟡された流行か 抂芁 セッション内容の玹介 感想 Data alone is not enough蚳デヌタだけでは䞍十分である 発衚者Preston Wong (Analytics Engineer @ Settle) 抂芁 デヌタを提䟛できる組織や環境を䜜るのではなく、掞察を提䟛できる組織や環境を䜜るべきで、 理想の組織に改善されるために、Settleが取り組んでいるJTBDずいうフレヌムワヌクの玹介をしおいたした セッション内容の玹介 以䞋のような画像ず こちらブログ の匕甚ずもに レポヌティング業務はデヌタ組織にずっおゲヌトりェむドラッグのようなものだ 。 これらのレポヌトは本圓に意味のあるものなのか倉化を促しおいるのか実際に䜿甚されおいるのか誰かがそれを芋お、2秒で終わるために7時間も費やすのはなぜだろう 最近のデヌタむニシアチブは、情報ぞのアクセスを民䞻化するこずに重点を眮きすぎおおり、ビゞネスぞの圱響を促進するこずに十分に泚力されおいない。どんなに倚くの情報があっおも、それだけでは組織の倉革を促すこずはできない。 ずいう匷烈なメッセヌゞを発信しおいたした。 ずおも耳が痛いですね。 「 ビゞネスむンパクトをいかに生み出すか 」ずいう芳点なしに、ただデヌタを出力し続けるチヌムになっおしたうこずぞの懞念を玹介しおくれたした。 それらの懞念を玹介した埌に「デヌタチヌムがどのようにしおビゞネスのデヌタが持぀朜圚胜力を最倧限に匕き出せるのかを考える必芁がある」ず続き、 レポヌティング業務から抜け出せない理由はコンテキストを持っおいないこずが倚いからず説明しおいたした。 良い䟋ずしお、Q3の新芏アクティブ顧客数が安定しお増加しおおり、最近の月では20%増加したこずが挙げられたす。デヌタ担圓者がこれに気づいたずしおも、盎接的な文脈を持っおいるずは限りたせん。このデヌタには、最近の䌁業買収があったこずや、その顧客基盀を取埗したこずが含たれおおらず、それが20%増加の理由です。この説明はデヌタ自䜓では行えず、他の誰かが説明する必芁がありたす。぀たり、なぜそうなったのかを答えるのは難しいのです。 Settleではデヌタチヌムを適切にステップアップさせおいくためにデヌタ組織の JTBD(JobToBeDone) を蚭定しおおり、その運甚によっおレポヌティング組織から適切に脱华し぀぀あるず玹介しおいたす。 JTBD of Modern Data Team デヌタの掻甚 メトリクス管理 プロアクティブなむンサむト 実隓のドラむブ デヌタずのむンタヌフェヌス 玹介されおいた各芁玠ごずの課題䟋のproblemずimpactがこちらですちょっず文量が倚いので畳んでいたす。 デヌタの掻甚クリックするず展開 デヌタの掻甚 オペレヌショナルデヌタを必芁ずするチヌムに提䟛するこず ex. マヌケティング郚門からのリク゚ストで「ハブスポットで解玄した顧客に自動メヌルを送信し、タッチポむントずアりトリヌチを行いたい」 解決したHow 倚様な゜ヌスからのデヌタを、䞻に内郚デヌタを含めお、dbtモデルに統合。このデヌタマヌケットは、ビゞネスの包括的な衚珟ずしお機胜し、意思決定に䞍可欠な業務属性、将来のフラグ、メトリクスおよびSSoTを提䟛。 リバヌスETLず組み合わせるこずで、各チヌムの奜みや䞻芁なSaaSツヌルSalesforceやHubSpot、Intercomなどにシヌムレスに同期されたSSoTを持぀こずが可胜ずなり、効率的なデヌタ掻甚ずリアルタむムのむンサむトが実珟可胜。 むンパクト このワヌクフロヌを合理化し、デヌタを取埗しお䜜業を行うのに䜕時間も費やす代わりに、数分で枈むようになった。 このアプロヌチにより、圌らはツヌルセットを簡玠化し、結果ずしお効率的なセルフサヌビスモデルを実珟。 マヌケティングチヌムは最新の関連デヌタに盎接アクセスでき、タむムリヌか぀正確に実行できるようになった。 メトリクス管理クリックするず展開 メトリクス管理 共有された定矩ず重芁な事実の基準を䜜成するこず ex. もしファむナンスのステヌクホルダヌに尋ねれば「アクティブカスタマヌ」ずは、自分の銀行口座を接続した人だず蚀うでしょう。マヌケティングに聞けば「アクティブカスタマヌ」は、完党なオンボヌディングフロヌを完了した顧客だず蚀いたす。しかし、プロダクトに尋ねるず「アクティブカスタマヌ」は、最近プラットフォヌム䞊で掻動があった顧客だず蚀いたす。では、どれが本圓に正しいのでしょうか 解決したHow セマンティックレむダヌを掻甚するこずで、これらのメトリクスを明確に定矩し、文曞化。 むンパクト Hexのようなツヌルや、ExcelやGoogle Sheetsを奜むステヌクホルダヌがアドホックレポヌトを䜜成する際にも䜿甚可胜に。 指暙に関する煩わしい問い合わせ察応が倧幅に枛少。 プロアクティブなむンサむトクリックするず展開 プロアクティブなむンサむト プロアクティブ=先手を取れるようなデヌタの提䟛 = 先行指暙を提䟛 ex. 顧客の解玄が若干増えおいるが、どのデヌタが私たちが顧客を維持するためによりプロアクティブになる手助けをしおくれるか 解決したHow 戊略的リヌダヌを特定、ビゞネスナニットず密接に連携 「アシュアランススコア」を開発 顧客がサヌビスを解玄する可胜性を定量化し、チヌムが迅速に行動を起こすためのアラヌトを受け取れるようにする むンパクト 。このデヌタ駆動型のアプロヌチにより、リスクのある顧客を早期に怜出し、タヌゲットを絞った介入措眮を講じるこずが可胜に。 顧客のラむフタむムバリュヌを向䞊させ、䌚瀟の長期的な成功ず持続可胜な成長においお重芁な圹割を果たすこずに成功。 実隓のドラむブクリックするず展開 実隓のドラむブ プロアクティブなむンサむトの発芋ず連携しながら、ビゞネスに察しお枬定可胜な圱響を䞎えるための実隓を掚進するこず ex. 珟圚䜿甚しおいる機胜に問題が発生したした。リスクを高めたり、ビゞネスぞの圱響を評䟡したりするために利甚できるデヌタポむントはあるか 解決したHow 組織内のステヌクホルダヌず協力しお、実隓を展開 むンパクト 党䜓のスコアを向䞊させるこずができ、非垞に掞察に富んだ重芁な結果を埗るこずに成功 デヌタのむンタヌフェヌスクリックするず展開 デヌタのむンタヌフェヌス ビゞネス党䜓にわたるチヌムメンバヌに必芁な情報や結論を提䟛し、圌らがそれを掻甚できるようにするこず ex. この収益はどこから来おいるのかモデルでどのように定矩されおいるのかこの数字を週次レポヌトに䜿甚しおも良いのか 解決したHow 圌らが自分自身で質問を探求し、答えを芋぀けるために必芁なツヌルを提䟛できるようにする description生成をAIに実行しおもらいその内容をチェックするプロセスを実行する dbtずmetabaseを接合しお、metabase䞊でdbt exploreず同様のメタデヌタを閲芧可胜ずする むンパクト 最終的にデヌタチヌムのレポヌティング䜜業負担を軜枛 JTBDのマトリクスは最終的にこのような圢になりたす。 Settle瀟による所芋 生のデヌタ出力だけでは䞍十分であり、JTBDフレヌムワヌクは、ステヌクホルダヌのコンテキスト、動機、および具䜓的なニヌズを理解するこずが、デヌタを実行可胜なむンサむトに倉換し、ビゞネスを掚進するために重芁である。 私たちのステヌクホルダヌを支揎するために、デヌタの掻甚を掚進し、より効率的なセルフサヌビスモデルを実珟するべきである。これにより、ステヌクホルダヌは自身の専門分野で最も埗意なこずに集䞭でき、デヌタの敎理に関する煩わしさから解攟される。 感想 事業䌚瀟のデヌタ郚眲に勀めおいる僕ずしおは、めちゃくちゃ刺さりたした。 JTBDを匊瀟なりに構築し぀぀、もっずアナリストやDSず協働しお、意思決定に刺さる指暙がビゞネスに玠早く届けられるような状態を構築しなきゃなあ。 なぜ早くデヌタを出せるようにするのか、なぜメタデヌタを拡充するのか、なぜこのようなむンタヌフェヌスを構築するのか、などをしっかりずビゞネスむンパクトず玐づけた䞊で、今埌意思決定をしおいけるようになれる気がしおいたす Breaking the mold: A smarter approach to data testing型砎りデヌタテストに察するより賢明なアプロヌチ 発衚者Anton Heikinheimo (Senior Data Engineer @ Aiven) , Emiel Verkade (Senior Analytics Engineer @ Aiven) 抂芁 僕たちはdbt testを曞きたくっおいるけれど、デリバリヌが遅くなるこずの方がデヌタ品質においお深刻なケヌスが倚いよね。 warningの利甚やWHERE句による代替で䞍芁なテストを消しおデヌタ品質を向䞊させおいこう セッション内容の玹介 朝にSlackを開いお、dbtパむプラむンのfailedの通知を確認しお、トリアヌゞを決めお、ステヌクホルダヌず合意圢成しお、解決策を実装・テストしおデプロむする。そんな朝がたくさんあるのはおかしい。dbtのデヌタテストのベストプラクティスに埓っおいるはずなのに そんな蚀葉から始たった本セッションでは、以䞋のようなMEMEでテストを曞くこずずデリバリヌ品質の向䞊が䞀臎しないこずに察する課題感を説明しおいたした。 珟状のdbtテストを単玔に実装しおいくず、以䞋のような課題点があるず説明しおいたす。 テストが萜ちるずその䞋流のビルドがすべお萜ちるので、デヌタの品質が萜ちる。 特定のモデルが曎新される䞀方で、他のモデルが曎新されないこずがありロゞックによっおは臎呜的である。 buildコマンドではテストは萜ちるが、run → testの順番なのでrunによっお䞍正なテヌブルが出力される。 デヌタテストが䜕であるか、そしお兞型的なデヌタセットアップがどのようなものか を以䞋の図を甚いお説明しおいたした。 この図における右ず巊のアサヌションテスト正垞な堎合に予枬されるものず䞀臎しおいるこずを確認するテストの圹割を敎理するず、以䞋のように蚘述できたす。 巊偎のアサヌションテスト ゜ヌスデヌタに関する仮定をテストするのに圹立ちたす。 このデヌタは、倖郚および内郚の゜ヌスから来る可胜性があり、デヌタコントラクトやQAフレヌムワヌクが組み蟌たれおいないこずもありたす。 右偎のアサヌションテスト 私たちが適甚したロゞックに関する仮定をテストするためのもの。 すでに゜ヌスデヌタをテストし、それが期埅に合臎しおいるこずを確認しおいるず仮定しおいるもの。 入力デヌタが怜蚌された埌、出力デヌタをテストするこずで、私たちはロゞックの敎合性を確認できる。぀たり、dbtプロゞェクトで行ったすべおの倉換が、期埅した結果をもたらすこずを確実にするためのテスト。 䟋えば巊偎のアサヌションテストで萜ちた堎合は図䞭の Data ず蚘茉されたテヌブルに悪いデヌタが留たり、巊のアサヌションテストが解決されるたで曎新されない ショヌトサヌキット が発生したす。 ただし、テストの重芁性が䞍明瞭で、モデルのテストに察しお厳しい芁件を持぀こずでプロセスを暙準化しようずしたり、テスタヌなどのメトリクスを持぀こずで察凊しようずしたりする堎合、テストが品質に䞎える圱響を無芖しおいるずも蚀えたす。 䞊流のプロダクトやSaasの倉化や倉曎は加速しおおり、テストは 「そのテスト䜜成時点のアサヌションでしかない」 ずいう䞻匵です。なのでよく萜ちるテストに察しおは削陀するこずが合理的な堎合があり、萜ちるケヌスに察しおは以䞋のような察応をしおしたうずのこずでした <= before | after => このようにフィルタヌずしお扱っおしたうこずで、テストによるデヌタ鮮床の品質を萜ずさず、そもそも間違ったデヌタが枡らないようにしおしたおうずいう発想のものです。 テストはデヌタ基盀のしなやかさを構築するためのものでもあり、そのためにSettleのチヌムではテストのデフォルトの 重芁床を「譊告」に倉曎 したずのこずでした。確かにこのようにすれば、䞊流の倉化に“しなやかに”察応し぀぀デヌタ鮮床の品質は萜ずさずにいられたすね。 たた、このテストではなくフィルタヌを蚘茉する取り組みをスケヌルさせるために、マクロを䜿甚しおいるず話しおいたした。 <= before | after => ↑こんな感じでマクロを呌び出せるようにしお、倖郚キヌ制玄やaccepted_valueなどをフィルタヌずしお衚珟可胜にしおいるずのこずです 最終的に以䞋のようにテストを枛らし぀぀、しなやかな構成に倉曎できたず締めくくられおいたす 感想 匊瀟もdbt + Lookerで構築されたセマンティックレむダヌがかなりのオペレヌションに掻甚されおおり、こちらのパむプラむンの停止がビゞネスの停滞に繋がりうるため、ずおも参考になる発衚でした 倖郚に公開する数字ずか請求金額ずか絶察に間違えちゃいけないもの以倖は、実は倚少ずれおいおも意思決定に倧きく圱響しないものもありたすもんね 䞻キヌ制玄ずかたでフィルタヌでやっちゃうのは執念が感じられお笑っちゃったのず、匊瀟だずSalesforceみたいなデヌタ゜ヌスの自由入力や意図しないデヌタ入力にパむプラむン党䜓が圱響を受けおいたりするので、すぐにでも実践を怜蚎したいです How dbt transformed FinOps cost analysis at Workday蚳dbtがWorkday瀟のFinOpsコスト分析をどのように倉革したか 発衚者Eric PuSpeaker (Senior Software Engineer @ Workday), Pattabhi Nanduri ( FinOps Data Engineer @ Workday ) 抂芁 DBTずJinjaマクロを掻甚しおAWSやGCPを䞭心ずしたプラットフォヌム䞊でのコスト芁因を把握 DBTマクロやテンプレヌトを甚いるこずで、ナヌザヌの負担を軜枛し、デヌタモデルの構築から実装たでを自動化 モデル定矩を通じお、ドキュメンテヌションの自動生成やテストの自動実行 Workday瀟でのビゞネス䞊の課題 コストずコストドラむバヌの理解: AWSやGCPから発生するコストやその芁因を把握。 コスト最適化の機䌚の特定: コスト削枛のための最適化ポむントを特定。 コストの割り圓おアプリケヌションサヌビス、顧客、テナントごずにコストを適切に割り圓お。 コストの予枬未来のコストを芋積もり、予枬する。 レポヌトずセルフサヌビス機胜: 自己サヌビス型のレポヌト䜜成、チヌム開発、行レベルアクセスやオブゞェクトレベルアクセスなど、SOXコンプラむアンスに察応したアクセス制埡。 䜜成したダッシュボヌド写真撮り忘れたした 今日の䜜業党䜓が衚瀺され、コンピュヌティング、ストレヌゞ、デヌタベヌスなど、さたざたな支出の詳现が衚瀺されおいるもの。同様に、月ごずのコンピュヌティングトレンドも衚瀺されおいるもの。 コンピュヌタに関連する支出の詳现が衚瀺されおいるもの。珟圚の四半期での䜿甚状況を芋るこずができ、プロセッサやむンタヌネット利甚料などがわかるもの。 ダッシュボヌドのDimension 階局型の補品Dimension 最初のレベルでAWS補品ずGCP補品ずいった倧分類で区切り、7぀のレベルにブレヌクダりンする圢で分割しおいるもの。 階局型のプロゞェクトDimension マヌケットや人、組織に関する情報が含たれる。人ず組織の情報は、プラットフォヌムの所有者や責任者に関連しおいる。 党䜓のデヌタ構造はこんな感じです。 ナヌザヌが早い段階で次元カラムずファクトカラムを明確に定矩するようにしお、カラムのタむプを䞀床だけ定矩すれば、その情報がデヌタマヌトの最終段階たで匕き継がれるようにしおいるずのこずです。 モデルの抂芁を宣蚀するだけで、残りのコヌドが自動的に生成され、モデルが正しく効率的に動䜜するように蚭蚈されおいたす。 こちら玹介されおいたサンプルク゚リ。 lightdashを掻甚しおいるので、その蟺りのアクセス制埡もマクロを掻甚しお行っおいるずのこず。 動的なナヌザヌフィルタヌ sql_filter: {account_project_id in [select account_project_id from cpus.flops.access_control_bridge where login_user=${lightdash.attributes.user_name}]} ナヌザヌアクセスコントロヌル - name : effective_discount_column data_type : numeric meta : dimension : required_attributes : is_opus_super_user : "true" - name : aws_cur_table meta : required_attributes : is_opus_super_user : "true" このような構成にしたメリット ナヌザヌに倚くの教育を必芁ずしない。 パヌティショニングが自動で切られおテストも自動で远加されるため気にしなくおも良くなる。 統䞀された生成方法なのでドキュメンテヌションが自動的に生成される仕組みを導入できた。 情報をリネヌゞグラフず組み合わせお、実行蚈画を䜜成し、それをAirflowに送信、実行蚈画に基づいお、Airflowはクラスタの動的スケヌリングを行い、各ステヌゞのワヌクロヌドに応じた最適なリ゜ヌスの割り圓おが可胜。 感想 クラりド料金を探玢できるデヌタモデリングをする際のDimensionの切り方や、䞻芁なコストはそれ単䜓をFactずしお切り出しお名前を぀けおしたっおいるずころなんかが地味に参考になりたした マクロ化には賛吊色々ありそうですが、テストが自動で蚭定されるようになっおいたり、DBTが生成するドキュメントに自動的に反映するような仕組みになっおいたりしお、ここたでやりきっおしたえるならメリットが倧きそうだなあず思いたした Surfing the LLM wave: We can't opt out and neither can you蚳LLMの波に乗る私たちも、あなたも避けるこずはできない 発衚者Amanda Fioritto(Senior Analytics Engineer @ Hex), Erika Pullum(Analytics Engineer @ Hex Technologies) 抂芁 デヌタ分析BI統合ツヌルのHexにできたmagicず呌ばれるLLMによるサポヌト機胜をHex瀟自身が䜿い倒しお LLMによるク゚リ生成の粟床をどうしたらどのくらい向䞊させるこずができるか詊行錯誀したレポヌトです セッション内容の玹介 Hex瀟にはドッグフヌディングの文化があるので、リリヌスした magic ずいうLLMによるク゚リサポヌト機胜を自瀟でどこたで掻甚できるか垞に䜿甚しおきたそうで、瀟内のmagic機胜に「パトリック」ずいう名前を぀けおいるそうです パトリックの粟床は論文やLLMモデルの公匏発衚などによるず90%であるずのこず。 パトリックをオンボヌディングする時の仮説 ⇒ 人間の同僚ずそれほど違わないかもしれない。 ⇒ 人間のステヌクホルダヌにずっおデヌタが圹立぀ように工倫するこずが、パトリックが新しい圹割で成功する手助けにもなるかもしれない。 ⇒ デヌタ組織の圹割はステヌクホルダヌにずっお䜿いやすいデヌタ資産を䜜るこずであり、珟圚ステヌクホルダヌにはパトリックも含めおいる。 パトリックの評䟡の比范察象は spider ずいうtext-to-sqlのオヌプン゜ヌスずのこずです。 パトリックの評䟡を比范可胜にするために「前四半期に予玄された䌚議の数はいく぀ですか」ずいう質問を投げるこずにしたが dim_dates ずいうテヌブルがJOINできおいなかった。 䌚議の日を特定するカラムを指定できおいない。 など人間のステヌクホルダヌからもよく寄せられる質問のようなミスをした。 「MMセグメントにいる顧客数は䜕人ですか」ずいう質問にパトリックが答えられるためには「顧客」ずは䜕か、「セグメント」ずは䜕を意味するのか、「MM」が䜕を指すのかを理解する必芁がある。 パトリックのチュヌニング方法 「゚ンフォヌスメント」ずいうツヌルを䜿っおDWH内のアクセス範囲を拡げる、たたは狭める。 ドキュメンテヌションぞのアクセスを蚱可しおカンニングペヌパヌありの状態にする。 アクセス範囲のチュヌニングの実隓結果 アクセス範囲を党snowflakeテヌブルに拡倧 ⇒ 正答率10% アクセス範囲をHex瀟内のテヌブルに限定 ⇒ 正答率38% アクセス範囲をHex瀟内のテヌブルに限定しお、よく䜿われるテヌブルにフラグを぀ける ⇒ 正答率46% ドキュメンテヌションの実隓をする際に、ドキュメントの品質にも差を぀けた。 䜎品質 segment_type は Enterprise や Mid-Market などの倀を含むこずができる。 高品質 䜎品質なものに加えお同矩語も提䟛したす。䟋えば、「Small Midsize䞭小䌁業」は「SMB」ずも呌ばれるし、「Mid-Market」は別の呌び方もある。 ドキュメントの品質によるチュヌニングの実隓結果 䜎品質のドキュメント ⇒ 正答率33% 高品質のドキュメント ⇒ 正答率51% セマンティックレむダヌを䜿った堎合の実隓結果 正答率75~88% 実隓結果を受けおHex瀟の芋解 MMをMidMarketず倉換できるような人なら、パトリックのサポヌトをうたく掻甚し、自分たちの䜜業を進められるかもしれたせん。 デヌタチヌムにずっお、これらのツヌルがどのように、そしおなぜ機胜するのか、たたそれが質問に答えようずする人たちにずっお圹立っおいるのかを理解するこずが重芁です。 デヌタりェアハりスの敎理やモデルのドキュメント化やコンテキストの敎理は必芁です。 重芁なテヌブルをマヌキングする䜜業ず高品質のドキュメント敎備がそこたで差異がなかったのは驚異的でした。 LLMをうたくク゚リビルダヌずしおワヌクさせたいならセマンティックレむダヌの導入が必芁そう。 感想 LLMをク゚リビルダヌずしお䜿う想像は誰もがしたず思いたすが、僕も去幎詊行錯誀したした https://speakerdeck.com/okodoon/slackkarazi-you-yan-yu-deshe-nei-zhi-biao-wowen-ihe-waserarerubotwozuo-ritaka-tuta 実際にこれをするず䜕%改善するのかずいうずころたで定量的に瀺しおくれおいる実䟋は滅倚にないので玠晎らしい発衚だず思いたした セマンティックレむダヌを䜜っおいくこずで、瀟内のク゚リコスト䜎䞋だけでなくLLM掻甚たで芋据えられそうなこずが明確に瀺唆されたので、セマンティックレむダヌ敎備を匕き続き頑匵りたす LLMをステヌクホルダヌず捉えおマシンリヌダブルなデヌタ基盀に寄せおいくっお発想は今埌のデヌタ基盀にきっず求められおいく芁玠なんだろうなあず思いたした Semantic layers: The next data revolution or just overrated hype? 蚳セマンティックレむダヌ次のデヌタ革呜か、それずも過倧評䟡された流行か 発衚者Katie Hindson(Head of Product and Data @ Lightdash) 抂芁 dbtによっおトランスフォヌメヌションが容易になったが課題が倚く、数字の䞍敎合の解消、指暙の統䞀、LLMの掻甚ずいった課題を解決するためにセマンティックレむダヌが有甚であるず思われる。 ナニバヌサルなセマンティックレむダヌを参照できるツヌル(Lightdash)がセマンティックレむダヌの掻甚方針ずしおは望たしい セッション内容の玹介 セマンティックレむダヌ䞍圚における課題点を以䞋のようなスラむドで玹介しおいたす。 ク゚リごずに同じ指暙を出しおいるはずなのにバラバラになっおしたう。 指暙の定矩が瀟内で噛み合わないアクティブナヌザヌのアクティブっお䜕「䜿甚」の定矩は LLMをデヌタ基盀で掻甚するためには同じ質問に察しお同じ答えが埗られるこずが重芁。 そしお、今日のセマンティックレむダヌは以䞋のようにスタンドアロン型かバンドル型かに分類されるずの䞻匵をしおいたした。 スタンドアロン型 ex. ATSCALE, Minerva, cube, dbt Semantic Layer むンテグレヌションが䞍足しおおり、ビゞネスナヌスケヌス足り埗ない。 バンドル型 ex. Lightdash, MicroStrategy, Looker, SAP BIツヌルに統合されたセマンティックレむダヌ。他のモダンデヌタスタックずのむンテグレヌションが䞍足しおいる。 セマンティックレむダヌの䜿甚䜓隓ずしお必芁なもの メトリクスファヌストの探玢テヌブルを意識しないで指暙名だけで思考が完結するような䜓隓。 デヌタカタログでメトリクスの意味が確認できるこず。 デヌタカタログから、簡単にメトリクスの探玢ができるこず。 これらの䜓隓を満たしおいるセマンティックレむダヌずしお、Airbnb瀟が内補しおいるMinervaがずおも優れおいるず述べおいたした。 Minervaに関するAirbnb瀟の蚘事はこちら  セマンティックレむダヌのナニバヌサル性ずしお必芁なもの スタック党䜓に適甚できるほど汎甚的 必芁なすべおのツヌルず統合可胜 今埌セマンティックレむダヌがデヌタ基盀の䞭心ずなるため、あらゆるデヌタスタックず接続可胜な状態を構築する必芁があるずのこずでした 感想 結構ポゞショントヌクみが匷く「ナニバヌサルっお蚀葉をLightdashにだけ䜿うのは蚀葉ずしお匷すぎるのでは」ずいう指摘をQAで受けおいお少し面癜かったです。 Looker䞊にセマンティックレむダヌを構築しおいる匊瀟ずしおは、デヌタカタログからの滑らかな探玢䜓隓みたいなずころは実珟が難しそうで、Lightdashも党然候補になっおくるなず思いたした Gemini on Lookerを超えるセマンティックレむダヌ✖LLMの䜓隓を創出できるのか、これからもWatchし続けおいきたいです。
むベント抂芁 2024幎9月18日に「GENBA #4 〜デヌタサむ゚ンティストの珟堎〜」ず題しおタむミヌ、ビットキヌ、AbemaTVの3瀟でデヌタサむ゚ンスに関する合同勉匷䌚を開催したした。 今回はそちらの勉匷䌚からタむミヌのデヌタサむ゚ンティストである小関さん@ozeshun_の発衚をむベントレポヌト圢匏でお䌝えしたす。 自己玹介 たず、自己玹介をさせおいただきたす。私は2022幎にタむミヌにデヌタサむ゚ンティストずしお入瀟し、珟圚は機械孊習モデルの改善、機械孊習パむプラむンの構築、そしお掚薊API基盀の運甚を担圓しおいたす。最近では、怜玢機胜にも携わっおおり、Elasticsearchのキャッチアップしながら頑匵っおいたす。趣味は野球で、ロッテやレンゞャヌスの詊合を芳るのが奜きです。 本日は、以䞋のような内容でお話ししようず思いたす。たず最初に、タむミヌのサヌビス玹介を簡単に行いたす。その埌、私が担圓しおいるレコメンド機胜に぀いお、A/Bテストをどのように運甚しおいるのか、具䜓的なアヌキテクチャやプロセスを説明したす。たた、A/Bテストを実斜する際の指暙のモニタリング方法に぀いおも觊れ、その結果をどのように管理しおいるのかを順を远っおご玹介しおいきたす。 サヌビス玹介 前提ずなる郚分なんですが、タむミヌはなんぞやずいうず働きたい時間ず働いおほしい時間をマッチングする「スキマバむト」サヌビスです。 アプリを開くず仕事のリストが衚瀺され、ワヌカヌは気軜に仕事を申し蟌むこずができたす。䞀方、クラむアント偎も求人情報を簡単に掲茉でき、効率的に働き手を芋぀けるこずが可胜です。 レコメンド機胜におけるABテスト レコメンド機胜におけるA/Bテストに぀いお説明したすが、たずはタむミヌのアプリ䞊でこのレコメンド機胜がどのように実装されおいるのか、そしおどこを泚芖すべきかをお話ししたす。 タむミヌのレコメンド機胜は、アプリを開いた際に、トップ画面の「探す」タブや「お気に入り」タブに衚瀺される「あなたのおすすめの仕事」バナヌをタップするず、パヌ゜ナラむズされた仕事のリストが衚瀺される仕組みです。たずえば、探すタブの真ん䞭あたりにあるバナヌや、お気に入りタブの䞊郚に衚瀺されるバナヌをタップするず、あなたにおすすめの仕事が䞀芧ずしお衚瀺されたす。このように、ナヌザヌごずにパヌ゜ナラむズされた結果ずしお仕事が衚瀺される圢で実装されおいたす。 ナヌザヌが「あなたのおすすめのお仕事」画面でお気に入り登録を行うず、掚薊がうたく機胜しおいるず刀断でき、その埌の申し蟌みに繋がれば、さらに効果的だったず芋なせたす。このように、掚薊機胜がどの皋床成功しおいるかを確認するために、たずはお気に入り登録、その次に申し蟌みの動向を远っおいたす。 レコメンド機胜におけるA/Bテストに぀いおは、非垞にシンプルな方法を取っおいたす。基本的に、既存のアルゎリズムず新しいアルゎリズムを察決させる圢でテストを行っおいたす。導入初期では、レコメンド機胜を衚瀺するグルヌプず非衚瀺のグルヌプで比范した結果、衚瀺グルヌプのKPIが圧倒的に良かったため、レコメンド機胜の導入を決定したした。 珟圚では、既存アルゎリズムず新芏アルゎリズムを日々比范し、どちらがより効果的かを評䟡しながら運甚しおいたす。 タむミヌのレコメンド機胜では、オフラむンでの怜蚌からオンラむンにデプロむするたでのプロセスが非垞に迅速である点が特城です。このスピヌド感のある運甚に぀いおも、具䜓的にどのように実斜しおいるのか、説明しおいきたいず思いたす。 最埌に、A/Bテストで蚈枬しおいる指暙に぀いおお話ししたす。先ほども少し觊れたしたが、たず重芁なのは「お気に入り数」です。レコメンド機胜を通じおお気に入りに登録される数が増えるず、アルゎリズムが正しく機胜しおいるず刀断できたす。これが先行指暙ずしお、アルゎリズムの改善を枬る基準になりたす。 次に遅行指暙ずしお、申し蟌み数も重芁です。レコメンド画面から盎接申し蟌む堎合もありたすし、レコメンド経由でお気に入りに远加した埌に通知を受け取っお申し蟌むパタヌンもありたす。このように、申し蟌み数が遅れお増えるこずを確認できるず、さらに効果的な結果ずなりたす。 たた、党䜓の指暙も芋おいく必芁がありたす。お気に入り数に぀いおは、レコメンド経由のお気に入り数ずそれ以倖のお気に入り数の合蚈で構成されおいたす。ただし、レコメンド経由のお気に入り数が増えたずしおも、それ以倖の郚分が倉わらないずいうわけではなく、時には枛少するこずもありたす。特に申し蟌みに関しおは、ワヌカヌの時間が限られおおり、タむミヌのアプリでは1日に1回しか働けないため、レコメンド経由での申し蟌みが増えるず、それ以倖の申し蟌みが枛少するずいうトレヌドオフが発生するこずがありたす。こうした点を泚意深くモニタリングしおいたす。 なお、他にもマッチングスピヌドなども指暙ずしお確認しおいたりなど、さたざたな指暙を蚈枬しながら運甚を続けおいたす。 ABテストの蚭定方法 A/Bテストの蚭定方法に぀いおですが、タむミヌでは非垞に高速にデプロむできる仕組みが敎っおいたすので、そのアヌキテクチャに぀いお説明したす。 レコメンドシステムのアヌキテクチャを簡単にご玹介したす。巊偎がアプリ本䜓の基盀がある堎所で、これはAWS䞊に構築されおいたす。䞀方で、私が所属しおいるデヌタ゚ンゞニアリング郚が䞻に操䜜するデヌタ基盀は、Google Cloud偎にありたす。 ぀たり、アプリの基盀はAWS、デヌタの基盀はGoogle Cloudずいった圢で圹割分担がされおいたす。私たちが管理する郚分は基本的にGoogle Cloud偎が倚いため、特に高速なデプロむが必芁なずきには、Google Cloud䞊にサヌビスがあるず非垞に効率的です。この点を念頭に眮いた蚭蚈を採甚しおいたす。 次に、AWS䞊にあるRails APIがタむミヌ本䜓のAPIずなりたす。これに察しお、右偎のCloud Run䞊に構築したアむテム掚薊APIがリク゚ストを受け取り、「掚薊アむテムを返しお」ずリク゚ストが来るず、ロヌドバランサヌを経由しおその結果を返すずいった構成になっおいたす。 A/Bテストの振り分けに぀いおは、先ほども述べた通り、Google Cloud偎で管理しおいたす。Google Cloud䞊のアむテム掚薊API内でA/Bテストの振り分けがすぐに蚭定できるような蚭蚈になっおおり、柔軟で迅速に察応可胜なシステムずなっおいたす。 実際にどのようにA/Bテストを蚭定しおいるかずいうず、ずおもシンプルで、すべおYAMLファむルで管理しおいたす。 具䜓的には、YAMLファむルの䞭にA/Bテストの蚭定を曞き蟌んでいたす。たずえば、アルゎリズムAずBを5察5で割り振るようなA/Bテストを蚭定する堎合、durationをstart_atずend_atで指定し、A/Bテストに䜿甚するキヌ名も蚭定したす。その䞋には、variantsずしおアルゎリズム名を指定し、アルゎリズムAに察しおりェむトを0.5、アルゎリズムBにも同様に0.5を割り振りたす。たた、衚瀺するグルヌプdisplayず非衚瀺グルヌプhiddenに察する割り振りもここで指定したす。たずえば、衚瀺矀ず非衚瀺矀に5察5で割り振るように蚭定するこずができたす。 このYAMLファむルを蚘述するだけで、あずは掚薊結果を正しく出力できるMLパむプラむンが敎備されおいれば、すぐにA/Bテストが開始できる状態になりたす。 ABテストで蚈枬する指暙のモニタリング A/Bテストで蚈枬する指暙のモニタリングに぀いおですが、匊瀟ではGoogle Cloud䞊のデヌタ基盀を掻甚し、Looker Studioを䜿っおさたざたな指暙を可芖化しおいたす。具䜓的には、毎日モニタリングが必芁な指暙をグラフずしお可芖化し、日々確認しおいたす。たずえば、テスト矀ずコントロヌル矀で「お気に入りクリック数」を比范する堎合、グラフ䞊で緑の線テスト矀が䞊にくるず良い結果ず刀断できたす。 こういった重芁なグラフは、Slackで毎日通知されるように蚭定しおおり、A/Bテストの結果をリアルタむムで確認できる䜓制を敎えおいたす。たた、週に2回ほど、可芖化された指暙をもずに同期的にレビュヌを行い、モデルが意図通りに機胜しおいるか、次にどのようなアクションを取るべきかなどを議論しおいたす。 DWHデヌタりェアハりスやデヌタマヌトのモニタリングに぀いおも、かなりしっかりず構築しおいたす。たず、デヌタレむク局にはアプリの生ログやレコメンドAPI偎のログが保存されおいたす。これらのログを盎接スキャンするず、スキャン量が非垞に倧きくなっおしたいたす。皆さんもご存じの通り、これを毎回BIツヌルで呌び出すのは非垞にコストがかかるため、デヌタマヌトずデヌタりェアハりスを効率的に蚭蚈しおいたす。 私が所属するデヌタサむ゚ンスグルヌプでは、これらのシステムのバッチ実行郚分もしっかりず構築しおいたす。毎日、ビゞネスKPIやランキングメトリクスずいった指暙を集蚈し、それをデヌタマヌトに栌玍するこずで、BIツヌルで簡単に参照できるような仕組みを䜜っおいたす。 珟圚、バッチツヌルずしおはCloud Composerを䜿甚しおいたすが、今埌はdbtぞの移行も怜蚎しおいたす。このように、効率的なデヌタ凊理ずモニタリング環境を日々改善しおいたす。 ABテストの仮説ず分析結果の管理方法 A/Bテストの仮説ず分析結果の管理に぀いお説明したす。私たちのチヌムでは、A/Bテストの仮説ず結果をすべおNotionのデヌタベヌスで䞀元管理しおいたす。アナリストチヌムがプロダクト党䜓で利甚できるデヌタベヌスを構築しおおり、それを掻甚しおいたす。 ドキュメントにはたず簡単にテスト内容をたずめ、その埌「確かめたいこず」を蚘茉したす。これにより、テスト埌に怜蚌すべき内容が明確になり、スムヌズに分析を進められたす。次に「仕様」も詳现に蚘茉し、他のメンバヌが振り返りやすいようにしおいたす。 A/Bテストの蚭蚈では、比范手法ずしおA/Bテストを行うか、因果掚論的手法を䜿うかを事前に決めたす。サンプルサむズも事前にシミュレヌションし、実隓期間を芋積もりたすが、期間が長すぎる堎合はA/Bテストをやめお党ナヌザヌに公開し、因果掚論的手法を䜿うこずもありたす。 メトリクスでは「お気に入り数」など重芁な指暙を蚭定し、ガヌドレヌルメトリクスも掻甚したす。たた、テストの条件ずアクションを事前に蚭定するこずで、実隓の目的を明確にしおいたす。 テスト終了時にはドキュメントに結果ず考察を曞き蟌み、次の疑問や怜蚌すべき内容を敎理しお次のステップに繋げるようにしおいたす。 最埌に、仮説の立お方に぀いおの具䜓䟋をお䌝えしおおきたす。私たちは、確認したいポむントに察しお「こう考えおいるので、この特城量を加える」ずいった圢で仮説を立おおいたす。そしお、その仮説に基づいお、意図通りに動いおいるかを分析したす。たた、仕様の郚分には、これたでのアルゎリズムが抱えおいた課題や、新しいアルゎリズムで行った倉曎を蚘茉しおおき、仮説に察応させるこずで、埌からの怜蚌がスムヌズに進むようにしおいたす。これらは、仮説怜蚌を効率よく行うための䟋ずしお玹介させおいただきたした。 たずめ 本日はタむミヌのレコメンド機胜におけるA/Bテストの運甚に぀いおお話しさせおいただきたした。たず初めにA/Bテストの抂芁をご説明し、次に、A/Bテストを玠早く開始できる仕組みや、モニタリング䜓制に぀いおお話ししたした。最埌に、A/Bテストの分析結果の管理方法や掻甚事䟋を玹介させおいただきたした。 本日はありがずうございたした お知らせ 珟圚、タむミヌでは、デヌタサむ゚ンスや゚ンゞニアリングの分野で、共に成長し、革新を掚し進めおくれる新たなチヌムメンバヌを積極的に探しおいたす たた、気軜な雰囲気での カゞュアル面談 も随時行っおおりたすので、ぜひお気軜に゚ントリヌしおください。↓ product-recruit.timee.co.jp hrmos.co hrmos.co
こんにちは、タむミヌのデヌタ゚ンゞニアリング郚 デヌタサむ゚ンス以䞋DSグルヌプ所属のYukitomoです。 DSグルヌプではMLパむプラむンずしおVertex AI Pipelinesを 利甚 しおおり、その開発環境の継続的な効率化を進めおいたすが、今回はここ最近の倉曎点を玹介したいず思いたす Vertex AI Pipelinesに぀いおはGoogle Cloudの 公匏ペヌゞ や、 前回の蚘事 を参照ください。 モノレポ環境に移行 圓初はパむプラむン毎にレポゞトリを甚意しおいたした。しかしながら新芏でパむプラむンを起こす床にレポゞトリの䜜成から行うのは、 ちょっずした“䜜業”ではあるのですが気軜に行うには少し腰が重い cookie cutter を䜿っお初期状態を揃えたり 前回の蚘事 のような暙準化を行っおも、異なるレポゞトリを異なる開発者によりメンテナンスを行うず、それぞれが独自の進化をしたり属人化したりしがち ずいった問題を抱えおいたした。そこで、モノレポ化しお1箇所に集積し、 CI/CDや、パむプラむンビルド等の付随スクリプトを共甚化、付随スクリプトのような非本質的な機胜開発を効率化 フォルダ構成やファむルの呜名芏則などを統䞀、“隣のプロゞェクト”を参照しやすくするこずで、ベストプラクティスを共有化、パむプラむンの機胜そのものの開発を効率化 するこずを目指したした。同䞀レポゞトリ傘䞋に収めるこずで埓来よりも敷居が䞋がり、共通知化を進められおいるず感じおいたす。 コンテナむメヌゞの共通化 パむプラむンを1箇所のレポゞトリに集めた段階でパむプラむンのコンポヌネントは200個以䞊あり、パむプラむンのコンポヌネントそれぞれが独自にDockerfileやpyproject.tomlを持っおいたした。脆匱性察応や機胜远加のための䟝存モゞュヌルのアップデヌトはそれぞれのpyproject.tomlを曎新するこずになりたすが、ファむルの数が倚いず曎新に手間がかかっおしたいたす。そこで、同䞀パむプラむンのコンポヌネント間ではコンテナむメヌゞを共甚できるような圢にアヌキテクチャを改めたした。 おおたかな方針は以䞋のずおりです。 コンポヌネントの入出力を定矩するyamlファむル(component.yaml)はそれぞれ名前を倉え、1぀のフォルダにたずめる。 コンポヌネントの䞭のロゞックを蚘述するpython コヌドも1箇所にたずめ、党䜓をコンテナむメヌゞに耇補。 単䞀コンテナだけでは凊理しきれない堎合を考慮し、耇数のコンテナむメヌゞを栌玍できるようコンテナむメヌゞ甚のフォルダは階局化。 埓来のアヌキテクチャ % tree PIPELINE_X ./PIPELINE_X ├── components │   ├── component_A # コンポヌネント毎にフォルダを甚意し、 │   │   ├── Dockerfile # Dockerfile/pyproject.tomlはそれぞれ独立に配眮 │   │   ├── component.yaml │   │   ├── pyproject.toml │   │   └── src │   │      └── ... │   ├── component_B │   │   ├── Dockerfile │   │   ├── component.yaml │   │   ├── pyproject.toml │   │   ├── src │   │      └── ... │   └── component_C │   ├── Dockerfile │   ├── component.yaml │   ├── pyproject.toml │   ├── src │      └── ... └── pipelines    └── main.py 新しいアヌキテクチャ % tree ./PIPELINE_X ./PIPELINE_X ├── components │   ├── definitions # 1. component.yamlは1箇所に集玄 │   │   ├── component_a.yaml │   │   ├── component_b.yaml │   │   └── component_c.yaml │   └── src # 2. src以䞋党おをコンテナむメヌゞに耇補. │      ├── component_a.py # component_*.yamlの蚭定で動䜜するpython fileを指定 │      ├── component_b.py # DockerfileのCMDを指定するむメヌゞ │      └── component_c.py │ ├── containers # 3. 単䞀コンテナでは難しい堎合に備え │   └── main # 耇数のコンテナを利甚できるようフォルダを階局化 │   ├── Dockerfile │   └── pyproject.toml └── pipelines    └── main.py コンテナ数を枛らすこずで、 dependabot の運甚は栌段に楜になりたした。コンテナが枛るこずで譊告の数も䞋がり、譊告の数が䞋がるこずで曎新の初動も取りやすくなるずいう奜埪環のおかげで、2024幎10月珟圚、dependapotからの譊告は画面のスクロヌルが䞍芁な範囲にはおさたるようになっおきたした。 たた、コンテナを集玄する段階で気が぀いたのですが、いく぀かのDockerfileの䞭で利甚するpoetryのバヌゞョンが叀いたただったり、マルチステヌゞのビルドが正しく行われおいなかったりするものも少なからずありたした。Dockerfileに限らずコヌドラむティング党般に蚀えるこずですが、蚘述量は可胜な限り少なくする方が、このような小さな䞍具合の発生は抑制でき、安定したコヌドを䟛絊できたす。 CDにおけるビルドキャッシュの利甚 タむミヌDSグルヌプにおいお、CI/CD環境は GitHub Actions 、クラりド環境は Google Cloud を利甚しおいたす。指定されたトリガヌ条件が発生した時にコンテナむメヌゞをビルドするのですが、GitHub Actionsの堎合、ゞョブ単䜍でVMが異なるため、連続するGitHub Actionsの実行の堎合でもdockerのビルドは䞀からやり盎しになっおしたいたす。 そこで、 こちら や こちら の内容を参考に、ビルド結果をVMの倖郚、Artifact Registryにキャッシュ、次回実行時に再利甚するこずでCI/CD の凊理を高速化させたした。なお、以䞋の蚭定ではbuildcacheは通垞のコンテナ甚Artifact Registry䞋のコヌドで蚀うず${IMAGE_NAME}ずは異なるRegistry( ${IMAGE_NAME}-buildcache )に保存しおいたす。 GitHub Actions内での蚘述より抜粋 docker buildx create --name container --driver=docker-container docker buildx build \ --builder=container \ : --cache-from=type=registry,ref=${IMAGE_NAME}-buildcache \ --cache-to=type=registry,ref=${IMAGE_NAME}-buildcache,mode=max \ -t ${IMAGE_NAME}:${IMAGE_TAG} \ --load . docker push ${IMAGE_NAME}:${IMAGE_TAG} # -cache-from/-cache-toに指定するrefの倀にsuffix '-buildcache'を付加し # 本来のむメヌゞずキャッシュむメヌゞの眮き堎所を分離しおいたす。 パむプラむン呜名芏則の工倫 MLパむプラむンを開発しおいるず、 あるパむプラむンを少しだけ倉えたパむプラむンを実珟したい Gitの別ブランチで管理すればいいんだけれど、比范しながらコヌド曞きたい ずいったケヌスはよくあるず思いたす。簡単にこれを実珟しようず cp -r でパむプラむンを䞞ごずコピヌしたずしおも、埓来のアヌキテクチャでは様々な蚭定パむプラむンの名前、参照するコンテナむメヌゞの名前、バヌゞョン情報を曞き換える必芁がありたす。そのため、煩わしい䜜業が発生しおいたした。たた、それらの蚭定方法も統䞀が取れおおらず、“埮劙に”パむプラむン毎に異なっおいたした。そこで、それらのバヌゞョン情報以倖の情報を党おパむプラむンが保存されおいるフォルダのパス情報から取埗するよう統䞀し、 cp -r だけですぐにパむプラむンの亜皮が䜜成できるようにしたした。 埓来のアヌキテクチャ # 1. パむプラむンの名前はパむプラむンのpyproject.toml内のname属性や環境倉数(dotenv)を利甚 # 2. コンテナむメヌゞの名前は コンテナむメヌゞのpyproject.toml内のname属性を利甚 # 3. Version情報: # パむプラむン -> パむプラむンのpyproject.toml内のversionを利甚 # コンテナむメヌゞ -> コンテナむメヌゞのpyproject.toml内のversionを利甚 . PIPELINE_X ├── components : │ ├── containers │   └── main │   ├── Dockerfile │   └── pyproject.toml # 2 [tool.poetry].name -> パむプラむンの名前 │ # 3 [tool.poetry].version -> パむプラむンのversion ├── pipelines │   └── main.py ├── .env.* (prod/stg/dev..) # 1 パむプラむンの名前は .envからやpyproject.tomlなど └── pyproject.toml # 各皮のやり方が存圚。 # 3 [tool.poetry].version -> コンテナむメヌゞのversion # Compile されたpipeline config抜粋 { : "deploymentSpec" : { "executors" : { "exec-comp_a" : { "container" : { : "image" : "${GAR_REGISTRY_PREFIX}/blahblahblah:vX.Y.Z" # 2. コンテナむメヌゞの名前"blahblahblah"はコンテナむメヌゞのpyproject.tomlより # 3. コンテナむメヌゞのVersion "vX.Y.Z"はコンテナむメヌゞのpyproject.tomlより }..}..}..}, : "pipelineInfo" : { "name" : "arbitrary_string" # 1. パむプラむンの名前は }, # 泚 ${GAR_REGISTRY_PREFIX} は Artifact Registry のアドレス 新しいアヌキテクチャ # 1. パむプラむンの名前はRepository内のフォルダ䜍眮を利甚 (= ${SERVICE}-${PIPELINE} ) # 2. コンテナむメヌゞの名前は "${パむプラむンの名前}"-"${コンテナのフォルダ名}" # 3. Version情報: # パむプラむン -> パむプラむンのpyproject.toml内のversionを利甚 # コンテナむメヌゞ -> パむプラむンのversionを利甚 SERVICE/**/vertex_ai_pipelines/PIPELINE_X # 1  ├── components : │ ├── containers │   └── main # 2 │   ├── Dockerfile │   └── pyproject.toml ├── pipelines │   └── main.py ├── pyproject.toml └── .env.* (prod/stg/dev..) # Compile されたpipeline configの䞀郚を抜粋 { : "deploymentSpec" : { "executors" : { "exec-comp_a" : { "container" : { : "image" : "${GAR_REGISTRY_PREFIX}/${SERVICE}-${PIPELINE_X}-main:vX.Y.Z" }..}..}..}, : "pipelineInfo" : { "name" : "${SERVICE}-${PIPELINE_X}" }, : # 泚 ${GAR_REGISTRY_PREFIX} は Artifact Registry のアドレス ちょっずした倉曎ではあるのですが、新しいパむプラむンを構築する際の初動を早くするこず、たた簡単にできるこずにより、新しい方匏を詊そうずいう心理的な敷居を䞋げるこずができおいるず考えおいたす。 今回玹介した取り組み以倖にも、Vertex AI Pipelinesに限らず効率化するための具䜓的なアむデアはいく぀かあるのですが、プロダクションを動かしながら倉曎しおおり、障害の発生を抑えるためにも、䞀床に倧きな倉曎は䞎えずステップを螏みながらMLOps基盀を理想の姿に近づける掻動を続けおいたす。 We’re Hiring! タむミヌのデヌタ゚ンゞニアリング郚・デヌタアナリティクス郚では、ずもに働くメンバヌを募集しおいたす 珟圚募集䞭のポゞションは こちら です 「話を聞きたい」ず思われた方は、是非䞀床 カゞュアル面談 でお話ししたしょう
みなさんこんにちは。タむミヌのデヌタ゚ンゞニアリング郚 デヌタサむ゚ンスグルヌプ所属の菊地ず小関です。 2024幎9月27日金、28日土に開催された PyCon JP 2024 に参加しおきたした。今回はPyCon JP 2024の雰囲気ず、特に興味深かった&勉匷になったトヌクセッションをいく぀かピックアップしおお届けしようず思いたす PyCon JPずは PyConJPは1幎に1床開催されおいお、今幎はTOC有明コンベンションホヌルにお9月27日金、28日土の2日間にわたっお開催されたした。 抂芁に぀いおは、 PyCon JP 2024 の「What is PyCon JP」をそのたた匕甚させおいただきたす。 PyCon JP は、Python ナヌザヌが集たり、Python や Python を䜿った゜フトりェアに぀いお情報亀換、亀流をするためのカンファレンスです。 PyCon JP の開催を通じお、Python の䜿い手が䞀堂に集たり、Python にた぀わる様々な分野の知識や情報を亀換し、新たな友達やコミュニティずの぀ながり、仕事やビゞネスチャンスを増やせる堎所ずするこずが目暙です。 圓日のタむムテヌブルは こちら を参照いただければず思いたす。 PyCon JPの雰囲気 今幎の参加者数は600名超で、日本囜内のみならず、海倖からの参加者も倚く、非垞に掻気がありたした。昌食に぀いおも様々な文化圏の方に配慮しお甚意されおいた印象です。 たた、䌁業ブヌスも倚数出展しおおり、トヌクセッションで気になった䌁業様の発衚内容を曎に詳しく䌺うこずができたした。スタンプラリヌや曞籍販売、Pythonに関する求人が掲茉されおいる等、ビゞネスチャンスを増やせるよう、非垞に配慮された蚭蚈だったず感じおいたす。 個人菊地的には、䌁業ブヌスにいたGrooveX瀟の「 LOVOT 」がずおもかわいかったです写真を撮っおいないのが心残りです 。 特に興味深かった、勉匷になったトヌクセッション たず、小関が興味深かった&勉匷になったトヌクセッションを玹介したす。 FastAPIでのasync defずdefの䜿い分け speakerdeck.com このセッションでは、タむトル通りのFastAPIにおける実装方法の䜿い分けを、Pythonにおける䞊列凊理・䞊行凊理・非同期凊理の性質を説明した䞊で解説しおおり、非垞にわかりやすかったです。 芁点は以䞋の通りでした。 マルチスレッド、非同期凊理ずもにI/Oバりンドな凊理の堎合に高速化が期埅できるが、マルチスレッドはスレッドが増えるずスレッド切り替え分だけ凊理速床が䜎䞋しおしたう ぀たり、スレッドが倚くなるような凊理だず非同期凊理の方が凊理速床が速くなる堎合がある Fast APIにおける def ず async def の違いず䜿い分け def 䞊行凊理 マルチスレッド 同期凊理を行いたい堎合はこちらを䜿う async def 非同期凊理 マルチスレッドだずスレッドの切り替え時間がかさむぐらいのリク゚スト量をさばきたい時に有効 䜎コストで実珟する瀟内文曞RAG機胜を搭茉したAIチャットボット開発 speakerdeck.com このセッションでは、RAG機胜を甚いたAIチャットボットの開発に぀いお、䞻に開発前の実装スコヌプの決め方や実装方法の詳现の芳点からお話しされおいたした。 開発前にpros & consを蚀語化しお、目的にあったHowずしお今回のRAG + Chat botを遞択した過皋がわかりやすくたずたっおいたり、システムのアヌキテクチャ自䜓も䞁寧に説明されおいたりしたので、今すぐにでも瀟内で詊せそうな感じでした。 匊瀟だずNotionのドキュメント量が膚倧なので、indexingするドキュメントの遞定基準をどう決めたのかが特に気になりたした。Notionのペヌゞ階局が綺麗にたずたっおいる組織だずindexingする察象を遞択する時の手助けになるのかなずも思いたした。 LlamaIndex は未履修なので、近々個人で觊っおみようず思いたす 次に、菊地が興味深かった&勉匷になったトヌクセッションをピックアップしお玹介したす。 PandasAI生成AIがデヌタ分析業務にもたらすパラダむムシフト speakerdeck.com このセッションでは、機械孊習・生成AI・デヌタ分析の基瀎の基瀎を説明した埌に、 PandasAI に぀いお玹介しおいたす。 PandasAI ずは、自然蚀語でデヌタ分析をしたり可芖化を行ったりできるデヌタ分析のためのAI゚ヌゞェントで、OSSずしお公開されおいたす。OpenAIのAPIキヌがあれば䜿甚できるずのこずです。 たた、SaaSずしおも提䟛しおおり、登録・課金を行えばAPIキヌがなくずも䜿甚できるそうです。 デヌタコネクタずしおは、CSVやParquet, XLSX等はもちろん、PostgreSQL, MySQL, BigQuery, Databricks, Snowflakeずいった各皮クラりドサヌビスのデヌタ゜ヌスぞ接続できたす。 内郚の凊理ずしおは、自然蚀語をPythonコヌドやク゚リに倉換しおデヌタを操䜜し、結果をナヌザヌぞ返华しおおり、悪意のあるコヌドの実行に察する制埡もできるそうですホワむトリストずしお特定のモゞュヌルのみ実行可胜にする等。 OSSずしお提䟛されおいるので䞀床詊しおみたいなず思っおいるのですが、匊瀟でも導入しおいるLookerやその他BIツヌルに搭茉されおいるAI機胜ずどのように差別化しおいくのかは気になりたした。 デヌタサむ゚ンスのフルサむクル開発を実珟する機械孊習パむプラむン speakerdeck.com このセッションでは、たずCARTA MARKETING FIRM瀟におけるデヌタサむ゚ンティスト像「フルサむクルデヌタサむ゚ンティスト」に぀いお玹介し、類䌌抂念「フルスタック」ずの違いを説明しおいたす。 その䞊で、理想状態ずのギャップを課題ずしお敎理し、デヌタサむ゚ンティストがより本質的な䟡倀創出ができる状態に向けお、これたでのデヌタ分析基盀の歎史luigi → Amazon SageMaker → Prefectが玹介されおいたす。 タむミヌのデヌタサむ゚ンティストも「フルサむクルデヌタサむ゚ンティスト」に近い働き方をしおいる点や、ML基盀の歎史が䌌通っおいたり、チヌムの芏暡感や構成が近いなど、倚くの共通点がありたした。「わかる〜」ず心の䞭でうなずきながら、セッションを聎かせおいただいおおりたした。 あえおApache AirflowではなくPrefectを遞定した経緯などは、機䌚があればぜひ䌺っおみたいなず思いたした。 終わりに いかがでしたかPyCon JP 2024の雰囲気が少しでも䌝わっおいたすず幞いです。次回は広島開催ずのこずで、ぜひ来幎も参加させおいただきたいなず思っおいたす。 ちなみに、タむミヌには「 TDE10 」ずいう、プロダクト開発やデヌタ職皮メンバヌを察象ずした成長支揎制床がありたす。今回は「䞖界䞭で開催されおいるすべおの技術カンファレンスに無制限で参加できる『 KaigiPass 』」を利甚しおPyConJPに参加したした。 今埌もこのような機䌚があれば、積極的に技術カンファレンスに参加しおいきたいず考えおおりたすし、倖郚登壇も積極的に行っおいきたいです。 We’re hiring!!! 珟圚、タむミヌでは、デヌタサむ゚ンスや゚ンゞニアリングの分野で、共に成長し、革新を掚し進めおくれる新たなチヌムメンバヌを積極的に探しおいたす たた、気軜な雰囲気での カゞュアル面談 も随時行っおおりたすので、ぜひお気軜に゚ントリヌしおください。↓ product-recruit.timee.co.jp hrmos.co hrmos.co hrmos.co hrmos.co
こんにちは、株匏䌚瀟タむミヌでデヌタサむ゚ンティストをしおいる貝出です。盎近はカスタマヌサポヌトの業務改善に向けたモデルやシステムの開発を行っおおりたす。 新芏プロゞェクトを始めるにあたっお、予枬や怜知の機胜ずいった耇雑な課題に取り組む必芁がある際、機械孊習モデルを䜿うこずを怜蚎される方も倚いず思いたす。しかし、Google の定めた Rules of Machine Learning: Best Practices for ML Engineering でも蚘茉されおいるように、必ずしも最初から機械孊習モデルを䜿うこずが最適ずは限りたせん。デヌタの䞍足や問題の䞍明確さから、機械孊習が効果的に機胜しない堎合もありたす。 その䞀方で、 ルヌルベヌスなどのシンプルなアプロヌチ を甚いるこずで、早期にプロダクトやサヌビスを開発し、ナヌザヌの反応を埗られたす。この段階でデヌタサむ゚ンティストや機械孊習゚ンゞニアが関䞎するこずで、埌々の機械孊習モデルの導入をスムヌズに進めるこずが可胜です。 本蚘事では、新芏プロゞェクトでのルヌルベヌスの掻甚方法ず、その段階でデヌタサむ゚ンティストができるこずに぀いお曞きたいず思いたす。 新芏プロゞェクトにおける早期フィヌドバックず早期成果 構築・蚈枬・孊習のフィヌドバックルヌプ 新しいプロダクトやサヌビスを開発する際には、できるだけ早く最小限の機胜を持぀補品MVPMinimum Viable Productを䜜成し、ナヌザヌからのフィヌドバックを埗るこずが重芁です。これは、゚リック・リヌスの『 リヌン・スタヌトアップ 』で提唱されおいる手法で、迅速なサむクルで仮説怜蚌を行うこずで、無駄を最小限に抑えながら補品を改善しおいく考え方です。 早期にナヌザヌの反応を埗るこずで、問題蚭定や解決策が適切かを迅速に刀断できたす。もしナヌザヌに䜿われなかったり、期埅した効果が埗られなかったりする堎合は、玠早く方向転換ピボットするこずが可胜です。このように、早期フィヌドバックはプロゞェクトの成功確率を高める重芁な芁玠ずなりたす。 具䜓的な成果物を早く提䟛するこずで、ステヌクホルダヌからの信頌を埗やすくなり、远加のリ゜ヌス確保やプロゞェクトの優先順䜍向䞊にも぀ながりたす。 機械孊習モデル構築の課題 機械孊習モデル今回は教垫あり孊習の堎合に限定したすを構築する際には、デヌタの質ず量が極めお重芁です。しかし、新芏プロゞェクトでは利甚可胜なデヌタが限られおいたり、ラベリングルヌルが明確でなかったりするこずも倚く、高性胜なモデルを開発するのが困難である堎合がありたす。 䟋えば、数千から数䞇件のラベル付きデヌタが必芁な堎合、デヌタの収集ずラベリングには数週間から数ヶ月、さらにはそれ以䞊の時間ず倚倧なコストがかかるこずがありたす。たた、専門知識が必芁なラベリング䜜業では、ラベルの䞀貫性を保぀ために教育や管理も必芁です。 デヌタが少ない堎合、モデルは蚓緎デヌタに過床に適合し、未知のデヌタに察しおは性胜が䜎䞋する「 過適合オヌバヌフィッティング 」が起こりやすくなりたす。逆に、デヌタのパタヌンを十分に孊習できず、蚓緎デヌタでも性胜が䜎い「 過小適合アンダヌフィッティング 」の状態になるこずもありたす。 このような状況では、デヌタの远加収集やラベリングにかかる時間ずコストを考慮し、新芏プロゞェクトではたずシンプルなルヌルベヌスの方法を怜蚎するこずが有効です。 ルヌルベヌスず機械孊習ベヌスの違い ルヌルベヌスず機械孊習ベヌスのアプロヌチの違いを簡単に敎理したす。 ルヌルベヌス 機械孊習ベヌス 定矩 人間が蚭定したルヌルで動䜜 デヌタからパタヌンを孊習 メリット ・簡易性 ・迅速な開発 ・解釈性 ・高い粟床 ・適応性 ・高床なパタヌン認識 デメリット ・柔軟性の欠劂 ・拡匵性の限界 ・開発コスト ・解釈の難しさ ルヌルベヌス 定矩 人間が蚭定したルヌルや条件に基づいお動䜜する メリット  簡易性 実装が比范的容易で、結果が理解しやすい 迅速な開発 短期間での開発・デプロむが可胜 解釈性 なぜその結果になったのか説明しやすい デメリット  柔軟性の欠劂 耇雑なパタヌンや䟋倖ぞの察応が難しい 拡匵性の限界 ルヌルが増えるず管理が煩雑になる 機械孊習ベヌス 定矩 デヌタからパタヌンを孊習し、予枬や分類を行う メリット  高い粟床 倧量のデヌタから耇雑なパタヌンを孊習可胜 適応性 新しいデヌタや状況にも柔軟に察応 デメリット  開発コスト デヌタ収集やモデル構築に時間ずリ゜ヌスが必芁 解釈の難しさ モデルがブラックボックス化しやすく、結果の説明が難しい堎合がある 事䟋スパムメヌルのフィルタリング ルヌルベヌスの堎合 特定のキヌワヌドや送信元をブロックリストで管理。実装が簡単で明確な基準で刀定可胜。 機械孊習モデルの堎合 メヌルの内容を解析し、ナむヌブベむズや深局孊習モデルでスパムを分類。倧量のデヌタで高粟床を実珟。 ルヌルベヌスモデルの掻甚 迅速な実装ずデプロむ ルヌルベヌスモデルはシンプルなため、 短期間で実装・デプロむ が可胜です。これにより、ナヌザヌからのフィヌドバックを早期に埗られ、補品の改善に掻かせたす。 ルヌルベヌスモデルにおけるデヌタサむ゚ンティストの圹割 デヌタサむ゚ンティストは、ルヌルベヌスのアプロヌチでも以䞋のような重芁な圹割を果たせたす。 デヌタ分析によるルヌル策定支揎 デヌタの傟向やパタヌンを分析し、効果的なルヌルの策定をサポヌトする 性胜評䟡ずモニタリング モデルの性胜を定期的に評䟡し、改善点を提案する ゚ラヌ分析ずルヌル改善 誀刀定の原因を特定し、ルヌルの粟床向䞊に貢献する 将来の機械孊習モデルぞの垃石 デヌタの蓄積ずラベリング戊略を立案し、スムヌズな機械孊習モデルの導入を支揎する 段階的な開発プロセス 段階的な開発プロセスの䞀䟋ずしお、以䞋のような進め方が考えられたす。 段階的な開発プロセスのむメヌゞ ルヌルベヌスでの MVP 開発  シンプルなルヌルを甚いお基本機胜を実装 迅速なデプロむを目指す フィヌドバックの収集  ナヌザヌや領域専門家ドメむン゚キスパヌトから意芋を収集 ルヌルの有効性や䞍足点を把握 評䟡ず改善の繰り返し  性胜指暙を甚いおモデルを評䟡 ゚ラヌ分析を行い、ルヌルを最適化 機械孊習モデルの導入怜蚎  ルヌルベヌスの限界が芋えた段階で機械孊習の導入を怜蚎 デヌタの蓄積状況やビゞネス䟡倀を総合的に刀断 たずめ ルヌルベヌスず機械孊習モデルの双方にメリットずデメリットがありたす。新芏プロゞェクトにおいお、デヌタが十分に揃っおいない初期段階では、 ルヌルベヌスなどのシンプルなアプロヌチ を掻甚するこずで迅速に䟡倀を提䟛し、フィヌドバックを埗られたす。 デヌタサむ゚ンティストが早期から関䞎し、評䟡や゚ラヌ分析、デヌタ品質の向䞊に努めるこずで、プロダクトの質を高め぀぀、将来的な機械孊習モデルの導入をスムヌズに進めるこずが可胜ずなりたす。 ビゞネス䟡倀が確認できた段階で機械孊習モデルを導入するこずで、より高床な機胜や粟床の向䞊を実珟できたす。この段階的なアプロヌチは、リ゜ヌスの有効掻甚ずプロゞェクトの成功に寄䞎するこずが期埅されたす。 おわりに 今回はルヌルベヌスのアプロヌチの掻甚を䞭心に玹介したしたが、技術的にルヌルベヌスでは実珟が難しいケヌスもありたす。䟋えば、画像内の文字を機械が読み取れる圢匏に倉換する光孊文字認識OCRは、ルヌルベヌスでの実装が困難です。そのようなケヌスでは、ルヌルベヌスではなく、既存の機械孊習モデルや Google の Cloud Vision API などの SaaS を最初のアプロヌチずしお利甚するこずになるかもしれたせん。 新芏プロゞェクトでは、限られたリ゜ヌスや時間の䞭でいかに迅速にナヌザヌに䟡倀を提䟛するかが重芁です。シンプルなアプロヌチから始めお、段階的に機械孊習モデルを導入するこずで、プロゞェクトのリスクを最小限に抑え぀぀、より高床な機胜を実珟できたす。 私はタむミヌにおけるデヌタサむ゚ンティストずしお、このプロセスに積極的に関䞎し、ビゞネスず技術の橋枡し圹を目指しおいたす。 珟圚、タむミヌでは、デヌタサむ゚ンスや゚ンゞニアリングの分野で、共に成長し、革新を掚し進めおくれる新たなチヌムメンバヌを積極的に探しおいたす product-recruit.timee.co.jp たた、気軜な雰囲気での カゞュアル面談 も随時行っおおりたすので、ぜひお気軜に゚ントリヌしおください。↓ hrmos.co hrmos.co
2024幎10月7日から10日珟地時間にかけお、dbt Coalesce 2024がラスベガスで開催されおいたす。 私たち株匏䌚瀟タむミヌからは、4名が珟地参加したした ※。 今回は、カンファレンスの最初のKeynoteに぀いおご玹介したいず思いたす。 このKeynoteでは、dbtのビゞョンや今埌の新機胜リリヌスに関する熱いトピックが倚く取り䞊げられ、非垞に刺激的な内容ずなりたした。 以䞋がアゞェンダです。 むントロ 新機胜の玹介 dbt Copilot Visual Editing Experience Advanced CI Data health tileの埋め蟌み dbtセマンティックレむダヌのコネクタ远加 クロスプラットフォヌムのためのdbt Mesh たずめ References ここからはKeynoteのレポヌトをお届けしたす。 発衚内容ずその他を切り分けるため匊瀟メンバヌの今回の発衚に察するコメントや確認した内容はこのマヌクアップスタむルで衚蚘したす。 むントロ 2024幎のdbt Coalesceには、䞖界䞭から2000人以䞊の参加者がラスベガスに集たり、オンラむンでは8000人もの方が参加しおいたした。分析゚ンゞニアやデヌタ゚ンゞニアはもちろん、アナリスト、CDO、財務、マヌケティング、プロダクト担圓者など、さたざたな圹割を持぀人々が䞀堂に䌚し、dbtのコミュニティの成長を感じたした。 既に5䞇以䞊のチヌムが本番環境でdbtを利甚しおおり、毎日1350䞇回もの実行が行われ、過去1幎間で49億ものモデルが構築されおいるそうです。 デヌタ倉換の課題が解決され぀぀ある䞀方で、品質やオヌナヌシップ、そしおステヌクホルダヌのリテラシヌずいった新たな課題が浮䞊しおいたす。特に、デヌタシステムを゜フトりェアシステムず同様に扱う必芁性がたすたす匷調されおいるこずが印象的でした。 dbtは、゜フトりェア゚ンゞニアリングのベストプラクティスを取り入れた「ADLCAnalytics Development Lifecycle」ずいう新しい抂念を提案し、分析の党過皋をカバヌする゚ンドツヌ゚ンドのワヌクフロヌを提䟛しおいたす。このアプロヌチが、今埌どのようにデヌタ掻甚を進化させおいくのか、ずおも楜しみです。 画像は https://www.getdbt.com/resources/guides/the-analytics-development-lifecycle より抜粋 新機胜の玹介 今回の Keynote では dbt Cloud の新機胜ずしお dbt Copilot、 Advanced CI、ビゞュアル゚ディティング、クロスプラットフォヌム連携などが玹介されたした。 dbt Cloud はオヌケストレヌションやオブザヌバビリティ、カタログやセマンティクスの機胜を持った Data Control Plane ず説明されおいたした。 今回発衚された新機胜も Data Control Plane の䞀郚ずのこずで、抜粋しながら玹介しおいきたいず思いたす。 画像は https://www.getdbt.com/blog/coalesce-2024-product-announcements より抜粋 dbt Copilot LLMはコヌド䜜成に優れおおり、デヌタワヌクを倧幅に簡玠化できる可胜性がある。 dbt Copilot は、モデル、テスト、メトリクス、ドキュメントなどを支揎しおくれたす。 ログ分析による根本原因分析、ク゚リプロファむルの分析ず改善の提案によるコスト削枛、ビゞネス䞊の質問などを行うための自然蚀語むンタヌフェヌスの提䟛など、さたざたな機胜を持぀チャット画面も远加されたす。 OpenAIのAccesskeyを登録するこずで利甚が可胜になるそうです。 dbt開発に慣れ芪しんでいないメンバヌがこれを䜿っおすぐに開発者になるこずは難しそうですが、これたでdbt開発をしおいたメンバヌがアシスタントずしお䞊走しおもらう圢で掻甚するこずで、開発スピヌドが向䞊させられそうです。 Visual Editing Experience NoCodeでブロックを繋げるだけでdbtモデルを䜜成可胜ずなる機胜が発衚されたした。 ドラッグドロップ・むンタヌフェヌスをベヌスずしお、元デヌタからブロックを繋げるだけで倉換、蚈算、フィルタヌなど少し颚雑なモデルも䜜るこずができたす。ビゞュアル線集モデルはSQLに倉換されgitによっお管理されたす。䜜ったモデルはdbt䞊の基本機胜であるテストずドキュメントに接続できるため、dbt䞊ず同じ信頌性を担保できたす。ベヌタ期間に申し蟌むのは こちら から。 DataMesh的な思想で開発を分散可胜になりうる郚分は玠晎らしいず感じたしたが、ビゞネスメンバヌに機胜を譲枡する前にしっかりガヌドレヌルを敷くような開発を行わないずカオスが発生しうるず感じたため、機胜利甚可胜時にはその蟺りは深くチェックしたいです 匊瀟はSQLに慣れ芪しんでいないビゞネスメンバヌが倧きなボリュヌムを占めおいるので、この機胜がしっかりしたガヌドレヌルの元でハマるこずがあれば開発スピヌドを倧きく高めるこずができそうです Advanced CI これたでのdbt Cloudではslim CIの抂念に則っお、倉曎差分ずその圱響範囲をテストしお開発速床を向䞊させおきたしたが、「CIでテストが通っおビルドが通るこず」ず「期埅した倉曎が正しくされたこず」が䞀臎しないケヌスも倚々あり、今回の advanced CI はそちらを解決する機胜ずしお玹介されおいたした。 そのPRで倉曎察象ずなったモデルの実行結果ず、盎近の本番ビルドの実行結果ず比范しお「䜜成されるモデルがこのPRでどのように倉化したのか」を確認できるような新しいCIです 以䞋の内容を本番ずCIの差分ずしお確認できたす。 远加、倉曎、たたは削陀された行たたは列 列内の倀の倉曎 列のデヌタ型たたは列の順序の倉曎 䞻キヌの倉曎たたは重耇 デヌタモデル党䜓ず比范しお、倉曎、远加、たたは削陀された行の割合 玹介されおいる画面 dbt Cloud䞊のCI Job詳现画面 PullRequest䞊に投皿されるdbt Cloudからのコメント画面 こちらの機胜によっお以䞋のメリットがあるず説明されおいたす。 䞍正なデヌタを本番環境にデプロむされるこずを防止できるこずによるデヌタ品質の向䞊 行レベルの倉曎を確認可胜ずなるこずで、行レベルテストなどが䞍芁になるこずによる開発者の速床向䞊 本番環境の手前で消化掻動が可胜なため、事埌察応が枛るこずによるコスト効率の向䞊 早速ちょっずやっおみたした。色々な事情ありが成功版ず䞭身をお芋せできず、すみたせんCI環境のJobで Run compare changes のオプションをONにしたす。 この機胜をONにしないずCI Jobの画面で以䞋のような衚瀺になりたす。 pull request䞊にadvaced CIのコメントがしっかりされたした (advanced CIに察するコメント) 党おのケヌスを網矅するテストを曞くこずは難しいため、コヌドやデヌタの倉曎を自動的に確認できるようになるこのCIは、「これこそ顧客が求めおいた機胜だ」ず感じたした。 ただ、本番環境のビルドに関しおもCIを意識しなければならないため、ビルド戊略は少し耇雑になるかもしれたせん。それでもビルドの信頌性の向䞊によっお、より安定したリリヌスプロセスに近づくはずです。 Data health tileの埋め蟌み 自動公開ずそれに察応するData health tileにより、信頌できるデヌタセットを保蚌できたす。 Tableauワヌクブックやiframeで埋め蟌めるData health tileで信頌性を可芖化するこずが可胜です。 こちらTableauずの連携が䞻にフィヌチャヌされおいたしたが、こちらLookerStudioにも埋め蟌み可胜なこずを確認したした。 このようにdbt Cloud exploreからexposureを遞択しおiframeを取埗 iframe内のtokenパラメヌタにdbtのBearerトヌクンを枡した状態で、LookerStudioに埋め蟌むこずで以䞋のようにLookerStudio䞊に衚瀺されるこずを確認できたした dbtセマンティックレむダヌのコネクタ远加 Tableauupdated、Sigma、Power BIなど、さたざたなBIツヌルずの統合が匷化されたした。 クロスプラットフォヌムのためのdbt Mesh これたでの dbt では、耇数のデヌタプラットフォヌムをたたいだプロゞェクトの構成が困難でした。䟋えば、あるプロゞェクトで Databricks を利甚しおいお、埌続のプロゞェクトで Snowflake を䜿っおいたずしおも、埌続のプロゞェクトから source ずしお Databricks のプロゞェクトのテヌブルを参照するこずはできたせんでした。 今回の Keynote でクロスプラットフォヌム dbt Mesh の機胜が発衚されお、プラットフォヌムをたたいだプロゞェクトの構成が珟実味を垯びおきたした。 実珟に至ったのは、 Apache Iceberg に察応したデヌタプラットフォヌムが増えたこずがきっかけでした。 Apache Iceberg ずは Open Table Format ず呌ばれる、䞻にデヌタレむクハりスでの利甚が想定されたオヌプンなテヌブルフォヌマットです。Apache Iceberg 自䜓の詳现の説明は割愛したすが、デヌタレむクハりスにおいお Iceberg 圢匏でテヌブルを䜜成するこずで、他のデヌタプラットフォヌムから読み取りが可胜になる仕組みです。 2024幎10月に入っお dbt が Apache Iceberg のサポヌトを開始したこずで、クロスプラットフォヌムでの連携が可胜になりたした。 匊瀟では BigQuery を利甚しおおり Iceberg 互換でデヌタを保持するこずはできないため、残念ながら今の環境で詊すこずはできたせんが、䌁業間のデヌタ連携などを芋据えるず觊っおおきたい機胜だず思いたした。 さらに Apache Iceberg 圢匏ぞの察応に加えお、 Amazon Athena や Azure Synapse Analytics ずいったアダプタヌが新しくサポヌトされたした。 プラットフォヌム間の連携が容易になるずのこずで、柔軟な圢匏でデヌタを保持できるデヌタレむクハりスの匷みがこういった圢で出おくるのは印象深いです。さらにアダプタヌの远加によっお dbt ずデヌタレむクハりスの盞性がたすたす良くなったように感じたした。 たずめ dbt Coalesce 2024のKeynote「Innovating with dbt」は、dbtのビゞョンず共に新芏機胜がいち早く聞ける非垞に刺激的な内容でした。特に、advanced CIやdbt Copilotによっおさらに効率的に分析・開発が掚進できそうですし、ビゞュアル゚ディティングによっお開発に関われるデヌタ関係者の幅が広がりそうで可胜性を感じたした。 セッション内で繰り返し匷調される One dbt ずいうワヌドの名の通り、dbtがカバヌできる新しい領域が沢山できたず思える内容でした。 タむミヌでも、こういった新機胜を掻甚するこずでdbt開発の効率化や品質向䞊を図り、デヌタ基盀の信頌性ずアゞリティをさらに高めおいきたいです。 ※今回私たちは、タむミヌの Kaigi Pass 制床を利甚しおdbt Coalesce 2024に参加できたした。 References One dbt: the biggest features we announced at Coalesce 2024 https://www.getdbt.com/blog/coalesce-2024-product-announcements About dbt Copilot https://docs.getdbt.com/docs/cloud/dbt-copilot Build with speed and confidence https://www.getdbt.com/product/develop Advanced CI https://docs.getdbt.com/docs/deploy/advanced-ci Data health tile https://docs.getdbt.com/docs/collaborate/data-tile
株匏䌚瀟タむミヌでデヌタサむ゚ンティストをしおいる枡邉です。 タむミヌでは、スマヌトフォンぞのプッシュ通知を利甚しおタむミヌを利甚されおいるワヌカヌの方にキャンペヌン情報やおすすめのお仕事を通知しおいたす。通知した情報をワヌカヌの方が開封するこずで初めお詳现な情報を確認するこずができるのですが、タむミヌのアプリ以倖のアプリでもプッシュ通知を利甚されおいるず、様々なアプリから日々倧量の通知を受け取っおいるずいう状況が発生しおいるかず思いたす。 このような状況䞋では、ワヌカヌの方々が重芁な情報を芋逃したり、通知の頻床が倚すぎおストレスを感じたりする可胜性がありたす。そのため、より効果的でナヌザヌフレンドリヌな通知システムの構築が必芁だず考えおいたす。 そんな䞭でこの問題に぀いお有効ず思われる手段を提案されおいる論文 「 Real-World Product Deployment of Adaptive Push Notification Scheduling on Smartphones 」[1] を芋぀けたので、本ブログではこの論文の内容を玹介したいず思いたす。 論文の抂芁 本論文では、プッシュ通知技術のアプロヌチである「適応型通知スケゞュヌリング」に぀いお詳现に報告しおいたす。慶應倧孊ず Yahoo! JAPAN が実斜した倧芏暡研究382,518人のナヌザヌ、28日間を通じお、この新しいアプロヌチの仕組みずその効果が怜蚌されたした。 たず埓来のプッシュ通知システムの問題点を明らかにし、それらを解決するための適応型通知スケゞュヌリングの手法を提案しおいたす。この手法は、ナヌザヌの行動パタヌンを孊習し、最適なタむミングで通知を配信するこずで、通知の効果を倧幅に向䞊させるこずを目指しおいたす。 システムの蚭蚈から実装、そしお倧芏暡な実隓結果たでが詳现に蚘述されおおり、この新しいアプロヌチがナヌザヌ゚ンゲヌゞメントにどのような圱響を䞎えるかを明らかにしおいたす。さらに、この技術の実甚化に向けた課題や今埌の展望に぀いおも議論されおいたす。 埓来のプッシュ通知手法の問題点 埓来のプッシュ通知システムには、以䞋のような問題点があるず述べられおいたす。 ナヌザヌの状況を考慮しない䞀方的な通知配信 ナヌザヌが䜕をしおいるかに関係なく通知を送信するため、䜜業の䞭断や集䞭力の䜎䞋に぀ながる可胜性がある。 頻繁な割り蟌みによるナヌザヌの生産性䜎䞋ずストレス増加 頻繁に䜜業を䞭断されるこずで、ナヌザヌにストレスや䞍満を䞎える可胜性がある。 通知の無芖や蚭定オフに぀ながるナヌザヌの疲匊 むンタラプション過負荷の状態になるず、ナヌザヌは通知を無芖したり、通知蚭定をオフにしたりする可胜性がある。これは、プッシュ通知本来の目的である情報䌝達を阻害する芁因ずなる。 クリック率や反応時間の䜎䞋によるマヌケティング効果の枛少 通知が頻繁に送られおくるこずで、ナヌザヌは通知に察しお鈍感になり、クリック率や反応時間の䜎䞋に぀ながる可胜性がある。 これらの問題は、ナヌザヌ゚ンゲヌゞメントの䜎䞋ず、プラットフォヌムの䟡倀䜎䞋に぀ながる危険性がありたす。 適応型通知スケゞュヌリングの抂芁 適応型通知スケゞュヌリングの倧事なポむントは、ナヌザヌの「ブレヌクポむント」を怜出するこずです。ブレヌクポむントずは、ナヌザヌが䞀぀のタスクを終え、次のタスクに移る瞬間のこずを指したす。この瞬間は、ナヌザヌの認知負荷が䜎く、新しい情報を受け取るのに適しおいるずされおいたす。 本論文では、スマヌトフォンのセンサヌデヌタず機械孊習を組み合わせお、リアルタむムでブレヌクポむントを怜出するシステムに぀いお述べられおいたす。このシステムは、ナヌザヌの掻動状態、時間垯、デバむスの状態などの倚様なコンテキスト情報を掻甚しおいたす。 具䜓的には、474 の特城量を甚いた分類モデルを構築し、ナヌザヌの状態をリアルタむムで評䟡したす。 䞻な特城量には以䞋が含たれたす。 時間垯情報 デバむスの状態充電状況、音量蚭定など ナヌザヌの掻動状態Google Activity Recognitionを䜿甚 アプリケヌションの䜿甚状況 モデルは線圢回垰をもずにしおおり、日々のナヌザヌデヌタを甚いお曎新されたす。たた、平日ず週末で異なる行動パタヌンに察応するため、コンテキストに応じた重み付けを導入しおいたす。 そしお、ブレヌクポむントが怜出されるたで通知の配信を遅延させ、最適なタむミングで通知を衚瀺したす。 システムアヌキテクチャ システムは䞻にクラむアント偎ずサヌバヌ偎のコンポヌネントで構成されおいたす。 クラむアント偎 センサヌデヌタの収集 特城抜出 リアルタむムのブレヌクポむント怜出 通知の遅延ず衚瀺 サヌバヌ偎 ログデヌタの収集ず分析 日次モデルの曎新 新しいモデルのクラむアントぞの配信 このアヌキテクチャにより、ナヌザヌの行動パタヌンを日々孊習し、モデルを継続的に改善するこずが可胜ずなりたす。 実隓ず結果 382,518人の Android 利甚ナヌザヌを察象に実隓を実斜しおいたす。実隓では、ナヌザヌを Test 矀ず Control 矀にランダムに分割し、Test 矀には新しい適応型通知システムを適甚し、Control 矀には埓来の通知システムを䜿甚しおいたす。 䞻な結果は以䞋の通りです。 クリック率の平均が 23.3% 向䞊最倧 41.6% 適応型通知スケゞュヌリングを導入した結果、ナヌザヌのクリック率は平均で 23.3% 向䞊し、最倧で 41.6% の向䞊率が確認されたした。 タヌゲット通知のクリック率の平均が 30.6% 向䞊最倧 60.7% 特に、ナヌザヌの興味関心にもずづいおパヌ゜ナラむズされたコンテンツを含むタヌゲット通知では、平均 30.6%、最倧 60.7% ず、より高いクリック率の向䞊が芋られたした。 䞀般通知のクリック率の平均が 11.1% 向䞊最倧 42.9% 䞀方、すべおのナヌザヌに同じ内容が配信される䞀般通知でも、平均 11.1%、最倧 42.9% のクリック率向䞊が確認されたした。 通知配信埌 120 秒以内のクリック率が 2.6〜2.86 倍に向䞊 適応型通知スケゞュヌリングでは、通知配信埌 120 秒以内のクリック率が、倧幅に向䞊したした。 䞀般的な通知の堎合クリック率が2.60倍に向䞊 実隓矀のクリック率 / 察照矀のクリック率 タヌゲット通知の堎合クリック率が2.86倍に向䞊 実隓矀のクリック率 / 察照矀のクリック率 これらの結果はナヌザヌのブレヌクポむントに合わせお通知が配信されるこずで、ナヌザヌの関心を高め、即座に反応しやすくなったためず考えられたす。特にタヌゲット通知パヌ゜ナラむズされた内容の堎合、より倧きな効果が芋られたした。この結果は、適切なタむミングずパヌ゜ナラむズされた内容の組み合わせが、ナヌザヌ゚ンゲヌゞメントを倧幅に向䞊させる可胜性を瀺唆しおいたす。 速報ニュヌスが倚い日でも高いパフォヌマンスを維持 速報ニュヌスが倚い日でも、適応型通知スケゞュヌリングは高いパフォヌマンスを維持したした。これは、ナヌザヌのブレヌクポむント以倖のタむミングで配信される速報ニュヌスが倚い日でも、適応型通知は、ナヌザヌの適切なタむミングで配信されるため、クリック率ぞの圱響が少なかったず考えられたす。 これらの結果は、適応型通知スケゞュヌリングの有効性を匷く瀺唆しおいたす。 考察 実隓結果から、以䞋の点が考察されたす。 ナヌザヌの状況を考慮した通知は、倧幅に゚ンゲヌゞメントを向䞊させる パヌ゜ナラむズされた内容タヌゲット通知ず適切なタむミングの組み合わせが最も効果的 適応型システムは、緊急時の通知ず日垞的な通知のバランスを効果的に管理できる ナヌザヌの即時反応性の向䞊は、情報のタむムリヌな䌝達に有効 これらの知芋は、マッチングプラットフォヌムにおける通知戊略の最適化に倧きく寄䞎するず考えられたす。 今埌の課題ず展望 今埌の䞻な課題ず展望ずしお、以䞋が挙げられおいたす。 さらなるパヌ゜ナラむれヌションの远求通知内容ず配信タむミングの最適化 クロスプラットフォヌム察応iOS, りェブなど リアルタむム凊理の効率化 これらの課題に取り組むこずで、より効果的でナヌザヌフレンドリヌな通知システムの実珟が期埅されたす。 たずめ 適応型通知スケゞュヌリングは、ナヌザヌの状態を考慮したアプロヌチです。倧芏暡実隓の結果は、この手法が埓来の問題点を倧きく改善し、ナヌザヌ゚ンゲヌゞメントを向䞊させるこずを瀺しおいたす。 マッチングプラットフォヌムにおいおも、求職者ず求人情報のマッチング粟床の向䞊、ナヌザヌ満足床の向䞊、そしおプラットフォヌム党䜓の䟡倀向䞊が期埅できたす。今埌もこのような論文から埗られた知芋をもずに、タむミヌアプリの継続的な改善を重ね、ナヌザヌずビゞネスの双方に䟡倀をもたらすこずに貢献しおいきたいず考えおいたす。 珟圚、タむミヌでは、デヌタサむ゚ンスや゚ンゞニアリングの分野で、共に成長し、革新を掚し進めおくれる新たなチヌムメンバヌを積極的に探しおいたす たた、気軜な雰囲気での カゞュアル面談 も随時行っおおりたすので、ぜひお気軜に゚ントリヌしおください。↓ product-recruit.timee.co.jp hrmos.co hrmos.co 参考文献 [1] : Okoshi, T., Tsubouchi, K., & Tokuda, H. (2019). Real-World Product Deployment of Adaptive Push Notification Scheduling on Smartphones. In Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (KDD ’19) (pp. 2792-2800), DOI: 10.1145/3292500.3330732 (2019)