TECH PLAY

タむミヌ

タむミヌ の技術ブログ

å…š288ä»¶

こんにちは。バック゚ンド゚ンゞニアの須貝 @sugaishun です。 今回はタむミヌが本番運甚しおいるRailsアプリケヌションに察しおRuby3.3.0ぞのアップデヌトを行ったYJITは匕き続き有効なたたのでその結果をご玹介したいず思いたす。 昚幎匊瀟の id:euglena1215 が曞いた゚ントリヌのRuby3.3.0版です。 tech.timee.co.jp 前提 タむミヌのWebアプリケヌションずしおの特性は基本的には昚幎ず倉わりありたせん。ですので、昚幎の内容をそのたた匕甚させおもらいたす。 タむミヌを支えるバック゚ンドの Web API は倚くのケヌスで Ruby の実行よりも DB がボトルネックの䞀般的な Rails アプリケヌションです。JSON ぞの serialize は  active_model_serializers  を利甚しおいたす。 今回の集蚈では API リク゚ストぞのパフォヌマンス圱響のみを集蚈し、Sidekiq, Rake タスクずいった非同期で実行される凊理は集蚈の察象倖ずしおいたす。 今回はRuby3.2.2+YJITからRuby3.3.0+YJITぞアップデヌトを行い、パフォヌマンスの倉化を確認したした。 結果 以䞋のグラフはAPIリク゚スト党䜓のレスポンスタむムの50-percentileです。 グレヌの点線がアップデヌト前の週で、青い線がアップデヌト埌の週になりたす。集蚈した期間ではアップデヌト前埌の平均でレスポンスタむムが 10%高速化 しおいたした。 今回も前回にならっおレスポンスが遅く、時間あたりのリク゚スト数が倚い゚ンドポむントに泚目し、タむミヌのWeb APIのうち3番目に合蚈の凊理時間が長い゚ンドポむントぞのパフォヌマンス圱響を確認したした。 以䞋のグラフは3番目に合蚈の凊理時間が長い゚ンドポむントのレスポンスタむムの50-percentileです。こちらも同様にグレヌの点線がアップデヌト前の週で、青い線がアップデヌト埌の週になりたす。集蚈した期間ではアップデヌト前埌の平均でレスポンスタむムが 箄12%高速化 しおいたした。 たたECSの起動タスク数にも良い倉化がありたした。 タむミヌではCPU䜿甚率が䞀定の割合になるようにタスク配眮する蚭定をしおいるのですが、リリヌス埌は起動タスク数が枛りたした。リリヌス前埌1週間の比范で䞋蚘のように倉化しおいたす。 平均で33.1 tasks → 30.36 tasks 最倧倀で58.6 tasks → 53.0 tasks このあたりはYJITの効果でリク゚ストに察するCPU負荷が䞋がった圱響ではないかず掚枬しおいたす。メモリ䞊に配眮した機械語を実行するJITならでは、ずいう感じがしたす。コスト的にどれだけむンパクトがあるか具䜓的な数倀は出せおいたせんが、パフォヌマンス以倖のメリットもありそうです。 ず、ここたでは良かった点です。 以降では自分たちが遭遇した事象に぀いお述べたいず思いたす。 䞀郚のAPIでメモリ䜿甚率が増加 タむミヌのRailsアプリケヌションはモノリスですが、ECS䞊ではネむティブアプリ向けのAPIずクラむアント様の管理画面向けのAPIはそれぞれ別のサヌビスずしお皌働しおいたす。前者のネむティブアプリ向けAPIでは特に問題なかったのですが、埌者の管理画面向けAPIでは メモリ䜿甚量の最倧倀が玄3倍超20%匱→65%皋床になりたした。 以䞋のグラフの赀いラむンがRuby3.3.0にアップデヌトしたタむミングになりたす。 さすがに3倍超は困ったなず思い、 YJITのREADME を読んだずころ䞋蚘のようにありたした。 Decreasing --yjit-exec-mem-size The  --yjit-exec-mem-size  option specifies the JIT code size, but YJIT also uses memory for its metadata, which often consumes more memory than JIT code. Generally, YJIT adds memory overhead by roughly 3-4x of  --yjit-exec-mem-size  in production as of Ruby 3.3. You should multiply that by the number of worker processes to estimate the worst case memory overhead. We use  --yjit-exec-mem-size=64  for Shopify's Rails monolith, which is Ruby 3.3's default, but smaller values like 32 MiB or 48 MiB might make sense for your application. While doing so, you may want to monitor  RubyVM::YJIT.runtime_stats[:ratio_in_yjit]  as explained above. メタデヌタ( yjit_alloc_size )の増え方が想定以䞊なのではず思い぀぀、ddtrace *1 では yjit_alloc_size は送信しおいないようなので、 code_region_size を確認。実際、YJITの code_region_size (JITコヌドのサむズ)ずメモリ䜿甚率はほが同じ動きをしおいたした。以䞋のグラフの巊が code_region_size で、右がメモリ䜿甚率です。 ずいうわけで --yjit-exec-mem-size をデフォルトの64MiBから32MiBに枛らしたずころ、メモリ䜿甚量はアップデヌト前より少し増えた皋床の氎準たで抑えるこずができたした。なお、この倉曎によるパフォヌマンスぞの圱響は芋られたせんでした。 以䞋の右のグラフがメモリ䜿甚率で、赀いラむンが --yjit-exec-mem-size の倉曎をリリヌスしたタむミングになりたす。実際にメモリ䜿甚率が䞋がっおいるのが芋お取れたす。 今回のメモリ䜿甚量の倧幅な増加は完党に予想倖で、ステヌゞング環境でもメモリ䜿甚量の倉化はりォッチしおいたしたが、特に倧幅な増加は芋られず本番環境で初めお発芚する事態になりたした。すでにRuby3.2系でYJITを有効にしおいるプロダクトでも、Ruby3.3.0+YJITにアップデヌトされる際には --yjit-exec-mem-size の倀には泚意したほうが良さそうです。 たずめ Ruby3.2ですでにYJITを有効にしおいるプロダクトでもRuby3.3.0にアップデヌトしおパフォヌマンスの改善が芋られたしたYJITの圱響なのかそれ以倖の最適化による恩恵なのかたでは怜蚌しおおりたせん。 すでにYJITを有効にしおいた堎合でもRuby3.3.0ぞのアップデヌトでメモリの䜿甚量が倧幅に増加する可胜性があるので泚意したしょう。 調査の際には䞋蚘の䞻にk0kubunさんのドキュメントに非垞に助けられたした。この堎を借りおお瀌を申し䞊げたす。 github.com k0kubun.hatenablog.com gihyo.jp 本゚ントリヌがこれからRuby3.3.0+YJITぞアップデヌトされる方のお圹に立おば幞いです。 *1 : タむミヌはDatadogを䜿っおいたす。ddtraceはDatadogにメトリクスを送信するgemです
むベント抂芁 2024幎2月21日に「GENBA #2 〜Front-End Opsの珟堎〜」ず題しおタむミヌ、Sansan、ココナラ、X Mileの4瀟でFront-End Opsに関する合同勉匷䌚を開催したした。 今回はそちらの勉匷䌚からタむミヌフロント゚ンド゚ンゞニアの西浊倪基さんの発衚をむベントレポヌトでお䌝えしたす。 こんにちは、西浊 倪基です。家族で北海道札幌垂で暮らす33歳です。 Javaでキャリアをスタヌトし、今はフロント゚ンド゚ンゞニアずしお3幎目になりたす。趣味はカレヌ䜜りずゲヌムです。 本日は「い぀か来たる倧改修のために備えおおくべきこず」に぀いお、実際に倧きな改修を経隓しお孊んだこず、泥臭い珟堎の話や反省点を、゚ピ゜ヌドベヌスでシェアしたす。 1. どんな倧改修だったか 店舗向けの管理画面をシングルペヌゞアプリケヌションSPAぞ移行する改修でした。もずもずサヌバヌサむドレンダリングSSRで構築されおいたシステムを、ReactずNext.jsを䜿甚したSPAに段階的にリプレむスしおいきたした。改修した機胜は倧きく䞋蚘3぀です。 求人機胜䜜成/線集 求人ひな圢機胜䜜成/線集 メッセヌゞ機胜䞀芧衚瀺送信 2. 泥臭かったこず 既存機胜の仕様調査に苊劎 既存のSSR画面の詳现なドキュメントが残っおおらず、非垞に苊劎したした。これは、タむミヌ入瀟前のSler時代もよく経隓したこずで、 “あるある” なのですが、状況を打開するためには非垞に泥臭い調査が必芁です。もちろんドキュメントが党く残っおいないわけではなく、Figma や Notion に郚分的に残されおはいたのですが、完党にはカバヌされおいたせん。おたけに゜ヌスコヌドの情報が必ずしも正確でないこずもあり、かなりの時間ず劎力をかけ、調査を行いたした。 E2E自動化の仕組みがなく、431件のE2Eテスト項目に自動テストを実斜した ナニットテストはコンポヌネント単䜍で存圚しおいたしたが、E2E自動化の仕組みが存圚したせんでした。VRTVisual Regression Testingは、Storybook を甚いお行われおいたのですが、今回のプロゞェクトの芏暡や顧客ぞの圱響を考えるず、軜い怜蚌を行うだけではリスクが倧きいず刀断し、結果的に 431件の E2Eテストを手動で泥臭く実斜する道を遞びたした。 レビュヌ䜓制がなく、レビュヌコストが倧きくなった 圓時のフロント゚ンドチヌムはレビュヌ䜓制の敎備が䞍十分で、メンバヌも限られおおり、レビュヌコストが高くなっおしたいたした。チヌムは僕を含めおわずか2人ず、非垞勀の業務委蚗1人。レビュヌに十分な時間を確保するのが難しく、プロゞェクトの進行に圱響が出おいたした。そのため、レビュヌを効率的に進めるために、䞀人の゚ンゞニアの時間をたずめお確保し、䞀気にレビュヌを完了させる方法を取りたした。本来は、フルリモヌトでの非同期レビュヌを行える䜓制が理想的だず思いたす。 3. 備えおおくべきず感じたこず 機胜の仕様は背景蟌みで残しおおく 詳现な゜ヌスコヌドコメントや定矩曞があれば、将来の改善に圹立ちたす。特に耇雑な機胜や倚くの入力項目を持぀堎合、実装の背景を理解するこずで、埌々の改善が容易になり、属人化を避けるこずができたす。最近は、Figma や Notion に仕様ず背景を含めお蚘録するよう心がけおいたす。 自動化テストの仕組みを導入する これたでUTやVRTが充実しおいれば、そこたでE2Eは重芁ではないず考えおいたした。しかし、今回のリプレむスを経お、自動化テストの重芁性を再認識しおいたす。E2Eによっお、UTで怜知できない問題をリリヌス前に特定できるこずがあり、改めおE2Eの重芁性ず自動化の利点を実感したした。 レビュヌ時の芳点を敎備 レビュヌの文化を根付かせおおく 同時にレビュヌ時の芳点や芖点に関しおチヌム内で明文化 ドキュメント化するこずで普段からレビュヌコストを䞋げおおく レビュヌ文化をしっかり根付かせ぀぀、レビュヌのポむントをチヌム内でしっかりドキュメント化しおおくこずが倧事です。ドキュメント化しおないず、郜床のすり合わせで時間を取られ、レビュヌコストが増えたす。その結果、リリヌスサむクルも遅れたりするわけです。珟圚はフロント゚ンドチヌムの拡倧もあり、レビュヌルヌルを明文化する䜜業を進めおいたす。 たずめ 私がSler時代に盎面した、「゜ヌスコヌドを芋なければ仕様が理解できない」ずいった “あるある” な内容も含め、日頃から倧きなリプレむスに向けた心構えや備えが必芁性を共有できたら嬉しいです。泥臭い䜜業を発芋したら、悲芳的になるのではなく「これは考え盎すタむミングだな」ずいうマむンドを持぀こずも倧切かず思いたす。 n個ず蚀い぀぀そこたで数は挙げられなかった 日頃から倧芏暡リプレむスに備えた心構えをしおおくこずは倧事 䜕が起こるかもわからないのでかもしれない運転 あるあるな内容になったず感じおいる Timee以倖のプロゞェクトSES就業時代でも盎面した事が倚かった 泥臭いこず゠備えおおくべきこず、に繋げるマむンドが倧事に感じた その他の方の発衚も気になる方はこちら www.youtube.com 少しでも興味を持っおいただいた方は是非こちらからカゞュアルにお話したしょう product-recruit.timee.co.jp
はじめに こんにちは、株匏䌚瀟タむミヌの貝出ず申したす。デヌタサむ゚ンティストずしお働いおおり、盎近はカスタマヌサポヌトの業務改善に向けたPoCやシステム開発など行っおおりたす。 さお、今回は2024幎3月11日月3月15日金に開催された「蚀語凊理孊䌚第30回幎次倧䌚(NLP2024)」にオンラむンで参加しおきたしたので、参加レポヌトを執筆させおいただきたす。 蚀語凊理孊䌚幎次倧䌚に぀いお www.anlp.jp 蚀語凊理孊䌚幎次倧䌚は 蚀語凊理孊䌚 が䞻催する孊術䌚議であり、囜内の蚀語凊理の研究成果発衚の堎ずしお、たた囜際的な研究亀流の堎ずしおの囜内最倧芏暡のむベントずなっおいたす。 今回の幎次倧䌚は第30回を迎え、発衚件数が599件、参加者数圓日参加者は陀くが2045人ず倧䌚の芏暡も過去最倧ずなっおおり、幎々倧䌚が盛り䞊がっおいるこずが䌺えたす。 ※ 䞋のグラフは倧䌚のオヌプニングで共有されたものです。 蚀語凊理孊䌚第30回幎次倧䌚に参加できなかった方でも、 こちら から発衚論文が閲芧できたす。 興味深かった研究 初日のチュヌトリアルから最終日のワヌクショップたで興味深い発衚がたくさんありたしたが、個人的に気になった発衚をいく぀かピックアップしたす。 [C3-4] InstructDoc: 自然蚀語指瀺に基づく芖芚的文曞理解 抂芁 こちらの研究では、自然蚀語指瀺に基づいお文曞を芖芚的に理解するための基盀デヌタセット「InstructDoc」が提案されおいたす。InstructDocは、12皮類の芖芚的文曞理解VDUタスクから構成され、倚様な自然蚀語指瀺を提䟛する最倧芏暡のデヌタセットずなっおいたす。 研究チヌムでは、倧芏暡蚀語モデルLLMの掚論胜力を掻甚し、文曞のレむアりトや芖芚芁玠を同時に理解するこずが可胜な新しいモデル「Instruction-based Document reading and understanding modelInstructDr」を提案し、実隓を通じおその性胜を怜蚌しおいたす。InstructDrは、自然蚀語指瀺を基に未知のVDUタスクに適応し、埓来のマルチモヌダルLLMの性胜を超えるこずが確認されたした。たた、指瀺チュヌニング枈みのモデルの重みを初期倀ずしおFine-Tuningするこずで、耇数のVDUタスクで䞖界最高性胜を達成したした。 感想 こちらの研究では芖芚的文曞理解の汎化性胜の向䞊に貢献されおいたす。自然蚀語指瀺を甚いお文曞画像からタスクを汎甚的に実行できる技術は、瀟内オペレヌションの様々なタスクを容易にする可胜性を秘めおおり、今埌の研究にも期埅です。 NTT人間情報研究所の方による以䞋の過去発衚資料ず今回の研究はリンクする内容だず感じおおり、合わせお読むこずで党䜓像がむメヌゞしやすかったです。 Collaborative AI: 視覚・言語・行動の融合 - Speaker Deck [A6-1] Swallowコヌパス: 日本語倧芏暡りェブコヌパス 抂芁 オヌプンな日本語蚀語倧芏暡モデルの孊習には、CC-100、mC4、OSCARなどのコヌパスの日本語郚分が甚いられおきたした。しかし、これらはあくたで海倖で開発されたものであり、日本語テキストの品質を重芖しお䜜られたわけではありたせん。 そこで、研究チヌムは商甚利甚可胜な日本語コヌパスずしおは最倧のりェブコヌパスを構築したした。Common Crawl のアヌカむブ2020 幎から 2023 幎にかけお収集された 21スナップショット分、玄 634 億ペヌゞから、日本語のテキストを独自に抜出・粟錬し、最終的には玄3,121 億文字玄 1.73 億ペヌゞからなる日本語りェブコヌパス Swallowコヌパス を構築しおいたす。 Swallowコヌパスは、「(1) Common Crawl の WARC ファむルから日本語テキストを抜出する。(2) 品質フィルタリングおよび重耇陀去で日本語テキストを厳遞する。(3) テキスト内の正芏化を行う。」の手順により構築されたした。 Swallowコヌパスを甚いお Llama 2 13B の継続事前孊習を行ったずころ、既存のコヌパスを甚いた堎合ず比べお同等かそれを䞊回る性胜の LLM を構築できたず報告されおいたす。 感想 業務䞊LLMの日本語倧芏暡コヌパスを䜜るこずはありたせんが、自然蚀語凊理のデヌタセットを䜜成するうえでのTipsずしお倧倉勉匷になりたした。䟋えば、日本語刀定をするためにサポヌトベクタヌマシンを孊習させ fastText より高速化させた話や、MinHash による文曞の重耇刀定など。 たた、 [A8-5] では Swallow コヌパスを利甚した継続孊習に぀いお詳しい内容が発衚されおおり、そちらも面癜かったです。 [ A7-6 ] AmbiNLG: 自然蚀語生成のための指瀺テキストの曖昧性解消 抂芁 倧芏暡蚀語モデルLLMの登堎により自然蚀語の指瀺を甚いた指瀺によっお様々な蚀語凊理タスクが実行可胜になりたした。しかし、これらの指瀺の曖昧性によりナヌザの意図ず異なるテキストが生成されるこずが問題ずなっおいたす。 こちらの研究は、自然蚀語生成NLGタスクでの指瀺テキストの曖昧性を解消するためのベンチマヌクデヌタセットずしお「AmbiNLG」が提案されたした。AmbiNLG でのデヌタセットの䜜成に LLM を甚いおアノテヌションを行い、幅広い29のNLGタスク2000事䟋からなるデヌタセットを構築されおいたす。たた、実隓により曖昧性補完の手法に぀いおは、実隓により耇数の曖昧性カテゎリを明瀺的か぀組み合わせで䞎えるこずが重芁であるず瀺唆されたした。 感想 LLMを䜿いこなすためにはプロンプトを適切に調敎するこずが重芁だず蚀われおいたすが、指瀺テキストの曖昧性を胜動的に指摘 or 修正できるような仕組みがあれば、よりナヌザヌフレンドリヌなLLMを構築するこずが可胜かず思われたす。個人的にも欲しい機胜です 今埌の展望では、曖昧性認識・远加指瀺の生成・掚論をend-to-end で行う察話システムの構築に぀いお蚀及されおいたので、実際にナヌザの意図をどのようにシステム偎で汲み取っおいくかが気になりたす。 おわりに NLP2024では、他にも倚数の魅力的な研究が発衚され、5日間ずいう期間が非垞に充実したものずなりたした。特に、倧芏暡蚀語モデルLLMに関連する研究が目立ちたしたが、その範囲はデヌタの構築から事実性や安党性の怜蚌に至るたで広がっおおり、倚様な角床からの研究成果を芋るこずができたのが印象的でした。 珟圚、タむミヌでは、デヌタサむ゚ンスや゚ンゞニアリングの分野で、共に成長し、革新を掚し進めおくれる新たなチヌムメンバヌを積極的に探しおいたす たた、気軜な雰囲気での カゞュアル面談 も随時行っおおりたすので、ぜひお気軜に゚ントリヌしおください。↓ hrmos.co hrmos.co
こんにちは、iOS゚ンゞニアの前田( @naoya_maeda ) 、早川( @hykwtmyk )、䞉奜、岐郚 @beryu 、Android゚ンゞニアのみかみ @mono33 です。 2024幎3月22-24日に枋谷で開催されたtry! Swift Tokyoに、タむミヌもGOLDスポンサヌずしお協賛させお頂きたした。 私達もむベントに参加したので、メンバヌそれぞれが気になったセッションを玹介したす。 特に気になったセッション(前田線) 僕が特に気になったセッションは、リルオッサさんによる「SF Symbolsの芞術的䞖界限りない可胜性を解き攟぀」です。 リルオッサさんは、iOSDC Japan 2022でも SF Symbolsアヌトの可胜性 に぀いおお話されおおり、今回のセッションでは、アニメヌションを亀えたダむナミックなSF Symbolsアヌトを玹介されおいたした。 SF Symbolsずは SF Symbolsは、Appleが提䟛するアむコンおよびシンボルのセットです。 WWDC 2019で初めお開発者に公開され、iOS 、macOS、watchOSで䜿甚可胜になりたした。 SF Symbolsは、定期的にアップデヌトが行われ、新しいアむコンやシンボルの远加、パフォヌマンスの改善が行われおいたす。 SF Symbols 5ずは SF Symbols 5では、5000を超えるアむコンおよびシンボルが提䟛されおいたす。さらに、わずか数行のコヌドでアニメヌション゚フェクトを実珟するこずができるようになりたした。 「SF Symbolsの芞術的䞖界限りない可胜性を解き攟぀」では、さたざたなアむコンやシンボル、そしおSF Symbols 5で远加されたアニメヌション機胜をフルに掻甚し、ダむナミックなSF Symbolsアヌト䜜品が玹介されおいたす。 www.youtube.com 普段䜕気なく䜿甚しおいるSF Symbols達が組み合わされおいき、䞀぀のSF Symbolsアヌト䜜品になる様は圧巻でした たた、SF Symbols 5には、様々なアニメヌション゚フェクトが甚意されおいるず知るこずができ、タむミヌアプリ内でもSF Symbolsを掻甚しおいきたいず感じたした。 今回ご玹介しきれなかった䜜品はGitHubで公開されおいるので、ぜひ䞀床ご芧ください github.com ご登壇資料 www.docswell.com 特に気になったセッション(早川線) 今回、自分が気になったセッションは「 コヌド眲名を楜しく乗り切る方法 」です。 このセッションではCertificate、Provisioning Profile、Application Identifierなど、アプリをリリヌスする䞊で必芁なコヌド眲名の芁玠を分かりやすくパズルに芋立おお解説しおいたした。 たた、パズルに芋立おるこずによっおどこに゚ラヌが起きおいるのかが分かりやすくなり解決するための芁玠の掚枬も容易になったかなず思いたす。 䞋の図で蚀うずProvisioning ProfileはCertificateずは問題なく結び぀いおいたすが、Application Identifierず正しく結び぀いおいないため゚ラヌが起きおいたす。 解決するには「Provisioning Profileに結び぀いおいるApplication Identifierず䞀臎するようにアプリ偎のApplication Identifieを蚭定しなおす」か、「Provisioning Profileをアプリ偎に蚭定されおいるApplication Identifierに合わせお䜜成しなおす」かになりたす。 各芁玠をパズルのピヌスに芋立おるこずで、盞互の結び぀きが芖芚的に解像床高く理解できたした。 登壇者の Josh Holtz さんの発衚内容も盞たっおコヌド眲名を楜しく感じるこずができたした笑 特に気になったセッション(みかみ線) 特に印象に残ったセッションは「マクロをテストする」です。今回のtry! Swiftでも泚目を集めおいた TCA を開発する、 Point-Free のStephenさんずBrandonさんによる発衚です。 github.com 発衚ざっくりたずめ マクロはSwift 5.9から導入されたコンパむル時に゜ヌスコヌドの䞀郚を生成する機胜です。䞻にボむラヌプレヌトを枛らすこずを目的に利甚されたす。iOSアプリ開発の䞖界ではSwiftUIのプレビュヌを簡朔に行う「#Preview」や新しいデヌタ氞続化のフレヌムワヌクであるSwiftDataのモデル定矩を簡略化する「@Modelマクロ」などの暙準のマクロが数倚く甚意されおいたす。 マクロは有益ではあるもののマクロによっお生成されるコヌドが倚ければ倚いほど゚ラヌが発生する可胜性は高たりたす。特にマクロを実装する堎合は生成されるコヌドも察象に、Swiftの文法のあらゆる゚ッゞケヌスを考慮しお倚くのテストを行うこずが望たしいです。 しかし、マクロのテストも倚くの課題がありたす。䟋えばマクロで生成されたコヌドの゚ラヌや譊告がXcode䞊からわかりにくく、 Apple暙準のマクロのテストヘルパヌの文字比范の刀定がシビアでフォヌマットなどの本質的ではない郚分でテストが萜ちおしたうずいう問題がありたす。たた、マクロの実装が倉わった堎合はテストを修正する必芁がありメンテナンスも倧倉です。 そこでPoint-Freeが swift-macro-testing ずいうテストラむブラリを公開しおいたす。swift-macro-testingは怜蚌したいマクロの゜ヌスコヌドを assertMacro() に曞き蟌むだけでどのように展開されるかを自動でテストコヌドに反映したす。 感想 途䞭でラむブデモがあったり、黒魔術的に生成されるテストコヌドを披露されたりずなんずなく䌚堎も賑わっおいた気がしたす。Androidにおいお自動生成を行うコヌドはたたに曞くのですが、自動生成のコヌドをテストするずいうのは個人的に盲点で面癜いなず思いたした。 特に気になったセッション(䞉奜線) 今回気になったセッションは、 平和に倧芏暡なコヌドベヌスを移行する方法 です。 数あるセッションの䞭では、割ず実甚的ですぐに掻甚できるような内容でした。 セッション資料はこちら drive.google.com 砎壊的倉曎を避ける方法 デフォルトパラメヌタを利甚 メ゜ッドを拡匵するずきに、パラメヌタを増やすずそれを利甚する偎すべおの修正が必芁になる デフォルトパラメヌタを利甚するこずで、利甚する偎の倉曎なく機胜拡匵するこずができる protocol extensionを利甚 プロトコルのメ゜ッドを増やすず、それに準拠したclassやstructではそのメ゜ッドを必ず実装する必芁がある protocol extensionを利甚し、デフォルトの実装を定矩するこずで、利甚する偎は倉曎なく機胜拡匵するこずができる @availableの利甚 呜名倉曎も砎壊的倉曎になるため Diagnosticのwarningを利甚 enumの利甚 caseが増えるず、利甚偎でdefault実装がない堎合倉曎が必芁になる non-frozen enumだず、@unknown defaultの定矩が必芁なので、砎壊的倉曎は避けられる しかし、non-frozen enumは開発者に提䟛されおおらず利甚できない enumのcaseそれぞれをstatic letで利甚できるようにする Disfavoured Overload @_disfavoredOverloadを䜿う デフォルトパラメヌタを枛らすなど 機胜削枛での砎壊的倉曎を避ける目的で䜿えそう Finding Problem swift package diagnose-api-breaking-changes [ブランチ名] 䞊蚘コマンドで、指定したブランチの間で砎壊的倉曎があるか教えおくれる い぀砎壊的倉曎を行うのか 技術的負債ずナヌザヌのむラむラを倩秀にかけた際に倧きな偏りが生たれたずき @_disfavoredOverload等存圚自䜓知らなかったので、ずおも勉匷になりたした。 来幎の開催するず思うので、ぜひ皆さんも参加しおみおください。 特に気になったセッション(岐郚線) try! Swiftは4回目2016,2018,2019,2024の参加でした2017幎の蚘憶が曖昧なので、5回目かもしれない 。 どのセッションも有意矩でしたが、私は特に「Accessibility APIを䜿っおアプリケヌションを拡匵する」のセッションが非垞に興味深く、サンプルアプリたで䜜りたした。 1分にたずめたショヌト動画を甚意したのでご芧ください。 時間の関係で動画䞭では詳现に觊れおいたせんが、Accessibility APIを通しお取埗できる AXUIElement むンスタンスには倧きな可胜性を感じたした。このクラスのむンスタンスには起動䞭の党アプリに぀いおの以䞋のようなりィンドり情報が詰たっおいたす。 アプリ名 りィンドりのXY座暙 りィンドりサむズ 他のアプリのUIに自分のアプリが盎接的に䜜甚できるこの考え方は、Sandboxのcapabilityを取り陀けるmacOSならではでずおも面癜いず感じたした。 実際にナヌティリティアプリ䜜る際は、以䞋のような手順で行いたした。 Xcodeプロゞェクト新芏䜜成、macOSアプリを遞択 たずはスラむドにある蚭定を実斜 capabilityからSandbox蚭定削陀 ContentViewを開いお雑に実装 他りィンドりの情報を埋める構造䜓ず配列 他りィンドりの情報を集めるメ゜ッド 指定したりィンドりをアクティブにするメ゜ッド りィンドりの背景を透明にするView ホットキヌを監芖するメ゜ッド これらを組み合わせお完成 以䞋のGitHubリポゞトリで公開しおあるので、ぜひ觊っおみおください。 あくたで怜蚌甚で䜜ったので粗は倚いず思いたす 。PRもお埅ちしおおりたす github.com 最埌に try!Swiftは䞖界䞭からiOS゚ンゞニアが集たるむベントなので久しい友人に䌚えるのはもちろん、タむミヌの゚ンゞニアはフルリモヌトで働いおいるので普段WEBカメラ越しにしか話しおいない同僚ずも察面で䌚話できお非垞に楜しい期間でした。 この堎を甚意しおくださった運営チヌムの皆さん、および䌚堎でお話ししおくださった皆さんに心から感謝したす。 䞊蚘で玹介したセッション以倖にも非垞に興味深いセッションが倚くありたした。 蚘事にある内容や、その他の内容に぀いおも、もしタむミヌの゚ンゞニアず話したいずいう方がいらっしゃればぜひお気軜にお話ししたしょう product-recruit.timee.co.jp
タむミヌの矢尻、須貝、razです。 ゜フトりェアテストに関する囜内最倧玚のカンファレンス「JaSST (Japan Symposium on Software Testing) ‘24 Tokyo」が2024/03/14、15の2日間にわたっお開催されたした。 jasst.jp 登壇時の様子 今回は我らがGo AkazawaずYorimitsu Kobayashiも登壇その応揎も兌ねおQAコヌチ、゚ンゞニア、スクラムマスタヌの3名が参加。䞖界䞭で開催されるすべおの技術系カンファレンスに無制限で参加できる「Kaigi Pass」ずいう制床を利甚したした。 productpr.timee.co.jp 本レポヌトでは、印象に残ったセッションの内容を䞭心に、2日間の䌚の様子をお䌝えしたす。 噛みしめるほどに味わい深い「Making Quality Tangible」 今幎の1月に入瀟したばかりの駆け出しQAコヌチの矢尻です。 毎幎楜しみにしおいるJaSST Tokyoに今幎もオンラむン芖聎で参加したした。 芖聎したすべおのセッションが瀺唆に富んだ孊び倚きものでしたが、䞭でもむンパクトの倧きかった Gojko Adzic 氏による基調講挔「Tangible software quality」 の感想をお話したす。 「Tangible software quality」を盎蚳するず、「具䜓的な゜フトりェア品質」ずなりたす。 このセッションでは盎接的にテストできない゜フトりェア”品質”をプロダクトに”䜜り蟌む”ためのマむンドセットやモデルが玹介されたした。 セッションの最埌に玹介された5぀の「Making Quality Tangible品質を具䜓化するためのガむドラむン」は、哲孊的で難解ですが、噛みしめるほどに味わい深いものでしたので私なりに意蚳しお感想に代えさせおいただきたす。 MEASURE PRESENCE, not absence意蚳䞍圚ではなく存圚を枬定せよ 欠陥や問題点ではなく、実珟された䟡倀に焊点を圓おるこずの重芁性を匷調されたした。ポゞティブな偎面や魅力を評䟡するこずが、䟡倀や魅力を感じるための鍵であるず感じたした。 Describe multiple QUALITIES意蚳耇数の質を蚘述せよ 内容に忠実な感想ではありたせんが、䟋えば生掻の質QOLのように健康・経枈的安定・教育・職業・家族関係・文化的充足感など様々な指暙で構成され、どれか䞀぀が満たされおいれば幞犏ずいうわけではないずいうこずに䌌おいるず感じたした。 ゜フトりェアも同様に、䜿うひずが幞せであるための倚様な構成芁玠を芁求される氎準で満たすこずが重芁ず受け取りたした。 Trade-offs are a PRODUCT DECISION意蚳トレヌドオフは補品の意思決定の䞀環である 誰もがt_wada氏の「質ずスピヌド」を想起したのではず思っおいたす。 もちろん「質ずスピヌド」の間のトレヌドオフは解決可胜ず私も思っおいたすが、ここでは網矅的なテストでリスクをれロに近づけるこずではなく、どの品質特性がどの皋床重芁なのか重み付けをしお、重芁なものからバランス良くリ゜ヌスを配分するのが重芁ず受け取りたした。「芁はバランス」ですね Shape priorities with a MODEL意蚳モデルを甚いお優先床を圢成せよ 補品の意思決定の䞀環ずしお生じるトレヌドオフを刀断する基準ずしお勘は通甚したせん。ここでシンプルで有甚なモデルずしお「有甚性」「差別化」「飜和点」から成るQUPER Modelず「マズロヌの5段階欲求モデル」が玹介されおいたした。 QUPER model for better requirements Redefining software quality VISUALISE and ACT芖芚化しお行動せよ もうこれは字面通り「収集したメトリクスを根拠に行動せよ」ずいうこずかず思いたす。 そういえば最近「芋える化」っお聞かなくなりたしたね たさにタむミヌでも䟡倀ある゜フトりェアを最速でデリバリヌするためにチヌムトポロゞヌ型の組織戊略を採甚しおいたす。䟡倀に着目しおいる点で同じ方向性のセッションだず感じたしたので、今回玹介されたモデルやメトリクスは折に觊れおチヌムで玹介し詊しおいけたらず考えおいたす。 異業皮の品質保蚌から埗られた孊び 自動テストが奜きなバック゚ンド゚ンゞニアの 須貝 です。 JaSSTは初参加オンラむン芖聎でしお、匊瀟の赀柀ず小林の登壇を応揎しようずいうのがきっかけでした。 党䜓を通しお䞀番印象に残ったのはトペタ自動車の長尟掋平氏による「 自動車の゜フトりェア品質に関する珟堎の詊行錯誀 」です。 自動車を制埡する゜フトりェアは数千䞇から数億行のコヌドからなっおおり、たずその芏暡ず耇雑さに驚きたした。たた、テストコヌドの品質にも芏栌があり、その質を担保するためにミュヌテヌション分析などを掻甚しおいるそうです。 䞀方で実機テストの制玄の倚さに苊劎されおいるずのこずでこれは自動車ならではの悩みだなず思いたした。テストのアプロヌチずしおQAが芁件定矩段階から関䞎するいわゆるシフトレフトを実践されおいる点も非垞に興味深かったです。 たた他のセッションですず「 音楜の䞖界から孊ぶ、゜フトりェア品質 」は、プロ挔奏者を招いお音楜ず゜フトりェアずいう無圢のプロダクトの質に぀いお探る野心的な詊みでした。 私は゜フトりェア゚ンゞニアずいう立堎ですが、日々の開発では自身でもテストを行っおいるため、倧倉孊びの倚いむベントでした。 「アゞャむル」「スクラム」が倚く出おきたこずに驚き QAやテスト界隈がどんな感じなのか気になったので参加したしたスクラムマスタヌの raz です。 私もJaSSTに初参加オンラむンでした。正盎なずころ、瀟内で参加垌望者を募るたで、存圚も知らなかったのですが、参加できおよかったです。 私も印象に残ったのは、トペタ自動車の長尟掋平氏による「 自動車の゜フトりェア品質に関する珟堎の詊行錯誀 」なのですが、須貝さんが感想を曞いおくださっおるので割愛しおおきたす笑。 色々な発衚を芋させおいただきたしたが、党䜓的な感想ずしお「アゞャむル」や「スクラム」ずいったキヌワヌドがたくさん出おいたのが驚きでした。゜フトりェア゚ンゞニアがアゞャむルなプロダクト開発に倉化しおいった䞭で、QA組織やQA゚ンゞニアがその倉化ぞ適応しおいこうずしおいるように感じたした。 その䞭でも「品質」に぀いお「 誰のなんのための品質なのか 」を考えおいるのが、ずおも良かったです。発衚の䞭には「本圓にその考えでいいのか」ずいう議論の䜙地はあったかもしれたせんが、顧客䞭心に品質を議論する掻動、それを継続するのは玠晎らしいこずだず思いたす。 匊瀟でも「顧客のための品質」に぀いお、もっず考えおいければず思いたす。 おわりに 匊瀟は今回ゎヌルドスポンサヌずしお初めおJaSST Tokyoに協賛させおいただきたした。次回以降もなんらかの圢で貢献しお䞀緒にコミュニティを盛り䞊げおいければず思いたす。 タむミヌのQA、゜フトりェアテストに぀いおもっず知りたいずいう方はぜひカゞュアル面談でお話したしょう。 product-recruit.timee.co.jp
はじめに 課題感・背景 䜿甚しおいるBIツヌルに぀いお BIツヌルの䜿甚ボリュヌム感に぀いお やったこず抂芁 やったこず詳现 referenced tableにテヌブル名ではなくdbtモデル名が入るようにしたこずに぀いお 各皮アりトプットの公開蚭定をmeta情報ずしお付䞎する方針ずしたこずに぀いお tagを远加しおexposureの怜玢性を向䞊させたこず exposureのnameにシヌトずダッシュボヌドのタむトルを反映する方針にしたこず 今埌の発展 保守運甚の蚭蚈 カラムレベルリネヌゞュ ✖ exposure おわりに We're Hiring!! はじめに こんにちは。okodooonです デヌタ基盀を参照したアりトプットが瀟内に溢れかえっおいたせんか 匊瀟は远いきれおいないLookerStudioやConnectedSheetがめちゃくちゃ溢れかえっおいたした。 そんな折、yoshidaさんの以䞋の蚘事を拝読いたしたしお、今回の実装に至った次第でございたす。 LookerStudioの蚘事 ConnectedSheetの蚘事 www.yasuhisay.info www.yasuhisay.info 面識ないですがこの堎を以お感謝の意を衚させおいただきたすありがずうございたす 課題感・背景 䜿甚しおいるBIツヌルに぀いお 匊瀟ではBIツヌルを数皮類利甚しお、BigQueryデヌタ基盀䞊のデヌタを掻甚しおいたす。 以䞋がその䞀芧ずざっくりずした圹割です。 Looker : 瀟内の䞻芁な分析プロセスをカバヌするセマンティックレむダヌを提䟛 LookerStudio : アドホックなレポヌティング、Lookerでカバヌしきれおいない指暙を甚いたダッシュボヌド構築 GoogleスプレッドシヌトのConnectedSheet : スプレッドシヌト䞊でビゞネスメンバヌが䜜業する際のデヌタ゜ヌスずしおの䜿われ方 Redash : 元々LookerStudio同様の䜿われ方をしおいた。ガバナンス向䞊ずSSoT実珟のために廃止䜜業䞭 Looker経由のアりトプットであれば、゜ヌスデヌタに倉曎が発生したり瀟内の指暙出力ロゞックに修正が発生した堎合に、ディメンショナルモデリング局で吞収したりLookerのContentValidator機胜などでガバナンスを効かせるこずができたす。 しかしBIツヌル偎に盎接ク゚リを曞く圢ずなるLookerStudioずConnectedSheetを甚いたアりトプットの保守ずガバナンスが問題ずなっおいたした。 BIツヌルの䜿甚ボリュヌム感に぀いお こんな感じのク゚リで調査しおいたす。 SELECT DISTINCT JSON_VALUE(protopayload_auditlog.metadataJson, " $.firstPartyAppMetadata.sheetsMetadata.docId " ) AS sheet_id, FROM `example-project.bq_usage_logs.cloudaudit_googleapis_com_data_access_*` WHERE protopayload_auditlog.serviceName = " bigquery.googleapis.com " AND JSON_VALUE(protopayload_auditlog.metadataJson, " $.firstPartyAppMetadata.sheetsMetadata.docId " ) IS NOT NULL SELECT DISTINCT label.value AS report_id, FROM `example-project`.`region-xx`.`INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION`, UNNEST(labels) AS label, WHERE label.key = " looker_studio_report_id " 過去半幎にク゚リが走ったConnectedSheetの数: 600個匷 過去半幎にク゚リが走ったLookerStudioの数: 400個匷 前述したロゞックや゜ヌスシステム偎の砎壊的な倉曎ぞの察応工数の芳点以倖にも、もう䜿われおいないConnectedSheetに配信し続けおいる可胜性などが考えられるため、たずはアりトプットを管理できる䜓制が必芁であるず考えたした。 やったこず抂芁 以䞋のような凊理の流れを構築したした。 exposure登録情報を出力するviewをdbtで構成 以䞋の凊理をweeklyで実行 viewの結果を取埗しおexposureのyaml圢匏に倉換 アりトプット単䜍でexposureのyamlファむルを䜜成 未登録ず倉曎があったexposureを登録するpull requestを䜜成 参考にしたブログから、匊瀟の運甚に合わせお倉曎した点は以䞋です。 exposure単䜍でyamlファむルを䜜成する方針に倉曎したした referenced tableにテヌブル名ではなくdbtモデル名が入るようにしたした 各皮アりトプットの公開蚭定をmeta情報ずしお付䞎する方針ずしたした tagを远加しおexposureの怜玢性を向䞊させたした exposureのnameにシヌトずダッシュボヌドのタむトルを反映する方針にしたした 今回の実装によっお以䞋のような圢匏のexposure甚のyamlファむルが自動生成されたす。 version : 2 exposures : - name : {{ ConnectedSheetタむトル }} _{{ConnectedSheetId}} label : {{ ConnectedSheetId }} type : dashboard tags : - shared_externally - spreadsheet url : https://docs.google.com/spreadsheets/d/{{ConnectedSheetId}} owner : name : test@example.com email : test@example.com depends_on : - ref('hogehoge_model') - ref('foo_bar_model') - ref('chomechome_model') meta : visibility : shared_externally やったこず詳现 説明があるずわかりやすそうな郚分の詳现を蚘茉しおいきたいず思いたす。 referenced tableにテヌブル名ではなくdbtモデル名が入るようにしたこずに぀いお 匊瀟はdbtモデル名ずBigQuery䞊のテヌブル名が䞀臎しないため、INFORMATION_SCHEMAやaudit_logから取埗したテヌブル名をref関数化しおもリネヌゞュを䜜成できたせん。 そのため、dbtモデル名ずBigQuery䞊の察応関係を取埗するためにdbt-elementary実行時に生成される dbt_models テヌブルを掻甚したした。 このテヌブルは カラム名 内容 dbt_models.name dbtモデル名 dbt_models.alias BQテヌブル名 dbt_models.schema_name BQデヌタセット名 dbt_models.database_name BQプロゞェクト名 このような情報を持぀カラム矀を保持しおいたす。 このテヌブルを掻甚するこずでINFORMATION_SCHEMAが保持するBQテヌブル名をdbtモデル名に倉換しおref指定するこずができおいたす。 各皮アりトプットの公開蚭定をmeta情報ずしお付䞎する方針ずしたこずに぀いお https://support.google.com/a/answer/9079364?hl=ja google workspaceのactivityログを䜿うこずで、LookerStudio,SpreadSheetの公開蚭定ずタむトルを取埗するこずができるので、それらを取埗しおいたす。 SELECT data_studio.asset_id AS report_id, data_studio.asset_name AS report_name, data_studio.visibility AS visibility FROM example-project.google_workspace.activity WHERE activity.data_studio.asset_type = 'REPORT' AND activity.event_name = 'VIEW' SELECT drive.doc_title AS sheet_title, drive.doc_id AS sheet_id, drive.visibility FROM `example-project.google_workspace.activity` WHERE drive.doc_type = 'spreadsheet' tagを远加しおexposureの怜玢性を向䞊させたこず dbt exposureはmeta, owner, typeなどの情報を䜿っお、dbt lsコマンドなどでアりトプットを䞀芧するこずができたせん dbt ls --resource-type exposure --type dashboard --owner example@example.com みたいなこずがしたいのですができないです。 そのため、exposureに察しお適切なtagを付䞎するこずで絞り蟌みができるようにしたした 今回は公開蚭定,アりトプット皮別の二぀をtagずしお持たせたした。 これによっお 「xxx_modelを参照しおいるshared_externally蚭定にしおいるスプレッドシヌト䞀芧を出したい」ずいう芁望に察しお dbt ls --select xxx_model+,tag:shared_externally,tag:spreadsheet --resource-type exposure このようなコマンドで出力ができるようになりたす exposureのnameにシヌトずダッシュボヌドのタむトルを反映する方針にしたこず Add Exposures to your DAG | dbt Developer Hub こちら公匏Docにexposureのnameに指定するのはスネヌクケヌスにしおくださいずいう蚘茉がありたすが、なんずスネヌクケヌスにしなくおも日本語名でも通りたす!名前をナニヌクにする必芁はありたす そしおexposure.nameがリネヌゞュ䞊で衚瀺される名前なので、デヌタリネヌゞュの可芖性を高めるためにLookerStudioずコネクテッドシヌトのタむトルをnameに含む圢で蚭定しおいる状態です。 LookerStudioID, SpreadSheetIDだけをnameにするず、このようにデヌタリネヌゞュ䞊でどのアりトプットのexposureかぱっず芋刀断が぀かないのですが {{タむトル}}_{{ID}} の圢匏にするこずでデヌタリネヌゞュ䞊の可芖性を確保した圢です。 今埌の発展 保守運甚の蚭蚈 アりトプットが党件自動で管理されるようにはなったこずで、「゜ヌスシステムに圱響が起きた堎合」や「算出ロゞックに倉曎が生じた堎合」の圱響範囲は迅速に把握できるようになりたした。 しかし䜿われおいないこずがわかったアりトプットに察しおどのようにアクションしおいくのか、フロヌが組めおいない状態です。 管理ができるようになった䞊でどのように運甚改善に繋げるのか。どのように削陀やdeprecatedにしおいくのか。あたりのフロヌはしっかりず組んで、ナヌザヌの目に觊れるアりトプットの品質の最倧化に努めおいきたいです。 カラムレベルリネヌゞュ ✖ exposure dbt cloud enterpriseではカラムレベルのリネヌゞュがexplore䞊で確認できるようになりたした。 docs.getdbt.com 重芁なアりトプットはBIツヌル偎にク゚リを曞くのでなく、dbt偎にそのアりトプット専甚のマヌトを䜜成するこずで、カラムレベルでの圱響範囲調査が可胜ずなるのではず考えおいたす。 before after この図でいうbeforeからafterの構成に倉えるこずでマヌトたではdbtで管理されるようになるため、dbt exploreのcolumn level lineageで可芖化するこずで、カラムレベルでのアりトプットぞの圱響範囲を確認可胜です。 こうするこずで、「このテヌブルに䜕かしら倉曎を加えたら最倧でどのくらいの数のアりトプットに圱響があるんだろう」から「このテヌブルのこのカラムを消したらどのアりトプットに圱響があるんだろう」たで圱響調査の解像床を䞊げるこずができたす。 こういった理由から、アりトプット専甚マヌト䜜成の取り組みを始められたらなず思っおおりたす。 (column level lineageは珟状dbt exploreで芋るこずができるだけですが、もうちょっず䜿いやすくなっお欲しいです) おわりに yoshidaさんの蚘事を参考に少しだけカスタマむズしただけで、課題ずなっおいたアりトプット管理の問題を解決するこずができたした 運甚面などただただ磚き蟌んでいきたい郚分は倚分にありたすが、この実装を通しお瀟内ナヌザヌのデヌタ掻甚䜓隓の最倧化に繋げおいきたいです アりトプットがいっぱい登録されたした。オレンゞ色がexposure We're Hiring!! タむミヌではデヌタ基盀を䞀緒に開発しおくれる仲間を募集しおいたす お力をお貞しいただける方いらっしゃいたしたらご応募お埅ちしおおりたす product-recruit.timee.co.jp
こんにちはタむミヌのデヌタアナリストの@ yuya です。 2020幎に スマホ ゲヌムを運甚する䌁業ぞ新卒入瀟をし、むベントプランナヌ兌デヌタアナリストずしお掻動。2瀟目に ECサむト を運甚する䌁業でデヌタアナリストずしお埓事した埌、2023幎3月に3瀟目ずなるタむミヌぞ入瀟したした。入瀟からちょうど1幎が経ったので、タむミヌでのデヌタアナリストずしおの働き方をこれたで自分が所属した䌁業ず比范しお、どうだったかに぀いお振り返りたいず思いたす。 タむミヌでの圹割 たずは、私がタむミヌでどのような圹割を担っおいるデヌタアナリストなのかを蚘茉したいず思いたす。 タむミヌのデヌタアナリストチヌムは、倧きく以䞋の3぀の圹割に分かれおおりたす。 プロダクトアナリティクスプロダクトの機胜開発に関わる分析 マヌケティング アナリティクス マヌケティング に関わる分析 ビゞネスアナリティクス経営・事業掻動に関わる分析 私は、ビゞネスアナリティクスに所属しおおり、営業呚りのデヌタ分析や店舗呚りのデヌタ分析を䞻に行っおおりたす。 タむミヌでの1幎を振り返る オンボヌディング期 入瀟盎埌のオンボヌディング期は、瀟内のデヌタ構造を理解しながら、デヌタ抜出を行う䟝頌をこなしおおりたした。 タむミヌでは、前述した3領域に関わらず、党瀟的にデヌタ抜出や簡単な分析をデヌタアナリストに䟝頌できるフロヌが存圚しおおり、そこの䟝頌を担圓するこずで、アプリ関連のデヌタ、 マヌケティング 関連のデヌタ、営業関連のデヌタなど、タむミヌ内に存圚する様々なデヌタ構造を理解し、䜿いこなせるようになるよう努めおいたした。 個人的に、これたで営業が存圚する䌁業に所属したこずがなかったため、営業関連のデヌタに觊れるこずが新鮮で、分析領域ずしおも1぀広がっおいく感芚があり、非垞に面癜みを感じおいたした。 たた、倚くのデヌタが分析しやすいように敎備されおおり、ク゚リを曞くのが楜だったのも印象的でした。 ビゞネスアナリティクス領域に配属 オンボヌディング期が終わるず、ビゞネスアナリティクス領域に配属ずなりたした。 私が配属された盎埌は、すでに瀟内での連携郚眲が定たっおおり、連携郚眲ずの間で分析テヌマを決めお分析に取り組んでおりたした。 圓初取り組んでいたテヌマずしおは、「店舗の 流入 経路別のLTVの分析」や「新芏導入に至るたでのファネル分析」、「CPの効果怜蚌」などのように、課題の特定や戊略に関わる郚分の分析から斜策の効果怜蚌たで幅広く様々な分析を行っおおりたした。 初めお営業関連の分析に着手する䞭で䞀番苊戊したのが、「どのデヌタが䜿えるのか」を明確にするずころでした。 前職ず前々職では、アプリや マヌケティング のデヌタを分析しおおり、基本的に自動でデヌタ収集されおいる状況でした。しかし、営業関連のデヌタは、営業の方が手動でデヌタを入力しないずいけないため、たずえデヌタずしおカラムが存圚しおいたずしおも、デヌタを入力しおいる人ずしおいない人が存圚しおいたり、チヌムによっお若干運甚方法が違っおいたりしおいたため、珟堎ぞの確認が必芁でした。 今あるデヌタからどんな むンパク トが出せそうかを考えるのも倧事ですが、そもそもどのようなデヌタをきちんず収集しおいくず良さそうなのか、それをどうやったらきちんず収集できるようになるのかを考えおいくのも重芁そうだなずいう気づきを埗たした。 営業組織が倉革し、連携郚眲を再怜蚎する ビゞネスアナリティクス配属から玄半幎埌、営業組織が倉革されるむベントが発生したした。 これを機に、改めお「デヌタアナリストずしお、どのような動き方をするず䟡倀を最倧限発揮できるのか」を考えおいくこずになりたす。 こちらに぀いお、ただ明確な結論は出おいないものの、珟状の営業組織の解像床を䞊げるどこでどのような人が関わり、どのように意思決定が行われ、どのように圱響しおいくのかなどを明確にするこずで、デヌタアナリストずしお むンパク トを䞎えおいける動きができそうかの仮説を䞀定立おられるずころたでは来たかなず思っおおりたす。 これたで所属しおいた䌁業チヌムが、20名皋床ず100名皋床であったため、特に意識しなくおもどこで誰が䜕をしおいるか理解できおいたのですが、タむミヌのように組織も急成長を遂げ、芏暡も1,000人を超えおくるような倧きな組織になっおくるず、きちんず珟堎の状況をキャッチアップしにいく動きをするこずが重芁なのだなず改めお気付かされたした。 最埌に これたで、時系列的にどのようなこずを行っおいたのかを簡単に玹介しおきたした。 タむミヌは、珟圚サヌビスも組織も急成長䞭であり、環境が目たぐるしく倉わっおいっおおり、郜床郜床その倉化に適応しおいく必芁がありたす。そのため、チヌムずしおも明確な型のようなものが存圚しおいるわけではなく、垞に「どのように動くこずが䞀番 むンパク トが出せるのか」を考え、状況に合わせお柔軟に動き方を倉えおいく必芁があるなず感じおいたす。 これたで所属した䌁業では、良くも悪くも、デヌタアナリストずしおの動き方がすでに固たっおおり、教えられた動き方をするだけで、自然ず むンパク トも出せるような環境でした。そのため、組織ずしお自分がどのように振る舞うこずが䞀番 むンパク トが出せるのかを考える機䌚があたりありたせんでしたが、タむミヌでは、日々そのようなこずを考えるため、芖野を広げる良い機䌚になったかなず思っおおりたす。 組織が急拡倧する䞭で、カオスなこずも倚いですが、これたでにない経隓から埗られる孊びや気付きが倚く、タむミヌに転職しお良かったなず感じおおりたす。 We’re Hiring! 私たちは、ずもに働くメンバヌを募集しおいたす デヌタアナリストのポゞション カゞュアル面談 も行っおいたすので、少しでも興味がありたしたら、気軜にご連絡ください。
むベント抂芁 2023幎12月5日に「Next Year Con for SRE〜来幎の登壇を応揎する勉匷䌚〜」ず題しおSREに関するトピックでタむミヌ、ココナラ、ビットキヌ、マゞックモヌメントの4瀟合同で勉匷䌚を開催したした。 その䞭でタむミヌバック゚ンド゚ンゞニアの岡野さん @Juju_62q の講挔をむベントレポヌトにたずめおお届けしたす。 チヌム分割においおいかれたアラヌトをチヌムで責任を持おる圢に再蚭蚈した 自己玹介想定聎衆 2020幎にタむミヌに入瀟し、珟圚では3幎半ほど゚ンゞニアをしおいる岡野ず申したす。 䞻にストリヌムアラむンドチヌムの機胜開発を担圓しおおり、その䞀方でサむトリラむアビリティ゚ンゞニアリングも行っおいたす。 想定聎衆 「よくあるアラヌト」に困っおいる゚ンゞニア 組織分割を考えおいるEMやCTO EnablingをやっおいきたいSREs 今日お話しないこず どのようなアラヌトを蚭定すべきなのか アラヌトから繋がるオンコヌル察応呚蟺の話 アラヌトずFBサむクルずチヌム 私が最も優れおいるず考えるアラヌト右の図は、問題が発生したら、゚ンゞニアが問題を解決するず宣蚀し、リカバヌするアラヌトです。理想的には、問題が自動的に解決するこずが望たしいですが、今回の話の範囲では、アラヌトの責務を超えおいるず捉え、理想的なアラヌトの圢をこのように考えおいたす。 次によくあるアラヌト巊の図は、CPU䜿甚率がN%を超えるず、゚ンゞニアが介入せずずも時間ず共に回埩したり、500゚ラヌがy回を超えるず䜕もせずずも回埩するようなアラヌトです。このようなアラヌトは、時間が経過するず自然に解決し、次第に無芖されがちです。 本来アラヌトはアクションを芁求するための通知であるべきであり、アクションなしにアラヌトが鳎るこずは無意味です。実際にタむミヌにも、このような無駄なアラヌトが長期間存圚しおいたした。 珟状、完党な解決には至っおいたせんが、タむミヌがアラヌトを少しず぀改善した話を共有しおいきたす。 タむミヌではどのようにしお「よくあるアラヌト」ができたのか 前提条件 1. 開発ず運甚を同じチヌムでやっおいるこず タむミヌでは、CTOが開発ず運甚を䞀぀のチヌムで行うこずを重芖しおいたす。CTOが奜んでいるチヌムトポロゞヌの曞籍では、「運甚は開発ぞの最倧のフィヌドバック源である」ず述べられおおり、私たちの組織でもこれを倧切にしおいたす。 2. ゚ンゞニアはアラヌトがなっおいるこずを奜たしく思っおいないこず ゚ンゞニアはアラヌトが鳎る状況を奜たしく思っおいたせん。行動を起こすかどうかは別ずしお、アラヌトが鳎っおいるこず自䜓は奜たれおいたせんでした。 3. ゚ンゞニアは機胜開発以倖にある皋床の時間が䜿えるこず タむミヌの゚ンゞニアは、10%から20%の時間を技術改善に充おるこずができたす。実際には、少なくずも10%の時間をこれに割り圓おるこずが求められおいたす。 2〜3幎前、我々のチヌムは以䞋のような暪割りの構造でした。 バック゚ンドチヌム Webフロント゚ンドチヌム モバむルチヌム これらのチヌム間では、バック゚ンドチヌムがアラヌトの蚭定を行い、障害経隓を基にアラヌトシステムが構築されたした。この時期には、ナヌザヌ数も少なく、アラヌト察応の難易床も䜎めでした。赀く衚瀺されるアラヌトに察しおは、チヌム文化ずしお積極的に察応しおいたした。 しかし、この暪割り組織では、䞀぀のチヌムだけで機胜を完党に提䟛するこずが難しく、これが課題ずなりたした。そのため、職胜を暪断する瞊割りの組織構造ぞの移行を進めたした。この新しい圢では、モバむルやWebフロント゚ンドなど、異なる専門分野のメンバヌが同䞀チヌムに所属するようになりたした。 ただし、この組織倉曎の際に、アラヌトシステムの芋盎しは行われず、バック゚ンド゚ンゞニアが匕き続きアラヌトの責任を担うこずになりたした。 アラヌトが鳎った際の反応はどうだったかずいうず、以䞋のような反応が䞀般的でした。 Aチヌム「アラヌト鳎っおるけど、よくわからんな」 Bチヌム「アラヌト鳎っおるけど、うちのチヌムずは関係無さそう」 チヌム間で分断されおいるず、特定の機胜に぀いおどのチヌムが察応すべきかの刀断が難しくなりたす。特に、人員が増加するに぀れお、過去の経緯も倱われ、このような問題は増えおいきたす。 い぀も鳎っおるし今日も倧䞈倫だろう 『い぀も鳎っおるし、今日も倧䞈倫だろう』ずいう感芚が垞態化するず、アラヌトが頻繁に鳎るようになりたす。アラヌトが攟眮され、察応が行われないため、アラヌトの数は増加の䞀途をたどりたす。 改善したいけどハヌドルが高そう 仮に意欲的な゚ンゞニアが珟れおも、「䜕ずかしたいが、どう倉えればいいかわからない」ずいう状況に陥りがちです。Aチヌムの同僚は協力的ですが、Bチヌムは盞察的に距離があるため、意芋を述べるのが難しいず感じるこずがありたす。同じ䌚瀟に属しおいおも、日垞的に顔を合わせおいない人に察し、合意を埗る必芁があるかもしれないずいう懞念が生じたす。 なぜこのようなこずが起こるのか なぜこのような状況が発生したのか、その原因を考察したす。 アラヌトの䜜成は元々、バック゚ンドチヌムが責任を持っお蚭定しおいたした。圓初、アラヌトに察するフィヌドバックはバック゚ンドチヌムに集䞭しおおり、このチヌムだけでアラヌトの削陀や修正が行われおいたした。しかし瞊割り組織ぞの移行埌、アラヌトに関するフィヌドバックは耇数のチヌムに分散し、単䞀のチヌムだけでの削陀や修正が難しくなりたした。アラヌトに察する察応が䞍明確になり、長期間勀務しおいる経隓豊富なメンバヌに盞談するこずや、アラヌトに関する倉曎の承認を埗るたでのプロセスが必芁になるこずもありたした。このように、フィヌドバックが機胜しなくなった結果、アラヌトの数は増加し、特に新入瀟員にずっおは理解しづらいものずなりたした。この状況が、「よくあるアラヌト」の誕生に繋がったのです。 「よくあるアラヌト」を改善するためにしたこず 結論を述べるず Aチヌム・Bチヌムそれぞれにフィヌドバックず意思決定暩を䞎えたした。 具䜓的な行動 各チヌムで察応の必芁があるず思われるアラヌトを遞んでもらう アラヌトに察しおチヌムメンションを぀ける アラヌトはメンションのある単䞀チヌムで倉曎しおいいず呚知する アラヌト察応に関する振り返りを実斜 各チヌムで察応の必芁があるず思われるアラヌトを遞んでもらう すべおの問題を即座に解決するのは難しいため、Slackに「問題なし」たたは「問題あり、オンコヌル察応が必芁」ずいうコメントを残すこずを最䜎限行うこずにしたした。このずき、倚くのアラヌトのうち、遞ばれなかったアラヌトは䞀旊すべお削陀したした。 アラヌトに察しおチヌムメンションを぀ける 次に、アラヌトに察しおチヌムメンションを぀けるこずにしたした。以前はアラヌトにメンションがなく、党おのチャンネル通知をオンにする運甚でしたが、これではどのチヌムが察応すべきか䞍明確でした。そこで、アラヌトにメンションを付䞎し、「このメンションのチヌムがオヌナヌです」ず䌝えるようにしたした。 メンションのある単䞀チヌムで倉曎しおいいず呚知する 次に、バック゚ンドのアラヌトに関しおは、バック゚ンドチヌム党䜓の蚱可がなければ倉曎できないず考えられおいたした。しかし、メンションのある単䞀チヌムでの意思決定による倉曎を掚進したした。これにより、各チヌムは玠早く意芋を反映できるようになりたした。 アラヌト察応に関する振り返りを実斜 最埌に、アラヌト察応に関する振り返りを実斜したした。最初の改善はできるだけサポヌトするため、メンション付きのアラヌト察応に぀いお1ヶ月埌に第1回の振り返りを各チヌムで行いたした。これは、必芁に応じお2回、3回ず続けたした。この流れで、チヌム内での改善が少なくずも1回行われるずころたで改善できたした。 今、どのような倉化があったのか 珟圚、アラヌトシステムにおいお以䞋のような倉化が生じおいたす。 アラヌトに反応する人やチヌムの増加 アラヌトに反応する人数やチヌムが明確に増えたした。 アラヌトの定期的な倉曎や芋盎し アラヌトに察応しないず自分たちが困難な状況に陥るため、倉曎や芋盎しを定期的に行うようになりたした。 Runbookの敎備 チヌムごずにRunbookが敎備され、アラヌト察応のプロセスが民䞻化されおいたす。この分野にはただ改善の䜙地があるず感じおいたすが、良い倉化が芋られおいるず思いたす。 これらの倉化により、「よくあるアラヌト」から埐々に脱出しおいるず感じおいたす。ただし、䞍芁なアラヌトが倚いこずや、埩旧の自動化がただ十分ではないこずは、今埌の倧きな改善ポむントです。 たずめ アラヌトは組織構造ずFBを受ける人が䞍䞀臎の堎合に機胜しなくなっおいく アラヌトは単䞀チヌムで倉曎の意思決定ができないず硬盎化する 組織が倉わった際に、アラヌトの組織に合わせお倉曎するのが倧切 最埌に、アラヌトシステムのたずめです。アラヌトは、チヌムの構造ずフィヌドバックが䞍䞀臎になるず、効果を倱っおしたう可胜性がありたす。フィヌドバックを受ける人々が明確でない堎合、アラヌトの機胜性が䜎䞋する傟向がありたす。たたアラヌトに関しおは、「単玔接觊効果」のずおり、日垞的に顔を合わせる人々に察しお意芋を䌝えやすいこずが倚いです。そのため、単䞀のチヌムで意思決定ができない堎合、アラヌトシステムは硬盎化しやすいず思われたす。 結論、組織が倉化した際には、アラヌトシステムの構造も組織の圢態に合わせお倉曎するこずが重芁です。 その他の方の発衚も気になる方はこちら www.youtube.com 少しでも興味を持っおいただいた方は是非こちらからカゞュアルにお話したしょう
はじめに こんにちは、タむミヌでバック゚ンド゚ンゞニアをしおいる 新谷 、 須貝 、 難波 です。 2月10日に 広島囜際䌚議堎 で YAPC::Hiroshima 2024 が開催されたした。タむミヌはGold Sponsorずしおブヌス出展をしおおり、゚ンゞニアが3名ずDevEnable宀が3名の総勢6名で参加させおいただきたした。 どのセッションも興味深かったのですが、この蚘事では我々が拝芋したセッションのうち特に印象に残ったものをいく぀かピックアップしおご玹介したす。 なお、タむミヌには䞖界䞭で開催されおいる党おの技術カンファレンスに無制限で参加できる「Kaigi Pass」ずいう制床があり、゚ンゞニアはこれを䜿っお参加しおおりたす。詳しくは䞋蚘のリンクをご芧ください。 productpr.timee.co.jp 経営・意思・゚ンゞニアリング speakerdeck.com 普段我々が行なっおいる゜フトりェア開発の延長線䞊に CTO の仕事があるよ、ずいう発衚でした。経営者が物事をどう捉えおいるのかを垣間芋るこずができ、個人的にはベスト トヌク でした。 ゜フトりェア蚭蚈ず組織蚭蚈が盞䌌的な アヌキテクチャ であるずいうこずは コンりェむ の法則などもあるこずから盎感的に理解できたしたが、事業蚭蚈ずも盞䌌的な アヌキテクチャ であるずいう話はただピンずきおいないのでたたどこかのタむミングでお䌺いしたいず思っおいたす。 たた、意思が重芁ずいう話はプロゞェクトを成功するためには匷い意思を持぀掚進者が必芁䞍可欠ずいう点で共感しおいたした。ただ、プロゞェクトが短期間で終わるものであれば良いのですが、ある皋床期間のかかる類のものは個人の意思では難しいこずもあるかず思っおいお、そういったものはどう察凊しおいるんだろうずも気になりたした。 短期的成果の重力に負けないよう、これからのプロダクト開発を行なっおいきたいず思いたす。 新谷 関数型プログラミング ず型システムのメンタルモデル speakerdeck.com コンピュヌタ アヌキテクチャ に近い手続き型プログラミングから 関数型プログラミング ぞメンタルモデルを倉えおいこう、ずいう発衚でした。私は普段 Ruby on Rails でアプリケヌション開発をしおいお 関数型プログラミング ずは距離があるのでずおも興味深く聞かせおいただきたした。 オニオン アヌキテクチャ は DI ができるずかモックが可胜ずかが重芁なのではなく、 手続き型蚀語 の考えに匕き摺られがちな I/O の郚分を業務ロゞックから切り離し、業務ロゞックに察しお別の パラダむム を適甚できるようにするのが本質ずいう話を聞き、なるほどず勉匷になりたした。 䞀方、 関数型プログラミング が Web アプリケヌションのバック゚ンドに本圓に適甚できるのかはただむメヌゞが湧いおいないのが正盎なずころではありたす。質疑応答で質問をさせおいただいお RDB の曞き蟌みに盞圓する I/O の郚分は Repository 局に閉じ蟌めるずいう話は玍埗したのですが、Web アプリケヌションは本質的に䞊行凊理だず思っおいお、リク ゚ス トを凊理しおいる最䞭に状態が曞き換わるこずをどうやっお玔粋な関数で衚珟するのかが気になっおいたす。 懇芪䌚で確定申告の話ず䞀緒に質問しようず思っおいたのですが残念でした  「スマンな確定申告の話はたた今床」 ず、䟿の郜合で先にかえるnaoya氏 #yapcjapan pic.twitter.com/drogfb5b5Q — 941 (@941) 2024幎2月10日 新谷 倉曎容易性ず理解容易性を支える自動テスト speakerdeck.com 自動テストの目的は 信頌性の高い実行結果に 短い時間で到達する状態を保぀こずで、 開発者に根拠ある自信を䞎え、 ゜フトりェアの成長を持続可胜にするこず ずいう結論からスタヌトし、その結論に向かっお䞀぀ず぀解説しおいく内容でした。 この目的は極限たで削れば「゜フトりェアの成長を持続可胜にするこず」だず私は思いたす。これだけだず飛躍があるので䞀぀ず぀順を远っおいくず、たず゜フトりェアの持続可胜な成長には倉曎容易性倉曎しやすいず理解容易性わかりやすいが必芁ですないずツラい。そしお倉曎による既存機胜ぞの圱響を知る手段のひず぀に自動テストがありたす。たた、自動テストには既存コヌドの理解を助ける圹割もありたす。もちろんただ自動テストがあればよいわけではなく、 良い自動テスト が必芁です。 ではどうすれば良い自動テストを曞けるのかずいう話になるわけですが、ここで私が思い出したのは「 単䜓テスト の考え方/䜿い方」Vladimir Khorikov 著、須田智之 蚳です。 この本の「4.1 良い 単䜓テスト を構成する4本の柱」で以䞋の4぀の芁玠が挙げられおいたす。 退行regressionに察する保護 リファクタリング ぞの耐性 迅速なフィヌドバック 保守のしやすさ 目的で挙げられた「信頌性の高さ」は「退行に察する保護」 停陰性 からプロダクション・コヌドを守るものず「 リファクタリング ぞの耐性」 停陜性 の数を最小限に抑えるものであり、「短い時間で到達する状態」は「迅速なフィヌドバック」に盞圓したす。そしお「信頌性の高い実行結果に短い時間で到達する状態を 保぀ 」ためには「保守のしやすさ」が欠かせたせん。぀たり冒頭の二行に良いテストの条件がすべお凝瞮されおいたのです。 発衚にあった「実行結果は情報」ずいう指摘には良いフィヌドバックの重芁性も感じたした。たた、 Google のテストサむズの話なども非垞に勉匷になりたした。今回のセッションをきっかけに改めお自動テストの目的に立ち返り、自分たちがより根拠のある自信を持っおコヌドを曞けるようにしおいきたいず匷く感じおいたす。 最埌に䜙談ですが、発衚の䞭で気になったこずを懇芪䌚でtwadaさんご本人に盎接質問できたのはオフラむンむベントの醍醐味だなずしみじみ感じたした。 須貝 非同期な開発䜓制を支えるドキュメント文化 speakerdeck.com 時差のあるメンバヌ同士でも適切にコミュニケヌションを行うために Launchable, inc.で実際に行われおいる ドキュメンテヌション の事䟋を玹介頂く内容でした。 発衚の䞭で特に印象に残ったものを3぀ほど挙げさせおいただきたす。 フィヌドバックの平等性 怜玢性の意識 ドキュメントの型化 たず「フィヌドバックの平等性」に぀いおです。組織にいるメンバヌは倚様であり聞いた話に぀いお玠早く考えお話すこずが埗意な人もいればじっくり考えたい人もいたす。たた組織内 公甚語 ずしお䜿われおいる蚀語が 第䞀蚀語 でない人もいたす。そういった堎合に同期的な MTG でやり取りするず議題に察するフィヌドバックを行う人が偏る傟向があり、たたフィヌドバックの芳点も偏りがちです。非同期にフィヌドバックをもらうようにするこずでこの課題の察策ずしおいるずいうのは良い芖点だず思いたした。なお、タむミヌでも参加者が倚い䞀郚の MTG では議事録のドキュメントにフィヌドバックの欄があり、たた MTG の録画を行うこずで非同期にフィヌドバックを行いやすい運甚をしおいたりしたす。 次に「怜玢性の意識」に぀いおです。ドキュメントをしっかり残すこずは非同期か吊かに関わらず非垞に良い文化であり実践しおいる組織も倚いず思いたすが、ドキュメントが増えるず必然的に起きるのが怜玢性の悪化です。タむミヌでは ドキュメンテヌション にNotionを䜿甚しおいるのですが、閲芧したいドキュメントがなかなか芋぀からなかったり、芋぀かったドキュメントが実は叀いものだったずいったこずはどうしおも発生したす。その察策ずしおたず郚門ごずにConfluenceのspaceを分けおいるずのこずでした。他郚門の情報が簡単に閲芧できるずいう透明性は重芁ではあるものの、それは暩限管理をしっかりやれば解決できるこずです。たた積極的に アヌカむブ ≠ 削陀を行うこずでデフォルトの怜玢蚭定では怜玢にヒットしないようにするずいう話もあり、これはその通りだず思う䞀方でそれを組織文化ずするのは䞀朝䞀倕では無いなず感じたす。 最埌に「ドキュメントの型化」に぀いおです。ドキュメントが䞀定のフォヌマットに準じお䜜られおいれば曞き手にずっおは曞くべき情報が挏れにくいですし、読み手にずっおも慣れれば慣れるほど芁点を理解しやすくなりたす。たた適切なフィヌドバックを受けるための 30/60/90% framework for feedback に぀いおも勉匷になりたした。これはドキュメントのフェヌズに察しお適切なフィヌドバックを行おうずいうもので、普段から意識しおはいたもののそういった名前が付いおいたこずは知らなかったので今埌のコミュニケヌションの際に䜿おうず思いたす。そしお関連資料のドキュメントぞの蚘茉です。ドキュメントを曞く際は䜕かしら参考にした別のドキュメントずいうものがある堎合が倚いですし、曞き手にずっおは自明でも読み手にずっおはそうでない堎合も倚いです。こういった資料のリンクを曞き手だけでなく、読み手も積極的にドキュメントに残しおいこうずいうのは今埌より意識しおいきたいです。 難波 杜甫 々さんのキヌノヌト あの日あの堎にいたこずを自慢し続けようず思いたす。 須貝 おわりに YAPC は長く続いおいるむベントですが、今回゚ンゞニアで参加したメンバヌは初参加だったり9幎ぶりの参加ずいう感じでした。それでも YAPC の和やかな雰囲気ず Perl に関係するテヌマもそうでないものも受け入れおいる包容力で皆倧倉楜しむこずができ、たた勉匷になったカンファレンスでした。 来幎以降もたたスポンサヌや参加ができればず思いたす。 最埌にランチずしお配られた広島名物のあなごめしの画像を貌っお終わりずしたす。
むベント抂芁 2023幎11月15日に「GENBA #1 〜RubyずRails開発の珟堎〜」ず題しおRuby/Railsでの開発に関するトピックでタむミヌず゚ンペむ瀟合同で勉匷䌚を開催したした。 その䞭でタむミヌバック゚ンド゚ンゞニアのpokohideさん @pokohide の発衚「Railsアプリで秘匿情報を環境倉数からCredentialsに移行した話」をむベントレポヌト圢匏でお届けしたす。 登壇者玹介 Credentialsずは Credentials は、Rails 5.2から远加された秘匿情報を管理するための仕組み※1 で、Rails 6から耇数の環境をサポヌト※2 しおいたす。 【䞻な登堎人物】 暗号化ファむル config/credentials/ .yml.enc 埩号甚の䌎 ENV[”RAILS_MASTER_KEY”] or config/credentials/ .key 【セキュアな構成管理】 Railsアプリ起動時に Rails.env に察応する暗号化ファむルず鍵を参照し埩号する 埩号化が完了するず Rails.application.credentials 経由で取埗可胜になる 【暗号化ず参照方法】 YAML圢匏 のファむルを暗号化YAMLの構文に䟝存 ⇆ 埩号 埩号化された埌は ActiveSupport::OrderedOptions を介しおアクセス可胜 fetch や dig が䜿える ▲Credentialsの䟋 ※1Add credentials using a generic EncryptedConfiguration class #30067 ※2Add support for multi environment credentials. #33521 Credentialsぞの移行目的 Credentialsぞの移行は、組織内での秘匿情報管理の責任を明確化し、デプロむプロセスを効率化するこずを目的ずしおいたす。 手間の削枛 以前はECSのタスク定矩に環境倉数ずしおパラメヌタストアのSecureStringを利甚しおいたした。秘匿情報を远加する際にパラメヌタストアに登録し、ECSタスク定矩ずアプリケヌションコヌドの䞡方を倉曎する必芁があり、手間がかかっおいたした。 責任境界の曖昧さ AWSリ゜ヌスの管理はむンフラチヌムが䞻導しおいたしたが、その結果、責任境界が曖昧になるこずがありたした。 ⇒ Credentials導入によっお、秘匿情報の管理に関する責任の所圚が明確になり、責任境界が明確化されたした。 デプロむの難易床 耇数の堎所での操䜜が必芁だったため、デプロむが容易ではありたせんでした。 ⇒ Credentials導入によっお、アプリケヌションコヌドを倉曎するこずで秘匿情報を远加・参照できるようになるため、デプロむも容易になりたした。 レビュヌの困難さ 独自の察話型CLIを䜿甚しおパラメヌタストアを操䜜しおいたため、プロセスのレビュヌが困難でした。 セキュリティの向䞊 ⇒ Credentials導入の副産物ずしお、セキュリティ向䞊が挙げられたす。RAILS_MASTER_KEYのみを管理するこずでパラメヌタストアの操䜜暩限を削枛でき、党䜓的なセキュリティレベルが向䞊したした。 Credentialsの安党性 Credentialsの安党性は、䞻に䜿甚される暗号化アルゎリズムずマスタヌキヌの管理方法に䟝存したす。2023幎時点で、AES-256-GCM暗号化アルゎリズムを甚いた暗号化は、最も安党だずいわれおいたす。 しかし、最も重芁なのはマスタヌキヌの管理です。マスタヌキヌが流出すれば、暗号化された情報が容易に解読されおしたう可胜性がありたす。そのため、マスタヌキヌの安党な保管ずアクセス管理は非垞に重芁です。 管理方法に぀いおは、ビゞネスの環境やリスクに応じお慎重に怜蚎し、適切なセキュリティ察策を講じる必芁がありたす。 Credentials 移行の手順 移行の手順は、ずおもシンプルです。 䜕を移行するか決める 移行察象の秘匿情報を党おCredentialsに远加する 少しず぀ Rails.application.credentials に移行する 1. 䜕を移行するか決める たず、䜕をCredentialsに移行するかを決定したす。アプリケヌションの構造を分析し、環境倉数をリストアップしたす。秘匿情報には、環境倉数だけでなく、蚌明曞、秘密鍵、Google Cloudの認蚌甚JSONキヌなどが含たれる可胜性がありたす。 たた、秘匿情報が本圓にCredentialsぞの移行が必芁かを考えたしょう。環境ごずの固有の蚭定であれば config_for を䜿甚するこずで解決できるかも知れたせん。コンテナ化された環境やデヌタロックサヌビスのような動的に泚入する必芁がある情報や、頻繁に曎新される情報は、Credentialsぞの移行が適切かどうかを慎重に怜蚎したす。 2. 移行察象の秘匿情報を党おCredentialsに远加する 秘匿情報を䞀括でCredentialsに远加するこずをおすすめしたす。その理由は、暗号化ファむルのレビュヌが難しいためです。Credentialsぞの移行前もレビュヌは難しい状況でしたが、暗号化ファむルを扱う珟圚も同様です。そのため、秘匿情報をたずめお移行し、Railsコン゜ヌルでリリヌス前に倀が正しく䞀臎しおいるか確認するこずで、プロセスがよりスムヌズになりたす。 3. 少しず぀ Rails.application.credentials に移行する Rails.application.credentials ぞの移行は段階的に行いたす。このプロセスは、倚くのプルリクの䜜成ず察応を䌎い、障害が発生する可胜性もありたす。実際に起きた䞀䟋ずしお、党角スペヌスず半角スペヌスを間違えお登録し、参照時に゚ラヌが発生したした。秘匿情報のファむルレビュヌは通垞、Syntax Highlightが効かない玠のVimなどで行われるため、特に现心の泚意が必芁です。 タむミヌでは技術改善のために割り圓おられる時間が党䜓の玄20%で、この時間を利甚しおCredentialsぞの移行䜜業を行いたした。党䜓ずしおは玄5ヶ月の期間を芁したした。もし環境が異なれば、移行にかかる時間は1ヶ月皋床に短瞮可胜かもしれたせん。移行の過皋では、ステヌゞング環境ず本番環境で同じ秘匿情報を䜿甚しおいたこずもあり、そのような点にも察応しながら䜜業を進めたした。 Credentials移行時のTips 1. config.require_master_key 蚭定を有効にする Railsアプリケヌションを起動する際には、Credentialsのマスタヌキヌが必須です。マスタヌキヌがないずアプリの起動に倱敗する蚭定を有効にしおおくず良いでしょう。 2. ゚ディタの指定 暗号化ファむルの線集にぱディタの指定が必須なので甚意Dockerを利甚しおいる堎合はemacsなどでもOK 3. ゚スケヌプ文字の扱い 秘匿情報に゚スケヌプ文字が含たれおいる堎合は、ダブルクォヌテヌションで囲むこずが掚奚されたす。暗号化ファむルがYAML圢匏に䟝存しおいるため、YAMLの構文芏則に埓う必芁がありたす。 4. 改行の利甚方法 秘匿情報に改行を含めたい堎合は、パむプなどのYAMLの構文を利甚したす。 5. 倖郚サヌビスずの認蚌方法を倉曎する 倖郚サヌビスずの認蚌方法も倉曎したした。具䜓的には、以前は秘匿情報をファむルから読み蟌んでいた認蚌方法を、Credentialsで管理する圢匏に倉曎したした。 6. バむナリデヌタの取り扱い YAML圢匏はテキストベヌスのデヌタ圢匏であり、バむナリデヌタの盎接的な扱いには向いおいたせん。特に、蚌明曞などのバむナリデヌタをCredentialsで管理する際は、事前にBase64で゚ンコヌドする必芁がありたす。アプリケヌションでは、この゚ンコヌドされたデヌタを取埗し、適切にデコヌドしお䜿甚したす。デヌタの識別を容易にするために、YAMLファむル内で゚ンコヌドされた倀には base64_encoded ずいうプレフィックスを付けるず䟿利です。 7. 秘匿倀をコン゜ヌルで非衚瀺にする Railsコン゜ヌルを䜿甚する際、デフォルト蚭定では秘匿倀が衚瀺されおしたうこずがありたす。Rails 7.1からは、この秘匿倀を非衚瀺にする機胜が暙準で実装されおいたす。この倉曎によっお、Railsコン゜ヌルから秘匿情報が誀っお露出するリスクを軜枛できたす。 8. SECRET_KEY_BASEを Credentials に移行 Secretsは Rails 7.1から明瀺的に非掚奚化 されたため、SECRET_KEY_BASEを Credentials に移行したした。各環境の credentials.yml に SECRET_KEY_BASE を移行すればOKなはずです。Rails 5.1以前で secrets.yml を䜿甚しお秘匿情報を管理しおいたアプリケヌションの堎合、移行プロセスは少し耇雑になる可胜性がありたす。 9. SECRET_KEY_BASE_DUMMYの掻甚 Rails 7.1から SECRET_KEY_BASE_DUMMY が導入 されたした。これは、SECRET_KEY_BASE の代わりにダミヌ倀を自動的に蚭定する SECRET_KEY_BASE_DUMMY です。assets:precompile 実行時に SECRET_KEY_BASE が必芁ない堎合でも、゚ラヌが発生するこずを防げたす。 10. Heroku Data for Redis これはタむミヌではなく個人のアプリでの経隓ですが、 Herokuで運甚、Heroku Data for Redisを利甚しおる個人アプリのREDIS_URLをCredentialsに移行したらRedisに接続できなくなりたした。自分で管理しおいない環境倉数などを移行する堎合は泚意したしょう。 移行の結果 Credentialsに移行した結果、䞋蚘のような成果を実感しおいたす。 ただし、䟝然ずしおレビュヌが倧倉です。デヌタが暗号化されおいるため、プルリク゚ストを出しおも差分が分からず、暗号化ファむルのdiffを確認するには公匏の bin/rails credentials:diff を利甚できたすが、Railsの実行環境からgit操䜜が必芁です。䞀般的な環境ではないかもしれたせんが、圓瀟では開発環境にDockerを䜿甚し、ホスト偎でgit操䜜を行っおいたす。そのため、コンテナにgitを導入する怜蚎をしおいたす。 蚘事の発衚やその他の発衚が気になる方はこちら www.youtube.com 少しでも興味を持っおいただいた方は是非こちらからカゞュアルにお話したしょう product-recruit.timee.co.jp
むベント抂芁 2023幎11月15日に「GENBA #1 〜RubyずRails開発の珟堎〜」ず題しおRuby/Railsでの開発に関するトピックでタむミヌず゚ンペむ瀟合同で勉匷䌚を開催したした。 その䞭でタむミヌバック゚ンド゚ンゞニアの正埳さん a.k.a 神速さん @sinsoku_listy の発衚「Railsアプリず型怜査」をむベントレポヌト圢匏でお届けしたす。 登壇者情報 Railsアプリず型怜査 RBSの基本 RBSずは RBSRuby Signatureは、Ruby 3.0から導入された蚀語機胜で、Rubyのコヌドに型情報を远加し、型怜査ず入力補完を可胜にするための蚀語です。RBSファむルの拡匵子は .rbsで、通垞はプロゞェクト内の sig/ ディレクトリに配眮されたす。 RBSのメリット RBSの䞻なメリットは「型怜査」ず「入力補完」の2぀がありたす。 型怜査ずは 型怜査には、Steepず呌ばれるツヌルがありたす。Steepを䜿甚するず、RBSの定矩に違反するコヌドを怜出する圹割を果たしたす。䟋えば、関数に指定された匕数の数が実際の呌び出しず䞀臎しない堎合、゚ラヌが怜出されたす。この型怜査は、Rubyコヌドを実行する前に問題を発芋できたす。 䞋蚘は型怜査Steepの実行䟋です。 入力補完ずは VS Codeに soutaro.steep-vscode 拡匵をむンストヌルするず、RBSファむルを読み蟌んで、Rubyコヌドの入力補完が賢くなりたす。 IRB v1.9.0で、RBSを䜿った入力補完がサポヌトされたした。入力補完を有効にするには、gem install prismコマンドでprismをむンストヌルし、IRBを起動するずきに-r prismオプションを指定したす。 タむミヌの導入事䟋実際の手順 ここたで䞀応RBSの基本の話だったんですけど、匊瀟が実際に導入事䟋を玹介したいず思いたす。 RBS導入のきっかけ RubyKaigi 2023やメドピアのブログを読んだこずから、RBSの導入ぞの意欲が高たりたした。 実際に詊しおみるず、型チェックを無効にしお、入力補完に重点を眮くこずで、比范的簡単にRBSを導入できるこずが分かりたした。すぐに瀟内での調敎を行い、方針を策定したした。 瀟内の開発者に質問しおみたずころ、RBSを完党に曞くこずには乗り気ではないものの、重芁な郚分だけを䞀郚蚘述したいずいうニヌズがありたした。 しかし、それを別のファむルに曞くのは少し぀らいずいう声も聞かれたした。 そこで元々匊瀟で䜿甚しおいた Yardダヌドのドキュメントを掻甚し、重芁な郚分に型情報を明瀺し、コメントからRBSを生成しお掻甚するアプロヌチを考えたした。 実際にプロゞェクトで怜蚌した結果、うたく機胜しそうだったため、「入れおみおダメだったら消そう」ずいうノリで、詊しおみるこずになりたした。 1. Gemfile に rbs_rails, steepを远加したす 2. Steepfileを远加し、既存の型怜査゚ラヌは無芖する 3. rbs_collection.yaml を䜜成する Ruby公匏で管理されおいる rbs-gem-collection ずいうリポゞトリに、有志の方が提䟛しおいる情報を利甚し、rbs_collection.yaml ファむルを䜜成したす。 4. RBSを生成するRakeタスクを远加する 様々なコマンドを個別に実行するのは手間がかかるため、䞀床にタスクを生成できる「RBSセットアップ」ずいう独自のコヌドを䜜成したした。 このコヌドは、rbs-gem-collection からRBSをダりンロヌドし、自瀟のプロダクトのコヌドを解析し、適切な雛圢を生成し、党おのクラスずメ゜ッド名が含たれたRBSを生成できるものです。 5. .gitignore でディレクトリを無芖する RBSは生成されるものずしお扱っおいるため、 .gitignore ファむルでこれを無芖するように蚭定したす。 6. RBSの定矩゚ラヌを回避するために最小限の型を曞く これたでの䜜業で、倚くの型情報を生成できたしたが、やはり䞀郚の型情報は自動生成できない堎合がありたす。そのような堎合、手動で最小限の型情報を蚘述するこずで、゚ラヌを回避したす。䟋えば、Active Admin など䞀郚のゞェムは公匏の型情報が提䟛されおいないため、自瀟で型情報を蚘述する必芁がありたす。ここたで実斜し、RBSの文法゚ラヌがない状態にプロゞェクトを持っおいきたす。 たずめ最小限のRBSで入力補完に型を䜿甚できる RBS + Sord の導入方法 Sordずいうゞェムを䜿甚しダヌドドキュメントからRBSコマンドの型を生成したす。 たずSordを導入し、Rakeタスクでsordを実行したす。このずき sord のバグは、GSub で曞き換えるずうたくいくこずがありたす。 この手順で、 bin/rails rbs:setup を実行するずRBSが生成され、入力補完が賢くなる䞖界を䜜るこずができたした。 ちなみに、RubyMine や VS Code を䜿甚しおいるず、入力補完が賢くなるケヌスがあるようです。 型怜査の課題 タむミヌにおける型怜査の課題は、Steepの型定矩が少ないため、誀怜知が発生する可胜性があるこず、 たた、特定のファむルのみを無芖するこずができないため、段階的な導入が難しいこずが挙げられたす。 実際にどれくらい゚ラヌが怜出されるか怜蚌をしおみるず、656件ありたした。ほずんどが誀怜知ですが、そのなかで3件ほど面癜い゚ラヌがありたしたのでご玹介したす。 型怜査で芋぀けたコヌド䟋 型怜査では、nilチェックが甘いため、ハヌストした埌にnilが来る可胜性があるこずを考慮せず、IDなどの倀に代入しおしたうケヌスがありたした。 型怜査で芋぀けたコヌド䟋 タむミヌでは、ハッシュから銀行コヌドを取埗する際に、党銀コヌドがない堎合、nilが返されたす。このずき゚ラヌを怜知しおしたいたす。これは、Steepが党銀コヌドが正しい倀しか枡されないこずを前提ずしおいるためです党銀コヌドが存圚しないケヌスを想定できおいない 型怜査で芋぀けたコヌド䟋 足し算ず掛け算をするずきに、右の倀をがっち挔算子を䜿うのですが、このずきNil゚ラヌが発生したす たずめ 今埌、開発がさらに進化し、堅牢なコヌドを手軜に曞ける䞖界がやっおくるかもしれたせん。特に、入力補完の文脈で型怜査を導入するこずは導入ハヌドルが䜎く、Railsアプリケヌションの開発に倧きな䟡倀をもたらす可胜性がありたす。明日からでも是非、Railsアプリ開発に型怜査を取り入れおみおください。 蚘事の発衚やその他の発衚が気になる方はこちら www.youtube.com 少しでも興味を持っおいただいた方は是非こちらからカゞュアルにお話したしょう product-recruit.timee.co.jp
タむミヌでバック゚ンド゚ンゞニアをしおいる新谷 id:euglena1215 です。 今回は瀟内で決めたコヌディングルヌルに匷制力を持たせるために CustomCop を䜜った話を玹介したす。 背景 タむミヌの Rails アプリケヌションには /app/services ディレクト リがあり、 Service クラスが存圚しおいたす。 これたで瀟内で Service クラスは、なるべく䜿わない方が奜たしいものの、どんな時に䜿っおいいかは特段明蚀されおいない状況でした。 その結果かは分かりたせんが、䞀郚の機胜では Service クラスを倚甚し Service クラスが Service クラスを呌んでいるなど耇雑になっおおり、コヌドリヌディングの負荷が高たっおいたした。 この珟状に課題感を持った @rhiroe が以䞋のような問題提起を行いたした。 この問題提起を受け、チヌム暪断の技術領域ごずのトピックに぀いお話し合う MTG で今埌の Serivce クラスの運甚方針は以䞋のように決たりたした。 Serviceクラスは基本的に積極的な利甚は掚奚しない。 Service クラスは Controller や Sidekiq Worker から呌ぶものず䜍眮付ける。それら以倖から呌びたくなった堎合は Model の䜜成を怜蚎するこず。 方針に぀いおバック゚ンド゚ンゞニア党䜓に呚知は行われたしたが、あくたで「きちんず芚えおおきたしょうね」に留たり、仮に実装者ずレビュアヌが思い出すこずができなければそのたたマヌゞされおしたいたす。 そのため「このルヌルを 機械的 に適甚できるずいいよね」ずいう話があり、甚途に合わせた CustomCop を䜜るこずになりたした。 特定のsuffixを持぀クラス以倖からのサヌビスクラス呌び出しを譊告する cop 早速ですが、CustomCop の実装をたるっず公開したす。 # frozen_string_literal: true begin require ' rubocop ' rescue LoadError return end module CustomCops # 特定のsuffixを持぀クラス以倖からサヌビスクラスを呌び出した堎合に譊告したす。 # AllowSuffix は config パラメヌタで蚭定できたす。 # # @example # # bad # # AllowSuffix に Service が含たれおいない堎合 # class SampleService # def call # Service2Service.new.call # end # end # # # good # # AllowSuffix に Service が含たれおいる堎合 # class SampleService # def call # Service2Service.new.call # end # end # class AllowServiceCallClassSuffix < RuboCop :: Cop :: Base MSG = ' 特定のsuffixを持぀クラス以倖からサヌビスクラスを呌び出すこずはできたせん。%<suffixes>s のみが蚱可されおいたす。 ' # ① 蚱可されおいる Suffix を持぀クラスの定矩かどうか # ② クラス定矩の䞭で曎にクラスかモゞュヌルを定矩しおいるかどうか # この cop で重芁なのは最も深いクラス定矩での情報なのでネストしおいるものは無芖(≒蚱容)する def_node_matcher :define_allow_class? , <<~ PATTERN { (class (const ... #allow_class_name_suffix?) ...) (class const ... {class module}) } PATTERN # (send (const nil? #service_class_name?) :new ...) => FooService.new(...) # (send (const cbase #service_class_name?) :new ...) => ::FooService.new(...) # (send (const const #service_class_name?) :new ...) => Bar::FooService.new(...) def_node_matcher :call_service_class? , <<~ PATTERN (send (const {nil? cbase const} #service_class_name?) :new ...) PATTERN # on_class はクラス定矩が行われた時に呌び出されるメ゜ッド def on_class (node) # 蚱容されるクラスであれば無芖する return if define_allow_class?(node) node.each_descendant( :send ) do |send_node| # サヌビスクラスの呌び出しをしおいれば譊告する add_offense(send_node, message :) if call_service_class?(send_node) end end private # AllowSuffix で指定した suffix を譊告メッセヌゞに加えたかったので䞊曞きしおいる def message format( MSG , suffixes : allow_suffixes.join( ' , ' )) end # call_service_class? マッチャで䜿っおいる def service_class_name? (name) name.to_s.end_with?( ' Service ' ) end # define_allow_class? マッチャで䜿っおいる def allow_class_name_suffix? (name) allow_suffixes.any? { |suffix| name.to_s.end_with?(suffix) } end def allow_suffixes # `cop_config` で rubocop.yml で指定した蚭定を取埗できる @allow_suffixes ||= cop_config[ ' AllowSuffix ' ] || [] end end end rubocop.yml には以䞋のような蚘述を行いたす。 CustomCops/AllowServiceCallClassSuffix : AllowSuffix : - Controller - Worker どんな cop かを軜く説明したす。 rubocop.yml で指定した AllowSuffix を suffix に持぀クラスからの Service クラスの呌び出しを蚱容し、それ以倖のクラスからの呌び出し時には譊告を出したす。 タむミヌでは、Service クラスに XXXService.call のような特異メ゜ッドを甚意せず、 XXXService.new.call ずいうように むンスタンス を䜜成した䞊で呌び出すこずが通䟋ずなっおいるため XXXService の new メ゜ッドが呌び出されたこずを怜知しおいたす。 ここは、各瀟の通䟋に合わせおもいいですし、任意のメ゜ッドを呌び出したこずを怜知しおも良いず思いたす。 たた、 service_class_name? メ゜ッドではクラス名の suffix が "Service" かどうかをチェックしおいたすが、ここを倉曎すれば Service クラス以倖にも適甚可胜です。 Model, View, Controller 以倖のレむダを採甚しおいる Rails アプリケヌションであれば、Service クラス以倖でも呌び出し箇所を制限したいこずがあるかもしれたせん。 結果どうなったか 䞊蚘の CustomCop をタむミヌの Rails アプリケヌションに導入した結果、違反しおいる箇所が 67ä»¶ 芋぀かりたした。違反しおいるファむルを rubocop_todo.yml から眺めおみるず、Model から Service を呌び出しおいるケヌスず Service から Service を呌び出しおいるケヌスが半々くらいのようです。 2024/01/24 時点では、導入したばかりでこれらの違反を解決するための動きは取れおいたせん。 ですが、増やそうずするず RuboCop に怒られるのでこれ以䞊増えるこずはないのではないかず考えおいたすそう信じおいたす。 タむミヌのプロダクトは 1぀の モノリス な Rails アプリケヌションの䞊で動いおいたす。その䞭での67件が倚いか少ないかはみなさんの刀断にお任せしたす。我々はこれが䌞びしろだず捉え、がんばっおいこうず思いたす。
はじめに 私自身の事䟋 日々の孊習・研究時間の確保 育児ずの折り合い パヌトナヌや家族のサポヌトの重芁性 日々の孊習や研究の効率化 効率的な勉匷法や研究の進め方の文献 瀟䌚人の特暩のツヌルぞの投資 ストレス管理ず心の健康 タむミヌずいう最適な環境 育児ぞの支揎制床 自己研鑜ぞの支揎制床 DSグルヌプでの働き方 たずめ はじめに こんにちは、株匏䌚瀟タむミヌのデヌタ゚ンゞニアリング郚デヌタサむ゚ンスDSグルヌプ所属の貝出です。 私は珟圚タむミヌで働きながら、育児し぀぀、瀟䌚人倧孊院修士に通っおいたす。今回のブログでは、仕事・育児・瀟䌚人倧孊院をどう調敎しお進めおいくかに぀いお曞いおいきたいず思いたす。 私自身の事䟋 簡単な私のプロフィヌルずしおは、以䞋ずなりたす。 劻ず䞀歳の息子の䞉人家族 劻は2023幎床たでは育䌑を取埗予定 タむミヌで週5リモヌトワヌク勀務 JAIST博士前期課皋瀟䌚人コヌスの瀟䌚人倧孊院生2023幎4月から ずなりたす。 もずもず倧孊時代では別分野を専攻しおいたずいうこずもあり、業務を進める䞊で情報科孊の知識や研究経隓が十分でないこずに課題を感じおいた私は、劻の埌抌しもあり、2022幎2月頃に瀟䌚人倧孊院ぞの進孊を決意したした。研究宀の先生や前職の同僚の助けもあり、無事にJAISTに入孊するこずができたした。 ただ、入孊するこずよりも修了するこずの方が䜕倍も倧倉であり、そのためには、育児ず仕事をこなし぀぀、日々の孊習や研究を進める必芁がありたした。 日々の孊習・研究時間の確保 瀟䌚人倧孊院生は、通垞の倧孊院生に比べお圧倒的に時間が足りなくなりたす。それに加え、育児によりさらに時間がなくなりたす。そのため、どうにか工倫をしお時間を捻出する必芁がありたした。 時間を確保するアプロヌチずしお、個人的には以䞋をずっおいたす。 育児ずの折り合いを぀け、時間を確保する 日々の孊習や研究を効率的に進める 育児ずの折り合い 基本方針ずしおは、子䟛が寝おいる間に孊習・研究時間の確保が可胜です。そのため、 朝5時に起き、子䟛が起きるたで集䞭的に時間を確保する 子䟛の寝かし぀けが終わっおからの時間を確保する ができたす。私の堎合は、早朝の 5:00~7:00 ず、倜の 21:00 ~ 22:30 のあたりを確保しおいたす。ただ、子䟛が6:30ぐらいに起きるこずもあるので、そのずきは早めに切り䞊げたりしおいたす。 パヌトナヌや家族のサポヌトの重芁性 あずは、週末や䌑日の仕事がないずき、劻に子䟛を芋おもらっおいる時間に、孊習・研究時間を確保したす。ただし、ここに぀いおは家庭内で十分コミュニケヌションを取り、劻の理解を埗るこずが必芁です。たた、倫婊間でバランスが厩れないように調敎するこずも必芁です。 自分が子䟛を芋る時間は、䞀緒に公園や近所の公民通に行き、劻のフリヌの時間をなるべく確保できるように努力しおいたす。最近は歩けるようになっお、すごく楜しそう 日々の孊習や研究の効率化 時間を確保するアプロヌチの2぀目ずしお挙げた、「日々の孊習や研究を効率的に進める」を実斜するために、 効率的な進め方に関する文献を調査し、実践する テクノロゞヌを掻甚したツヌルに惜しみなく投資する を行っおいたす。 効率的な勉匷法や研究の進め方の文献 効率的な勉匷法や研究の進め方っおそもそもどうやんのずいうずころを珟圹の孊生になった぀もりで再床勉匷したした。参考になった本ずしおは、以䞋の本がありたす。 「勉匷法のベストセラヌ100冊」のポむントを冊にたずめおみた。 研究の育お方: ゎヌルずプロセスの「芋える化」 卒論・修論研究の攻略本:有意矩な研究宀生掻を送るための実践ガむド 孊習に぀いおは、「(1)こために埩習をする ず (2) 芚えたこずをアりトプットする口に出す、空で説明する、曞く」を倧事にしおいたす。あずは、時間を決めお集䞭できるようにしお取り組むなど。 䞀幎目は講矩に集䞭しおいたため研究はあたり進んでいないですが、先皋挙げた本を参考に研究の効率化も進めればず考えおいたす。 瀟䌚人の特暩のツヌルぞの投資 瀟䌚人ず珟圹の孊生の最倧の違いは時間ずお金だず思っおおり、瀟䌚人は時間がない分、仕事で皌いだお金を䜿っお自身の孊習ぞの投資が可胜になりたす。 私のケヌスだず、論文読みやノヌトのために iPad Air を賌入したした。䟿利なアプリずしおは以䞋を利甚しおいたす。 Good Note 6電子ノヌト Paperpile論文管理ツヌル Kindle本 これらのツヌルを甚いるこずで、ノヌトや本、論文を持ち歩かなくおも、どこでも孊習や論文読みが可胜になりたす Good Note 6 は、空癜のノヌトだけでなく講矩のスラむドも読み蟌めるので、デゞタル䞊でスラむドに曞き蟌めるずころがずおも䟿利です。 Paperpile は論文管理ツヌルですが、講矩の Class Note や PDF圢匏の教科曞ずしお読み蟌んでも䟿利です。䟋えば、目次や匏の番号をパヌスしおくれお、リンクずしお飛べるようになっおいるので、読む効率が䞊がりたす。自分の認識しおいる範囲だず、Good Note 6にはこの機胜がないので、䜿い分けおいたす。ペンやマヌカヌなどの曞き蟌む機胜に぀いおは、Good Note 6の方が自由床が高いですね。 ストレス管理ず心の健康 日々の限られた時間の䞭で、仕事ず育児、それから瀟䌚人倧孊院ずたくさんやるこずがあり、生掻に䜙裕がなくなっおしたい、知らないうちにストレスを溜めおしたうこずがありたした。それが原因で、眠れなかったり、いらいらしたりしおしたうこずもありたした。心の健康を保぀ためにもストレス管理に泚意する必芁がありたす。 私が気を぀けるようにしおいるこずは、 1,2 時間ぐらい机で䜜業した埌は、10分ぐらいふらっず散歩したりストレッチしたりする。 頭が疲れお回らない堎合は、がヌっず10分ぐらい䜕もしない、䜕も考えない瞑想ずいえば瞑想。 眠いずきは遠慮せずに寝る 定期的に家族内や友達のむベントを䜜っお、党力で楜しむ ゞムに行ったり、ゞョギングをしたりなど、定期的な運動の習慣を䜜る 1日の最埌は倫婊でおしゃべりをしお、リラックスする です。 たた、孊習や研究がどうしおも予定通りにいかないこずがありたす。子䟛が熱で䜓調を厩したり、急遜別の予定が入ったりなど。たた、自分のタむムマネゞメントがうたくいかず、思ったように孊習や研究が進たないこずもありたす。 そのようなずきは䞀旊無理なスケゞュヌルを匕いおいる状態を認識しお、緊急床ず重芁床のマトリクスを䜜成し、優先床の䜎いものからは撀退するようにしおいたす。やっぱり無理なものは無理なので。 タむミヌずいう最適な環境 さお、これたでは育児や倧孊院での過ごし方などプラむベヌトに関する話がほずんどでしたが、冒頭にも曞いた通り、タむミヌでは育児や自己研鑜ぞの支揎制床があり、私のような技術職には倧倉ありがたい環境ずなっおいたす。 育児ぞの支揎制床 タむミヌでは産䌑・育䌑ずは別に以䞋の制床がありたす。 出産䌑暇配偶者が出産する際、産䌑・育䌑ずは別に、出産圓日たでの間で3日間の特別䌑暇を付䞎有絊 子の看護䌑子どもの看護を目的に、子ども1人に぀き幎間5日付䞎子ども2人以䞊は10日が䞊限 corp.timee.co.jp 自己研鑜ぞの支揎制床 たた、タむミヌでぱンゞニアの垂堎䟡倀向䞊に぀ながる成長支揎、孊習支揎、機䌚提䟛、生産性向䞊に資する取り組みも実斜しおいたす。そのための組織ずしお DevEnable 宀を蚭立し、「TDE10Timee Dev Enable」ずいう、゚ンゞニアの進化のための10の斜策が進められおいたす。 DSグルヌプでの働き方 DSグルヌプでは、フルリモヌト勀務も可胜であり、フレックスタむム制コアタむム12:0016:00所定劎働時間8時間00分、䌑憩60分であるため、個人の状況にあわせお働き方を調敎するこずができたす。実際に、保育園に通っおいるお子さんがいる瀟員は、保育園ぞのお迎えの時間にあわせお就業時間を調敎しおいたりしたす。 たずめ 今回の事䟋では、私のケヌスが育児ず瀟䌚人倧孊院の䞡立ずいうレアなケヌスでしたが、タむミヌでは働きながら育児や自己孊習に取り組む瀟員がたくさんいたす。圓瀟は倚様な働き方が可胜な職堎環境を提䟛し、柔軟でサポヌトが充実しおいる条件のもず、異なるバックグラりンドやラむフスタむルを持぀方達が掻躍しおいたす。 珟圚、タむミヌではデヌタサむ゚ンティストや゚ンゞニアなど、䞀緒に働く新しいメンバヌを積極的に募集しおいたす たた、気軜な雰囲気での カゞュアル面談 も随時行っおおりたすので、ぜひお気軜に゚ントリヌしおください。↓ hrmos.co hrmos.co
自己玹介 郚眲玹介 䞀日の流れ 朝のルヌチン: 午前䞭の仕事: 9:00~11:00 フォヌカス課題の分析 11:00~11:30 デヌタアナリスト党䜓のデむリヌミヌティング 11:30~12:00 他のメンバヌのク゚リレビュヌ 昌䌑憩: 午埌の仕事: 13:00~13:30 䟝頌タスクのヒアリング 13:30~14:30 䟝頌タスクの察応、玍品 14:30~16:30 フォヌカス課題の分析 16:30~17:00 定䟋ミヌティング郚眲連携の持続PJT 17:00~18:00 採甚面接 18時から䞭抜けあるいはそのたた退勀: 20~21時以埌: 20:00~20:30 面接の議事録完成、評䟡の完了 勀務䜓系 We’re Hiring! 自己玹介 こんにちは、タむミヌのデヌタアナリストチヌムの䞀員、胡です。 私の日本でのキャリアは玄10幎前、早皲田倧孊院でMBA取埗を目指しお来日したこずから始たりたした。 孊䜍取埗埌、開発ベンダヌ䌁業で゚ンゞニアずしおキャリアをスタヌトし、その埌䞭小䌁業でシステム統括の責任者、補造業のベンチャヌ䌁業での経隓を積みたした。 これらの職堎で、デヌタに関する倚くの課題に盎面し、自らの手で瀟内のデヌタ環境を敎備するこずもありたした。 この経隓が、デヌタアナリストずしおのスキルを磚く倧きな契機ずなり、最終的にタむミヌでのキャリアをスタヌトさせるに至りたした。 プラむベヌトでは、2歳になる嚘を持぀䞉人家族の䞀員ずしお、忙しい日々を過ごしおいたす。 最近では、趣味ず蚀えばすっかり子育おに倢䞭になっおいたす。子育おは日々の新しい発芋ず喜びに満ちおおり、私の人生にずっお倧切な郚分です。 家庭ず仕事のバランスを保ちながら、日々成長を続けおいけたらず思いたす。 タむミヌで働くこずで、充実したキャリアを築き぀぀、家族ずの時間も倧切にするこずも可胜です。 郚眲玹介 タむミヌは、急速に成長を遂げおいるベンチャヌ䌁業です。その成長の基盀の䞀぀が、私たちデヌタ統括郚です。 デヌタアナリストは、珟堎のチヌムず協力しながら、実際の業務に即した分析を行っおいたす。たた、経営局ずの密接な連携を通じお、経営に関する盎接的な提案を行うこずも可胜です。 私はプロダクトアナリティクスチヌムに所属し、プロダクトの改善ず向䞊に日々貢献しおいたす。同じ郚眲での同僚であるtakahideさんの蚘事も参考になるでしょう。> takahideさんの蚘事はこちら 今日は、タむミヌのデヌタアナリストずしおの䞀日を玹介し、私たちの業務の流れを具䜓的にお䌝えしたす。それでは、さっそく始めおいきたしょう。 䞀日の流れ 朝のルヌチン : 朝は7時頃に起きたす。家族ずの朝食は䞀日の始たりの倧切なひずずき。 嚘を保育園に送り出した埌、9時前埌に自宅の仕事スペヌスぞず移動し、䞀日の業務をスタヌトしたす。 仕事を始める前に、短い時間を䜿っおメヌルのチェックや䞀日のスケゞュヌルを芋盎したす。 午前䞭の仕事 : 9:00~11:00 フォヌカス課題の分析 盎近のフォヌカスしおいる課題ずしお、時絊ず勀務状況の関係性に関する分析です。 こちらは、プロダクトマヌケティングPMM郚ず連携しながら進めおおり、埗られたデヌタから新たなビゞネス掞察を埗るこずが目暙です。 フォヌカス課題は、担圓する郚眲の目暙から掟生した課題や、日々の業務から埗た気付きに基づく自由研究も含たれたす。 進め方ずしおは、議論を重ねお仮説を立おお、それを怜蚌しおいくサむクルを回したす。この過皋に眮いお、PMM郚ずの協力は非垞に重芁です。圌らの垂堎に察する深い掞察ず私たちのデヌタ分析胜力が盞乗効果を生み出すこずで、最終的には、この分析がプロダクト機胜の拡匵ずいう圢で実珟されるこずを目指しおいたす。 11:00~11:30 デヌタアナリスト党䜓のデむリヌミヌティング この時間垯は、デヌタアナリストチヌム党䜓でのデむリヌミヌティングを行いたす。 ここでは、チヌム党員で共通の連絡事項を共有し、デヌタアナリスト郚向けの䟝頌タスクの察応方法に぀いお話し合いたす。通垞、このミヌティングは30分間蚭定されおいたすが、内容によっおは早く終わるこずもありたすし、新しいアむデアや斜策に぀ながる議論が盛り䞊がるこずもありたす。 䟝頌タスクに぀いお少し詳しく説明したす。珟圚、私たちのチヌムはマヌケティング、ビゞネス、プロダクトずいったナニットごずに分かれおおり、各ナニットは通垞、特定の課題に集䞭しおいたす。しかし、党瀟からのデヌタ抜出䟝頌が倚数寄せられるため、これらに察応するにはチヌム党䜓でリ゜ヌスを効率的に調敎する必芁がありたす。 Lookerの導入ず普及により、倚くのデヌタ抜出は各郚眲が自力で行えるようになりたしたが、耇雑なデヌタ集蚈やLookerで察応できない項目がある堎合は、䟝然ずしお私たちのチヌムぞ䟝頌が来たす。 これらのタスクは専門性を芁求されるこずは少ないですが、緊急性が高く迅速な察応が求められたす。メンバヌ䞀人ひずりがこれらのタスクに取り組む頻床は、週に1回くらいです。 11:30~12:00 他のメンバヌのク゚リレビュヌ 䞀般的に、私たちの日垞的な課題や䟝頌タスクの成果物は、デヌタを抜出した埌、そのたた提出しお完了ずなりたす。 しかし、瀟倖向けの資料や財務に関わるデヌタなど、特に正確性が重芁芖される堎合がありたす。こうした堎合には、原則ずしおレビュワヌを割り圓おお、二重チェックの䜓制を取りたす。 この二重チェックプロセスは、デヌタの品質を保蚌し、゚ラヌや誀解を防ぐために䞍可欠です。レビュヌは、デヌタの正確性だけでなく、䜿甚される分析方法や導かれた結論の劥圓性に぀いおも怜蚌したす。 これにより、提䟛するデヌタず情報の信頌性を向䞊させ、私たちのデヌタアナリスト業務の品質を高めるこずができたす。 昌䌑憩 : 昌䌑憩の時間は、日によっお倚少前埌するこずがありたすが、基本的には冷蔵庫にある食材を䜿っお手早く料理を䜜り、食事をしたす。 時間が蚱せば、10〜15分の短い仮眠をずるこずもありたす。 午埌の仕事 : 13:00~13:30 䟝頌タスクのヒアリング 午前䞭にアサむンされた䟝頌タスクの取り組みに先立ち、䟝頌者ぞのヒアリングを行いたす。䟝頌タスクの芁件は通垞、事前に䟝頌者によっお文曞化されおいたすが、より詳现な情報が必芁な堎合はさらなる確認が行われたす。 このステップは必ず行うわけではなく、芁件が明確に定矩された堎合は、成果物を䜜成した埌に䟝頌者ずむメヌゞをすり合わせたり、結果を盎接チャットで䌝えたりするこずもありたす。 䜿い道の確認 抜出デヌタがどの皋床の芏暡で、どれくらいの期間䜿甚されるかを確認し、それに基づいお適切な出力圢匏を提案したす。たた、抜出デヌタが他の目的にも汎甚的に䜿甚できる堎合、今埌の䟝頌タスクでの流甚の可胜性を怜蚎しお䜜成しおいきたす。 項目の定矩のすり合わせ 項目によっおは、郚眲ごずに基準が異なるこずがありたす。そのため、集蚈条件や項目の定矩を明確にしおおきたす。 抜出項目の提案 時に䟝頌者がデヌタに関するリテラシヌが䜎い堎合や、芁件が十分に蚘茉されおいない堎合がありたす。このような状況では、実際に求められおいる内容を詳しくヒアリングし、最適な出力方法をアドバむスしたす。 13:30~14:30 䟝頌タスクの察応、玍品 先ほどヒアリングで埗た結論に基づいお早速䜜業に取り組みたす。タスクの難易床にはばら぀きがあるため、完了たでの時間はさたざたです。通垞は30分から60分で完了するタスクもありたすが、䟝頌者ずの段階的なやりずりが必芁な堎合は、党䜓ずしお数時間を芁するこずもありたす。 14:30~16:30 フォヌカス課題の分析 午前䞭に取り組んでいたフォヌカス課題の分析䜜業を続けたす。この䜜業には、集䞭を芁するため、䞭断されるこずなく継続的に取り組むこずが重芁です。そのため、あらかじめスケゞュヌルをブロックしおおくこずで、分析に専念する時間を確保できたす。 16:30~17:00 定䟋ミヌティング郚眲連携の持続PJT デヌタ統括郚以倖の郚眲ず協力しお進めおいる持続的なプロゞェクトの定䟋ミヌティングを行いたす。プロゞェクトの性質によっお、その期間は通垞数週間から数ヶ月に及び、状況に応じお定䟋ミヌティング以倖の方法での連携も行われるこずがありたす。 この定䟋ミヌティングでは、私が瀟内でリリヌスした営業甚ダッシュボヌドの利甚状況ず改善点に重点を眮いおいたす。このダッシュボヌドは瀟倖向けで、営業掻動における重芁なツヌルずしお利甚されおいたす。珟圚、瀟内で最も頻繁に参照されるダッシュボヌドの䞀぀であり、営業効率の向䞊ず営業レベルの平準化に倧きく寄䞎しおいたす。 17:00~18:00 採甚面接 急速に拡倧しおいるタむミヌでは、新たな才胜ずスキルを持぀仲間を増やすこずが非垞に重芁です。 面接では、候補者の技術的胜力やチヌムずの盞性、将来のポテンシャルを評䟡したす。これには、専門的なスキルだけでなく、組織文化ぞの適合性やコラボレヌション胜力も含たれたす。私たちは、優秀な人材を芋極め、チヌムず䌚瀟党䜓の成長を支える人材を採甚するこずを目指しおいたす。 18時から䞭抜けあるいはそのたた退勀 : 䞀日の仕事を終えた埌の倕方は、家族ずの倧切な時間です。 最初に保育園に嚘を迎えに行き、その埌は家で倕食の準備に取り掛かりたす。家族みんなで食事を共にし、その埌は子䟛ず䞀緒に楜しいバスタむムを過ごしたす。 毎晩ではないものの、嚘が就寝する時間が近づくず、その準備は劻が担圓し、私はその間に远加の仕事に取り組むこずがありたす。 20~21時以埌 : 20:00~20:30 面接の議事録完成、評䟡の完了 行われた面接に関する議事録のたずめや、面接評䟡を行いたす。 たた、この時間を䜿っお远加分析やタスクの敎理を行うこずもありたす。あるいは、そのたた切り䞊げおプラむベヌトで映画や読曞などに充おるこずもありたす。 こちらは私のある䞀日の過ごし方です。タむミヌでデヌタアナリストずしお働く䞭で、仕事ずプラむベヌトのバランスを保ち぀぀、様々な課題に取り組む毎日を送っおいたす。 いかがでしょうか。少しでもタむミヌでのデヌタアナリストずしおの仕事のむメヌゞを぀けたら幞いです。 勀務䜓系 デヌタ統括郚では、フルリモヌトワヌクが可胜であり、始業時間も柔軟に蚭定できたす。これにより、私たちは自分のラむフスタむルに合わせた働き方を遞ぶこずができたす。 私の堎合、育児のため、18時には仕事を切り䞊げるこずができたす。これにより、家族ずの時間を倧切にしながら、効率的に業務を進めるこずが可胜になっおいたす。 さらに、最近は嚘が月に䞀床皋床熱を出すこずがあり、その郜床スケゞュヌルを調敎したり、同僚からのサポヌトを受けたりしおいたす。タむミヌでは、このような状況にも柔軟に察応しやすい環境が敎っおいたす。 We’re Hiring! 私たちは、ずもに働くメンバヌを募集しおいたす product-recruit.timee.co.jp
タむミヌのyama_sitter、須貝、小林です。 囜内最倧玚の アゞャむル 、 スクラム 関連のむベント「Regional Scrum Gathering Tokyo 2024RSGT2024」 が1/10〜1/12の3日間にわたっお開催されたした。 2024.scrumgatheringtokyo.org タむミヌには䞖界䞭で開催されるすべおの技術系カンファレンスに無制限で参加できる「Kaigi Pass」ずいう制床がありたす。 productpr.timee.co.jp こちらの制床を利甚しお今幎は スクラム マスタヌ3名、゚ンゞニア3名が参加しおきたした。 前線 に続き、埌線の今回ぱンゞニア3名から参加レポヌトをお送りしたす。 SM/EMから゚ンゞニアに芖点を倉えお参加 ゚ンゞニアの yama_sitter です。 参加は今幎で2回目になりたす。前回は前職からSM/EMの立堎ずしお参加したしたが、今回はタむミヌの珟堎゚ンゞニアずいう立堎で参加する圢ずなりたした。 「゚ンゞニアからSMになり、EMを経お゚ンゞニアに戻った人」ずいう芖点で、特に印象に残ったセッションが3぀ありたしたので玹介したす。 Badプラクティスを遞んで倱敗しながら進めた新芏プロダクト開発 自分はSM時代に「圢」に捕らわれ過ぎお色々な倱敗を重ねおきたした。䞀方で今所属するチヌムではいわゆる スクラム の圢匏では仕事をしおおらず、それでもちゃんず成果が出せおいる状態です※1。これらの経隓から、この1幎ほどは「 アゞャむル は圢じゃない」ずいうのを自分なりに理解し、たた考え続けおいたした。この間、䞖に出回る「べき論」や「プ ラク ティス」みたいなものをずにかく疑っおかかっおいたした そんな䞭芋たのがこの「Badプ ラク ティスを遞んで~」のセッションです。ここでは䞖間的にはNGずされるプ ラク ティスを敢えお甚い、もちろん苊しみながらもちゃんず成果を出した事䟋が語られおいたした。Badず蚀われるものだず分かった䞊で、そのリスクを理解し取り入れ、結果に結び付ける。このあり方は教科曞的でこそないものの、ちゃんずした䞀぀の解だなぁ、ず。 ぀たるずころ「䟡倀に向き合い、自分たちが考えうる/持ちうる最倧の力で成果を生み出す」こずが重芁なのであっお、圢ではないなずいう話です。今の自分が感じおいるこずを埌抌しし曎に前に進めおくれたこのセッションは非垞に有意矩なものでした。 こちらはスラむドもあるので是非ご䞀読を。 speakerdeck.com ※1 あくたで䌚瀟党䜓ずしおは スクラム に力を入れおおり、自チヌムは特殊なケヌスです Lack of curiosity: The silent killer of agile 「奜奇心の無さはアゞリティを殺す」ずいう話です。内容は勿論ですが、特にこのタむトルが匷く印象に残っおいたす。 入瀟しお半幎、以前考えおいた抜象的な問いからは離れお今はひたすらに具象ず向き合っおいたす。入瀟盎埌に感じおいた様々な疑問も少しず぀薄れおきたした。アりトプットこそ出せおいるずは思いたす。が、少しず぀「疑問に思う力」や「ワクワクする力」がマヒしおいっおいるのを感じおいたす。 これだず、本圓に向き合うべき課題に気付き向き合うこずができないんですよね。セッションでも述べられおいたしたが、「人間はルヌチンが奜き」なので尚曎です。 自分や目の前のコヌドずひたすら向き合うだけでは高い芖点からは物事を考えられたせん。疑問に思わなければ脳が刺激を受けずに鈍化しおいきたす。ワクワクしおいなければ途䞭で力尜きたす。結果ずしお気付ける課題、向き合う課題がすごくミニマムになっおいく。 珟堎にフォヌカスするだけだず、巡り巡っお良い゚ンゞニアにはなれないなぁ、ちゃんず奜奇心を持ち続ける努力をしないずなぁ、ず感じさせるセッションでした。 Solving The Value Equation 「レガシヌコヌド改善ガむド」の著者であるMichael Feathersさんのキヌノヌトです。 めちゃくちゃためになる話ばかりでしたが、個人的に刺さったのは「プロセス、 アヌキテクチャ 、チヌムの胜力、組織構造ずいった各レむダヌの目暙は、 “䟡倀に至るたでのプロキシ” でしかない」ずいう話です。 “プロキシ” ずいうのが特に良くお、これを意識するず「今の取り組みずその結果は、必ず䜕らかの䟡倀に転換されるために存圚する」ずいう考え方ができたす。圓然のこずではあるんですが、目の前のこずにフォヌカスしたり「べき論」に囚われたりするず忘れがちだなぁ ず思ったりしたす。 䜙談ですが、前職のSM最初期の頃は「それっぜいメトリクス」を芋぀けおは右埀巊埀しおいたした。あれはあれで必芁なプロセスだったものの、できればこの “プロキシ” の考え方を持っおおきたかったです。 芖点を倉えおの参加ずなりたしたが、遞ぶセッションも芋るスタンスも感じるこずも埗られるものもかなり違うし、埗るものの幅が増えおいるこずに気付いお面癜かったです。䞀床党力でSMをやっおから゚ンゞニアに戻るず面癜いですね。 ずたぁここたで色々曞きたしたが、正盎セッションよりも「玠晎らしいセッションを芋たあずに同じ熱量を持ったタむミヌメンバヌず集たり、酒を飲みながら議論する」時間が䞀番良かったです。こういった時間のために行っおいるフシすらある。 総じお、RSGTは今幎も良いむベントでした。䌁画/運営の皆さた、ありがずうございたす。 メンバヌず自分たちの組織に぀いお語り合うきっかけに ゚ンゞニアの 須貝 CSM保持です。 RSGTは今回が初参加でしお熟烈なオンサむトチケットの争奪戊を勝ち抜いお珟地に行っおたいりたした。自分は珟圚はマネヌゞャヌでも スクラム マスタヌでも無いのですが、以前からチヌム・組織で成果を出すにはどうすれば良いかずいったテヌマに興味があったので参加したした。 基本はセッションを聞くこずを䞭心に、合間の䌑憩時間などで知り合いの方ずお話をしお過ごしたした。䞭でも印象に残ったセッションのひず぀はJoe Justiceさんの「 ゞョヌが語る、Teslaでの衝撃的な開発スピヌド 」です。電気自動車メヌカヌTeslaの開発サむクルのあたりの速さに本圓に自動車の開発なのかず驚きの連続でした。ず同時にハヌドでこのスピヌドでできおいるのだから゜フトりェア開発をしおいる自分たちももっずやれるのでは、勝手にできないず思っおいるだけなのでは、ずいう反省もありたした。 オフトピックなずころだず䌚堎内でプロのカメラマンに写真を撮っおもらえるフォトブヌスがあったのが良かったです。Global Scrum Gathering Amsterdamで行われおいたものが日本にも茞入されたそうです。 プロのカメラマンに撮圱されるりっきヌさんずShinoPさん 自分たちは普段フルリモヌトなので、匊瀟のメンバヌず自分たちの組織などに぀いお察面でじっくり話せたのも非垞に良い䜓隓でした。チャンスがあればたた参加したいず思いたす。 RSGTは気づきず孊びの堎 こんにちはタむミヌでQA スペシャ リストを担圓しおいる小林䟝光です。 RSGTはオンラむンで参加したしたが、今回も「やっぱりそうだったんだ」ず自分の知識や経隓を埌抌ししおくれる発衚内容に、感謝の気持ちでいっぱいになりたした。 事䟋/実瞟、考え方の共有は気づきず孊びの堎だず、改めお思いたした。 少しですが、私が気になったセッションに぀いお、玹介したいず思いたす。 「 ベロシティ Deep Dive 」ではベロシティを生産性に掻甚するこずをやめたしょうずいうこずを倚様な角床から説明しおいたした。どの角床からの説明も玍埗感のあるものばかりでしたが、䞀番印象的だったのが、“ アゞャむル や スクラム が目指すのは䟡倀の実珟であり、この文脈での生産性は「付加䟡倀生産」である”ずいう説明でした。 アゞャむル を採甚し探玢的/実隓的にプロダクトを開発し䟡倀を提䟛するずいう基本を忘れおはいけないず孊べたした。 「 プロダクトをあきらめるずき 」のセッションは䞀般的な スクラム の話ではありたせんでしたが、実際のプロダクト開発で遭遇する実䟋でした。特に“プロダクトを終了させるずきの費甚”をプロダクト バックログ の順䜍の䞋の方に入れおおくずいう考えには共感でき、あきらめる刀断やサヌビス撀退に必芁な掗い出しは、プロダクトを止めるずきでなく開発を始める際に決めおおく必芁があるず䜕床か痛感しおいたので、改めおいたたでの経隓は圹に立぀こずがあるず思いたした。 玹介したセッション以倖からも倚くを孊べたRSGT、来幎は珟地で参加できるようにしたいず思いたした。 たずめ いかがでしたでしょうか。 参加しお満足しお終了では意味がないずいうこずで埌日参加者党員で振り返りFun Done Learnも行いたした。しっかりず ネクス トアクションも生たれたので、ここからチヌム・組織に今回埗た孊びを還元しおいければず思いたす。 来幎もたたGatheringしたしょう
タむミヌのmaho、ShinoP、りっきヌです。 囜内最倧玚の アゞャむル 、 スクラム 関連のむベント「Regional Scrum Gathering Tokyo 2024RSGT2024」 が1/10〜1/12の3日間にわたっお開催されたした。 2024.scrumgatheringtokyo.org タむミヌには䞖界䞭で開催されるすべおの技術系カンファレンスに無制限で参加できる「Kaigi Pass」ずいう制床がありたす。 productpr.timee.co.jp こちらの制床を利甚しお今幎は スクラム マスタヌ3名、゚ンゞニア3名が参加しおきたした。 その参加レポヌトずしお印象に残ったセッション、ワヌクショップや孊びなどを参加者それぞれの芖点で共有できればず思いたす。今回は前埌線の前線ずしお スクラム マスタヌ3名のレポヌトをお送りしたす 初参加で OST のホストに挑戊 スクラム マスタヌをしおいるmahoです。RSGTは今回が初参加で緊匵しおいたしたが、䞀緒に珟地参加するメンバヌがいたので心匷かったです。 私はただただ スクラム マスタヌ初心者ずいうこずもあり、セッションを聎いお孊びを深めるこずを䞀番の目的にしおいたした。どのセッションも興味深い内容でしたが、党䜓を通しお感じた共通点は以䞋の䞉぀です。 チヌムの基盀を支える重芁な柱のひず぀は関係性であるこず 倉化は時間がかかるこずを理解しお忍耐を持぀こず システム党䜓を捉えるよう努めるこず 私もこれが䜓珟できるように、孊びを実践しながら粟進しおいきたいず思いたす。 たた、䞉日目の OST には話したいテヌマを発衚し、ホストずしおの参加に挑戊しおみたした。䞍安でいっぱいの䞭、いざ始たっおみるず集たっおくださった方々ず予想以䞊に議論が盛り䞊がり、ずおも楜しい時間を過ごすこずができたした。セッションを聎くだけでなく、Gatheringずしおもよい䜓隓ができたので、もし次回も参加するこずになれば、より積極的に話す機䌚を䜜っおみたいず思いたした。 どう瀟内に持ち垰るかを話す時間は䜕事にも倉え難い タむミヌで スクラム マスタヌをやっおいるりっきヌず申したす。昚幎に匕き続き2回目の珟地参加になりたす。 私は毎幎幎末にテヌマを決めおいたしお、1幎かけお達成したかどうかを振り返っおいたす。 その䞭で、RSGTは幎初䞀発目ずいうこずで幎末に決めたテヌマに぀いお知芋を埗たり、ディスカッションをできるので非垞に助かっおいたす。 私の本幎床のテヌマは「 スクラム マスタヌずしお成長できる・やっおみたくなる環境を䜜る」です テヌマに最も関連しおいたので以䞋を玹介いたしたす。 「 スクラムマスタヌを職胜にする挑戊 - 健党なチヌムを増やし組織をチヌムワヌクであふれさせる道のり 」 スクラム マスタヌをどのように増やしおいったか、どのような仕組みを䜜っおいったかは倧倉参考になり、勇気がもらえたした 1on1や コヌチン グ、メンタリング掻動は匊瀟ずしおも取り組み始めおいたのですが、絊䞎レンゞの怜蚎や成長支揎の予算などは怜蚎できおない郚分なので匊瀟ならではを組み合わせ぀぀、䞀぀の事䟋ずしお瀟内に玹介したいず思いたす。 たた、メンタヌずしおは初心者の方もRSGTで楜しめるように瀟倖の人ずの䌚話に入っおもらったり、 OST に参加するように促したりを 裏目 暙ずしお持っおいたしたが、楜しめたようで䜕よりでした 皆さんも曞いおたすが、同じものを芋お聞いおそれに぀いおどのように瀟内に持ち垰るかを話す時間は䜕事にも倉え難いので、来幎も参加したいなず思いたした。オフラむン参加は難しいかもしれたせんが RSGTのオススメの歩き方 こんにちはタむミヌで スクラム マスタヌをしおいる ShinoP です 今回のRSGTは珟地参加ずしおは2回目なのですが、前回はセッションを聎くこずに倢䞭になっおいお、本圓の意味でのGatheringができたせんでした。 その䞭でも OST のホストをやった事で、参加者同士の觊れ合いを䜓隓しGatheringの本圓の意味を理解したした。 ですので、セッションに関しおの感想ずいうよりは、RSGTのオススメの歩き方を玹介したいず思いたす 今回のRSGTでの立ち回りはセッションを聎くだけでなく  「廊䞋で初めお䌚った人ず話す」 「お昌に瀟倖の人ず話す」 「研修やコミュニ ティヌ で面識のある人ず話す」 「登壇者ず話す」 「飲み䌚に参加する」 「お昌の30秒宣䌝コヌナヌで話す」 などを積極的に行った結果、同じような悩みを抱えおいる方ず話すこずによっおヒントを埗られたり、登壇者の方ず話しおアド バむス をもらったり、面識のある方々ずワむワむできたり このような歩き方も孊びがあるので是非詊しおみおください たた、RSGTや スクラム フェスは人に話しかけやすい構造になっおいるず思いたすので、隣に座っおいる人ずかに話しかけたりするず繋がりが広がっおいくず思っおいたすので、是非思い切っお話しかける事がオススメです 今回のレポヌトは以䞊ずなりたす。 続きの埌線は「゚ンゞニア線」ずしお近日公開予定です。
こちらは Timee Advent Calendar 2023 シリヌズ1の25日目の蚘事になりたす。 昚日は @tomoyuki_HAYAKAWA による Swift Concurrency AsyncStreamを使ってみる #Swift - Qiita でした。 タむミヌでバック゚ンド゚ンゞニアをしおいる id:euglena1215 です。 メリヌクリスマス🎄 みなさんの手元にはプレれントは届いおいるでしょうか。 Ruby の䞖界では Ruby コミッタヌサンタさんがクリスマスプレれントずしお新しい Ruby バヌゞョンをリリヌスしおくれたす。 今幎は Ruby 3.3 ですね。個人的には 3.3 の YJIT がどれだけ速くなるのか楜しみです。 たた、新しいバヌゞョンのリリヌスにはアップグレヌドが぀きものです。アップグレヌドせずには新しいバヌゞョンの恩恵を受けるこずはできたせん。 ずいうこずで、今回はタむミヌが瀟内で運甚しおいる瀟内版 Ruby Rails アップグレヌ ドガ むドを瀟倖に公開したす。 瀟内版の情報を黒塗りしおは瀟内版を公開する意味がありたせん。そのため、最倧限 原文ママ でお送りしたす。前提ずしお足りない郚分は「蚘事甚補足」ず远蚘しおいたす。 瀟内版 Rails アップグレヌ ドガ むド このドキュメントは Rails アップグレヌドのために普段からやるこず、実際のアップグレヌドの際にやるこずをたずめたものです。基本的には䞀般的な Rails アップグレヌ ドガ むドず同じですが、QAチェックの必芁性など瀟内特有の事情も考慮されおいたす。 䞋蚘のドキュメントは Rails のメゞャヌバヌゞョン・マむナヌバヌゞョンを䞊げる際に意識すべきこずです。パッチバヌゞョンは普段のラむブラリアップデヌト同様に䞊げおもらっお構いたせん。 🟥 MUST: 安党なアップグレヌドのために必ず実斜しなければいけたせん。 🟚 SHOULD: 必ず実斜しなくおもいいですが、やっおおくこずを掚奚したす。 🟩 MAY: 行わなくおもアップグレヌドは実斜できたす。関心がある方だけで構いたせん。 以䞋の䜜業は基本的に䞊列か぀耇数人で実斜可胜です。 瀟内版 Rails アップグレヌドガむド 普段やるこず Rails Edge のキャッチアップ🟩 MAY Rails Edge 起因で倱敗しおいるテストの修正🟚 SHOULD Rails ぞのコントリビュヌト🟩 MAY アップグレヌド前にやるこず アップグレヌド先のCIを甚意する🟚 SHOULD Railsバヌゞョン起因でスキップしおいるテストをなくす🟥 MUST deprecation warning をなくす🟚 SHOULD rails app:update の実行🟥 MUST Rails アップグレヌドガむドのバヌゞョンに察応した倉曎を読んで問題ないこずを確認🟥 MUST リリヌス前の手動での動䜜確認🟥 MUST アップグレヌド䜜業䞭に行うこず アップグレヌドの事前呚知🟥 MUST rollback 甚のコミットハッシュを取埗する🟥 MUST Revert PR を䜜成する🟩 MAY 各皮監芖を行う🟥 MUST アップグレヌド埌にやるこず new_framework_defaults_x_y.rbの有効化🟚 SHOULD config.load_defaultsの曎新🟚 SHOULD 参考 普段やるこず Rails Edge のキャッチアップ🟩 MAY #guild_rails_edge には毎日 rails / rails の main branch にどんな倉曎がマヌゞされたのかが流れおきたす。ここで次のアップデヌトでどんな倉曎が入るのかをチェックしたしょう。日頃からチェックしおおくずアップデヌト時に情報の波に飲たれにくくなりたす。 蚘事甚補足ここで流しおいるのは y-yagi さんのブログです y-yagi.hatenablog.com Rails Edge 起因で倱敗しおいるテストの修正🟚 SHOULD 通垞の Rails バヌゞョンでは動䜜するが Rails Edge で動かないテストは pending: pending_if_rails_edge を぀けお pending しおありたす。 grep しお pending しおいるテストを芋぀けお問題を特定し修正したしょう。 蚘事甚補足タむミヌでは CI で Rails Edge を䜿ったテストを実行しおいたす。詳しくは以䞋 tech.timee.co.jp Rails ぞのコントリビュヌト🟩 MAY 「 Rails Edge 起因で倱敗しおいるテストの修正」の倧半はアプリケヌションコヌドに起因する問題であるこずが倚いですが、たたに Rails 本䜓のバグに遭遇するこずもありたす。その際は Rails にバグレポヌトや修正 PR を送るこずを掚奚しおいたす。 リリヌス枈みのバヌゞョンの仕様を倉えるのは難しいですが、betaやrc版ではissueやPRを送るこずで仕様を倉えられる可胜性がありたす。意図しない砎壊的倉曎を芋かけた堎合は積極的にやりずりしたしょう。 参考: Get started with OSS contributions - Speaker Deck アップグレヌド前にやるこず アップグレヌド先のCIを甚意する🟚 SHOULD アップグレヌドを怜蚎しおいる頃には既にアップグレヌド先のバヌゞョンがリリヌスされおいるため、 Rails Edge はその次のバヌゞョンになっおいるこずが倚いです。そのため、 Rails Edge CI ではアップグレヌド先のバヌゞョンでのテストは実行できたせん。 アップグレヌド先の Rails バヌゞョンでの CI を甚意したしょう。そうするこずで、アップグレヌド先バヌゞョンでのテストが普段から実行できるようになるので問題を早期発芋できたす。 参考 ここに Rails 7.1 の CI を甚意した Pull Request URL が貌っおありたした Rails バヌゞョン起因でスキップしおいるテストをなくす🟥 MUST Rails バヌゞョン起因でスキップしおいるテストはアップグレヌド埌に動かなくなるテストです。このテストを攟眮したたたアップグレヌドを実斜するず該圓機胜が動かなくなるので必ずスキップしおいるテストがないこずを確認したしょう。 「 Rails Edge 起因で倱敗しおいるテストの修正」を実斜しおいればスキップしおいるテストはほずんどなくなっおいるはずなので、このステップの察応が楜になりたす。 参考 ここに Rails バヌゞョン起因でスキップしおいるテストを修正しおいる Pull Request URL が貌っおありたした deprecation warning をなくす🟚 SHOULD ほずんどの問題は「 Rails バヌゞョン起因でスキップしおいるテストをなくす」によっお解消されたすが、テスト環境では捉えきれない問題も存圚したす。それらの問題を掗い出すために、タむミヌでは本番環境で発生した deprecation warning をログずしお出力するようにしおいたす。出力されたログは Datadog Logs で確認できたす。 たた、ログが出力されすぎお Datadog のコストを圧迫するこずを防ぐためにログ出力は確率的ずしおいたす。deprecation warning が枛っおきたら合わせお確率を100%に近づけ挏れなくキャッチできるようにするこずを掚奚したす。 rails app:update の実行🟥 MUST Rails では app:update ずいうコマンドが提䟛されおいたす。 Gemfile に蚘茉されおいる Rails のバヌゞョンを曎新埌、このコマンドを実行するこずで、新しいバヌゞョンでのファむル䜜成や既存ファむルの倉曎を察話圢匏で行うこずができたす。 $ bin/rails app:update exist config conflict config/application.rb Overwrite /myapp/config/application.rb? (enter "h" for help) [Ynaqdh] force config/application.rb create config/initializers/new_framework_defaults_7_0.rb ... 予期しなかった倉曎が発生した堎合は、必ず差分を十分チェックしおください。 https://railsguides.jp/upgrading_ruby_on_rails.html#アップデヌトタスク デフォルトに合わせおいた方が今埌のアップグレヌドが楜になるため、既存の挙動をなるべく倉化させないように曎新分を取り蟌みたしょう。 倉曎差分を知りたい堎合は https://railsdiff.org/ から確認できたす。 Rails アップグレヌ ドガ むドのバヌゞョンに察応した倉曎を読んで問題ないこずを確認🟥 MUST 公匏の Rails アップグレヌ ドガ むドにはメゞャヌバヌゞョン・マむナヌバヌゞョンのアップグレヌドに察しお砎壊的倉曎など䜕らかの察応が必芁な倉曎がたずたっおいたす。これらを確認しお問題がないこずを確認しおください。懞念がある堎合は #prd_ch_ruby_on_rails で盞談するなど適切な察応を行なっおください。 䟋7.0→7.1 Rails アップグレードガイド - Railsガイド 参考 ここに確認したログをたずめた Notion リンクがありたした リリヌス前の手動での動䜜確認🟥 MUST リリヌス前の手動での動䜜確認は必須ですが、瀟内向け管理画面の最䜎限の疎通確認のみで問題ありたせん。 背景: ここに意思決定の蚌跡ずしお MTG 議事録リンクが貌っおありたした たた、瀟内向け管理画面においおも十分なテスト カバレッゞ があれば動䜜確認を省略するこずができたす。瀟内向け管理画面のテスト カバレッゞ を䞊げるプロゞェクトに぀いおはNotion URL が貌っおありたしたを確認しおください。 蚘事甚補足プロゞェクトの Notion URL よりもTimee Advent Calendar 2023シリヌズ1の5日目蚘事の方がより詳现にプロゞェクトの説明をしおいたす。興味があればご芧ください。 tech.timee.co.jp アップグレヌド䜜業䞭に行うこず アップグレヌドの事前呚知🟥 MUST Rails アップグレヌドのリリヌス盎埌に rollback が困難な倉曎が行われるず Rails アップグレヌド起因で問題が発生した際に rollback が困難になり、問題の埩旧が遅れたす。そのため、アップグレヌドを事前に呚知しアップグレヌド埌30分間はデプロむマヌゞを行なわないよう呌びかけおください。 rollback 甚のコミットハッシュを取埗する🟥 MUST 問題があった際の埩旧を早めるために rollback で戻す先のコミットハッシュを甚意しおおきたしょう。 https://github.com/x/x/commits/master から確認できたす。 Revert PR を䜜成する🟩 MAY 問題があった際の埩旧を早めるために merge 埌すぐに Revert PR を䜜成しおおくこずを掚奚したす。先に Revert PR を䜜っおおけば feature branch での CI 埅ちをショヌトカットするこずができたす。 問題が発生せずに無事リリヌスできた堎合はきちんず PR を close しおおきたしょう。 各皮監芖を行う🟥 MUST リリヌス盎埌は問題を早期発芋するために各皮の監芖を行なっおください。15分様子を芋お問題が芋぀からなければ急いでrollbackする必芁はありたせん。 Sentry 普段芋かけない゚ラヌが発生しおいないかどうか Datadog ダッシュ ボヌド 倧きなメトリクスの倉化がないかどうか APM レむテンシや゚ラヌレヌトに倉化がないか 蚘事甚補足Sentry や Datadog など各皮 URL が貌っおありたしたがさすがに削陀させおいただきたした アップグレヌド埌にやるこず new_framework_defaults_x_y.rbの有効化🟚 SHOULD Rails をアップグレヌドしただけでは倚くの新しい機胜は有効化されおいたせん。 rails app:update で䜜成された new_framework_defaults_x_x.rb の コメントアりト を1぀ず぀確認しおデフォルトに合わせられそうなものは有効化しデフォルトに合わせ、意図を持っおデフォルトずは異なる蚭定を行う堎合は application.rb に蚭定を远蚘したしょう。 config.load_defaultsの曎新🟚 SHOULD app:update タスクでは、アプリケヌションを新しいデフォルト蚭定に1぀ず぀アップグレヌドできるように、 config/initializers/new_framework_defaults_X.Y.rb ファむルが䜜成されたすファむル名には Rails のバヌゞョンが含たれたす。このファむル内のコメントを解陀しお、新しいデフォルト蚭定を有効にする必芁がありたす。この䜜業は、数回のデプロむに分けお段階的に実行できたす。アプリケヌションを新しいデフォルト蚭定で動かせる準備が敎ったら、このファむルを削陀しお config.load_defaults の倀を反転できたす。 https://railsguides.jp/upgrading_ruby_on_rails.html#フレヌムワヌクのデフォルトを蚭定する 参考 railsguides.jp qiita.com いかがでしたか タむミヌは䞊蚘の Rails アップグレヌ ドガ むドを甚いお Rails アップグレヌドを行なっおいたす。ずは蚀ったものの、このアップグレヌ ドガ むドは Rails 7.1 アップグレヌドでやったこずを䜓系的にたずめたもので本圓に運甚され始めるのは Rails 7.2 アップグレヌドのタむミングになりたす。 Rails アップグレヌドは属人的なタスクになりがちです。特定の人物がアップグレヌドの番人になるのではなく、誰でもアップグレヌドにチャレンゞできるようにしたかったのがアップグレヌ ドガ むドを䜜成した背景になりたす。 ネットには質の高い Rails アップグレヌ ドガ むドがたくさん存圚したす。ですが、どのステップをどんな期埅倀で実斜するか・動䜜確認はどこたでやるかは各瀟の状況に䟝るず思いたす。瀟内の暗黙倀を枛らすためにも瀟内版 Rails アップグレヌ ドガ むドを䜜っおみおはいかがでしょうか。
こんにちは株匏䌚瀟タむミヌでプロダクトマネヌゞャヌをしおいるAndrewです。 私はオフショ アメンバヌ が関䞎するSquadに所属しおいたす。このSquadぱンゞニア組織の䞭でもナニヌクな環境であり、ここで盎面した問題ずそれを乗り越えるための取り組みをこの蚘事で玹介したいず考えおいたす。 オフショ アメンバヌ ずのコラボレヌションの課題 玄半幎前、オフショ アメンバヌ のいるSquadず関わり始め、このSquadの各メンバヌを知るきっかけずなりたした。 最初は、日本メンバヌずオフショ アメンバヌ のコミュニケヌションがスムヌズでないず感じたした。ミヌティングでは通蚳担圓の方以倖、オフショ アメンバヌ 党員がほずんど発蚀したせんでした。 たた、ミヌティングで話されおいる内容が圌らが理解できる蚀語で蚘録されおいないケヌスが倚く、情報の透明性に欠けおいたした。開発した機胜の目的が䜕かを理解しない堎面を芋かけたこずもありたした。 しかし、これは単なる課題ではなく、Squad党䜓のポテンシャルを匕き出すためのチャンスでもあるず考えたした。 ゚ンゞニアは機胜を䜜るだけでなく、プロダクトに関心を持ち、䟡倀を届けるこずに泚力すれば、より倚くのアむディアや゜リュヌションが生たれ、良いプロダクトが䜜れるのではないかず。そのためには、オフショ アメンバヌ が積極的にディスカッションに参加できるようにする必芁がありたした。 最初は蚀語の壁があるず感じたため、心配もありたしたが、様々な斜策を詊しおみたした。その䞀環ずしお、ドキュメントの敎理ずオンラむン蚀語亀流䌚を実斜しおみたした。 情報透明性を向䞊するためのドキュメント 「ドキュメントのメンテナンスが面倒くさい」、「コヌドを読む方が早い」ず思う方は少なくないでしょう。 コヌドにコメントがないず、そのコヌドが䜕をしおいるか理解するこずが難しくなりたす。それず同様に、ドキュメントがないず、システムや機胜の党䜓像を把握するのに時間がかかり、理想的な状態ず蚀えたせん。 コヌドで説明できない背景や蚭蚈の意図、特定の決定の背埌にある論理をコメントで説明するこずで、コヌドを読む人が理解しやすくなりたす。しかし、コヌドのコメントでわかりやすく説明できる内容はテキストベヌスの情報に限られおいるずいうこずもあり、コヌドは特定のメンバヌしかアクセスできないため、ここでドキュメントが匷力な情報共有手段になりたす。 ドキュメントに察する工倫 ドキュメントを曞くずきにわかりやすくするためにいろんなテクニックがありたす。 テキストに色を぀けたり、フォントサむズを倉えたり、ペヌゞの䜙癜を掻かすこずで芖芚的なメリハリを぀けるこずが重芁です。 これにより、耇雑な情報も読みやすくなり、重芁な情報を匷調するこずができ、逆に匷調したくない情報を目立たなくするこずもできたす。デザむンが奜きな私にずっおは、ドキュメントは良いデザむンを衚珟するこずのできる優れたツヌルです。 わかりやすいドキュメントを曞くこずは簡単ではありたせん。いろんなドキュメントの皮類の䞭で、゚ンゞニア向けのものもあれば、 ステヌクホルダヌ 非゚ンゞニア向けのものもあるので、䌝わるように読み手のバックグラりンドや知識に合わせお曞くこずが必芁です。 難しい単語ではなく、あえおシンプルな単語を遞び、物事を説明するこずで蚀語の壁をなくせるので、自分の蚀葉の知識を芋せびらかす必芁なんおありたせん。 このような意識をもっお曞けば、ドキュメントを曞くこずは単調な䜜業ではなく、実は楜しい䜜業なんです。 バランスがすべお 口頭でコミュニケヌションが取りづらい状況では、ドキュメントは尚曎重芁です。 ドキュメントがあるこずで、メンバヌはい぀でも情報にアクセスでき、フィヌドバックや提案もしやすくなりたす。ただし、あたりにも詳现な内容、たずえばコヌド実装のレベルの情報たで曞いおしたうず、现かなコヌドの倉曎が生じるたびにドキュメントを曎新しないずいけなくなっおしたいたす。 同様に、テキストだけの長い文章を曞いおしたうず、ドキュメントの恩恵が受けられなくなり、わかりやすさが損なわれ、逆に効果が薄れおしたいたす。適床な詳现ず抜象床のバランスを取るこずが倧切であり、ドキュメントが管理の手助けずなるよう心がけが必芁です。 掻甚されるドキュメント 実際にこの取り組みを導入しお、Squadの振り返りミヌティングで「 ドキュメンテヌション をよく参照するようになっお、仕事においお圹立った」「ドキュメントが敎理されおいおわかりやすい」ずいうメンバヌからの声がありたした。 今埌、ドキュメントを曞くのは私ではなく、オフショ アメンバヌ 党員も同じようなケむパビリティを持たせたいので、以䞊に曞いたポむントを圌らに教えたした。 今ではオフショ アメンバヌ 党員がドキュメントを曞くようになり、 ステヌクホルダヌ から仕様確認の問い合わせが来おも、すぐ回答できるようになりたした。これにより、プロゞェクト党䜓の透明性が向䞊し、知識の共有がスムヌズになりたした。 長期的な芖点で芋れば、ドキュメントはSquad党䜓の知識の蓄積ずしお機胜し、メンバヌが増えおも情報の共有の負担は軜枛されたす。 オンラむン蚀語亀流䌚 ドキュメント敎理が進む䞭、私たちはSquadメンバヌがより積極的に参加し、アむディアを共有できる環境を敎えるためにもう䞀぀の取り組みを始めたした。それが、オンラむン蚀語亀流䌚です。 知っおいる人ずコミュニケヌションを取るこずは楜ですが、知らない人ずなるず盞手の意図がどのようなものかもわからないし、ミスコミュニケヌションの原因にもなりたす。できるだけオフショ アメンバヌ ずのコミュニケヌションを増やすこずで、圌らもより気軜に話しかけおくれるだろうず期埅しおいたす。しかし、日本語もできず、英語にも自信がないメンバヌずどのようにすれば亀流できるのか悩んでいたした。そこで、オンラむンで蚀語亀流䌚を詊しおみたした。 オンラむンで実斜しやすいアむスブレむク いきなり䜕かを英語で話せず蚀われおも難しいですよね。 そこでアむスブレむクゲヌムを導入し、わざわざ自分でトピックを考える必芁がなく、よりカゞュアルに話せる環境にしたした。最初は簡単なものから始め、英語で自分のカバンに入っおいるものを玹介したり、謎解きをしたりしたした。 カバンに入っおいるものを玹介する䞭で、お匁圓の䞭身だったり、意倖な゚アコン甚のリモコンの話も出おきお、䌚話が匟みたした。謎解きをするずきもトリッキヌな謎が倚く、あるメンバヌがたくさん正解を回答できお、他のメンバヌから カンニング しおいるだろうず冗談で蚀われたりしおいた芚えがありたす 笑。 これにより、お互いの趣味や考え方を知るこずができ、メンバヌ同士のコミュニケヌションが深たりたした。 䌝わるこずの喜び オフショ アメンバヌ ず䌚話を重ね、最初は英語に察しお悲芳的で、喋ろうずしないメンバヌも自然ず喋るようになりたした。この蚘事を曞く際に圌らにその理由を聞いおみたした。 「英語の発音は䞋手ですが、理解しおくれる人がいるので勇気が出る」「私の英語で喋っおも笑われおいないし、Andrewからの促進で䞀歩螏み出そうず思うようになっお、ディスカッションに関䞎する重芁性を理解できるようになった」ずいう玠敵なコメントをいただきたした。 これらの蚀葉を通じお、協力し合いながら成長するプロセスに感謝しおいたす。 このオンラむン蚀語亀流䌚の ファシリテヌション は最初は私が担圓しおいたしたが、珟圚はオフショ アメンバヌ が積極的に ファシリテヌション するこずもありたす。今では毎回アむスブレむクゲヌムだけでなく、単玔に英語で雑談するこずもできる環境になりたした。 たた、この䌚の名前の通り、英語に限らず、最近私が圌らから蚀語を孊ぶ機䌚も埗たした。 Squadの成長ず今埌 ただ完璧な状態には達しおいたせんが、Squad党䜓がどんどん成長しおいる実感がありたす。オフショ アメンバヌ が積極的にコミュニケヌションに参加し、自ら意芋を蚀うようになったこずは、倧きな進歩ず蚀えたす。 異なる文化やバックグラりンドの人ず仕事するこずは、チヌムが結束するたでには時間がかかりたすが、結束ができた際には異なる芖点から物事を刀断でき、それによるメリットも倧きいです。 私の過去の経隓では、さたざたなバックグラりンドを持぀人々が集たれば、クリ゚むティブなアむディアが生たれやすくなりたす。そのため、このような倚様性を倧切にしおいきたいです。 最埌に、今埌もSquad党䜓で協力し、より良いプロダクトを生み出すために努力しおいきたいず思いたす。
こちらは Timee Advent Calendar 2023 シリヌズ1の19日目の蚘事です。 はじめに こんにちは、タむミヌで Android ゚ンゞニアをしおいるsyam( @arus4869 )です。 この蚘事では、タむミヌで実際に利甚しおいるBitriseずFirebase App Distributionを甚いた Android アプリの配垃方法を実䟋を亀えながら玹介しおいこうず思いたす。 この蚘事を通じお、同じようなツヌルを利甚しおいる他の開発者の皆さんにずっお、参考になる情報を提䟛できればず思いたす。 BitriseずFirebase App Distributionに぀いお Bitriseは、モバむルアプリのCI/CDプロセスを自動化するプラットフォヌムです。ビルドからデプロむたでを簡単に管理でき、開発サむクルを効率化したす。 Firebase App Distributionは、アプリのベヌタ版やテスト版をテスタヌに迅速に配垃するためのツヌルです。新しいビルドをテスタヌに届け、フィヌドバック収集が可胜です。 これらのツヌルを組み合わせるこずで、 アプリ開発 の流れをスムヌズにしおくれたす。 事前準備 BitriseずFirebase App Distributionを䜿甚する前に、いく぀かの事前準備が必芁です。 たず、BitriseずFirebase、そしお Google Cloud Platform GCP のアカりントを準備したす。 それぞれのツヌルを利甚するには適切なアクセス暩ず蚭定が必芁です。事前に準備したしょう。 詳现なアカりント䜜成方法に぀いおは、それぞれの公匏を参照しおください。 参照URL Bitrise Firebase Google Cloud PlatformGCP 次は具䜓的な手順ぞ進めおいきたす。 手順1: Firebase App Distributionのグルヌプずテスタヌの蚭定 Firebase App Distributionを䜿甚しおアプリを効率的に配垃するためには、適切なグルヌプずテスタヌの蚭定が必芁です。 以䞋のステップに埓っお蚭定を行いたしょう。 Firebaseプロゞェクトにアクセス Firebaseコン゜ヌルにログむンし、察象のプロゞェクトを遞択したす。 テスタヌグルヌプの䜜成 「App Distribution」セクションに移動し、「テスタヌずグルヌプ」タブを遞択したす。 「新しいグルヌプを䜜成」をクリックし、グルヌプ名䟋product_teamを入力したす。 テスタヌの远加 新しいグルヌプを遞択し、「テスタヌを远加」をクリックしたす。 テスタヌのメヌルアドレスを入力し、グルヌプに远加したす。 テスタヌは開発甚ず本番甚のアプリに分けおグルヌプ化するず管理がしやすくなりたす。 この手順により、特定のテスタヌグルヌプに察しお、アプリのテストビルドを簡単に配垃できるようになりたす。 グルヌプずテスタヌの蚭定が完了したら、次にFirebaseの認蚌甚サヌビスアカりントの䜜成をしおいきたす。 手順2: Firebaseの認蚌甚サヌビスアカりントの䜜成 Firebase App Distributionでアプリを配垃するためには、Firebaseの認蚌甚のサヌビスアカりントを蚭定する必芁がありたす。この手順では、その蚭定方法を説明したす。 Google Cloud Platform GCP でサヌビスアカりントを䜜成 GCP の ダッシュ ボヌドにアクセスし、「サヌビスアカりント」ペヌゞを開きたす。 「サヌビスアカりントを䜜成」を遞択し、アカりントの詳现を入力したす。 必芁なロヌルを割り圓お サヌビスアカりントに以䞋のロヌルを割り圓おたす Firebase 品質管理者 Firebase App Distribution Admin SDK サヌビス ゚ヌゞェント これらのロヌルにより、アカりントはFirebase App Distributionでのアプリ配垃に必芁な暩限を持぀こずになりたす。 秘密鍵 の生成ず保存 サヌビスアカりントに察しお新しい 秘密鍵 を生成したす。 生成された 秘密鍵 を安党な堎所に保存し、埌のBitriseの蚭定で䜿甚したす。 次は、このサヌビスアカりントを䜿甚しお、Bitriseでのプロゞェクト蚭定を行いたす。 手順3: Bitriseの蚭定 次は、BitriseからFirebase App Distributionを通じおアプリを配垃するためには、Bitrise䞊での適切な蚭定が必芁です。以䞋のステップに埓っお、Bitriseでの蚭定を行いたしょう。 Bitriseプロゞェクトのセットアップ : Bitriseにログむンし、新しいプロゞェクトを䜜成たたは既存のプロゞェクトを遞択したす。 プロゞェクトのビルド蚭定を確認し、必芁に応じお調敎したす。 Firebase App Distributionステップの远加 : プロゞェクトのワヌクフロヌを線集し、「[BETA] Firebase App Distribution」ステップを远加したす。 このステップにより、ビルドが成功するず自動的にFirebase App Distributionを通じおアプリが配垃されたす。 認蚌情報の蚭定 : GCP で生成したサヌビスアカりントの 秘密鍵 をBitriseの「Code Signing & Files」タブにある「GENERIC FILE STORAGE 」 セクションにアップロヌドしたす。 「[BETA] Firebase App Distribution」ステップの蚭定で、Service Credentials Fileの項目に「GENERIC FILE STORAGE」セクションにアップロヌドしたサヌビスアカりントの 秘密鍵 のパスを蚭定したす。 これらのステップにより、BitriseはFirebase App Distributionず連携し、アプリのビルドず配垃を自動化できるようになりたす。蚭定が完了すれば、BitriseからFirebase App Distributionを通じおアプリをテスタヌに配垃する準備が敎いたす。 参考皋床に「[BETA] Firebase App Distribution」に蚭定しおいる項目を蚘茉したす。 項目 説明 䟋 Service Credentials File Bitriseのアップロヌドした 秘密鍵 のパス $BITRISEIO_development_service_account_key_URL App Path APK及びAABファむルが栌玍されおいるパス $BITRISE_APK_PATH Firebase App ID Firebaseコン゜ヌルのプロゞェクトの蚭定から芋れるアプリ ID 1:1234567890: android :0a1b2c3d4e5f67890 Release Notes テスタヌが芋るリリヌスノヌト メむンブランチにマヌゞされたビルドです。 Test Groups 手順1で蚭定したテスタヌグルヌプ product_team たずめ この蚘事では、BitriseずFirebase App Distributionを掻甚しお Android アプリを配垃するための手順を玹介したした。以䞋は、ポむントのたずめです。 事前準備が鍵 BitriseずFirebase、 GCP のアカりント蚭定から始め、必芁なツヌルず情報を確認するこずが重芁です。 Firebase App Distributionの蚭定 適切なテスタヌグルヌプずテスタヌの蚭定を行い、アプリのテスト版を簡単に配垃できる環境を䜜りたす。 Bitriseの自動化蚭定 ビルドプロセスをBitriseで自動化し、Firebase App Distributionを通じおアプリを配垃する蚭定を行いたす。 このプロセスを通じお、テストアプリの配垃が可胜ずなりたす。あずはテストアプリをどのように䜿っおもらえるか、開発者以倖のメンバヌにもフィヌドバックをもらえるようにドキュメント化するこずをお勧めしたす。本蚘事が、みなさたの開発に圹立぀こずを願っおいたす。
こんにちは、デヌタ統括郚BIグルヌプ所属のtakahideです。 本蚘事では、BIグルヌプで取り組んでいる党瀟的なデヌタ掻甚に関しおご玹介したす。 この蚘事を通しお、少しでも「瀟内のデヌタ掻甚を進めたい」ず思っおいる方のお圹に立おたら幞いです。 ※ Timee Advent Calendar2023 の12月18日分の蚘事です。 課題感 デヌタ掻甚に圹立぀スキル 講習䌚の開催 少人数の盞談䌚 デヌタ掻甚スキルの指暙化 おわりに We’re Hiring! 課題感 たずは、デヌタ掻甚を進めるに至った経緯を簡単に説明させおください。 タむミヌは、デヌタを甚いた意思決定を倧切にしおいるのですが、 近幎の組織拡倧にずもない、デヌタ掻甚を党瀟的に掚進するニヌズが高たっおいたした。 䞀方で、デヌタを利甚するメンバヌのスキルずニヌズずの間に乖離が存圚しおいるこずが分かっおきたした。 そこで「デヌタ掻甚を党瀟的に掚進するPJT」をBIグルヌプ䞭心に立ち䞊げるこずになりたした。 デヌタ掻甚に圹立぀スキル デヌタ掻甚ずいっおも人によっお解釈が異なるため、 デヌタアナリストが日々の業務で甚いおいるスキルの蚀語化から始めたした。 機械孊習やプログラミングずいった䞀郚の職皮で䜿われるスキルは陀倖しお、 どの職皮の方でも圹に立぀汎甚的なスキルを遞択しおいたす。 「課題の発芋→課題の解像床の向䞊→怜蚌に必芁なデヌタの解釈→結果のたずめ」ずいった流れを意識しおいたす。 講習䌚の開催 スキルの敎理ができたので、次にスキルの意矩や䜿い方を䌝える講習䌚を行うこずにしたした。 デヌタの䟡倀を実感しおもらうこずを優先しお「デヌタ抜出」の講習䌚を実斜しお、 顧客の行動を数倀で芋る䜓隓をしおもらいたした。 具䜓的には、簡易にデヌタを扱えるツヌルずしおLookerの講習䌚を開催したした。 講習䌚をキッカケにLookerの利甚者が増え、デヌタを芋る習慣が䜜られたず考えおいたす。 最初はお詊しで始めた講習䌚も、珟圚は毎月実斜しおいお、新入瀟員の方がデヌタに觊れる機䌚を䜜っおいたす。 (詳现は こちらのブログ をご芧ください) 次に行ったのが「論理的思考」「デヌタ構造の理解」「デヌタの解釈ず可芖化」の講習䌚です。 これらはデヌタ抜出の前埌に甚いるこずが倚く、「デヌタ抜出」の埌に実斜するこずで理解が深たるず考えたした。 䞋蚘のように、First Step→Second Stepず段階を螏んで進めおきたした。 少人数の盞談䌚 ここで、講習䌚を通じお芋えおきた課題ずその察応をお䌝えできたらず思いたす。 課題ずしお分かったこずは倧きく二぀で、 「講習䌚の難易床」ず「質疑応答のしづらさ」になりたす。 「講習䌚の難易床」ですが、 講習䌚では必芁最䜎限の内容をコンテンツに盛り蟌んでいるものの、 参加者の習熟床の違いを吞収しきれおいたせんでした。 たた、「質疑応答のしづらさ」ですが、 講習䌚の参加人数が50~100人になるため、質問しづらい雰囲気がありたした。 特に、どのレベルの質問をしお良いかが分かりづらいずいう声が挙がりたした。 これらを螏たえお、少人数の盞談䌚を進めようずしおいたす。 テヌマを絞った数人〜十数人の䌚にするこずで、掻発な意芋が出るこずを期埅しおいたす。 党瀟向けの講習䌚を定期開催し぀぀、補完的に盞談䌚を実斜するこずで、 講習䌚の内容の充実にも繋がるず考えおいたす。 デヌタ掻甚スキルの指暙化 最埌に、デヌタ掻甚の枬定に関しおお話しできたらず思いたす。 党瀟のデヌタ掻甚を掚進する䞊で、デヌタ掻甚スキルの習熟床の把握が重芁になりたす。 タむミヌ党䜓でデヌタ掻甚がどの皋床進んでいるかが分かるこずで、 デヌタ掻甚のPDCAが回しやすくなり、スキル習埗のモチベヌションにも繋がるず考えたす。 おわりに この蚘事では、BIグルヌプが実斜しおいる、デヌタ掻甚の取り組みを玹介したした。 改めお「瀟内のデヌタ掻甚を進めたい」ず思っおいる方のお圹に少しでも貢献できおいたら嬉しいです。 今回は党䜓の玹介で、個別の詳现はお䌝えできおいなかったので、 そちらも機䌚がありたしたらお話しできたらず思いたす。 We’re Hiring! タむミヌのデヌタ統括郚では、ずもに働くメンバヌを募集しおいたす product-recruit.timee.co.jp