TECH PLAY

電通総研

電通総研 の技術ブログ

å…š836ä»¶

ISID X(クロス) むノベヌション 本郚 デゞタル゚ンゲヌゞメントセンタヌ の 根本康平 です。 今回は「Teamsを日ごろ利甚しおいる・面倒な䜜業は嫌・䜜業を自動化させたい・PowerAutomateは良く知らない」ずいう方に向けお、PowerAutomateで䜕ができるのかをご玹介する蚘事です。 本蚘事の前半では、1から簡単な自動化凊理を䜜り「PowerAutomate」に぀いおの理解を深めたす。 蚘事の埌半では、PowerAutomateで䜿える機胜や「テンプレヌト」に觊れ、簡単に耇雑な自動化凊理を䜜るこずができるこずを知っおいただければず思いたす。 PowerAutomateずは フロヌを䜜っお自動でTeamsのチャネルにメッセヌゞを投皿する 耇雑な自動化機胜も簡単に䜜れる PowerAutomateずは 先ほどから数回登堎しおいた「PowerAutomate」は、 Microsoft が提䟛しおいる業務効率化を目的ずしたツヌルです。 自動ワヌクフロヌを䜜るこずで、面倒な定型䜜業や繰り返し䜜業を人の代わりにやっおくれたす。 具䜓的には、「メヌルを受信したらTeamsに通知が来るようにする」「メヌルに添付されおいるファむルをOneDriveに自動保存する」「 Excel デヌタを定期的に加工する」などの䜜業を自動でやっおくれたす。 時間の削枛はもちろん、単玔な䜜業ミスなども枛らすこずが可胜です。 フロヌを䜜っお自動でTeamsのチャネルにメッセヌゞを投皿する ここから、15分で出来るTeams自動投皿フロヌの䜜り方を玹介したす。 なお、PowerAutomateが利甚できる環境/ナヌザであるこずを前提ずした説明です。 完成するフロヌで出来るこずは次のずおりです。 毎週金曜日 18:00 に特定のTeamsチャネルに自動でメッセヌゞを投皿 自分ず䞊叞Aに察しおメンション 以䞋の流れでフロヌを䜜成したす。 毎週金曜日 18:00 に起動する新しいフロヌを䜜る メンションするナヌザを決めるアクションを䜜る メッセヌゞ内容を決め、Teamsに投皿するアクションを䜜る 動䜜をテストする それでは、いよいよフロヌ䜜成の手順を玹介したす。 Teamsアプリを開く 「アプリ」をクリック 「Power Automate」をクリック 「りェブサむトを衚瀺する」をクリック 「マむフロヌ」をクリック 「新しいフロヌ」をクリック 「スケゞュヌル枈み クラりド フロヌ」をクリック フロヌ名を入力、開始日に任意の日付ず時間を入力、繰り返し間隔を1週間、金曜を遞択し「䜜成」をクリック Recurrence をクリック 「詳现オプションを衚瀺する」をクリック 蚭定時刻時間に18、蚭定時刻分に0を入力これで毎週金曜日の18:00にこのフロヌが実行されたす 「新しいステップ」をクリック コネクタずアクションを怜玢する 欄に Teams ず入力し、「ナヌザヌの@mention トヌク ンを取埗する」をクリック ナヌザヌの@mention トヌク ンを取埗する文字の暪、 䞉点リヌダ ヌをクリックし名前を「自分ぞのメンション」ず倉曎 ナヌザヌの欄に自分のナヌザ プリンシパル ネヌム基本的にはメヌルアドレスを入力 「新しいステップ」をクリック コネクタずアクションを怜玢する 欄に Teams ず入力し、「ナヌザヌの@mention トヌク ンを取埗する」をクリック ナヌザヌの@mention トヌク ンを取埗するの文字暪、 䞉点リヌダ ヌをクリックし名前を「䞊叞ぞのメンション」ず倉曎 ナヌザヌの欄に䞊叞Aのナヌザ プリンシパル ネヌム基本的にはメヌルアドレスを入力 「新しいステップ」をクリック コネクタずアクションを怜玢する 欄に Teams ず入力し、「チャットたたはチャネルでメッセヌゞを投皿する」をクリック 投皿者で「フロヌボット」を遞択 投皿先で「Channel」を遞択 Teamで投皿したいTeamを遞択 Channelで投皿したいChannelを遞択 Messageの Add message をクリック、動的なコンテンツから䞊叞ぞのメンション@mentionず自分ぞのメンション @mentionをクリック 改行し、投皿に曞きたいメッセヌゞを蚘入 画面右䞊の「保存」をクリック 画面右䞊の「テスト」をクリック 「手動」を遞択し、「テスト」をクリック 「フロヌの実行」をクリック実際に動䜜をテストするものです。本圓に自分ず䞊叞Aをメンションしお投皿がされたすのでご泚意ください 「フロヌ実行ペヌゞ」をクリック 開始時間をクリック、フロヌがどのように実行されたか確認できたす。 テストで実際に指定したChannelにメンション付きの投皿がされたかを確認 「マむフロヌ」をクリック 今回䜜成したフロヌをクリック 「オフにする」をクリックこれを忘れるず、毎週金曜日18:00に投皿されおしたうので泚意しおください 15分で出来るTeams自動投皿フロヌ䜜成の説明は以䞊です。 耇雑な自動化機胜も簡単に䜜れる 䞊のハンズオンでは「 ナヌザヌの@mention トヌク ンを取埗する 」「 チャットたたはチャネルにメッセヌゞを投皿する 」の2぀のアクションしか䜿甚しおいたせんが、他にも様々なアクションが可胜です。ご自身で觊れる方は、色々ず詊しおみおください。 䟋えば、「倉数」ず入力すれば「 倉数の蚭定 」や「 配列倉数に远加 」が出来たり、「 条件分岐 」や「 繰り返し 」、「 Excel の情報を取埗・曎新・削陀 」も可胜です。「 メヌルの送信 」や「 AIモデルの構築 」も出来たす。 ずはいえ、耇雑なフロヌを䜜ろうずしたら、時間がかかり途䞭で挫折しおしたうかもしれたせん。 ですが、様々なフロヌが「 テンプレヌト 」ずしお甚意されおいるので、これを䜿うず楜にフロヌを䜜るこずができたす。 䟋えば、 Microsoft Formsでアンケヌトを提出するずメヌル通知され Sharepoint リストに回答内容が保存されるフロヌ、ボタンを抌したら10分埌にTeamsで通知されるフロヌなど、様々なテンプレヌトが甚意されおいたす。 これらのテンプレヌトを䜿いながら、自分流にフロヌをカスタマむズしお利甚できたす。 面倒な承認䜜業や勀怠管理などもPowerAutomateを䜿っお効率化できそうですね 私の所属しおいるナニットや郚眲では、PowerAutomateを䜿っお次のようなこずをしおいたす。 毎日の勀怠管理特定の時間たでに勀務開始のアクションがない瀟員に察しお、勀務開始しおいるかを確認するTeamsメッセヌゞ投皿を自動で行う ポヌタルサむト のアクションを通知ナニット内で掻甚しおいる ポヌタルサむト に新しい蚘事が投皿されたりアクションが行われた堎合に、特定のTeamsチャネルにメッセヌゞを投皿する 定期的に Excel デヌタの確認ず掚移グラフの䜜成毎月特定の Excel ファむル内のデヌタを確認し、月ごずにデヌタがどのように掚移したかを衚すグラフを䜜成する 私の所属するナニットでは「䜜業を効率化するにはどうすればよいか」「メンバヌ間のコミュニケヌションを掻発にするためにどうすればよいか」などを定期的に瀟員同士で話し合い、PowerAutomateをはじめ様々なツヌルを掻甚しお課題を解決しおいたす。 今回はPowerAutomateを玹介いたしたした。他にも、PowerAppsずいう簡単にアプリを䜜成できるツヌルもあったりしたす。PowerAppsの䜿い方を玹介するような蚘事も曞くかもしれないので、たた芋おいただけるず嬉しいです ISID X(クロス) むノベヌション 本郚 デゞタル゚ンゲヌゞメントセンタヌ では、 Microsoft Power Platform 、 Dynamics 365 、 Salesforce を甚いたDX掚進 などをしおおりたす。党瀟的なDX掚進や顧客接点の最適化、゚ンゲヌゞメントの匷化などのお困り事がございたしたらお気軜にお問合せください。 ISID顧客接点DX゜リュヌションサむトはこちら 私たちは䞀緒に働いおくれる仲間を募集しおいたす 【党瀟集玄】CRM゜リュヌションコンサルタント IT業界に興味のある就掻生の皆さた、ぜひご応募ください 【新卒採甚】ISID リクルヌトサむト 執筆 @nemoto.kouhei 、レビュヌ @fukutake.hiroaki  Shodo で執筆されたした 
ISID X(クロス) むノベヌション 本郚 デゞタル゚ンゲヌゞメントセンタヌ の 根本康平 です。 今回は「Teamsを日ごろ利甚しおいる・面倒な䜜業は嫌・䜜業を自動化させたい・PowerAutomateは良く知らない」ずいう方に向けお、PowerAutomateで䜕ができるのかをご玹介する蚘事です。 本蚘事の前半では、1から簡単な自動化凊理を䜜り「PowerAutomate」に぀いおの理解を深めたす。 蚘事の埌半では、PowerAutomateで䜿える機胜や「テンプレヌト」に觊れ、簡単に耇雑な自動化凊理を䜜るこずができるこずを知っおいただければず思いたす。 PowerAutomateずは フロヌを䜜っお自動でTeamsのチャネルにメッセヌゞを投皿する 耇雑な自動化機胜も簡単に䜜れる PowerAutomateずは 先ほどから数回登堎しおいた「PowerAutomate」は、 Microsoft が提䟛しおいる業務効率化を目的ずしたツヌルです。 自動ワヌクフロヌを䜜るこずで、面倒な定型䜜業や繰り返し䜜業を人の代わりにやっおくれたす。 具䜓的には、「メヌルを受信したらTeamsに通知が来るようにする」「メヌルに添付されおいるファむルをOneDriveに自動保存する」「 Excel デヌタを定期的に加工する」などの䜜業を自動でやっおくれたす。 時間の削枛はもちろん、単玔な䜜業ミスなども枛らすこずが可胜です。 フロヌを䜜っお自動でTeamsのチャネルにメッセヌゞを投皿する ここから、15分で出来るTeams自動投皿フロヌの䜜り方を玹介したす。 なお、PowerAutomateが利甚できる環境/ナヌザであるこずを前提ずした説明です。 完成するフロヌで出来るこずは次のずおりです。 毎週金曜日 18:00 に特定のTeamsチャネルに自動でメッセヌゞを投皿 自分ず䞊叞Aに察しおメンション 以䞋の流れでフロヌを䜜成したす。 毎週金曜日 18:00 に起動する新しいフロヌを䜜る メンションするナヌザを決めるアクションを䜜る メッセヌゞ内容を決め、Teamsに投皿するアクションを䜜る 動䜜をテストする それでは、いよいよフロヌ䜜成の手順を玹介したす。 Teamsアプリを開く 「アプリ」をクリック 「Power Automate」をクリック 「りェブサむトを衚瀺する」をクリック 「マむフロヌ」をクリック 「新しいフロヌ」をクリック 「スケゞュヌル枈み クラりド フロヌ」をクリック フロヌ名を入力、開始日に任意の日付ず時間を入力、繰り返し間隔を1週間、金曜を遞択し「䜜成」をクリック Recurrence をクリック 「詳现オプションを衚瀺する」をクリック 蚭定時刻時間に18、蚭定時刻分に0を入力これで毎週金曜日の18:00にこのフロヌが実行されたす 「新しいステップ」をクリック コネクタずアクションを怜玢する 欄に Teams ず入力し、「ナヌザヌの@mention トヌク ンを取埗する」をクリック ナヌザヌの@mention トヌク ンを取埗する文字の暪、 䞉点リヌダ ヌをクリックし名前を「自分ぞのメンション」ず倉曎 ナヌザヌの欄に自分のナヌザ プリンシパル ネヌム基本的にはメヌルアドレスを入力 「新しいステップ」をクリック コネクタずアクションを怜玢する 欄に Teams ず入力し、「ナヌザヌの@mention トヌク ンを取埗する」をクリック ナヌザヌの@mention トヌク ンを取埗するの文字暪、 䞉点リヌダ ヌをクリックし名前を「䞊叞ぞのメンション」ず倉曎 ナヌザヌの欄に䞊叞Aのナヌザ プリンシパル ネヌム基本的にはメヌルアドレスを入力 「新しいステップ」をクリック コネクタずアクションを怜玢する 欄に Teams ず入力し、「チャットたたはチャネルでメッセヌゞを投皿する」をクリック 投皿者で「フロヌボット」を遞択 投皿先で「Channel」を遞択 Teamで投皿したいTeamを遞択 Channelで投皿したいChannelを遞択 Messageの Add message をクリック、動的なコンテンツから䞊叞ぞのメンション@mentionず自分ぞのメンション @mentionをクリック 改行し、投皿に曞きたいメッセヌゞを蚘入 画面右䞊の「保存」をクリック 画面右䞊の「テスト」をクリック 「手動」を遞択し、「テスト」をクリック 「フロヌの実行」をクリック実際に動䜜をテストするものです。本圓に自分ず䞊叞Aをメンションしお投皿がされたすのでご泚意ください 「フロヌ実行ペヌゞ」をクリック 開始時間をクリック、フロヌがどのように実行されたか確認できたす。 テストで実際に指定したChannelにメンション付きの投皿がされたかを確認 「マむフロヌ」をクリック 今回䜜成したフロヌをクリック 「オフにする」をクリックこれを忘れるず、毎週金曜日18:00に投皿されおしたうので泚意しおください 15分で出来るTeams自動投皿フロヌ䜜成の説明は以䞊です。 耇雑な自動化機胜も簡単に䜜れる 䞊のハンズオンでは「 ナヌザヌの@mention トヌク ンを取埗する 」「 チャットたたはチャネルにメッセヌゞを投皿する 」の2぀のアクションしか䜿甚しおいたせんが、他にも様々なアクションが可胜です。ご自身で觊れる方は、色々ず詊しおみおください。 䟋えば、「倉数」ず入力すれば「 倉数の蚭定 」や「 配列倉数に远加 」が出来たり、「 条件分岐 」や「 繰り返し 」、「 Excel の情報を取埗・曎新・削陀 」も可胜です。「 メヌルの送信 」や「 AIモデルの構築 」も出来たす。 ずはいえ、耇雑なフロヌを䜜ろうずしたら、時間がかかり途䞭で挫折しおしたうかもしれたせん。 ですが、様々なフロヌが「 テンプレヌト 」ずしお甚意されおいるので、これを䜿うず楜にフロヌを䜜るこずができたす。 䟋えば、 Microsoft Formsでアンケヌトを提出するずメヌル通知され Sharepoint リストに回答内容が保存されるフロヌ、ボタンを抌したら10分埌にTeamsで通知されるフロヌなど、様々なテンプレヌトが甚意されおいたす。 これらのテンプレヌトを䜿いながら、自分流にフロヌをカスタマむズしお利甚できたす。 面倒な承認䜜業や勀怠管理などもPowerAutomateを䜿っお効率化できそうですね 私の所属しおいるナニットや郚眲では、PowerAutomateを䜿っお次のようなこずをしおいたす。 毎日の勀怠管理特定の時間たでに勀務開始のアクションがない瀟員に察しお、勀務開始しおいるかを確認するTeamsメッセヌゞ投皿を自動で行う ポヌタルサむト のアクションを通知ナニット内で掻甚しおいる ポヌタルサむト に新しい蚘事が投皿されたりアクションが行われた堎合に、特定のTeamsチャネルにメッセヌゞを投皿する 定期的に Excel デヌタの確認ず掚移グラフの䜜成毎月特定の Excel ファむル内のデヌタを確認し、月ごずにデヌタがどのように掚移したかを衚すグラフを䜜成する 私の所属するナニットでは「䜜業を効率化するにはどうすればよいか」「メンバヌ間のコミュニケヌションを掻発にするためにどうすればよいか」などを定期的に瀟員同士で話し合い、PowerAutomateをはじめ様々なツヌルを掻甚しお課題を解決しおいたす。 今回はPowerAutomateを玹介いたしたした。他にも、PowerAppsずいう簡単にアプリを䜜成できるツヌルもあったりしたす。PowerAppsの䜿い方を玹介するような蚘事も曞くかもしれないので、たた芋おいただけるず嬉しいです ISID X(クロス) むノベヌション 本郚 デゞタル゚ンゲヌゞメントセンタヌ では、 Microsoft Power Platform 、 Dynamics 365 、 Salesforce を甚いたDX掚進 などをしおおりたす。党瀟的なDX掚進や顧客接点の最適化、゚ンゲヌゞメントの匷化などのお困り事がございたしたらお気軜にお問合せください。 ISID顧客接点DX゜リュヌションサむトはこちら 私たちは䞀緒に働いおくれる仲間を募集しおいたす 【党瀟集玄】CRM゜リュヌションコンサルタント IT業界に興味のある就掻生の皆さた、ぜひご応募ください 【新卒採甚】ISID リクルヌトサむト 執筆 @nemoto.kouhei 、レビュヌ @fukutake.hiroaki  Shodo で執筆されたした 
テックブログ線集郚の山䞋です。 今回は自分が登壇するむベントを玹介したす。詳现およびお申蟌みはリンク先サむトを参照しおください。 https://techplay.jp/event/913881 参加登録のお願い この発衚を行う山䞋です。 近幎リモヌト開発環境がいく぀か台頭しおき぀぀ありたす。 AWS Codecatalyst、 Google Workstations、 GitHub Codespacesずいったものです。 このむベントでは、 GitHub Codespacesず Visual Studio Code のDev Containerを玹介したす。 これらの技術を甚いるこずで柔軟で安定した開発環境の構築が可胜になりたす、むベントではこれらの技術のメリット、デメリットや基本的な仕組みに぀いお玹介したす。 埡興味があるかたは是非登録しおみおください。 基本情報 タむトル乱立する環境、リ゜ヌスの制玄、環境構築にはもう悩たされない-ストレスフリヌな開発を実珟する GitHub Codespaces- 日時2023/09/06(æ°Ž) 19:00 〜 20:15 圢態オンラむン開催 抂芁 今、ベストな環境で開発に挑めおいたすか テレワヌクが新たな垞態ずなった今、開発環境におけるあらゆる課題に頭を抱える方も倚く、 Yesず答えるこずのできた方は倚くないのではないでしょうか。 コヌドレビュヌや デバッグ を行う床に乱立する環境 ロヌカル環境のセットアップやメンテナンス、バックアップ䜜業 マシンスペックに巊右されお安定しない凊理速床 などさたざたな課題の圱響により、 開発に割く時間よりも倚くの時間を環境敎備に費やしおいるずいった方も少なくありたせん。 開発をスムヌズに進めるための最重芁事項は、効率的な䜜業環境で開発者のストレスを軜枛するこずです。 ISIDではストレスフリヌな開発環境を䜜り出すべく、 ゜リュヌションのひず぀ずしお「 GitHub Codespaces」の導入に挑戊。 早速瀟内プロゞェクトで怜蚌を行い、 ・ロケヌション違い(瀟内/瀟倖)での開発や異なるマシンでの䜜業に合わせた環境構築が䞍芁になった ・環境構築手順が煩雑、䞍明瞭な堎合でも、機胜を組み合わせるこずで手軜に環境を再珟できた ずいったような成果が埗られ、今埌の利甚拡倧にも期埅が高たっおいたす。 本むベントでは、「 GitHub Codespaces」を採甚した理由から導入における挑戊、埗られた成果など実䟋を亀えお共有したす。 「 GitHub Codespaces」掻甚から芋る、健康的な゜フトりェア開発のためのヒント満茉な1時間15分をお楜しみに 執筆 @yamashita.tsuyoshi 、レビュヌ @sato.taichi  Shodo で執筆されたした 
テックブログ線集郚の山䞋です。 今回は自分が登壇するむベントを玹介したす。詳现およびお申蟌みはリンク先サむトを参照しおください。 https://techplay.jp/event/913881 参加登録のお願い この発衚を行う山䞋です。 近幎リモヌト開発環境がいく぀か台頭しおき぀぀ありたす。 AWS Codecatalyst、 Google Workstations、 GitHub Codespacesずいったものです。 このむベントでは、 GitHub Codespacesず Visual Studio Code のDev Containerを玹介したす。 これらの技術を甚いるこずで柔軟で安定した開発環境の構築が可胜になりたす、むベントではこれらの技術のメリット、デメリットや基本的な仕組みに぀いお玹介したす。 埡興味があるかたは是非登録しおみおください。 基本情報 タむトル乱立する環境、リ゜ヌスの制玄、環境構築にはもう悩たされない-ストレスフリヌな開発を実珟する GitHub Codespaces- 日時2023/09/06(æ°Ž) 19:00 〜 20:15 圢態オンラむン開催 抂芁 今、ベストな環境で開発に挑めおいたすか テレワヌクが新たな垞態ずなった今、開発環境におけるあらゆる課題に頭を抱える方も倚く、 Yesず答えるこずのできた方は倚くないのではないでしょうか。 コヌドレビュヌや デバッグ を行う床に乱立する環境 ロヌカル環境のセットアップやメンテナンス、バックアップ䜜業 マシンスペックに巊右されお安定しない凊理速床 などさたざたな課題の圱響により、 開発に割く時間よりも倚くの時間を環境敎備に費やしおいるずいった方も少なくありたせん。 開発をスムヌズに進めるための最重芁事項は、効率的な䜜業環境で開発者のストレスを軜枛するこずです。 ISIDではストレスフリヌな開発環境を䜜り出すべく、 ゜リュヌションのひず぀ずしお「 GitHub Codespaces」の導入に挑戊。 早速瀟内プロゞェクトで怜蚌を行い、 ・ロケヌション違い(瀟内/瀟倖)での開発や異なるマシンでの䜜業に合わせた環境構築が䞍芁になった ・環境構築手順が煩雑、䞍明瞭な堎合でも、機胜を組み合わせるこずで手軜に環境を再珟できた ずいったような成果が埗られ、今埌の利甚拡倧にも期埅が高たっおいたす。 本むベントでは、「 GitHub Codespaces」を採甚した理由から導入における挑戊、埗られた成果など実䟋を亀えお共有したす。 「 GitHub Codespaces」掻甚から芋る、健康的な゜フトりェア開発のためのヒント満茉な1時間15分をお楜しみに 執筆 @yamashita.tsuyoshi 、レビュヌ @sato.taichi  Shodo で執筆されたした 
こんにちは、ISID 金融゜リュヌション事業郚の岡厎です。 今回は前回に匕き続き、 UE5でパフォヌマンスを担保するために必芁な、プロファむリングのワヌクフロヌCPU線の説明を行いたす。 UEでは、制䜜したプロゞェクトの性胜を枬るためにプロファむリングずいう䜜業を行いたす。 プロファむリングは、䞻にパフォヌマンス改善を目的ずしお実斜したす。䟋えばコマンドや専甚のアプリケヌションを䜿甚しお、描画に遅延が起こっおいないか、䞍芁な凊理をしおいるBlueprintがないか、などを調べたす。 前回の蚘事プロファむリングのワヌクフロヌGPU線はこちら になりたす。 怜蚌環境/ツヌル OS Windows 11 pro GPU  NVIDIA GeForce RTX 4070 Ti Game Engine Unreal Engine 5.2.0 実装手順 「stat unit」コマンドの実斜 Gamesの凊理が重い堎合の察凊方法 2-1. Unreal Insightsの䜿い方 2-2. Session Frontendの䜿い方 2-3. 遅延原因の特定方法 1. 「stat unit」コマンドの実斜 前回に匕き続き、「stat unit」コマンドに぀いお説明したす。 前回の蚘事プロファむリングのワヌクフロヌGPU線 に詳しい「stat unit」の玹介があるのでそちらも参考にしおください。 GPU 線でも玹介したしたが、「stat unit」の䞻芁な項目は䞋蚘になりたす。 Frame : 画面を描画するのにかかった凊理時間。60FPSのゲヌムを䜜成する堎合は、16.6ms以䞋になるように調敎しないずいけない Game : リアルタむムで動䜜するゲヌムのロゞックやアニメヌションにかかるCPUの凊理時間 Draw : 䜕を描画するか、遞択や蚈算をするためにかかるCPUの凊理時間 GPU Time : メッシュや各マテリアルの描画や、ラむティングなどにかかる GPU の凊理時間 Draws : 描画する必芁のあるメッシュの個数。 GPU Timeに圱響を䞎える 察象オブゞェクトを敎理したり、Naniteを利甚しおメッシュ数の調敎を行うこずで、 GPU に関連する倀を䞋げるこずはできたしたが、䟝然ずしお「Game」の倀が高いので、調査、修正を行っおいきたす。 2. Gamesの凊理が重い堎合の察凊方法 Gameの凊理が重い堎合は2぀の事象が考えられたす。 カリングやLODなどを䜿甚しおレベル内のどのオブゞェクトを描画するか、事前に蚈算するためにCPUを䜿甚しおいる ゲヌムプレむ䞭のキャ ラク タヌの動䜜や、アクタヌ、その他のBlueprintの凊理や蚈算をするためにCPUを䜿甚しおいる 今回はゲヌムプレむ䞭のBlueprintの挙動に぀いお、プロファむリング方法を玹介したす。 カリングやLODに関しおは、本蚘事では割愛いたしたす。 2-1. Unreal Insightsの䜿い方 Unreal Insightsは、 Unreal Engine に暙準で搭茉されおいるプロファむリングシステムのこずで、 デヌタの収集、分析、および芖芚化を行っおくれたす。 今回はこのシステムを䜿甚しお、アプリの ボトルネック を探しパフォヌマンスを向䞊させおいきたす。 たず Unreal Insightsを開いおいきたす。 UEをダりンロヌドする際に同時にダりンロヌドされおいるので、䞋蚘画像のように UE  Engine  Binaries  Win64 の䞭にある「UnrealInsights.exe」を開きたす。 アプリケヌションが開きたすが、今は䞀旊このたた眮いおおきたす。 䞋の画像ではいく぀かデヌタが入っおいたすが、初めお開いた堎合はデヌタには䜕も入っおいたせん。 次にゲヌム起動時にプロファむリング甚のデヌタを䜜成する蚭定を行いたす。 UEの゚ディタの環境蚭定から、プレむ  远加の起動パラメヌタ の欄に䞋蚘コマンドを远加したす。 -trace=cpu,frame,bookmark,log -statnamedevents このコマンドにより、 スタンドアロン モヌドでゲヌムを開始した時、ログずしおプロファむリング甚のデヌタが Unreal Insightsで参照可胜な圢匏で䜜成されたす。 スタンドアロン モヌドでゲヌムを起動䞭に Unreal Insightsを開くずデヌタが「LIVE」で䜜成されおいるのを確認できたす。 起動埌10秒くらいしたらゲヌムを終了し、䜜成されたデヌタを Unreal Insightsで確認したす。 今回はゲヌムを起動するためのプロファむリングではなく、通垞ゲヌム時のプロファむリングを行いたいので、 䞋の画像右偎の、安定し始めた郚分のデヌタを調査したす。 右偎の郚分をクロヌズアップした画像がこちらです。 䞊段のピンクず黄緑の垯でFEngineLoopず曞かれおいる郚分がありたす。 これが1フレヌムの凊理になり、今回の堎合だず180msほどかかっおしたっおいたす。 60FPSのゲヌムを目指す堎合は16.6ms以䞋を目指さないずいけない 次にもう少し现かく芋おいきたす。 1フレヌムの凊理の䞭で時間のかかっおいそうな凊理を調べおいきたす。 このデヌタの芋方は、䞊から順に凊理が现かくなっおいき、各凊理の流れは右方向に進んでいきたす。 䜕床もプロファむリングを行っおいる人なら、パッず芋ただけでどこら蟺がおかしいのかわかるのかもしれないですが、 自分はただ初孊者なので少しず぀解読したす。 现分化されおいる䞋の方の凊理で、明らかに長い時間がかかっおしたっおいる凊理が、玫色の垯のFunctionずいう郚分になりたす。 1フレヌム党䜓で180msほどかかっおいるのに察し、このFunctionで177.9msもの時間を䜿っおいるようなので、ほがこの凊理のせいで遅くなっおいるように芋えたす。 このFunctionの芪を芋おみるずBlueprint Timeず曞かれた垯があるので、ここではBlueprintに問題があるのかな、くらいたでわかりたす。 Unreal Insightsは、凊理党䜓の流れや、どこら蟺で問題が起きおいるかなどを芋るために䜿いたす。 しかし、Blueprintのひず぀ひず぀たで詳しくみるこずはできないので、次は別のプロファむリングシステムを䜿っおもう少し深がっおいきたす。 2-2. Session Frontendの䜿い方 Session Frontendも、 Unreal Insightsず同様、 Unreal Engine に暙準で搭茉されおいるプロファむリングシステムのこずで、 デヌタの収集、分析、および芖芚化を行っおくれたす。 Unreal Insightずの違いは、Session Frontendの方が、より詳しくファンクションの䞭身を芋おいくこずができたすが、䞀方で Unreal Insightsほど可芖性がよくないです。 そのため、 Unreal Insightsで倧䜓の凊理の流れず問題点のあたりを぀け、Session Frontendで詳しく芋おいく流れが良いず思いたす。 Session Frontendを䜿うためにも専甚のセッションデヌタが必芁になるので、コマンドでデヌタを䜜成したす。 UEのゲヌムを開始した䞊で、画面䞋郚のアりトプットログタブから、コマンド入力欄に「stat startfile」ず入力したす。 コマンドを入力するずゲヌム画面䞊にプロファむリング䞭の文字が衚瀺されたす。 こちらも同じく10秒ほど埅機しおから、コマンド入力欄に「stat stopfile」ず入力したす。 これでデヌタが取埗できたした。 画面䞊郚のツヌルタブからセッションフロント゚ンドを遞択し、画面を衚瀺させたす。 プロファむラのタブぞ移動し、画面䞭倮䞊郚のファむルをロヌドボタンを抌䞋したす。 ファむル遞択画面になるので、最新のフォルダを遞択したす。 初めお行う際は䞀぀しかフォルダが衚瀺されないはずです。 フォルダを遞択するずプロファむラ画面にデヌタが衚瀺されたす。 今回䜿甚するのは右䞋のむベント名ず曞かれた郚分になりたす。 通垞ゲヌム時のプロファむリングを行いたい堎合は、むベント名から「GameThread」を遞択したす。 その埌は、 Unreal Insightsで衚瀺があった「FrameTime」を遞択し、凊理時間がかかっおいるタブをどんどん開いおいきたす。 今回の堎合は、最終的にファンクション名たで行き着きたした。 Function/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C.MeanlessFunction 「BP_ThirdPersonCharacter」の「MeanlessFunction」ずいうファンクションに時間がかかっおしたっおいるようなので、怜蚌したす。 2-3. 遅延原因の特定方法 Unreal InsightsずSession Frontendを利甚しお、遅延の原因になっおいそうなファンクションを特定したので、実際にUE画面から調査しおみたす。 BP_ThirdPersonCharacterのファむルを開き、Blueprintを確認したす。 ファむル内に「Meanless Function」ずいうファンクションが「むベントTick」に぀ながっおおり、毎フレヌムごずに呌ばれおしたっおいるこずがわかりたす。 ファンクションの内郚に移動するず、文字通り、意味のない凊理をFor文で2䞇回も行っおいたした。 1フレヌムごずに2䞇回、print stringをしおいるず考えるず恐ろしいバグです。 もちろん仕蟌みです。すみたせん。 この「Meanless Function」を削陀し、もう䞀床ゲヌムを開始しおみたす。 芋事「Game」の数倀が改善され「Frame」も60FPSに察応できる数倀たで改善できたした。 念の為 Unreal InsightsやSession Frontendも確認したしたが、修正前ず比べ異垞な凊理時間がかかっおいる郚分がなくなっおいるのを確認できたした。 おわりに 今回は、前回に匕き続き、UE5を利甚しおプロファむリングの方法を説明しおきたした。 今回孊習した、 GPU で問題になっおいる箇所を探しお察策を行い、その次にCPUで問題になっおいる箇所を探すフロヌは、 今埌の実際の珟堎でも䜿っおいけるのではないかず感じおいたす。 もちろん実際のプロゞェクトでは、より耇雑に原因が入り組んでいるこずが想像できるので、 基瀎の勉匷をし぀぀、実際のプロファむリングもどんどん行っおいきたいです。 ただ 前回の蚘事プロファむリングのワヌクフロヌGPU線 をご芧になっおいない方は、そちらも是非読んでいただけるず嬉しいです。 珟圚ISIDは web3領域のグルヌプ暪断組織 を立ち䞊げ、Web3および メタバヌス 領域のR&Dを行っおおりたすカテゎリヌ「3DCG」の蚘事は こちら 。 もし本領域にご興味のある方や、䞀緒にチャレンゞしおいきたい方は、ぜひお気軜にご連絡ください 私たちず同じチヌムで働いおくれる仲間を、是非お埅ちしおおりたす ISID採甚ペヌゞWeb3/メタバヌス/AI 参考 https://qiita.com/donbutsu17/items/159dfaacfac6a4b1392d https://docs.unrealengine.com/4.27/ja/TestingAndOptimization/PerformanceAndProfiling/UnrealInsights/ https://hub.vive.com/storage/docs/en-us/UnrealPlugin/UnrealProfiler.html 執筆 @okazaki.wataru 、レビュヌ @yamada.y  Shodo で執筆されたした 
こんにちは、ISID 金融゜リュヌション事業郚の岡厎です。 今回は前回に匕き続き、 UE5でパフォヌマンスを担保するために必芁な、プロファむリングのワヌクフロヌCPU線の説明を行いたす。 UEでは、制䜜したプロゞェクトの性胜を枬るためにプロファむリングずいう䜜業を行いたす。 プロファむリングは、䞻にパフォヌマンス改善を目的ずしお実斜したす。䟋えばコマンドや専甚のアプリケヌションを䜿甚しお、描画に遅延が起こっおいないか、䞍芁な凊理をしおいるBlueprintがないか、などを調べたす。 前回の蚘事プロファむリングのワヌクフロヌGPU線はこちら になりたす。 怜蚌環境/ツヌル OS Windows 11 pro GPU  NVIDIA GeForce RTX 4070 Ti Game Engine Unreal Engine 5.2.0 実装手順 「stat unit」コマンドの実斜 Gamesの凊理が重い堎合の察凊方法 2-1. Unreal Insightsの䜿い方 2-2. Session Frontendの䜿い方 2-3. 遅延原因の特定方法 1. 「stat unit」コマンドの実斜 前回に匕き続き、「stat unit」コマンドに぀いお説明したす。 前回の蚘事プロファむリングのワヌクフロヌGPU線 に詳しい「stat unit」の玹介があるのでそちらも参考にしおください。 GPU 線でも玹介したしたが、「stat unit」の䞻芁な項目は䞋蚘になりたす。 Frame : 画面を描画するのにかかった凊理時間。60FPSのゲヌムを䜜成する堎合は、16.6ms以䞋になるように調敎しないずいけない Game : リアルタむムで動䜜するゲヌムのロゞックやアニメヌションにかかるCPUの凊理時間 Draw : 䜕を描画するか、遞択や蚈算をするためにかかるCPUの凊理時間 GPU Time : メッシュや各マテリアルの描画や、ラむティングなどにかかる GPU の凊理時間 Draws : 描画する必芁のあるメッシュの個数。 GPU Timeに圱響を䞎える 察象オブゞェクトを敎理したり、Naniteを利甚しおメッシュ数の調敎を行うこずで、 GPU に関連する倀を䞋げるこずはできたしたが、䟝然ずしお「Game」の倀が高いので、調査、修正を行っおいきたす。 2. Gamesの凊理が重い堎合の察凊方法 Gameの凊理が重い堎合は2぀の事象が考えられたす。 カリングやLODなどを䜿甚しおレベル内のどのオブゞェクトを描画するか、事前に蚈算するためにCPUを䜿甚しおいる ゲヌムプレむ䞭のキャ ラク タヌの動䜜や、アクタヌ、その他のBlueprintの凊理や蚈算をするためにCPUを䜿甚しおいる 今回はゲヌムプレむ䞭のBlueprintの挙動に぀いお、プロファむリング方法を玹介したす。 カリングやLODに関しおは、本蚘事では割愛いたしたす。 2-1. Unreal Insightsの䜿い方 Unreal Insightsは、 Unreal Engine に暙準で搭茉されおいるプロファむリングシステムのこずで、 デヌタの収集、分析、および芖芚化を行っおくれたす。 今回はこのシステムを䜿甚しお、アプリの ボトルネック を探しパフォヌマンスを向䞊させおいきたす。 たず Unreal Insightsを開いおいきたす。 UEをダりンロヌドする際に同時にダりンロヌドされおいるので、䞋蚘画像のように UE  Engine  Binaries  Win64 の䞭にある「UnrealInsights.exe」を開きたす。 アプリケヌションが開きたすが、今は䞀旊このたた眮いおおきたす。 䞋の画像ではいく぀かデヌタが入っおいたすが、初めお開いた堎合はデヌタには䜕も入っおいたせん。 次にゲヌム起動時にプロファむリング甚のデヌタを䜜成する蚭定を行いたす。 UEの゚ディタの環境蚭定から、プレむ  远加の起動パラメヌタ の欄に䞋蚘コマンドを远加したす。 -trace=cpu,frame,bookmark,log -statnamedevents このコマンドにより、 スタンドアロン モヌドでゲヌムを開始した時、ログずしおプロファむリング甚のデヌタが Unreal Insightsで参照可胜な圢匏で䜜成されたす。 スタンドアロン モヌドでゲヌムを起動䞭に Unreal Insightsを開くずデヌタが「LIVE」で䜜成されおいるのを確認できたす。 起動埌10秒くらいしたらゲヌムを終了し、䜜成されたデヌタを Unreal Insightsで確認したす。 今回はゲヌムを起動するためのプロファむリングではなく、通垞ゲヌム時のプロファむリングを行いたいので、 䞋の画像右偎の、安定し始めた郚分のデヌタを調査したす。 右偎の郚分をクロヌズアップした画像がこちらです。 䞊段のピンクず黄緑の垯でFEngineLoopず曞かれおいる郚分がありたす。 これが1フレヌムの凊理になり、今回の堎合だず180msほどかかっおしたっおいたす。 60FPSのゲヌムを目指す堎合は16.6ms以䞋を目指さないずいけない 次にもう少し现かく芋おいきたす。 1フレヌムの凊理の䞭で時間のかかっおいそうな凊理を調べおいきたす。 このデヌタの芋方は、䞊から順に凊理が现かくなっおいき、各凊理の流れは右方向に進んでいきたす。 䜕床もプロファむリングを行っおいる人なら、パッず芋ただけでどこら蟺がおかしいのかわかるのかもしれないですが、 自分はただ初孊者なので少しず぀解読したす。 现分化されおいる䞋の方の凊理で、明らかに長い時間がかかっおしたっおいる凊理が、玫色の垯のFunctionずいう郚分になりたす。 1フレヌム党䜓で180msほどかかっおいるのに察し、このFunctionで177.9msもの時間を䜿っおいるようなので、ほがこの凊理のせいで遅くなっおいるように芋えたす。 このFunctionの芪を芋おみるずBlueprint Timeず曞かれた垯があるので、ここではBlueprintに問題があるのかな、くらいたでわかりたす。 Unreal Insightsは、凊理党䜓の流れや、どこら蟺で問題が起きおいるかなどを芋るために䜿いたす。 しかし、Blueprintのひず぀ひず぀たで詳しくみるこずはできないので、次は別のプロファむリングシステムを䜿っおもう少し深がっおいきたす。 2-2. Session Frontendの䜿い方 Session Frontendも、 Unreal Insightsず同様、 Unreal Engine に暙準で搭茉されおいるプロファむリングシステムのこずで、 デヌタの収集、分析、および芖芚化を行っおくれたす。 Unreal Insightずの違いは、Session Frontendの方が、より詳しくファンクションの䞭身を芋おいくこずができたすが、䞀方で Unreal Insightsほど可芖性がよくないです。 そのため、 Unreal Insightsで倧䜓の凊理の流れず問題点のあたりを぀け、Session Frontendで詳しく芋おいく流れが良いず思いたす。 Session Frontendを䜿うためにも専甚のセッションデヌタが必芁になるので、コマンドでデヌタを䜜成したす。 UEのゲヌムを開始した䞊で、画面䞋郚のアりトプットログタブから、コマンド入力欄に「stat startfile」ず入力したす。 コマンドを入力するずゲヌム画面䞊にプロファむリング䞭の文字が衚瀺されたす。 こちらも同じく10秒ほど埅機しおから、コマンド入力欄に「stat stopfile」ず入力したす。 これでデヌタが取埗できたした。 画面䞊郚のツヌルタブからセッションフロント゚ンドを遞択し、画面を衚瀺させたす。 プロファむラのタブぞ移動し、画面䞭倮䞊郚のファむルをロヌドボタンを抌䞋したす。 ファむル遞択画面になるので、最新のフォルダを遞択したす。 初めお行う際は䞀぀しかフォルダが衚瀺されないはずです。 フォルダを遞択するずプロファむラ画面にデヌタが衚瀺されたす。 今回䜿甚するのは右䞋のむベント名ず曞かれた郚分になりたす。 通垞ゲヌム時のプロファむリングを行いたい堎合は、むベント名から「GameThread」を遞択したす。 その埌は、 Unreal Insightsで衚瀺があった「FrameTime」を遞択し、凊理時間がかかっおいるタブをどんどん開いおいきたす。 今回の堎合は、最終的にファンクション名たで行き着きたした。 Function/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C.MeanlessFunction 「BP_ThirdPersonCharacter」の「MeanlessFunction」ずいうファンクションに時間がかかっおしたっおいるようなので、怜蚌したす。 2-3. 遅延原因の特定方法 Unreal InsightsずSession Frontendを利甚しお、遅延の原因になっおいそうなファンクションを特定したので、実際にUE画面から調査しおみたす。 BP_ThirdPersonCharacterのファむルを開き、Blueprintを確認したす。 ファむル内に「Meanless Function」ずいうファンクションが「むベントTick」に぀ながっおおり、毎フレヌムごずに呌ばれおしたっおいるこずがわかりたす。 ファンクションの内郚に移動するず、文字通り、意味のない凊理をFor文で2䞇回も行っおいたした。 1フレヌムごずに2䞇回、print stringをしおいるず考えるず恐ろしいバグです。 もちろん仕蟌みです。すみたせん。 この「Meanless Function」を削陀し、もう䞀床ゲヌムを開始しおみたす。 芋事「Game」の数倀が改善され「Frame」も60FPSに察応できる数倀たで改善できたした。 念の為 Unreal InsightsやSession Frontendも確認したしたが、修正前ず比べ異垞な凊理時間がかかっおいる郚分がなくなっおいるのを確認できたした。 おわりに 今回は、前回に匕き続き、UE5を利甚しおプロファむリングの方法を説明しおきたした。 今回孊習した、 GPU で問題になっおいる箇所を探しお察策を行い、その次にCPUで問題になっおいる箇所を探すフロヌは、 今埌の実際の珟堎でも䜿っおいけるのではないかず感じおいたす。 もちろん実際のプロゞェクトでは、より耇雑に原因が入り組んでいるこずが想像できるので、 基瀎の勉匷をし぀぀、実際のプロファむリングもどんどん行っおいきたいです。 ただ 前回の蚘事プロファむリングのワヌクフロヌGPU線 をご芧になっおいない方は、そちらも是非読んでいただけるず嬉しいです。 珟圚ISIDは web3領域のグルヌプ暪断組織 を立ち䞊げ、Web3および メタバヌス 領域のR&Dを行っおおりたすカテゎリヌ「3DCG」の蚘事は こちら 。 もし本領域にご興味のある方や、䞀緒にチャレンゞしおいきたい方は、ぜひお気軜にご連絡ください 私たちず同じチヌムで働いおくれる仲間を、是非お埅ちしおおりたす ISID採甚ペヌゞWeb3/メタバヌス/AI 参考 https://qiita.com/donbutsu17/items/159dfaacfac6a4b1392d https://docs.unrealengine.com/4.27/ja/TestingAndOptimization/PerformanceAndProfiling/UnrealInsights/ https://hub.vive.com/storage/docs/en-us/UnrealPlugin/UnrealProfiler.html 執筆 @okazaki.wataru 、レビュヌ @yamada.y  Shodo で執筆されたした 
こんにちは、Xクロス むノベヌション 本郚 ゜フトりェアデザむンセンタヌ セキュリティグルヌプの倧西です。珟圚、TypeScriptずReactを䜿っおWebアプリを開発しおいたすが、フロント゚ンドの実装を任された際に Linkify ず MUI(Material UI) を合わせお䜿う堎面がありたした。LinkifyずMUIのコラボ実装はあたり蚘事がなかったので蚘事を曞いおみたした。 Linkifyずは MUI(Material UI)ずは LinkifyずMUIを䞀緒に䜿う たずめ Linkifyずは Reactでテキスト内のURLをリンクにしたい堎面があったずしたす。こんな感じですね。 Linkifyずは、文字列にURLが含たれおいるずきに自動でリンク化する際に䜿えるラむブラリです。 このように自動でリンク化する方法を探すず、Linkifyを入れお3぀ほど方法がありたした。 Linkifyを䜿う react-string-replace を䜿う 自前で実装する 2のreact-string-replaceは1のLinkifyに比べ GitHub のFork数やstar数が少なく、3の自前実装は、 dangerouslySetInnerHTML ずいう関数を䜿わなければいけなかったため今回はLinkifyを䜿うこずにしたした。Linkifyは ドキュメント もしっかり敎備されおいお、 XSS(クロスサむトスクリプティング)攻撃に察しお脆匱にならないような方法 も瀺されおいたのでずおも良かったです。 MUI(Material UI)ずは MUIはReactアプリケヌションを構築するのに䜿えるUI コンポヌネント の巚倧なラむブラリです。基瀎的なUI芁玠から高床なUI芁玠たでそろっおおり、カスタマむズ可胜なラむブラリが備わっおいたす。基本的に無料で利甚できたすが、䞀郚有料のラむブラリもありたす。MUIを䜿うず、䟋えば 衚(テヌブル) や プログレスバヌ にしおも、自分で䞀から実装するより簡単に実珟できたす。 MUIを䜿甚しお䜜った衚↓ MUIを䜿甚しお䜜った プログレスバヌ ↓ LinkifyずMUIを䞀緒に䜿う Reactアプリを開発しおいる䞭で、LinkifyずMUIを同時に䜿いたい堎面が出おきたした。䟋えばMUIの Linkコンポヌネント ずLinkifyを同時に䜿いたい堎合です。LinkifyはもちろんLink コンポヌネント を䜿わなくおも以䞋のように曞くず文字列をリンク化できたす。 < Linkify > { props.content } < /Linkify > しかし、チヌム内であらかじめ統䞀しお䜜っおおいたカスタムリンク コンポヌネント 今回は「CustomLink」ずいうカスタムリンク コンポヌネント があったずしたすを䜿いたい堎合は少し工倫が必芁で、 renderオプション が必芁です。renderオプションを甚いるず、リンク芁玠の生成方法をオヌバヌラむドできたす。タヌゲットリンクの䞭間衚珟IntermediateRepresentation。タグ名、属性、テキストコンテンツ等を含むオブゞェクトを受け入れる関数を指定し、戻り倀は、文字列、HTML 芁玠、たたは むンタヌフェむス 固有の゚ンティティにしたす。render関数は、結果 属性、コンテンツなどを匕数ずしお他のすべおのオプションが蚈算された埌に実行されたす。実装するず以䞋のようになりたす。 チヌム内で統䞀しお定矩したカスタムリンク コンポヌネント ↓ import { Link , LinkProps } from "@mui/material" ; export const CustomLink = ( props: LinkProps ) : JSX. Element => { const { href , children , ...other } = props ; return ( < Link { ...other } href = { href } target = "_blank" rel = "noopener noreferrer" color = "#FF0000" ...などチヌム内で蚭定したオプション > { children } < /Link > ); } ; 䞊蚘のカスタムリンク コンポヌネント を䜿えるように新しい コンポヌネント を䜜成する↓ import { IntermediateRepresentation } from "linkifyjs" ; import { CustomLink } from "CustomLinkを定矩したファむル" ; export const renderLink = ( ir: IntermediateRepresentation ) : JSX. Element => { return < CustomLink { ...ir.attributes } > { ir.content } < /CustomLink >; } ; そしお、CustomLinkをリンク化したいコンテンツを衚瀺する tsx ファむルに持っおいき、renderオプションに枡す↓ < Linkify options = {{ render: renderLink }} > { props.content } < /Linkify > ずしおやれば、チヌム内で統䞀しお䜿っおいるカスタムリンク コンポヌネント を䜿っお、文字列内のURLをリンク化できたすIntermediateRepresentationに぀いお補足ですが、 ・ir.attributes 内に href プロパティなどaタグの属性が枡っおくる ・ir.content はリンクの衚蚘が枡っおくる ずいう仕様になっおいたす。 ちなみにLink コンポヌネント を扱う際に target="_blank" を぀ける堎合は、 rel="noopener" ず rel="noreferrer" オプションを぀けおあげるず安心です。target="_blank"を぀けるずリンクをクリックしたずきに別タブでリンク先のペヌゞが開きたすが、開いた先のペヌゞが悪意ある者によっお䜜成されたペヌゞであった堎合、 リンク元 のペヌゞを操䜜される危険がありたす。しかしrel="noopener noreferrer"を぀けおあげるこずで、 リンク元 のペヌゞが操䜜されるのを防いだり、 リンク元 の情報を枡さないようにできたす。 たずめ このように、LinkifyずMUIを䞀緒に䜿うこずで、チヌム内で統䞀しお䜿っおいるカスタムリンク コンポヌネント を䜿っお文字列内のURLをリンク化できたす。LinkifyはURLだけでなく、メヌルアドレスもリンク化できたすし、 プラグむン を䜿甚すれば Twitter の ハッシュタグ やメンション、 IPアドレス 、たた自分が指定したキヌワヌドも怜出しおリンク化できおしたいたす䟿利な オプション もそろっおいるので、ぜひ䜿っおみおください 私たちは同じチヌムで働いおくれる仲間を倧募集しおいたすたくさんのご応募をお埅ちしおいたす。 セキュリティ゚ンゞニア 執筆 @onishi.mayu 、レビュヌ @kano.nanami  Shodo で執筆されたした 
こんにちは、Xクロス むノベヌション 本郚 ゜フトりェアデザむンセンタヌ セキュリティグルヌプの倧西です。珟圚、TypeScriptずReactを䜿っおWebアプリを開発しおいたすが、フロント゚ンドの実装を任された際に Linkify ず MUI(Material UI) を合わせお䜿う堎面がありたした。LinkifyずMUIのコラボ実装はあたり蚘事がなかったので蚘事を曞いおみたした。 Linkifyずは MUI(Material UI)ずは LinkifyずMUIを䞀緒に䜿う たずめ Linkifyずは Reactでテキスト内のURLをリンクにしたい堎面があったずしたす。こんな感じですね。 Linkifyずは、文字列にURLが含たれおいるずきに自動でリンク化する際に䜿えるラむブラリです。 このように自動でリンク化する方法を探すず、Linkifyを入れお3぀ほど方法がありたした。 Linkifyを䜿う react-string-replace を䜿う 自前で実装する 2のreact-string-replaceは1のLinkifyに比べ GitHub のFork数やstar数が少なく、3の自前実装は、 dangerouslySetInnerHTML ずいう関数を䜿わなければいけなかったため今回はLinkifyを䜿うこずにしたした。Linkifyは ドキュメント もしっかり敎備されおいお、 XSS(クロスサむトスクリプティング)攻撃に察しお脆匱にならないような方法 も瀺されおいたのでずおも良かったです。 MUI(Material UI)ずは MUIはReactアプリケヌションを構築するのに䜿えるUI コンポヌネント の巚倧なラむブラリです。基瀎的なUI芁玠から高床なUI芁玠たでそろっおおり、カスタマむズ可胜なラむブラリが備わっおいたす。基本的に無料で利甚できたすが、䞀郚有料のラむブラリもありたす。MUIを䜿うず、䟋えば 衚(テヌブル) や プログレスバヌ にしおも、自分で䞀から実装するより簡単に実珟できたす。 MUIを䜿甚しお䜜った衚↓ MUIを䜿甚しお䜜った プログレスバヌ ↓ LinkifyずMUIを䞀緒に䜿う Reactアプリを開発しおいる䞭で、LinkifyずMUIを同時に䜿いたい堎面が出おきたした。䟋えばMUIの Linkコンポヌネント ずLinkifyを同時に䜿いたい堎合です。LinkifyはもちろんLink コンポヌネント を䜿わなくおも以䞋のように曞くず文字列をリンク化できたす。 < Linkify > { props.content } < /Linkify > しかし、チヌム内であらかじめ統䞀しお䜜っおおいたカスタムリンク コンポヌネント 今回は「CustomLink」ずいうカスタムリンク コンポヌネント があったずしたすを䜿いたい堎合は少し工倫が必芁で、 renderオプション が必芁です。renderオプションを甚いるず、リンク芁玠の生成方法をオヌバヌラむドできたす。タヌゲットリンクの䞭間衚珟IntermediateRepresentation。タグ名、属性、テキストコンテンツ等を含むオブゞェクトを受け入れる関数を指定し、戻り倀は、文字列、HTML 芁玠、たたは むンタヌフェむス 固有の゚ンティティにしたす。render関数は、結果 属性、コンテンツなどを匕数ずしお他のすべおのオプションが蚈算された埌に実行されたす。実装するず以䞋のようになりたす。 チヌム内で統䞀しお定矩したカスタムリンク コンポヌネント ↓ import { Link , LinkProps } from "@mui/material" ; export const CustomLink = ( props: LinkProps ) : JSX. Element => { const { href , children , ...other } = props ; return ( < Link { ...other } href = { href } target = "_blank" rel = "noopener noreferrer" color = "#FF0000" ...などチヌム内で蚭定したオプション > { children } < /Link > ); } ; 䞊蚘のカスタムリンク コンポヌネント を䜿えるように新しい コンポヌネント を䜜成する↓ import { IntermediateRepresentation } from "linkifyjs" ; import { CustomLink } from "CustomLinkを定矩したファむル" ; export const renderLink = ( ir: IntermediateRepresentation ) : JSX. Element => { return < CustomLink { ...ir.attributes } > { ir.content } < /CustomLink >; } ; そしお、CustomLinkをリンク化したいコンテンツを衚瀺する tsx ファむルに持っおいき、renderオプションに枡す↓ < Linkify options = {{ render: renderLink }} > { props.content } < /Linkify > ずしおやれば、チヌム内で統䞀しお䜿っおいるカスタムリンク コンポヌネント を䜿っお、文字列内のURLをリンク化できたすIntermediateRepresentationに぀いお補足ですが、 ・ir.attributes 内に href プロパティなどaタグの属性が枡っおくる ・ir.content はリンクの衚蚘が枡っおくる ずいう仕様になっおいたす。 ちなみにLink コンポヌネント を扱う際に target="_blank" を぀ける堎合は、 rel="noopener" ず rel="noreferrer" オプションを぀けおあげるず安心です。target="_blank"を぀けるずリンクをクリックしたずきに別タブでリンク先のペヌゞが開きたすが、開いた先のペヌゞが悪意ある者によっお䜜成されたペヌゞであった堎合、 リンク元 のペヌゞを操䜜される危険がありたす。しかしrel="noopener noreferrer"を぀けおあげるこずで、 リンク元 のペヌゞが操䜜されるのを防いだり、 リンク元 の情報を枡さないようにできたす。 たずめ このように、LinkifyずMUIを䞀緒に䜿うこずで、チヌム内で統䞀しお䜿っおいるカスタムリンク コンポヌネント を䜿っお文字列内のURLをリンク化できたす。LinkifyはURLだけでなく、メヌルアドレスもリンク化できたすし、 プラグむン を䜿甚すれば Twitter の ハッシュタグ やメンション、 IPアドレス 、たた自分が指定したキヌワヌドも怜出しおリンク化できおしたいたす䟿利な オプション もそろっおいるので、ぜひ䜿っおみおください 私たちは同じチヌムで働いおくれる仲間を倧募集しおいたすたくさんのご応募をお埅ちしおいたす。 セキュリティ゚ンゞニア 執筆 @onishi.mayu 、レビュヌ @kano.nanami  Shodo で執筆されたした 
こんにちは、ISID 金融゜リュヌション事業郚の岡厎です。 ゲヌムや動画などを䜜成する際に、ナヌザヌが違和感なくコンテンツを䜿甚するためには、 フレヌムごずの描画速床フレヌムレヌトを意識し、パフォヌマンスを担保し続ける必芁がありたす。 今回はUE5でパフォヌマンスを担保するために必芁な、プロファむリングのワヌクフロヌの説明を行いたす。 はじめに UEでは、制䜜したプロゞェクトの性胜を枬るためにプロファむリングずいう䜜業を行いたす。 プロファむリングは、䞻にパフォヌマンス改善を目的ずしお実斜したす。䟋えばコマンドや専甚のアプリケヌションを䜿甚しお、描画に遅延が起こっおいないか、䞍芁な凊理をしおいるBlueprintがないか、などを調べたす。 今回の蚘事では、UEの基瀎的なプロファむリングの方法 GPU 線に぀いお玹介しおいきたす。 CPUに関しおは蚘事が長くなるので、次の蚘事でご玹介したす。 怜蚌環境/ツヌル OS Windows 11 pro GPU  NVIDIA GeForce RTX 4070 Ti Game Engine Unreal Engine 5.2.0 実装手順 「stat unit」コマンドの実斜 Drawsが倚い堎合の察凊方法 2-1. 察象メッシュの確認、削陀 2-2. Naniteの蚭定UE5の堎合 1. 「stat unit」コマンドの実斜 たず初めに、「stat unit」コマンドに぀いお説明しおいきたす。 UEではさたざたな方法でプロゞェクトのプロファむリングを行う方法がありたす。 「stat unit」はプロゞェクト党䜓を俯瞰し、倧䜓どの蟺に臎呜的なバグや遅延の原因があるかなどを調べるのに適したコマンドになりたす。 「stat unit」コマンドを䜿甚するためには、 デバッグ したいプロゞェクトを開き、画面䞋郚よりアりトプットタブを抌䞋し、 コマンド入力スペヌスに「stat unit」を蚘述したす。 画面䞊に画像のようなログが出おきたす。 䞻芁な項目の説明をしたす。 Frame : 画面を描画するのにかかった凊理時間。60FPSのゲヌムを䜜成する堎合は、16.6ms以䞋になるように調敎しないずいけない Game : リアルタむムで動䜜するゲヌムのロゞックやアニメヌションにかかるCPUの凊理時間 Draw : 䜕を描画するか、遞択や蚈算をするためにかかるCPUの凊理時間 GPU Time : メッシュや各マテリアルの描画や、ラむティングなどにかかる GPU の凊理時間 Draws : 描画する必芁のあるメッシュの個数。 GPU Timeに圱響を䞎える たたGameなどの数倀は、ゲヌムをプレむしおいる最䞭にBlueprintなどに連動しお数倀が倉動するので、 ゲヌムをプレむしおキャ ラク タヌの操䜜などを行った際の数倀も確かめる必芁がありたす。 今回は GPU 線なので、「stat unit」の結果から、 「Draw」、「Draws」の数倀を調査、修正を行っおいきたす。 その他の項目のCPUに関わる箇所は次の蚘事で玹介するので、本蚘事では割愛したす。 2. Drawsが倚い堎合の察凊方法 Drawsの数倀が倧きい堎合は、メッシュが倧量に配眮されおいたり、ポリゎン数の倚すぎる耇雑なメッシュが配眮されおしたっおいる可胜性がありたす。 今回は、16.6msを超えおいるため、正垞時は緑に衚瀺される数字が赀文字になっおいたす。 この Drawsの数倀が倧きいように感じたので調査しおいきたす。 たずはレベル䞊にどのようなメッシュやポリゎンがあるか確認しおいきたす。 2-1. 察象メッシュの確認、削陀 画面䞊郚のツヌルから、オヌディット統蚈 を遞びたす。 するず別画面でレベル内に配眮されおいるメッシュのポリゎン数を確認するこずが出来たす。 「Tris」ず曞かれおいる郚分がポリゎン数で、「Sum Tris」ず曞かれおいる郚分が合蚈のポリゎン数になりたす。 今回の統蚈では、「SM_Movehuman」ずいうオブゞェクトの「Count」が「31,834」になっおおり、「Sum Tris」の数倀も非垞に高くなっおいたす。 䞀般的にポリゎン数は䞋蚘の 閟倀 を参考にするず良いずされおいたす。 2000から3000たでが理想 5000を超えるず重たくなり始める 10000を超えるず問題が起こり始める このためDrawの数倀が倧きくなっおいるこずが考えられたす。 プロゞェクトに戻っお確認しおみるず、 実はこのレベルには倧量の「SM_Movehuman」のアクタヌを配眮しおいたこずがわかりたした。 もちろんこのプロゞェクトは凊理を重くするこずを目的に䜜成しおいるので簡単に発芋できたしたが、 実際のプロゞェクトでは、ここたで単玔に問題を発芋するこずはなかなか出来たせん。 しかし、統蚈を芋ながらレベルに配眮しおあるオブゞェクトの個数や、ポリゎン数を確認し、倧䜓のあたりを぀けるのにはずおも有効な手段です。 今回のように、オブゞェクトが倧量にあり「Draws」の数倀が非垞に高い堎合の察凊法は倧きく3぀ありたす。 無駄なオブゞェクトの削陀 UE5で远加された「Nanite」を䜿甚 オクルヌゞョンカリングの蚭定 ※オクルヌゞョンカリングの蚭定方法は本蚘事では説明したせん。次回以降の蚘事で玹介する予定です。 たずは無駄なオブゞェクトの削陀を詊したす。 本プロゞェクトでは、「SM_Movehuman」のアクタヌをすべお削陀しおみたす。 「stat unit」の倀を確認しおみたす。 「Draws」の倀が䞋がり、「Draw」にかかる凊理速床も短くなっおいるこずが確認できたす。 アクタヌ削陀前 アクタヌ削陀埌 たた、本プロゞェクトでは割愛したすが、統蚈内の「Count」の数を䞋げなくずも、そもそものポリゎン数を少ないものを甚意するのも有効です。 もし配眮しおあるオブゞェクトが党お必芁なもので、削陀できない堎合は次の手段を詊したす。 2-2. Naniteの蚭定UE5の堎合 Naniteずは たず Nanite を簡単に説明をしたす。 Nanite ずは、UE5から搭茉された、3Dモデルを効率的にか぀高速に レンダリング しおくれるシステムで、LODを自動で行っおくれたす。 LODずいうのは Level of Detail の略で、ひず぀のオブゞェクトに察し、耇数の粗さの違うメッシュを䜜成し、 カメラが遠くにあるずきには粗く軜いメッシュを䜿甚し、近くにあるずきは现かく正確なメッシュを䜿甚する描画方法です。 これによりナヌザヌに違和感やメッシュの粗さを感じさせずに、描画速床を䞊げるこずができたす。 Naniteが搭茉される前は、これらの耇数のメッシュを甚意し、距離を蚈算し配眮する䜜業は手䜜業で行っおいたしたが、 LODがNaniteによっお自動化され、手䜜業でやるよりさらに効率的に レンダリング できるようになりたした。 Naniteの蚭定方法 Naniteはスタティックメッシュにのみ䜿甚できたす。スケルタルメッシュなどには蚭定できないので泚意が必芁 蚭定したいスタティックメッシュを開きたす。 今回はレベル内に配眮しおある倧量の人型のオブゞェクトに察し、Naniteの蚭定を行っおいきたす。 スタティックメッシュを開いたら詳现パネルより、Naniteの蚭定  Naniteサポヌトの有効化 をオンにしたす。 スタティックメッシュを保存し、レベルに配眮するためのアクタヌクラスBlueprintを䜜成したす。 コンポヌネント 内にスタティックメッシュを远加し、詳现画面から先ほどNaniteの蚭定をしたスタティックメッシュを遞択したす。 あずは、このアクタヌをレベル䞊に配眮しお負荷に倉化があるか怜蚌しおいきたす。 Naniteによる負荷軜枛の怜蚌 PCGを利甚しお人型のアクタヌを倧量に配眮したレベルを甚意し、Naniteを蚭定したものず、しおいないものでどれだけ数倀に差が出るか調査したした。 それぞれのゲヌム䞊で「stat unit」を行いたす。 今回の蚘事ではPCGに関しおの説明は割愛いたしたす。 Naniteを有効にしおいない堎合 Naniteを有効にしおいる堎合 Drawsの数倀が劇的に枛少され 18143 → 559 、Frameにかかる時間も16ms ほど短瞮できおいたす。 今回はデフォルトで甚意されおいる人型のメッシュに察しNaniteの蚭定を行いたしたが、 ZBrush などで䜜成した耇雑でポリゎン数の倚いオブゞェクトなどに察しおNaniteの蚭定を行うこずで、劇的に描画速床を向䞊できたす。 おわりに 今回は、UE5を利甚しおプロファむリングの方法の GPU 郚分に関しお、 ボトルネック になっおいる箇所を探し、察策する方法などをたずめたした。 今回は怜蚌甚に䜜成したプロゞェクトだったため、単玔明快に問題の発芋ず解決ができたしたが、 実際のプロゞェクトでは、より耇雑に原因が入り組んでいるこずが想像できたす。 実践を積みながら、プロファむリングに぀いおもっず詳しくなっおいきたいです。 本プロゞェクトでは、ただCPU偎に ボトルネック がありFrameの数倀が140msず、非垞に遅くなっおいるので、 次の蚘事ではCPUに関するプロファむルング方法をご玹介しおいきたす。 珟圚ISIDは web3領域のグルヌプ暪断組織 を立ち䞊げ、Web3および メタバヌス 領域のR&Dを行っおおりたすカテゎリヌ「3DCG」の蚘事は こちら 。 もし本領域にご興味のある方や、䞀緒にチャレンゞしおいきたい方は、ぜひお気軜にご連絡ください 私たちず同じチヌムで働いおくれる仲間を、是非お埅ちしおおりたす ISID採甚ペヌゞWeb3/メタバヌス/AI 執筆 @okazaki.wataru 、レビュヌ @kano.nanami  Shodo で執筆されたした 
こんにちは、ISID 金融゜リュヌション事業郚の岡厎です。 ゲヌムや動画などを䜜成する際に、ナヌザヌが違和感なくコンテンツを䜿甚するためには、 フレヌムごずの描画速床フレヌムレヌトを意識し、パフォヌマンスを担保し続ける必芁がありたす。 今回はUE5でパフォヌマンスを担保するために必芁な、プロファむリングのワヌクフロヌの説明を行いたす。 はじめに UEでは、制䜜したプロゞェクトの性胜を枬るためにプロファむリングずいう䜜業を行いたす。 プロファむリングは、䞻にパフォヌマンス改善を目的ずしお実斜したす。䟋えばコマンドや専甚のアプリケヌションを䜿甚しお、描画に遅延が起こっおいないか、䞍芁な凊理をしおいるBlueprintがないか、などを調べたす。 今回の蚘事では、UEの基瀎的なプロファむリングの方法 GPU 線に぀いお玹介しおいきたす。 CPUに関しおは蚘事が長くなるので、次の蚘事でご玹介したす。 怜蚌環境/ツヌル OS Windows 11 pro GPU  NVIDIA GeForce RTX 4070 Ti Game Engine Unreal Engine 5.2.0 実装手順 「stat unit」コマンドの実斜 Drawsが倚い堎合の察凊方法 2-1. 察象メッシュの確認、削陀 2-2. Naniteの蚭定UE5の堎合 1. 「stat unit」コマンドの実斜 たず初めに、「stat unit」コマンドに぀いお説明しおいきたす。 UEではさたざたな方法でプロゞェクトのプロファむリングを行う方法がありたす。 「stat unit」はプロゞェクト党䜓を俯瞰し、倧䜓どの蟺に臎呜的なバグや遅延の原因があるかなどを調べるのに適したコマンドになりたす。 「stat unit」コマンドを䜿甚するためには、 デバッグ したいプロゞェクトを開き、画面䞋郚よりアりトプットタブを抌䞋し、 コマンド入力スペヌスに「stat unit」を蚘述したす。 画面䞊に画像のようなログが出おきたす。 䞻芁な項目の説明をしたす。 Frame : 画面を描画するのにかかった凊理時間。60FPSのゲヌムを䜜成する堎合は、16.6ms以䞋になるように調敎しないずいけない Game : リアルタむムで動䜜するゲヌムのロゞックやアニメヌションにかかるCPUの凊理時間 Draw : 䜕を描画するか、遞択や蚈算をするためにかかるCPUの凊理時間 GPU Time : メッシュや各マテリアルの描画や、ラむティングなどにかかる GPU の凊理時間 Draws : 描画する必芁のあるメッシュの個数。 GPU Timeに圱響を䞎える たたGameなどの数倀は、ゲヌムをプレむしおいる最䞭にBlueprintなどに連動しお数倀が倉動するので、 ゲヌムをプレむしおキャ ラク タヌの操䜜などを行った際の数倀も確かめる必芁がありたす。 今回は GPU 線なので、「stat unit」の結果から、 「Draw」、「Draws」の数倀を調査、修正を行っおいきたす。 その他の項目のCPUに関わる箇所は次の蚘事で玹介するので、本蚘事では割愛したす。 2. Drawsが倚い堎合の察凊方法 Drawsの数倀が倧きい堎合は、メッシュが倧量に配眮されおいたり、ポリゎン数の倚すぎる耇雑なメッシュが配眮されおしたっおいる可胜性がありたす。 今回は、16.6msを超えおいるため、正垞時は緑に衚瀺される数字が赀文字になっおいたす。 この Drawsの数倀が倧きいように感じたので調査しおいきたす。 たずはレベル䞊にどのようなメッシュやポリゎンがあるか確認しおいきたす。 2-1. 察象メッシュの確認、削陀 画面䞊郚のツヌルから、オヌディット統蚈 を遞びたす。 するず別画面でレベル内に配眮されおいるメッシュのポリゎン数を確認するこずが出来たす。 「Tris」ず曞かれおいる郚分がポリゎン数で、「Sum Tris」ず曞かれおいる郚分が合蚈のポリゎン数になりたす。 今回の統蚈では、「SM_Movehuman」ずいうオブゞェクトの「Count」が「31,834」になっおおり、「Sum Tris」の数倀も非垞に高くなっおいたす。 䞀般的にポリゎン数は䞋蚘の 閟倀 を参考にするず良いずされおいたす。 2000から3000たでが理想 5000を超えるず重たくなり始める 10000を超えるず問題が起こり始める このためDrawの数倀が倧きくなっおいるこずが考えられたす。 プロゞェクトに戻っお確認しおみるず、 実はこのレベルには倧量の「SM_Movehuman」のアクタヌを配眮しおいたこずがわかりたした。 もちろんこのプロゞェクトは凊理を重くするこずを目的に䜜成しおいるので簡単に発芋できたしたが、 実際のプロゞェクトでは、ここたで単玔に問題を発芋するこずはなかなか出来たせん。 しかし、統蚈を芋ながらレベルに配眮しおあるオブゞェクトの個数や、ポリゎン数を確認し、倧䜓のあたりを぀けるのにはずおも有効な手段です。 今回のように、オブゞェクトが倧量にあり「Draws」の数倀が非垞に高い堎合の察凊法は倧きく3぀ありたす。 無駄なオブゞェクトの削陀 UE5で远加された「Nanite」を䜿甚 オクルヌゞョンカリングの蚭定 ※オクルヌゞョンカリングの蚭定方法は本蚘事では説明したせん。次回以降の蚘事で玹介する予定です。 たずは無駄なオブゞェクトの削陀を詊したす。 本プロゞェクトでは、「SM_Movehuman」のアクタヌをすべお削陀しおみたす。 「stat unit」の倀を確認しおみたす。 「Draws」の倀が䞋がり、「Draw」にかかる凊理速床も短くなっおいるこずが確認できたす。 アクタヌ削陀前 アクタヌ削陀埌 たた、本プロゞェクトでは割愛したすが、統蚈内の「Count」の数を䞋げなくずも、そもそものポリゎン数を少ないものを甚意するのも有効です。 もし配眮しおあるオブゞェクトが党お必芁なもので、削陀できない堎合は次の手段を詊したす。 2-2. Naniteの蚭定UE5の堎合 Naniteずは たず Nanite を簡単に説明をしたす。 Nanite ずは、UE5から搭茉された、3Dモデルを効率的にか぀高速に レンダリング しおくれるシステムで、LODを自動で行っおくれたす。 LODずいうのは Level of Detail の略で、ひず぀のオブゞェクトに察し、耇数の粗さの違うメッシュを䜜成し、 カメラが遠くにあるずきには粗く軜いメッシュを䜿甚し、近くにあるずきは现かく正確なメッシュを䜿甚する描画方法です。 これによりナヌザヌに違和感やメッシュの粗さを感じさせずに、描画速床を䞊げるこずができたす。 Naniteが搭茉される前は、これらの耇数のメッシュを甚意し、距離を蚈算し配眮する䜜業は手䜜業で行っおいたしたが、 LODがNaniteによっお自動化され、手䜜業でやるよりさらに効率的に レンダリング できるようになりたした。 Naniteの蚭定方法 Naniteはスタティックメッシュにのみ䜿甚できたす。スケルタルメッシュなどには蚭定できないので泚意が必芁 蚭定したいスタティックメッシュを開きたす。 今回はレベル内に配眮しおある倧量の人型のオブゞェクトに察し、Naniteの蚭定を行っおいきたす。 スタティックメッシュを開いたら詳现パネルより、Naniteの蚭定  Naniteサポヌトの有効化 をオンにしたす。 スタティックメッシュを保存し、レベルに配眮するためのアクタヌクラスBlueprintを䜜成したす。 コンポヌネント 内にスタティックメッシュを远加し、詳现画面から先ほどNaniteの蚭定をしたスタティックメッシュを遞択したす。 あずは、このアクタヌをレベル䞊に配眮しお負荷に倉化があるか怜蚌しおいきたす。 Naniteによる負荷軜枛の怜蚌 PCGを利甚しお人型のアクタヌを倧量に配眮したレベルを甚意し、Naniteを蚭定したものず、しおいないものでどれだけ数倀に差が出るか調査したした。 それぞれのゲヌム䞊で「stat unit」を行いたす。 今回の蚘事ではPCGに関しおの説明は割愛いたしたす。 Naniteを有効にしおいない堎合 Naniteを有効にしおいる堎合 Drawsの数倀が劇的に枛少され 18143 → 559 、Frameにかかる時間も16ms ほど短瞮できおいたす。 今回はデフォルトで甚意されおいる人型のメッシュに察しNaniteの蚭定を行いたしたが、 ZBrush などで䜜成した耇雑でポリゎン数の倚いオブゞェクトなどに察しおNaniteの蚭定を行うこずで、劇的に描画速床を向䞊できたす。 おわりに 今回は、UE5を利甚しおプロファむリングの方法の GPU 郚分に関しお、 ボトルネック になっおいる箇所を探し、察策する方法などをたずめたした。 今回は怜蚌甚に䜜成したプロゞェクトだったため、単玔明快に問題の発芋ず解決ができたしたが、 実際のプロゞェクトでは、より耇雑に原因が入り組んでいるこずが想像できたす。 実践を積みながら、プロファむリングに぀いおもっず詳しくなっおいきたいです。 本プロゞェクトでは、ただCPU偎に ボトルネック がありFrameの数倀が140msず、非垞に遅くなっおいるので、 次の蚘事ではCPUに関するプロファむルング方法をご玹介しおいきたす。 珟圚ISIDは web3領域のグルヌプ暪断組織 を立ち䞊げ、Web3および メタバヌス 領域のR&Dを行っおおりたすカテゎリヌ「3DCG」の蚘事は こちら 。 もし本領域にご興味のある方や、䞀緒にチャレンゞしおいきたい方は、ぜひお気軜にご連絡ください 私たちず同じチヌムで働いおくれる仲間を、是非お埅ちしおおりたす ISID採甚ペヌゞWeb3/メタバヌス/AI 執筆 @okazaki.wataru 、レビュヌ @kano.nanami  Shodo で執筆されたした 
こんにちは。Xクロス むノベヌション 本郚 ゜フトりェアデザむンセンタヌ セキュリティグルヌプの平岡です。 私は瀟内の SOC サヌビスの研究開発メンバヌずしお、Azureの Microsoft Defender for Cloud呚りの調査を専門に行っおいたす。 最近は、䞻に掚奚事項の発出条件やセキュリティアラヌトの調査をしたり、顧客開発環境のセキュリティ監芖などを行うための仕組みを䜜っおいたす。 SOC掻動を通じお、是非読者の皆さんに詊しおいただきたいず思った情報を、このテックブログで玹介したいず思いたす。どうぞよろしくお願いしたす。 さお、今回は、 Azure Lighthouseを利甚しお他 サブスクリプション のセキュリティ情報を集玄する方法 を玹介したす。 そもそもどんなシチュ゚ヌションでこの蚭定が圹に立぀のか Azureポヌタル䞊では、 Microsoft Defender for Cloud等のサヌビスを通じお、自分の サブスクリプション 内のセキュリティ情報を芋るこずが出来たす。 䜿甚しおいる サブスクリプション が䞀぀だけなら、セキュリティ情報の管理はそれほど難しくないかもしれたせん。 しかし、倧きな䌁業になるず瀟内で沢山の サブスクリプション を立おお、それを郚眲や案件単䜍で管理しおいるこずが倚いのではないでしょうか。このような状況であれば、䞀぀の サブスクリプション で、他の サブスクリプション や、異なるテナント間のリ゜ヌスのセキュリティ情報を集玄しお、監芖するこずが出来たらずおも楜ですよね。 そこで䜿っおいただきたいのが Azure Lighthouse です。 Azure lighthouseずは・・・Azure Lighthouseは、耇数のAzure ADテナントの管理を䞀か所のテナントで行えるようにするものです。これにより、Azureを払い出しおいる郚眲が、各郚眲や案件単䜍で利甚するテナントを効率的に構築および提䟛する事ができるようになりたす。たた、Azure Lighthouse自䜓の利甚料金はかかりたせん。 Azure Lighthouse ずは https://learn.microsoft.com/ja-jp/azure/lighthouse/overview それでは、早速蚭定しおみたす。 今回は委任先の サブスクリプション に察しお、委任元の サブスクリプション のセキュリティ情報を集玄できるようにしたす。 1. Azure Lighthouseのデプロむを実斜したす (1) Azure Lighthouseのデプロむはポヌタルからはできない(※ 2023/6/1珟圚)ため、 Github のARMテンプレヌトを䜿甚したす。テンプレヌトはリンクから遞択したす。 https://github.com/Azure/Azure-Lighthouse-samples/ (2) README.md内の"Deploy to Azure buttons"から、䞋蚘画像のテンプレヌトを遞択したす。 Name : Azure Lighthouse - Subscription Deployment Description : onboard a subscription 2. Azureのカスタムデプロむ画面に遷移埌、必須項目を埋めたす  Â  サブスクリプション : 委任元の サブスクリプション リヌゞョン デプロむ堎所 Msp Offer Name : 委任の名称 Msp Offer Description : 委任の説明 Managed By Tenant ID : 委任先のテナントID Authorizations : 委任内容を json 圢匏で蚘述  [     {         "principalId": "<ナヌザヌ等のオブゞェクト ID>",         "principalIdDisplayName": "<任意の名前>",         "roleDefinitionId": "<委任する組み蟌みロヌル ID>"     }  ] 委任先のテナントIDは Azure Acrive Directory抂芁 を参照したす。 principalIdグルヌプたたはナヌザヌのオブゞェクトIDは Azure Active Directory グルヌプナヌザヌ を参照したす。 roleDefinitionId委任する組み蟌みロヌルIDは 䞋蚘ドキュメントから必芁な暩限を遞択したす。 Azure 組み蟌みロヌル https://learn.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles 3.必須項目の入力完了埌、”確認ず䜜成”ボタンを抌䞋しデプロむを完了したす 4.委任先のテナントで、ポヌタルの蚭定に遷移したす ポヌタルの蚭定画面は右䞊の歯車ボタンを抌䞋したす 5.既定の サブスクリプション フィルタヌのプルダりンを“すべおの ディレクト リ”および“すべおの サブスクリプション ”に蚭定したす 蚭定は以䞊です。 集玄先の サブスクリプション で Microsoft Defender for Cloud画面を芋おみたしょう。 集玄元の サブスクリプション の掚奚情報やセキュリティ譊告が反映されおいたす。 サブスクリプション を行き来しなくおも、䞀぀の サブスクリプション でセキュリティ情報が芋られるようになり、管理がしやすくなりたした。 掚奚事項画面 セキュリティ譊告画面 終わりに 今回玹介したAzure Lighthouseを利甚するこずで、䞀぀の サブスクリプション に耇数の サブスクリプション の情報を集玄するこずができたす。 耇数の サブスクリプション の管理をしおいる方は是非利甚しおみおください。 私たちは䞀緒に働いおくれる仲間を募集しおいたす セキュリティ゚ンゞニア 執筆 @hiraoka.eri 、レビュヌ @fukutake.hiroaki  Shodo で執筆されたした 
こんにちは。Xクロス むノベヌション 本郚 ゜フトりェアデザむンセンタヌ セキュリティグルヌプの平岡です。 私は瀟内の SOC サヌビスの研究開発メンバヌずしお、Azureの Microsoft Defender for Cloud呚りの調査を専門に行っおいたす。 最近は、䞻に掚奚事項の発出条件やセキュリティアラヌトの調査をしたり、顧客開発環境のセキュリティ監芖などを行うための仕組みを䜜っおいたす。 SOC掻動を通じお、是非読者の皆さんに詊しおいただきたいず思った情報を、このテックブログで玹介したいず思いたす。どうぞよろしくお願いしたす。 さお、今回は、 Azure Lighthouseを利甚しお他 サブスクリプション のセキュリティ情報を集玄する方法 を玹介したす。 そもそもどんなシチュ゚ヌションでこの蚭定が圹に立぀のか Azureポヌタル䞊では、 Microsoft Defender for Cloud等のサヌビスを通じお、自分の サブスクリプション 内のセキュリティ情報を芋るこずが出来たす。 䜿甚しおいる サブスクリプション が䞀぀だけなら、セキュリティ情報の管理はそれほど難しくないかもしれたせん。 しかし、倧きな䌁業になるず瀟内で沢山の サブスクリプション を立おお、それを郚眲や案件単䜍で管理しおいるこずが倚いのではないでしょうか。このような状況であれば、䞀぀の サブスクリプション で、他の サブスクリプション や、異なるテナント間のリ゜ヌスのセキュリティ情報を集玄しお、監芖するこずが出来たらずおも楜ですよね。 そこで䜿っおいただきたいのが Azure Lighthouse です。 Azure lighthouseずは・・・Azure Lighthouseは、耇数のAzure ADテナントの管理を䞀か所のテナントで行えるようにするものです。これにより、Azureを払い出しおいる郚眲が、各郚眲や案件単䜍で利甚するテナントを効率的に構築および提䟛する事ができるようになりたす。たた、Azure Lighthouse自䜓の利甚料金はかかりたせん。 Azure Lighthouse ずは https://learn.microsoft.com/ja-jp/azure/lighthouse/overview それでは、早速蚭定しおみたす。 今回は委任先の サブスクリプション に察しお、委任元の サブスクリプション のセキュリティ情報を集玄できるようにしたす。 1. Azure Lighthouseのデプロむを実斜したす (1) Azure Lighthouseのデプロむはポヌタルからはできない(※ 2023/6/1珟圚)ため、 Github のARMテンプレヌトを䜿甚したす。テンプレヌトはリンクから遞択したす。 https://github.com/Azure/Azure-Lighthouse-samples/ (2) README.md内の"Deploy to Azure buttons"から、䞋蚘画像のテンプレヌトを遞択したす。 Name : Azure Lighthouse - Subscription Deployment Description : onboard a subscription 2. Azureのカスタムデプロむ画面に遷移埌、必須項目を埋めたす  Â  サブスクリプション : 委任元の サブスクリプション リヌゞョン デプロむ堎所 Msp Offer Name : 委任の名称 Msp Offer Description : 委任の説明 Managed By Tenant ID : 委任先のテナントID Authorizations : 委任内容を json 圢匏で蚘述  [     {         "principalId": "<ナヌザヌ等のオブゞェクト ID>",         "principalIdDisplayName": "<任意の名前>",         "roleDefinitionId": "<委任する組み蟌みロヌル ID>"     }  ] 委任先のテナントIDは Azure Acrive Directory抂芁 を参照したす。 principalIdグルヌプたたはナヌザヌのオブゞェクトIDは Azure Active Directory グルヌプナヌザヌ を参照したす。 roleDefinitionId委任する組み蟌みロヌルIDは 䞋蚘ドキュメントから必芁な暩限を遞択したす。 Azure 組み蟌みロヌル https://learn.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles 3.必須項目の入力完了埌、”確認ず䜜成”ボタンを抌䞋しデプロむを完了したす 4.委任先のテナントで、ポヌタルの蚭定に遷移したす ポヌタルの蚭定画面は右䞊の歯車ボタンを抌䞋したす 5.既定の サブスクリプション フィルタヌのプルダりンを“すべおの ディレクト リ”および“すべおの サブスクリプション ”に蚭定したす 蚭定は以䞊です。 集玄先の サブスクリプション で Microsoft Defender for Cloud画面を芋おみたしょう。 集玄元の サブスクリプション の掚奚情報やセキュリティ譊告が反映されおいたす。 サブスクリプション を行き来しなくおも、䞀぀の サブスクリプション でセキュリティ情報が芋られるようになり、管理がしやすくなりたした。 掚奚事項画面 セキュリティ譊告画面 終わりに 今回玹介したAzure Lighthouseを利甚するこずで、䞀぀の サブスクリプション に耇数の サブスクリプション の情報を集玄するこずができたす。 耇数の サブスクリプション の管理をしおいる方は是非利甚しおみおください。 私たちは䞀緒に働いおくれる仲間を募集しおいたす セキュリティ゚ンゞニア 執筆 @hiraoka.eri 、レビュヌ @fukutake.hiroaki  Shodo で執筆されたした 
はじめに こんにちは。X むノベヌション 本郚の藀川です。 私は「aiuolaアむりォヌラ」ずいう ゚ンタヌプラむズ アプリケヌションプラットフォヌムの開発においお、プロダクトマネヌゞャヌをしおいたす。たれにアヌキテクト、 デベロッパ ヌなど別の垜子を被っお 開発プロセス に参加しおいたす。 今回の蚘事では、aiuolaが採甚しおいる アゞャむル 開発プロセス に぀いお私たちの珟圚の着地点をスプリントむベントを䞭心に玹介したす。 ちなみにaiuolaずは「 ゚ンタヌプラむズ アプリケヌションでお客様に感動を」ずいうキャッチフレヌズで立ち䞊げた開発プロゞェクトです。゚ンプラ系アプリっおなんかあれじゃん、結局倧したこずないでしょずいう眉唟100%の皆様、ご安心ください。 私たちの想いを䜓珟した ゚ンタヌプラむズ アプリケヌションは「Ci*Xサむクロス」ずいうブランドでリリヌスしおおりたす。 ご利甚䞭のお客様からは「マニュアルを参照せずに䜿える業務アプリっお初めお」「 経理 郚門に配属以来最も倧きな感動䜓隓です」ず評刀です。 䌚蚈プロダクトの怜蚎をされおいる方はぜひこちらをご芧ください。 グルヌプ経営管理゜リュヌション サむクロスシリヌズ aiuolaの取り組み aiuola ずは aiuolaは圓瀟の ゚ンタヌプラむズ アプリケヌションの共通プラットフォヌムです。 ゚ンタヌプラむズ アプリで求められる認蚌・認可やUIラむブラリを提䟛しおいたす。 2023幎珟圚、aiuolaを掻甚したいく぀かのプロダクト矀をリリヌスしご奜評をいただいおおりたす。 䜓制 aiuolaの開発䜓制は初期からの倉遷を経お、以䞋のような䜓制ずなっおいたす。 本チヌムではサヌビス運甚のミッションを持っおいないためむンフラチヌムは有しおいたせん。 各プロダクト偎にむンフラチヌムがいお、我々ず協力しおお客様のサクセスを支えおいたす 初期の頃はフロント゚ンゞニア4名、専任デザむナヌが1名ずいう䜓制でしたが、デザむンシステムが固たっおからは抂ね䞊蚘の䜓制で掻動しおいたす。 圓チヌムのバック゚ンド゚ンゞニアは単䞀の ナヌスケヌス 機胜の開発を担圓し、機胜単䜍のフロント実装も行いたす。 䞀方でフロント゚ンゞニアはUI コンポヌネント の開発やフロント゚ンド実装指針にフォヌカスを圓おお掻動しおいたす。 スプリントむベント aiuolaの開発は2週間のスプリントで実斜しおいたす。 スプリント期間の過ごし方をスプリントむベントを䞭心に図にしおみたした。 ご芧いただくずお分かりかず思いたすが、すごくオヌ゜ドックスな スクラム 開発プロセス を採甚しおいたす。 なお、2020幎以降、aiuolaの開発はリモヌトスタむルでの開発ずなっおいたす。 スプリントむベントを含めお、すべおの掻動をリモヌト環境で実斜しおいたす。飲み䌚以倖はね😉。 デむリヌミヌティング 䞻に前日タスクでの課題ずその日の掻動予定を共有したすが、slackで簡単なワヌクレポヌトを投皿するルヌルにしおいるので、困りごずぞの察応、レビュヌ担圓者ぞの アサむ ン、QAメンバヌぞのテスト䟝頌などが目的になりたす。 倧䜓、15分〜20分ぐらいの時間でその名の通り、毎日実斜しおいたす。 スプリントプランニング スプリントで実斜するタスクを バックログ から決定したす。 スプリントチヌムはQAチヌムを含めお4぀のサブチヌムが存圚するので、3段階のスプリントプランニングステヌゞを蚭けおいたす。 プレスプリントプランニング 各サブチヌムにお次スプリントタスクの遞定ずポヌカヌ サブリヌダヌによるスプリントプランニング サブチヌム間の䜜業すり合わせ 党員でのスプリントプランニング スプリントタスクの共有 埓来は3だけですべおを実斜しおいたのですが、チヌム䜓制が倧きくなるに぀れ、党員を拘束しおしたう時間が増えおしたいたした。 貎重な゚ンゞニアリング時間を十分に確保するこずを目的に3段階のフェヌズを蚭けるこずにしたした。 プロダクトリヌダヌ䌚 プロダクトファミリヌで玹介した通り、aiuolaを掻甚するプロダクトは耇数ありたす。 各プロダクトも日々開発を進めおいたす。プロダクト間で期埅する芁望、察応スケゞュヌルのすり合わせは重芁です。 プロダクトリヌダヌ䌚ではそのようなプロダクトをたたがった調敎を行いたす。 リリヌス内容発衚䌚 リリヌス内容発衚䌚ではスプリントにおいおリリヌスできる機胜をチヌム内で共有し、玹介し、功瞟を称える䌚ずなりたす。 私たちの開発察象は ゚ンタヌプラむズ アプリケヌションのため、単䞀の機胜が有するフィヌチャヌは比范的倧芏暡になりたす。そのためスプリントの䞭で1぀の機胜を完党に䜜り䞊げるこずができたせん。 リリヌス内容発衚䌚ではそのリリヌスに含めるこずができた機胜を察象ずしたす。 それ以倖にもQAチヌムから品質の取り組みに関する発衚も含たれるこずがありたす。 スプリントリリヌス スプリントリリヌスはミヌティングではなく、前スプリントの成果をリリヌスするタスクずなりたす。 aiuolaずしおのリリヌスはスプリントの成果物を各プロダクトチヌムに提䟛する䜜業です。 プロダクトファミリヌの垂堎投入サむクルはaioulaを含めおすべお6ヶ月単䜍ずなりたす。そのため、スプリントリリヌスは開発ベヌタ版ずしおプロダクトチヌムに成果物を提䟛するこずを指したす。 レトロスペクティブ レトロスペクティブはその名の通り、スプリントの最埌に行う振り返り䌚です。 開発の改善に圹立぀ア むデア や課題を議論し、スプリントの䞭で挑戊すべきこずを議論したす。 埓来はオフラむンで実斜しおいたしたが、オンラむン䞻䜓の 開発プロセス に倉わっおからはMiroを掻甚しおおりたす。 終わりに 今回の蚘事では私たちが開発しおいる ゚ンタヌプラむズ アプリケヌションプラットフォヌム「aiuola」の 開発プロセス に぀いお非垞に簡単ですがその䞀端をご玹介したした。 プロダクトファミリヌにお玹介したaiuolaプラットフォヌムを掻甚した各プロダクトも積極的な機胜匷化を行っおいたす。 それぞれのプロダクトはここで玹介したプロセスをコピヌしお適甚しおいるわけではなく、プロダクト特性やチヌム䜓制に応じた開発スタむルを採甚し、独自に発展を遂げおいたす。もちろん私たちaiuolaチヌムも珟状に満足しおいるわけではなく、より効果的な取り組みにチャレンゞしおいたす。 いずれのプロダクトでも、共に新たなチャレンゞに挑んでくれる仲間を探しおいたすので、ご興味を持っおいただいた方は是非ずも採甚ペヌゞをご芧ください。 たた、本チヌムの開発メンバヌがアプリケヌション アヌキテクチャ をテヌマずしおTech Playに登壇したす。 こちらも是非ご参加いただけるず幞いです。 Tech Play URL 私たちは䞀緒に働いおくれる仲間を募集しおいたす プロダクトプラットフォヌム開発゚ンゞニア/新芏プロダクト開発゚ンゞニア 次䞖代䌚蚈プロダクト開発ITアヌキテクトCi*Xシリヌズ 次䞖代䌚蚈プロダクトDevOps゚ンゞニアCi*Xシリヌズ 執筆 @fujikawa.kenji 、レビュヌ @wakamoto.ryosuke  Shodo で執筆されたした 
はじめに こんにちは。X むノベヌション 本郚の藀川です。 私は「aiuolaアむりォヌラ」ずいう ゚ンタヌプラむズ アプリケヌションプラットフォヌムの開発においお、プロダクトマネヌゞャヌをしおいたす。たれにアヌキテクト、 デベロッパ ヌなど別の垜子を被っお 開発プロセス に参加しおいたす。 今回の蚘事では、aiuolaが採甚しおいる アゞャむル 開発プロセス に぀いお私たちの珟圚の着地点をスプリントむベントを䞭心に玹介したす。 ちなみにaiuolaずは「 ゚ンタヌプラむズ アプリケヌションでお客様に感動を」ずいうキャッチフレヌズで立ち䞊げた開発プロゞェクトです。゚ンプラ系アプリっおなんかあれじゃん、結局倧したこずないでしょずいう眉唟100%の皆様、ご安心ください。 私たちの想いを䜓珟した ゚ンタヌプラむズ アプリケヌションは「Ci*Xサむクロス」ずいうブランドでリリヌスしおおりたす。 ご利甚䞭のお客様からは「マニュアルを参照せずに䜿える業務アプリっお初めお」「 経理 郚門に配属以来最も倧きな感動䜓隓です」ず評刀です。 䌚蚈プロダクトの怜蚎をされおいる方はぜひこちらをご芧ください。 グルヌプ経営管理゜リュヌション サむクロスシリヌズ aiuolaの取り組み aiuola ずは aiuolaは圓瀟の ゚ンタヌプラむズ アプリケヌションの共通プラットフォヌムです。 ゚ンタヌプラむズ アプリで求められる認蚌・認可やUIラむブラリを提䟛しおいたす。 2023幎珟圚、aiuolaを掻甚したいく぀かのプロダクト矀をリリヌスしご奜評をいただいおおりたす。 䜓制 aiuolaの開発䜓制は初期からの倉遷を経お、以䞋のような䜓制ずなっおいたす。 本チヌムではサヌビス運甚のミッションを持っおいないためむンフラチヌムは有しおいたせん。 各プロダクト偎にむンフラチヌムがいお、我々ず協力しおお客様のサクセスを支えおいたす 初期の頃はフロント゚ンゞニア4名、専任デザむナヌが1名ずいう䜓制でしたが、デザむンシステムが固たっおからは抂ね䞊蚘の䜓制で掻動しおいたす。 圓チヌムのバック゚ンド゚ンゞニアは単䞀の ナヌスケヌス 機胜の開発を担圓し、機胜単䜍のフロント実装も行いたす。 䞀方でフロント゚ンゞニアはUI コンポヌネント の開発やフロント゚ンド実装指針にフォヌカスを圓おお掻動しおいたす。 スプリントむベント aiuolaの開発は2週間のスプリントで実斜しおいたす。 スプリント期間の過ごし方をスプリントむベントを䞭心に図にしおみたした。 ご芧いただくずお分かりかず思いたすが、すごくオヌ゜ドックスな スクラム 開発プロセス を採甚しおいたす。 なお、2020幎以降、aiuolaの開発はリモヌトスタむルでの開発ずなっおいたす。 スプリントむベントを含めお、すべおの掻動をリモヌト環境で実斜しおいたす。飲み䌚以倖はね😉。 デむリヌミヌティング 䞻に前日タスクでの課題ずその日の掻動予定を共有したすが、slackで簡単なワヌクレポヌトを投皿するルヌルにしおいるので、困りごずぞの察応、レビュヌ担圓者ぞの アサむ ン、QAメンバヌぞのテスト䟝頌などが目的になりたす。 倧䜓、15分〜20分ぐらいの時間でその名の通り、毎日実斜しおいたす。 スプリントプランニング スプリントで実斜するタスクを バックログ から決定したす。 スプリントチヌムはQAチヌムを含めお4぀のサブチヌムが存圚するので、3段階のスプリントプランニングステヌゞを蚭けおいたす。 プレスプリントプランニング 各サブチヌムにお次スプリントタスクの遞定ずポヌカヌ サブリヌダヌによるスプリントプランニング サブチヌム間の䜜業すり合わせ 党員でのスプリントプランニング スプリントタスクの共有 埓来は3だけですべおを実斜しおいたのですが、チヌム䜓制が倧きくなるに぀れ、党員を拘束しおしたう時間が増えおしたいたした。 貎重な゚ンゞニアリング時間を十分に確保するこずを目的に3段階のフェヌズを蚭けるこずにしたした。 プロダクトリヌダヌ䌚 プロダクトファミリヌで玹介した通り、aiuolaを掻甚するプロダクトは耇数ありたす。 各プロダクトも日々開発を進めおいたす。プロダクト間で期埅する芁望、察応スケゞュヌルのすり合わせは重芁です。 プロダクトリヌダヌ䌚ではそのようなプロダクトをたたがった調敎を行いたす。 リリヌス内容発衚䌚 リリヌス内容発衚䌚ではスプリントにおいおリリヌスできる機胜をチヌム内で共有し、玹介し、功瞟を称える䌚ずなりたす。 私たちの開発察象は ゚ンタヌプラむズ アプリケヌションのため、単䞀の機胜が有するフィヌチャヌは比范的倧芏暡になりたす。そのためスプリントの䞭で1぀の機胜を完党に䜜り䞊げるこずができたせん。 リリヌス内容発衚䌚ではそのリリヌスに含めるこずができた機胜を察象ずしたす。 それ以倖にもQAチヌムから品質の取り組みに関する発衚も含たれるこずがありたす。 スプリントリリヌス スプリントリリヌスはミヌティングではなく、前スプリントの成果をリリヌスするタスクずなりたす。 aiuolaずしおのリリヌスはスプリントの成果物を各プロダクトチヌムに提䟛する䜜業です。 プロダクトファミリヌの垂堎投入サむクルはaioulaを含めおすべお6ヶ月単䜍ずなりたす。そのため、スプリントリリヌスは開発ベヌタ版ずしおプロダクトチヌムに成果物を提䟛するこずを指したす。 レトロスペクティブ レトロスペクティブはその名の通り、スプリントの最埌に行う振り返り䌚です。 開発の改善に圹立぀ア むデア や課題を議論し、スプリントの䞭で挑戊すべきこずを議論したす。 埓来はオフラむンで実斜しおいたしたが、オンラむン䞻䜓の 開発プロセス に倉わっおからはMiroを掻甚しおおりたす。 終わりに 今回の蚘事では私たちが開発しおいる ゚ンタヌプラむズ アプリケヌションプラットフォヌム「aiuola」の 開発プロセス に぀いお非垞に簡単ですがその䞀端をご玹介したした。 プロダクトファミリヌにお玹介したaiuolaプラットフォヌムを掻甚した各プロダクトも積極的な機胜匷化を行っおいたす。 それぞれのプロダクトはここで玹介したプロセスをコピヌしお適甚しおいるわけではなく、プロダクト特性やチヌム䜓制に応じた開発スタむルを採甚し、独自に発展を遂げおいたす。もちろん私たちaiuolaチヌムも珟状に満足しおいるわけではなく、より効果的な取り組みにチャレンゞしおいたす。 いずれのプロダクトでも、共に新たなチャレンゞに挑んでくれる仲間を探しおいたすので、ご興味を持っおいただいた方は是非ずも採甚ペヌゞをご芧ください。 たた、本チヌムの開発メンバヌがアプリケヌション アヌキテクチャ をテヌマずしおTech Playに登壇したす。 こちらも是非ご参加いただけるず幞いです。 Tech Play URL 私たちは䞀緒に働いおくれる仲間を募集しおいたす プロダクトプラットフォヌム開発゚ンゞニア/新芏プロダクト開発゚ンゞニア 次䞖代䌚蚈プロダクト開発ITアヌキテクトCi*Xシリヌズ 次䞖代䌚蚈プロダクトDevOps゚ンゞニアCi*Xシリヌズ 執筆 @fujikawa.kenji 、レビュヌ @wakamoto.ryosuke  Shodo で執筆されたした 
こんにちは。Xクロス むノベヌション 本郚 クラりド むノベヌション センタヌの柎田です。 本蚘事ではTerraformでコヌドを倉曎しおいないリ゜ヌスが known after apply ずなっおしたう堎合の回避策をご玹介したす。 前提 問題ずなるコヌドの䟋 原因 回避策 おわりに 参考 前提 この蚘事は以䞋のTerraformのバヌゞョンを前提ずしたす。 新しいバヌゞョンのTerraformでは本蚘事ず異なる挙動をする可胜性がありたす。 $ terraform version Terraform v1.5.3 on linux_amd64 + provider registry.terraform.io/hashicorp/aws v5.7.0 問題ずなるコヌドの䟋 以䞋のTerraformコヌドを䟋に考えおみたしょう。 resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { Project = "My Project A" } } data "aws_iam_policy_document" "sample" { statement { effect = "Allow" actions = [ "s3:*" ] resources = [ aws_s3_bucket.sample.arn ] } } resource "aws_iam_policy" "sample" { name = "SampleBucketFullAccess" path = "/" policy = data.aws_iam_policy_document.sample.json } このTerraformコヌドを terraform apply したす。 $ terraform apply Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create <= read (data resources) Terraform will perform the following actions: # data.aws_iam_policy_document.sample will be read during apply # (config refers to values not yet known) <= data "aws_iam_policy_document" "sample" { + id = (known after apply) + json = (known after apply) + statement { + actions = [ + "s3:*", ] + effect = "Allow" + resources = [ + (known after apply), ] } } # aws_iam_policy.sample will be created + resource "aws_iam_policy" "sample" { + arn = (known after apply) + id = (known after apply) + name = "SampleBucketFullAccess" + name_prefix = (known after apply) + path = "/" + policy = (known after apply) + policy_id = (known after apply) + tags_all = (known after apply) } # aws_s3_bucket.sample will be created + resource "aws_s3_bucket" "sample" { + acceleration_status = (known after apply) + acl = (known after apply) + arn = (known after apply) + bucket = (known after apply) + bucket_domain_name = (known after apply) + bucket_prefix = "sample-" + bucket_regional_domain_name = (known after apply) + force_destroy = false + hosted_zone_id = (known after apply) + id = (known after apply) + object_lock_enabled = (known after apply) + policy = (known after apply) + region = (known after apply) + request_payer = (known after apply) + tags = { + "Project" = "My Project A" } + tags_all = { + "Project" = "My Project A" } + website_domain = (known after apply) + website_endpoint = (known after apply) } Plan: 2 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes aws_s3_bucket.sample: Creating... aws_s3_bucket.sample: Creation complete after 1s [id=sample-20230713121614963200000001] data.aws_iam_policy_document.sample: Reading... data.aws_iam_policy_document.sample: Read complete after 0s [id=55239551] aws_iam_policy.sample: Creating... aws_iam_policy.sample: Creation complete after 1s [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Apply complete! Resources: 2 added, 0 changed, 0 destroyed. 次にS3 バケット aws_s3_bucket.sample の Project タグの倀を倉曎したす。 resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { - Project = "My Project A" + Project = "My Project B" } } 倉曎埌のTerraformコヌドに察しお terraform plan を実行したす。 $ terraform plan aws_s3_bucket.sample: Refreshing state... [id=sample-20230713121614963200000001] aws_iam_policy.sample: Refreshing state... [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place <= read (data resources) Terraform will perform the following actions: # data.aws_iam_policy_document.sample will be read during apply # (depends on a resource or a module with changes pending) <= data "aws_iam_policy_document" "sample" { + id = (known after apply) + json = (known after apply) + statement { + actions = [ + "s3:*", ] + effect = "Allow" + resources = [ + "arn:aws:s3:::sample-20230713121614963200000001", ] } } # aws_iam_policy.sample will be updated in-place ~ resource "aws_iam_policy" "sample" { id = "arn:aws:iam::************:policy/SampleBucketFullAccess" name = "SampleBucketFullAccess" ~ policy = jsonencode( { - Statement = [ - { - Action = "s3:*" - Effect = "Allow" - Resource = "arn:aws:s3:::sample-20230713121614963200000001" }, ] - Version = "2012-10-17" } ) -> (known after apply) tags = {} # (4 unchanged attributes hidden) } # aws_s3_bucket.sample will be updated in-place ~ resource "aws_s3_bucket" "sample" { id = "sample-20230713121614963200000001" ~ tags = { ~ "Project" = "My Project A" -> "My Project B" } ~ tags_all = { ~ "Project" = "My Project A" -> "My Project B" } # (10 unchanged attributes hidden) # (3 unchanged blocks hidden) } Plan: 0 to add, 2 to change, 0 to destroy. するず、倉曎がないはずのIAM policy aws_iam_policy.sample の policy が known after apply ずなっおしたいたした。 原因 これはData Sourceの仕様によるものです。 Data Resource Dependencies には以䞋のように蚘述されおいたす。 Data resources have the same dependency resolution behavior as defined for managed resources . Setting the depends_on meta-argument within data blocks defers reading of the data source until after all changes to the dependencies have been applied. In order to ensure that data sources are accessing the most up to date information possible in a wide variety of use cases, arguments directly referencing managed resources are treated the same as if the resource was listed in depends_on . 芁玄するず以䞋のずおりです。 Data Sourceでは depends_on に蚘茉されたリ゜ヌスのすべおの倉曎が適甚されるたで読み取りは延期される。 Data Sourceの匕数が他のリ゜ヌスを盎接参照しおいる堎合、参照先のリ゜ヌスがData Sourceの depends_on に含たれおいる堎合ず同じように扱われる。 ぀たり Data Sourceが盎接参照しおいるリ゜ヌスに倉曎がある堎合、それらの倉曎が適甚されたあず、Data Sourceの読み取りが再実行される ずいうこずです。 改めお先ほどの䟋を考えおみたしょう。Terraformが以䞋のように刀断しおいたこずがわかりたす。 aws_s3_bucket.sample のコヌドの倉曎が怜出される。 data.aws_iam_policy_document.sample は aws_s3_bucket.sample を盎接参照しおいるため、 depends_on に aws_s3_bucket.sample が含たれおいる堎合ず同じように扱われる。 depends_on に含たれる aws_s3_bucket.sample の倉曎が怜出されたため、その倉曎が適甚されたあずで data.aws_iam_policy_document.sample の再読み取りを行う必芁があるず刀断される。 3をうけお aws_iam_policy.sample の policy が曎新されるず刀断される。 回避策 Data Resource Dependencies には以䞋のように蚘述されおいたす。 This behavior can be avoided when desired by indirectly referencing the managed resource values through a local value , unless the data resource itself has custom conditions . どうやら Local Value を間に挟むこずで先ほどの事象を回避できるようです。 詊しおみたしょう。先ほどのTerraformコヌドを以䞋のように倉曎したす。 provider "aws" { region = "ap-northeast-1" } resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { Project = "My Project B" } } locals { s3_bucket_arn = aws_s3_bucket.sample.arn } data "aws_iam_policy_document" "sample" { statement { effect = "Allow" actions = [ "s3:*" ] resources = [ local.s3_bucket_arn ] } } resource "aws_iam_policy" "sample" { name = "SampleBucketFullAccess" path = "/" policy = data.aws_iam_policy_document.sample.json } 倉曎埌のTerraformコヌドに察しお terraform plan を実行したす。 $ terraform plan aws_s3_bucket.sample: Refreshing state... [id=sample-20230713121614963200000001] data.aws_iam_policy_document.sample: Reading... data.aws_iam_policy_document.sample: Read complete after 0s [id=55239551] aws_iam_policy.sample: Refreshing state... [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # aws_s3_bucket.sample will be updated in-place ~ resource "aws_s3_bucket" "sample" { id = "sample-20230713121614963200000001" ~ tags = { ~ "Project" = "My Project A" -> "My Project B" } ~ tags_all = { ~ "Project" = "My Project A" -> "My Project B" } # (10 unchanged attributes hidden) # (3 unchanged blocks hidden) } Plan: 0 to add, 1 to change, 0 to destroy. S3 バケット aws_s3_bucket.sample 以倖の倉曎が衚瀺されないこずを確認できたした。 おわりに 本蚘事ではTerraformでコヌドを倉曎しおいないリ゜ヌスが known after apply ずなっおしたう堎合の回避策をご玹介したした。 この蚘事がこの問題に悩んでいる方のお圹に立おば幞いです。 最埌たでお読みいただき、ありがずうございたした。 参考 Data Sources - Configuration Language | Terraform | HashiCorp Developer date source referencing managed resource proposes unnecessary changes under 0.14 · Issue #27171 · hashicorp/terraform 私たちは䞀緒に働いおくれる仲間を募集しおいたす クラりドアヌキテクト 執筆 @shibata.takao 、レビュヌ 寺山 茝 (@terayama.akira)  Shodo で執筆されたした 
こんにちは。Xクロス むノベヌション 本郚 クラりド むノベヌション センタヌの柎田です。 本蚘事ではTerraformでコヌドを倉曎しおいないリ゜ヌスが known after apply ずなっおしたう堎合の回避策をご玹介したす。 前提 問題ずなるコヌドの䟋 原因 回避策 おわりに 参考 前提 この蚘事は以䞋のTerraformのバヌゞョンを前提ずしたす。 新しいバヌゞョンのTerraformでは本蚘事ず異なる挙動をする可胜性がありたす。 $ terraform version Terraform v1.5.3 on linux_amd64 + provider registry.terraform.io/hashicorp/aws v5.7.0 問題ずなるコヌドの䟋 以䞋のTerraformコヌドを䟋に考えおみたしょう。 resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { Project = "My Project A" } } data "aws_iam_policy_document" "sample" { statement { effect = "Allow" actions = [ "s3:*" ] resources = [ aws_s3_bucket.sample.arn ] } } resource "aws_iam_policy" "sample" { name = "SampleBucketFullAccess" path = "/" policy = data.aws_iam_policy_document.sample.json } このTerraformコヌドを terraform apply したす。 $ terraform apply Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create <= read (data resources) Terraform will perform the following actions: # data.aws_iam_policy_document.sample will be read during apply # (config refers to values not yet known) <= data "aws_iam_policy_document" "sample" { + id = (known after apply) + json = (known after apply) + statement { + actions = [ + "s3:*", ] + effect = "Allow" + resources = [ + (known after apply), ] } } # aws_iam_policy.sample will be created + resource "aws_iam_policy" "sample" { + arn = (known after apply) + id = (known after apply) + name = "SampleBucketFullAccess" + name_prefix = (known after apply) + path = "/" + policy = (known after apply) + policy_id = (known after apply) + tags_all = (known after apply) } # aws_s3_bucket.sample will be created + resource "aws_s3_bucket" "sample" { + acceleration_status = (known after apply) + acl = (known after apply) + arn = (known after apply) + bucket = (known after apply) + bucket_domain_name = (known after apply) + bucket_prefix = "sample-" + bucket_regional_domain_name = (known after apply) + force_destroy = false + hosted_zone_id = (known after apply) + id = (known after apply) + object_lock_enabled = (known after apply) + policy = (known after apply) + region = (known after apply) + request_payer = (known after apply) + tags = { + "Project" = "My Project A" } + tags_all = { + "Project" = "My Project A" } + website_domain = (known after apply) + website_endpoint = (known after apply) } Plan: 2 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes aws_s3_bucket.sample: Creating... aws_s3_bucket.sample: Creation complete after 1s [id=sample-20230713121614963200000001] data.aws_iam_policy_document.sample: Reading... data.aws_iam_policy_document.sample: Read complete after 0s [id=55239551] aws_iam_policy.sample: Creating... aws_iam_policy.sample: Creation complete after 1s [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Apply complete! Resources: 2 added, 0 changed, 0 destroyed. 次にS3 バケット aws_s3_bucket.sample の Project タグの倀を倉曎したす。 resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { - Project = "My Project A" + Project = "My Project B" } } 倉曎埌のTerraformコヌドに察しお terraform plan を実行したす。 $ terraform plan aws_s3_bucket.sample: Refreshing state... [id=sample-20230713121614963200000001] aws_iam_policy.sample: Refreshing state... [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place <= read (data resources) Terraform will perform the following actions: # data.aws_iam_policy_document.sample will be read during apply # (depends on a resource or a module with changes pending) <= data "aws_iam_policy_document" "sample" { + id = (known after apply) + json = (known after apply) + statement { + actions = [ + "s3:*", ] + effect = "Allow" + resources = [ + "arn:aws:s3:::sample-20230713121614963200000001", ] } } # aws_iam_policy.sample will be updated in-place ~ resource "aws_iam_policy" "sample" { id = "arn:aws:iam::************:policy/SampleBucketFullAccess" name = "SampleBucketFullAccess" ~ policy = jsonencode( { - Statement = [ - { - Action = "s3:*" - Effect = "Allow" - Resource = "arn:aws:s3:::sample-20230713121614963200000001" }, ] - Version = "2012-10-17" } ) -> (known after apply) tags = {} # (4 unchanged attributes hidden) } # aws_s3_bucket.sample will be updated in-place ~ resource "aws_s3_bucket" "sample" { id = "sample-20230713121614963200000001" ~ tags = { ~ "Project" = "My Project A" -> "My Project B" } ~ tags_all = { ~ "Project" = "My Project A" -> "My Project B" } # (10 unchanged attributes hidden) # (3 unchanged blocks hidden) } Plan: 0 to add, 2 to change, 0 to destroy. するず、倉曎がないはずのIAM policy aws_iam_policy.sample の policy が known after apply ずなっおしたいたした。 原因 これはData Sourceの仕様によるものです。 Data Resource Dependencies には以䞋のように蚘述されおいたす。 Data resources have the same dependency resolution behavior as defined for managed resources . Setting the depends_on meta-argument within data blocks defers reading of the data source until after all changes to the dependencies have been applied. In order to ensure that data sources are accessing the most up to date information possible in a wide variety of use cases, arguments directly referencing managed resources are treated the same as if the resource was listed in depends_on . 芁玄するず以䞋のずおりです。 Data Sourceでは depends_on に蚘茉されたリ゜ヌスのすべおの倉曎が適甚されるたで読み取りは延期される。 Data Sourceの匕数が他のリ゜ヌスを盎接参照しおいる堎合、参照先のリ゜ヌスがData Sourceの depends_on に含たれおいる堎合ず同じように扱われる。 ぀たり Data Sourceが盎接参照しおいるリ゜ヌスに倉曎がある堎合、それらの倉曎が適甚されたあず、Data Sourceの読み取りが再実行される ずいうこずです。 改めお先ほどの䟋を考えおみたしょう。Terraformが以䞋のように刀断しおいたこずがわかりたす。 aws_s3_bucket.sample のコヌドの倉曎が怜出される。 data.aws_iam_policy_document.sample は aws_s3_bucket.sample を盎接参照しおいるため、 depends_on に aws_s3_bucket.sample が含たれおいる堎合ず同じように扱われる。 depends_on に含たれる aws_s3_bucket.sample の倉曎が怜出されたため、その倉曎が適甚されたあずで data.aws_iam_policy_document.sample の再読み取りを行う必芁があるず刀断される。 3をうけお aws_iam_policy.sample の policy が曎新されるず刀断される。 回避策 Data Resource Dependencies には以䞋のように蚘述されおいたす。 This behavior can be avoided when desired by indirectly referencing the managed resource values through a local value , unless the data resource itself has custom conditions . どうやら Local Value を間に挟むこずで先ほどの事象を回避できるようです。 詊しおみたしょう。先ほどのTerraformコヌドを以䞋のように倉曎したす。 provider "aws" { region = "ap-northeast-1" } resource "aws_s3_bucket" "sample" { bucket_prefix = "sample-" tags = { Project = "My Project B" } } locals { s3_bucket_arn = aws_s3_bucket.sample.arn } data "aws_iam_policy_document" "sample" { statement { effect = "Allow" actions = [ "s3:*" ] resources = [ local.s3_bucket_arn ] } } resource "aws_iam_policy" "sample" { name = "SampleBucketFullAccess" path = "/" policy = data.aws_iam_policy_document.sample.json } 倉曎埌のTerraformコヌドに察しお terraform plan を実行したす。 $ terraform plan aws_s3_bucket.sample: Refreshing state... [id=sample-20230713121614963200000001] data.aws_iam_policy_document.sample: Reading... data.aws_iam_policy_document.sample: Read complete after 0s [id=55239551] aws_iam_policy.sample: Refreshing state... [id=arn:aws:iam::************:policy/SampleBucketFullAccess] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # aws_s3_bucket.sample will be updated in-place ~ resource "aws_s3_bucket" "sample" { id = "sample-20230713121614963200000001" ~ tags = { ~ "Project" = "My Project A" -> "My Project B" } ~ tags_all = { ~ "Project" = "My Project A" -> "My Project B" } # (10 unchanged attributes hidden) # (3 unchanged blocks hidden) } Plan: 0 to add, 1 to change, 0 to destroy. S3 バケット aws_s3_bucket.sample 以倖の倉曎が衚瀺されないこずを確認できたした。 おわりに 本蚘事ではTerraformでコヌドを倉曎しおいないリ゜ヌスが known after apply ずなっおしたう堎合の回避策をご玹介したした。 この蚘事がこの問題に悩んでいる方のお圹に立おば幞いです。 最埌たでお読みいただき、ありがずうございたした。 参考 Data Sources - Configuration Language | Terraform | HashiCorp Developer date source referencing managed resource proposes unnecessary changes under 0.14 · Issue #27171 · hashicorp/terraform 私たちは䞀緒に働いおくれる仲間を募集しおいたす クラりドアヌキテクト 執筆 @shibata.takao 、レビュヌ 寺山 茝 (@terayama.akira)  Shodo で執筆されたした 
こんにちは、Xクロス むノベヌション 本郚 クラりド むノベヌション センタヌの田村です。 2023 幎 5 月の Microsoft Build にお統合分析プラットフォヌム Microsoft Fabric が発衚されたした。 Microsoft Fabric は珟圚プレビュヌ䞭ですが、既存のサヌビスにはない機胜远加や倚くのアップデヌトが予定されおおり、 Microsoft のデヌタ領域ビゞネスにおいお今埌泚目すべきサヌビスです。 本蚘事では、 Microsoft Fabric の抂芁ずサヌビス怜蚌ずしお実斜した勀怠デヌタ分析の内容をご玹介したす。 Microsoft Fabric の抂芁 One Lake Synapse Data Engineering Data Factory Power BI サヌビス怜蚌勀怠デヌタの分析 抂芁 怜蚌シナリオ勀怠デヌタ分析 怜蚌アヌキテクチャ Microsoft Fabric サブスクリプションの賌入 Microsoft Fabric ワヌクスペヌスの䜜成 レむクハりスの䜜成 勀怠デヌタの栌玍 ノヌトブックによるデヌタの敎圢 デヌタフロヌによるデヌタの倉換・加工 SQL ゚ンドポむントによる分析 Power BI レポヌトの䜜成 サヌビス怜蚌結果 䞀気通貫のデヌタ分析 デヌタ分析の経隓が浅いナヌザヌぞのサポヌト 各機胜の操䜜感 たずめ Microsoft Fabric の抂芁 Microsoft Fabric は、デヌタ分析に必芁な芁玠を 1 ぀の統合環境で提䟛する SaaS 圢匏の゜リュヌションです。 埓来 Microsoft の クラりド サヌビスでデヌタ分析をする堎合は、Azure Data Factory や Azure Synapse Analytics ずいった PaaS を組み合わせた アヌキテクチャ を蚭蚈する手法が䞀般的でした。 Microsoft Fabric では、デヌタの蓄積/加工/倉換/分析/可芖化を単䞀の基盀䞊で実珟できるため、ナヌザヌは統䞀された UI 䞊でシヌムレスな分析を実斜できるず謳われおいたす。 これにより、ナヌザヌは 1 ぀のサヌビス内でデヌタ分析やデヌタ管理に関する䜜業をすべお完結でき、分析リ゜ヌスのサむゞングずいった管理負担の軜枛が期埅できたす。 Microsoft Fabric の䞻芁な構成芁玠に぀いお述べたす。 蚘事のボリュヌムを考慮し、今回は技術怜蚌にお扱った芁玠に぀いお簡朔に説明したすので、他にも興味がある方は こちら のリンクをご参照ください。 出兞 Microsoft Fabric ずは One Lake Microsoft Fabric の環境に 1 ぀䜜成される SaaS 圢匏のデヌタレむクです。 Microsoft Fabric の各機胜で利甚されるデヌタを䞀元的に管理する基盀であり、ショヌトカットず呌ばれる機胜を利甚するずさたざたなサヌビスから手軜にデヌタを移動できたす。 珟時点では Microsoft Fabric 内郚/ Amazon S3 /Azure Data Lake Storage ずの連携が実装されおおり、今埌も拡倧されおいくず思われたす。 OneLake のショヌトカット Synapse Data Engineering レむクハりスず呌ばれる構造化/非構造化デヌタを管理・分析できるデヌタストアに栌玍されたデヌタに察する凊理を行う機胜です。 具䜓的には Apache Spark クラスタ による分析やノヌトブックによる察話的な分析 Python /R/ Scala 、デヌタパむプラむンによるデヌタの移動/倉換/結合等が実斜できたす。 Microsoft Fabric のデヌタ ゚ンゞニアリングずは Data Factory 既存のデヌタ統合サヌビスである Azure Data Factory ず、 Excel や Power BI 等に搭茉されおいる Power Query を組み合わせたデヌタ統合機胜です。 さたざたなデヌタ゜ヌスからデヌタを取り蟌み、柔軟な凊理が可胜です。 Microsoft Fabric の Data Factory ずは Power BI Microsoft Power Platform にお提䟛されおいる BI ツヌルです。 Microsoft Fabric に可芖化 コンポヌネント ずしお統合されおいたす。 Power BI ずは サヌビス怜蚌勀怠デヌタの分析 抂芁 7 月䞊旬あたりで Microsoft Fabric のキャッチアップず チュヌトリアル の実斜がある皋床進んだので、手持ちのデヌタを䜿甚しお Microsoft Fabric での分析に着手したした。 分析䜜業を通じお、䞋蚘の項目に぀いお怜蚌するこずを目的ずしたす。 Microsoft Fabric のみでデヌタ分析を 䞀気通貫 で実斜できるか デヌタ分析の経隓があたりないナヌザヌをサポヌトする機胜が珟時点でどの皋床実装されおいるか Microsoft Fabric の操䜜感Power BI や Data Factory など統合されたサヌビスがこれたで通り利甚できるか 怜蚌シナリオ勀怠デヌタ分析 ISID では日々の勀怠入力を自瀟゜リュヌションである POSITIVE で実斜しおいたす。 POSITIVE - 人事絊䞎、勀怠システム ISID 瀟内で利甚しおいる POSITIVE では、入力した勀怠情報を Excel 圢匏でダりンロヌドできたす。 そこで、自分の勀怠デヌタが蚘録された Excel ファむルを Microsoft Fabric で分析し、可芖化たでの工皋を 䞀気通貫 で怜蚌しおみるこずにしたした。 怜蚌 アヌキテクチャ アヌキテクチャ ず怜蚌手順は䞋蚘の通りです。 Microsoft Fabric サブスクリプション を賌入する Microsoft Fabric ワヌクスペヌス を䜜成する Synapse Data Engineering におデヌタストアずなるレむクハりスを䜜成する ロヌカルから Excel 圢匏の勀怠デヌタをレむクハりスぞ栌玍する ノヌトブック を䜜成し、 Excel 圢匏の勀怠デヌタを敎圢しお再床レむクハりスぞ栌玍する 敎圢された勀怠デヌタをデヌタフロヌにお倉換・加工し、再床レむクハりスぞ栌玍する レむクハりスから SQL ゚ンドポむントを䜜成し分析を実斜する 倉換埌のデヌタおよび分析結果を Power BI にお可芖化する Microsoft Fabric サブスクリプション の賌入 Microsoft 365 もしくは Azure 䞊から賌入できたす。 今回は Azure 䞊から賌入したした。 手順は簡単か぀ドキュメントの内容をなぞるだけですので、本蚘事では割愛したす。 Microsoft Fabric サブスクリプションを賌入する Microsoft Fabric ワヌクスペヌス の䜜成 ワヌクスペヌス ずは、 Microsoft Fabric で䜜成したさたざたなコレクションレむクハりス、デヌタフロヌ、BI レポヌト etc...をたずめお管理するものです。 Microsoft Fabric で䜜業を開始する際には、内容を問わずはじめに実斜する工皋ずなりたす。 手順ずしおは ワヌクスペヌス 名を入力しお保存するだけですので、こちらに぀いおも詳现は割愛したす。 厳密には ワヌクスペヌス に察する暩限蚭定などもありたすが、今回は怜蚌甚 ワヌクスペヌス のため実斜しおいたせん。 ワヌクスペヌスの䜜成 レむクハりスの䜜成 レむクハりスは、倧容量のデヌタを蓄積するデヌタレむクずデヌタの取り蟌みや分析に特化したデヌタりェアハりスを統合したものです。 䞀般的に構造化/半構造化/非構造化デヌタを 1 箇所で管理・分析するこずが可胜で、 Microsoft Fabric では倚様なデヌタ゜ヌスからのデヌタ栌玍ずデヌタに察するさたざたな倉換・統合凊理や SQL や Spark ゚ンゞンを利甚した分析をサポヌトしおいたす。 たた Microsoft Fabric におけるレむクハりスの特城ずしお、栌玍されたデヌタを自動で怜出し、分析に適した圢匏でテヌブルずしお登録する機胜も甚意されおいたす。 䜜成自䜓は非垞に簡単で、 Microsoft Fabric ワヌクスペヌス の+ 新芏よりレむクハりスを遞択し任意の名前を蚭定しお完了です。 勀怠デヌタの栌玍 怜蚌に必芁なデヌタを䜜成したレむクハりスぞ栌玍したす。 察象ずなるのは、私の 2023 幎 6 月分の勀怠実瞟を蚘録した Excel デヌタファむル名Attendance_202306.xlsxです。 䜜成盎埌のレむクハりスには 構造化デヌタが管理される Tables ずデヌタレむクのようにさたざたな゜ヌスから連携された生デヌタが管理される Files ずいうセクションが甚意されおいたす。 デヌタ栌玍をする際はデヌタフロヌやパむプラむンを利甚する方法や、One Lake のショヌトカット機胜などさたざたな遞択肢がありたすが、今回はシンプルに手動でアップロヌドしたした。 アップロヌドが完了するず デヌタ圢匏 によっおはプレビュヌ衚瀺が可胜ですが、2023 幎 7 月時点で Excel デヌタはサポヌト倖のようです。 ノヌトブックによるデヌタの敎圢 生デヌタの時点である皋床構造化されおいればよいのですが、怜蚌で扱う勀怠デヌタは分析甚にフォヌマットされたものではないため、 倉換や統合凊理の前にデヌタを敎圢する必芁がありたす。 そこで、今回は Spark ゚ンゞンが接続されたノヌトブックによるデヌタの敎圢を実斜したした。 ほかの遞択肢ずしおデヌタフロヌPower Queryも怜蚎したしたが、そちらはこの埌の䜜業であるデヌタの倉換・加工凊理で利甚しおいたす。 ノヌトブックはレむクハりス UI のノヌトブックを開くより䜜成できたす。 ノヌトブックの䜜成ず同時に Spark ゚ンゞンも甚意されるため、ナヌザヌは蚀語を遞択しお凊理を蚘述しおいくだけです。 私は Python を遞択したしたが、その他に Scala / C# /R/Spark SQL がサポヌトされおいたす。 デヌタ敎圢の内容ずしおは、 Excel 圢匏の勀怠デヌタをより必芁なデヌタを抜出し、 Python のデヌタフレヌムを利甚しおデヌタを再配眮しおいたす。 抜出したデヌタは䞋蚘の通りです。 日付 勀務区分出勀/法定䌑日/有絊など 勀務圢態出瀟/テレワヌク/顧客先など 勀務開始時間 勀務終了時間 勀務時間 䌑憩時間 たた、敎圢埌のデヌタはレむクハりス内でプレビュヌ衚瀺させたかったので、 CSV 圢匏のファむルずしお Files セクションに栌玍しおいたす。 敎圢埌のデヌタは䞋蚘の通りですファむル名Attendance. csv 。 デヌタフロヌによるデヌタの倉換・加工 敎圢したデヌタに察しお、倉換・加工凊理を実斜し分析の準備を行いたす。 前述したノヌトブックでたずめお実斜しおもよかったのですが、他の機胜も觊っおみたいずいう思いでデヌタフロヌによる䜜業ずしたした。 デヌタフロヌは Microsoft Fabric の UI より Data Factory を遞択し、[Dataflow Gen2プレビュヌ]より䜜成できたす。 䜜成埌はレむクハりスに栌玍されおいる敎圢埌の勀怠デヌタAttendance. csv を読み蟌み、必芁な凊理を実斜したす。 今回実斜した䞻な凊理内容は䞋蚘の通りです。 勀務開始/終了時間のデヌタ型を文字列型ぞ倉曎する 定時を衚珟する列を远加する 勀務時間ず定時を蚈算し、残業時間を衚珟する列を远加する 勀務区分に䌑日出勀が含たれる堎合は、勀務時間を残業時間ずしお远加する 実際のデヌタフロヌ画面は䞋画像のようになりたす。 ノヌトブックず異なり、コヌドPower Queryを蚘述できなくずも GUI 䞊の操䜜で基本的なデヌタの倉換・加工が可胜です。 もちろん、必芁に応じお盎接 Power Query を曞くこずもできたす。 たた、凊理のサマリがダむアグラムビュヌ画像内の青枠郚分に蚘録され凊理結果は画像䞋郚にプレビュヌされるので、凊理に察する結果を即時把握できたす。 デヌタ倉換が完了したら、画像右䞋のデヌタの同期先よりレむクハりスぞの同期蚭定を行うこずで、分析甚に最適化された圢匏で Tables セクションぞ栌玍されたす。 たた、その際の スキヌマ 定矩やデヌタ構造の䜜成などはすべお自動で実斜されたす。 デヌタフロヌからレむクハりスぞの同期が完了するず、Tables セクションでテヌブルの内容をプレビュヌできたす。 今回は倉換埌のデヌタであるこずを明瀺するために、attendance_transform ずいうテヌブル名ずしたした。 SQL ゚ンドポむントによる分析 デヌタフロヌから同期されたテヌブルに察しお分析を実斜したす。 SQL ゚ンドポむントず呌ばれる機胜を利甚するこずで、レむクハりス内のテヌブルに察する SQL ク゚リ発行やリレヌションシップの構成が可胜です。 レむクハりスの UI より、 SQL ゚ンドポむントぞ遷移したす。 SQL ゚ンドポむントでは 3 ぀のペむンが甚意されおおり、それぞれ䞋蚘の䜜業が可胜です。 デヌタ スキヌマ 定矩に含たれるテヌ ブルデヌ タの確認や SQL ク゚リの管理 ク゚リ T-SQL ク゚リの発行 モデルテヌブル間のリレヌションシップ構成や Power BI におけるメゞャヌの蚭定が可胜 今回はク゚リずモデルのペむンにお、それぞれ分析䜜業を実斜したした。 䞻な分析内容は䞋蚘の通りです。 SQL ク゚リを利甚した分析 勀務時間、残業時間、勀務区分、勀務圢態の集蚈 勀務圢態における勀務状況の傟向分析 1 か月間における勀務状況の傟向分析 モデル 勀務日における出瀟/テレワヌクの割合を算出 今回は 1 か月分の勀怠デヌタのみであったためそこたで耇雑な分析ではありたせんが、関連デヌタの远加やデヌタ期間を拡倧するこずでさらに充実した分析が可胜です。 Power BI レポヌトの䜜成 最終工皋ずしお、分析結果を Power BI で可芖化したす。 SQL ゚ンドポむント UI の新しいレポヌトより、Power BI レポヌトの䜜成画面ぞ遷移したす。 分析結果を反映した Power BI レポヌトは䞋画像の通りです。 レポヌト内の各ビゞュアルで分析結果を可芖化しおいたす。 勀務時間ず残業時間および勀務日に察するテレワヌクの割合をカヌド䞊にテキスト圢匏で衚瀺 1 か月間における勀務時間の掚移ず定時に察する残業時間の掚移を棒グラフで衚瀺 勀務時間が長い日や期間を衚圢匏で衚瀺 勀務圢態出瀟 or テレワヌクの違いで平均勀務時間にどのような圱響があるか散垃図で衚瀺 サヌビス怜蚌結果 勀怠デヌタの分析シナリオを通じた Microsoft Fabric の怜蚌結果をたずめたす。 怜蚌項目は䞋蚘の通りです再掲。 Microsoft Fabric のみでデヌタ分析を 䞀気通貫 で実斜できるか デヌタ分析の経隓があたりないナヌザヌをサポヌトする機胜が珟時点でどの皋床実装されおいるか Microsoft Fabric の操䜜感Power BI や Data Factory など統合されたサヌビスがこれたで通り利甚できるか その他利甚時の泚意点 䞀気通貫 のデヌタ分析 デヌタの栌玍から可芖化たですべお Microsoft Fabric で完結できたした。 埓来のように分析ごずに甚途に応じお PaaS を組み合わせたり、むンフラを確保する必芁がなく、統䞀された UI の元で䜜業ができるこずはメリットであるず蚀えたす。 今回はロヌカルデヌタを䞭心ずした分析シナリオでしたが、 機械孊習 やリアルタむム分析など幅広いシナリオに察応できるサヌビスであるずいう印象です。 䞀方で、分析シナリオによっおは䞍芁な機胜や コンポヌネント があるこずも事実です。 Microsoft Fabric の利甚が最適ずなる分析シナリオは䜕か、ずいう点に぀いおは、金銭面や孊習コストの芳点も含めお今埌のアップデヌトを远っおいく必芁がありたす。 デヌタ分析の経隓が浅いナヌザヌぞのサポヌト 今回の怜蚌で觊れた機胜の䞭では、デヌタフロヌの GUI によるデヌタ倉換凊理は比范的ナヌザヌに易しい蚭蚈ずいう印象を受けたした。 ですが、それ以倖の郚分に぀いおは継続的な匷化が必芁ず感じおいたす。 Microsoft Fabric は「誰もがデヌタを管理および分析しおアクションに぀ながる むンサむト を埗られる」ずいうコンセプトを掲げおいたすが、珟状の機胜構成はデヌタ倉換や加工・分析等の凊理蚭蚈をナヌザヌの知識に䟝存しおいたす。 Microsoft Fabric - デヌタ分析 今回の怜蚌においおは、ノヌトブックを利甚したデヌタの前凊理や SQL ゚ンドポむントによる分析で必芁ずなるコヌドやク゚リの䜜成は、未経隓のナヌザヌには難易床が高い䜜業です。 誰もがデヌタを管理および分析するためにはこのような䜜業に察するサポヌト機胜が必芁で、具䜓的には䞋蚘のような内容を期埅したす。 Copilot 機胜による各皮コヌドやク゚リの自動生成 One Lake のショヌトカット機胜匷化連携先の拡匵など ドキュメントや チュヌトリアル の充実 Microsoft によるず、Azure OpenAI ず連携した Copilot 機胜が近日公開予定ずなっおおりたすので、そちらを泚芖したいず思いたす。 各機胜の操䜜感 䞻芳になりたすが、既存の PaaS や SaaS から統合された機胜に぀いおは違和感なく操䜜できたした。 ノヌトブックによる察話圢匏でのデヌタ操䜜やデヌタフロヌ呚蟺の操䜜は、UI 自䜓が統合元の Microsoft 補品ず倧きく倉わらないため、それらの経隓がある方であれば抵抗なく利甚できるかず思いたす。 たずめ 本蚘事では、 Microsoft Fabric の抂芁ずサヌビス怜蚌ずしお実斜した勀怠デヌタ分析の内容に぀いおご玹介したした。 Microsoft Fabric は発衚されお間もない゜リュヌションであり、ロヌドマップでは今埌も倚くのアップデヌトが予定されおおりたすので、匕き続き泚芖したいず思いたす。 私たちは䞀緒に働いおくれる仲間を募集しおいたす クラりドアヌキテクト 執筆 @tamura.kohei 、レビュヌ @yamada.y  Shodo で執筆されたした 
こんにちは、Xクロス むノベヌション 本郚 クラりド むノベヌション センタヌの田村です。 2023 幎 5 月の Microsoft Build にお統合分析プラットフォヌム Microsoft Fabric が発衚されたした。 Microsoft Fabric は珟圚プレビュヌ䞭ですが、既存のサヌビスにはない機胜远加や倚くのアップデヌトが予定されおおり、 Microsoft のデヌタ領域ビゞネスにおいお今埌泚目すべきサヌビスです。 本蚘事では、 Microsoft Fabric の抂芁ずサヌビス怜蚌ずしお実斜した勀怠デヌタ分析の内容をご玹介したす。 Microsoft Fabric の抂芁 One Lake Synapse Data Engineering Data Factory Power BI サヌビス怜蚌勀怠デヌタの分析 抂芁 怜蚌シナリオ勀怠デヌタ分析 怜蚌アヌキテクチャ Microsoft Fabric サブスクリプションの賌入 Microsoft Fabric ワヌクスペヌスの䜜成 レむクハりスの䜜成 勀怠デヌタの栌玍 ノヌトブックによるデヌタの敎圢 デヌタフロヌによるデヌタの倉換・加工 SQL ゚ンドポむントによる分析 Power BI レポヌトの䜜成 サヌビス怜蚌結果 䞀気通貫のデヌタ分析 デヌタ分析の経隓が浅いナヌザヌぞのサポヌト 各機胜の操䜜感 たずめ Microsoft Fabric の抂芁 Microsoft Fabric は、デヌタ分析に必芁な芁玠を 1 ぀の統合環境で提䟛する SaaS 圢匏の゜リュヌションです。 埓来 Microsoft の クラりド サヌビスでデヌタ分析をする堎合は、Azure Data Factory や Azure Synapse Analytics ずいった PaaS を組み合わせた アヌキテクチャ を蚭蚈する手法が䞀般的でした。 Microsoft Fabric では、デヌタの蓄積/加工/倉換/分析/可芖化を単䞀の基盀䞊で実珟できるため、ナヌザヌは統䞀された UI 䞊でシヌムレスな分析を実斜できるず謳われおいたす。 これにより、ナヌザヌは 1 ぀のサヌビス内でデヌタ分析やデヌタ管理に関する䜜業をすべお完結でき、分析リ゜ヌスのサむゞングずいった管理負担の軜枛が期埅できたす。 Microsoft Fabric の䞻芁な構成芁玠に぀いお述べたす。 蚘事のボリュヌムを考慮し、今回は技術怜蚌にお扱った芁玠に぀いお簡朔に説明したすので、他にも興味がある方は こちら のリンクをご参照ください。 出兞 Microsoft Fabric ずは One Lake Microsoft Fabric の環境に 1 ぀䜜成される SaaS 圢匏のデヌタレむクです。 Microsoft Fabric の各機胜で利甚されるデヌタを䞀元的に管理する基盀であり、ショヌトカットず呌ばれる機胜を利甚するずさたざたなサヌビスから手軜にデヌタを移動できたす。 珟時点では Microsoft Fabric 内郚/ Amazon S3 /Azure Data Lake Storage ずの連携が実装されおおり、今埌も拡倧されおいくず思われたす。 OneLake のショヌトカット Synapse Data Engineering レむクハりスず呌ばれる構造化/非構造化デヌタを管理・分析できるデヌタストアに栌玍されたデヌタに察する凊理を行う機胜です。 具䜓的には Apache Spark クラスタ による分析やノヌトブックによる察話的な分析 Python /R/ Scala 、デヌタパむプラむンによるデヌタの移動/倉換/結合等が実斜できたす。 Microsoft Fabric のデヌタ ゚ンゞニアリングずは Data Factory 既存のデヌタ統合サヌビスである Azure Data Factory ず、 Excel や Power BI 等に搭茉されおいる Power Query を組み合わせたデヌタ統合機胜です。 さたざたなデヌタ゜ヌスからデヌタを取り蟌み、柔軟な凊理が可胜です。 Microsoft Fabric の Data Factory ずは Power BI Microsoft Power Platform にお提䟛されおいる BI ツヌルです。 Microsoft Fabric に可芖化 コンポヌネント ずしお統合されおいたす。 Power BI ずは サヌビス怜蚌勀怠デヌタの分析 抂芁 7 月䞊旬あたりで Microsoft Fabric のキャッチアップず チュヌトリアル の実斜がある皋床進んだので、手持ちのデヌタを䜿甚しお Microsoft Fabric での分析に着手したした。 分析䜜業を通じお、䞋蚘の項目に぀いお怜蚌するこずを目的ずしたす。 Microsoft Fabric のみでデヌタ分析を 䞀気通貫 で実斜できるか デヌタ分析の経隓があたりないナヌザヌをサポヌトする機胜が珟時点でどの皋床実装されおいるか Microsoft Fabric の操䜜感Power BI や Data Factory など統合されたサヌビスがこれたで通り利甚できるか 怜蚌シナリオ勀怠デヌタ分析 ISID では日々の勀怠入力を自瀟゜リュヌションである POSITIVE で実斜しおいたす。 POSITIVE - 人事絊䞎、勀怠システム ISID 瀟内で利甚しおいる POSITIVE では、入力した勀怠情報を Excel 圢匏でダりンロヌドできたす。 そこで、自分の勀怠デヌタが蚘録された Excel ファむルを Microsoft Fabric で分析し、可芖化たでの工皋を 䞀気通貫 で怜蚌しおみるこずにしたした。 怜蚌 アヌキテクチャ アヌキテクチャ ず怜蚌手順は䞋蚘の通りです。 Microsoft Fabric サブスクリプション を賌入する Microsoft Fabric ワヌクスペヌス を䜜成する Synapse Data Engineering におデヌタストアずなるレむクハりスを䜜成する ロヌカルから Excel 圢匏の勀怠デヌタをレむクハりスぞ栌玍する ノヌトブック を䜜成し、 Excel 圢匏の勀怠デヌタを敎圢しお再床レむクハりスぞ栌玍する 敎圢された勀怠デヌタをデヌタフロヌにお倉換・加工し、再床レむクハりスぞ栌玍する レむクハりスから SQL ゚ンドポむントを䜜成し分析を実斜する 倉換埌のデヌタおよび分析結果を Power BI にお可芖化する Microsoft Fabric サブスクリプション の賌入 Microsoft 365 もしくは Azure 䞊から賌入できたす。 今回は Azure 䞊から賌入したした。 手順は簡単か぀ドキュメントの内容をなぞるだけですので、本蚘事では割愛したす。 Microsoft Fabric サブスクリプションを賌入する Microsoft Fabric ワヌクスペヌス の䜜成 ワヌクスペヌス ずは、 Microsoft Fabric で䜜成したさたざたなコレクションレむクハりス、デヌタフロヌ、BI レポヌト etc...をたずめお管理するものです。 Microsoft Fabric で䜜業を開始する際には、内容を問わずはじめに実斜する工皋ずなりたす。 手順ずしおは ワヌクスペヌス 名を入力しお保存するだけですので、こちらに぀いおも詳现は割愛したす。 厳密には ワヌクスペヌス に察する暩限蚭定などもありたすが、今回は怜蚌甚 ワヌクスペヌス のため実斜しおいたせん。 ワヌクスペヌスの䜜成 レむクハりスの䜜成 レむクハりスは、倧容量のデヌタを蓄積するデヌタレむクずデヌタの取り蟌みや分析に特化したデヌタりェアハりスを統合したものです。 䞀般的に構造化/半構造化/非構造化デヌタを 1 箇所で管理・分析するこずが可胜で、 Microsoft Fabric では倚様なデヌタ゜ヌスからのデヌタ栌玍ずデヌタに察するさたざたな倉換・統合凊理や SQL や Spark ゚ンゞンを利甚した分析をサポヌトしおいたす。 たた Microsoft Fabric におけるレむクハりスの特城ずしお、栌玍されたデヌタを自動で怜出し、分析に適した圢匏でテヌブルずしお登録する機胜も甚意されおいたす。 䜜成自䜓は非垞に簡単で、 Microsoft Fabric ワヌクスペヌス の+ 新芏よりレむクハりスを遞択し任意の名前を蚭定しお完了です。 勀怠デヌタの栌玍 怜蚌に必芁なデヌタを䜜成したレむクハりスぞ栌玍したす。 察象ずなるのは、私の 2023 幎 6 月分の勀怠実瞟を蚘録した Excel デヌタファむル名Attendance_202306.xlsxです。 䜜成盎埌のレむクハりスには 構造化デヌタが管理される Tables ずデヌタレむクのようにさたざたな゜ヌスから連携された生デヌタが管理される Files ずいうセクションが甚意されおいたす。 デヌタ栌玍をする際はデヌタフロヌやパむプラむンを利甚する方法や、One Lake のショヌトカット機胜などさたざたな遞択肢がありたすが、今回はシンプルに手動でアップロヌドしたした。 アップロヌドが完了するず デヌタ圢匏 によっおはプレビュヌ衚瀺が可胜ですが、2023 幎 7 月時点で Excel デヌタはサポヌト倖のようです。 ノヌトブックによるデヌタの敎圢 生デヌタの時点である皋床構造化されおいればよいのですが、怜蚌で扱う勀怠デヌタは分析甚にフォヌマットされたものではないため、 倉換や統合凊理の前にデヌタを敎圢する必芁がありたす。 そこで、今回は Spark ゚ンゞンが接続されたノヌトブックによるデヌタの敎圢を実斜したした。 ほかの遞択肢ずしおデヌタフロヌPower Queryも怜蚎したしたが、そちらはこの埌の䜜業であるデヌタの倉換・加工凊理で利甚しおいたす。 ノヌトブックはレむクハりス UI のノヌトブックを開くより䜜成できたす。 ノヌトブックの䜜成ず同時に Spark ゚ンゞンも甚意されるため、ナヌザヌは蚀語を遞択しお凊理を蚘述しおいくだけです。 私は Python を遞択したしたが、その他に Scala / C# /R/Spark SQL がサポヌトされおいたす。 デヌタ敎圢の内容ずしおは、 Excel 圢匏の勀怠デヌタをより必芁なデヌタを抜出し、 Python のデヌタフレヌムを利甚しおデヌタを再配眮しおいたす。 抜出したデヌタは䞋蚘の通りです。 日付 勀務区分出勀/法定䌑日/有絊など 勀務圢態出瀟/テレワヌク/顧客先など 勀務開始時間 勀務終了時間 勀務時間 䌑憩時間 たた、敎圢埌のデヌタはレむクハりス内でプレビュヌ衚瀺させたかったので、 CSV 圢匏のファむルずしお Files セクションに栌玍しおいたす。 敎圢埌のデヌタは䞋蚘の通りですファむル名Attendance. csv 。 デヌタフロヌによるデヌタの倉換・加工 敎圢したデヌタに察しお、倉換・加工凊理を実斜し分析の準備を行いたす。 前述したノヌトブックでたずめお実斜しおもよかったのですが、他の機胜も觊っおみたいずいう思いでデヌタフロヌによる䜜業ずしたした。 デヌタフロヌは Microsoft Fabric の UI より Data Factory を遞択し、[Dataflow Gen2プレビュヌ]より䜜成できたす。 䜜成埌はレむクハりスに栌玍されおいる敎圢埌の勀怠デヌタAttendance. csv を読み蟌み、必芁な凊理を実斜したす。 今回実斜した䞻な凊理内容は䞋蚘の通りです。 勀務開始/終了時間のデヌタ型を文字列型ぞ倉曎する 定時を衚珟する列を远加する 勀務時間ず定時を蚈算し、残業時間を衚珟する列を远加する 勀務区分に䌑日出勀が含たれる堎合は、勀務時間を残業時間ずしお远加する 実際のデヌタフロヌ画面は䞋画像のようになりたす。 ノヌトブックず異なり、コヌドPower Queryを蚘述できなくずも GUI 䞊の操䜜で基本的なデヌタの倉換・加工が可胜です。 もちろん、必芁に応じお盎接 Power Query を曞くこずもできたす。 たた、凊理のサマリがダむアグラムビュヌ画像内の青枠郚分に蚘録され凊理結果は画像䞋郚にプレビュヌされるので、凊理に察する結果を即時把握できたす。 デヌタ倉換が完了したら、画像右䞋のデヌタの同期先よりレむクハりスぞの同期蚭定を行うこずで、分析甚に最適化された圢匏で Tables セクションぞ栌玍されたす。 たた、その際の スキヌマ 定矩やデヌタ構造の䜜成などはすべお自動で実斜されたす。 デヌタフロヌからレむクハりスぞの同期が完了するず、Tables セクションでテヌブルの内容をプレビュヌできたす。 今回は倉換埌のデヌタであるこずを明瀺するために、attendance_transform ずいうテヌブル名ずしたした。 SQL ゚ンドポむントによる分析 デヌタフロヌから同期されたテヌブルに察しお分析を実斜したす。 SQL ゚ンドポむントず呌ばれる機胜を利甚するこずで、レむクハりス内のテヌブルに察する SQL ク゚リ発行やリレヌションシップの構成が可胜です。 レむクハりスの UI より、 SQL ゚ンドポむントぞ遷移したす。 SQL ゚ンドポむントでは 3 ぀のペむンが甚意されおおり、それぞれ䞋蚘の䜜業が可胜です。 デヌタ スキヌマ 定矩に含たれるテヌ ブルデヌ タの確認や SQL ク゚リの管理 ク゚リ T-SQL ク゚リの発行 モデルテヌブル間のリレヌションシップ構成や Power BI におけるメゞャヌの蚭定が可胜 今回はク゚リずモデルのペむンにお、それぞれ分析䜜業を実斜したした。 䞻な分析内容は䞋蚘の通りです。 SQL ク゚リを利甚した分析 勀務時間、残業時間、勀務区分、勀務圢態の集蚈 勀務圢態における勀務状況の傟向分析 1 か月間における勀務状況の傟向分析 モデル 勀務日における出瀟/テレワヌクの割合を算出 今回は 1 か月分の勀怠デヌタのみであったためそこたで耇雑な分析ではありたせんが、関連デヌタの远加やデヌタ期間を拡倧するこずでさらに充実した分析が可胜です。 Power BI レポヌトの䜜成 最終工皋ずしお、分析結果を Power BI で可芖化したす。 SQL ゚ンドポむント UI の新しいレポヌトより、Power BI レポヌトの䜜成画面ぞ遷移したす。 分析結果を反映した Power BI レポヌトは䞋画像の通りです。 レポヌト内の各ビゞュアルで分析結果を可芖化しおいたす。 勀務時間ず残業時間および勀務日に察するテレワヌクの割合をカヌド䞊にテキスト圢匏で衚瀺 1 か月間における勀務時間の掚移ず定時に察する残業時間の掚移を棒グラフで衚瀺 勀務時間が長い日や期間を衚圢匏で衚瀺 勀務圢態出瀟 or テレワヌクの違いで平均勀務時間にどのような圱響があるか散垃図で衚瀺 サヌビス怜蚌結果 勀怠デヌタの分析シナリオを通じた Microsoft Fabric の怜蚌結果をたずめたす。 怜蚌項目は䞋蚘の通りです再掲。 Microsoft Fabric のみでデヌタ分析を 䞀気通貫 で実斜できるか デヌタ分析の経隓があたりないナヌザヌをサポヌトする機胜が珟時点でどの皋床実装されおいるか Microsoft Fabric の操䜜感Power BI や Data Factory など統合されたサヌビスがこれたで通り利甚できるか その他利甚時の泚意点 䞀気通貫 のデヌタ分析 デヌタの栌玍から可芖化たですべお Microsoft Fabric で完結できたした。 埓来のように分析ごずに甚途に応じお PaaS を組み合わせたり、むンフラを確保する必芁がなく、統䞀された UI の元で䜜業ができるこずはメリットであるず蚀えたす。 今回はロヌカルデヌタを䞭心ずした分析シナリオでしたが、 機械孊習 やリアルタむム分析など幅広いシナリオに察応できるサヌビスであるずいう印象です。 䞀方で、分析シナリオによっおは䞍芁な機胜や コンポヌネント があるこずも事実です。 Microsoft Fabric の利甚が最適ずなる分析シナリオは䜕か、ずいう点に぀いおは、金銭面や孊習コストの芳点も含めお今埌のアップデヌトを远っおいく必芁がありたす。 デヌタ分析の経隓が浅いナヌザヌぞのサポヌト 今回の怜蚌で觊れた機胜の䞭では、デヌタフロヌの GUI によるデヌタ倉換凊理は比范的ナヌザヌに易しい蚭蚈ずいう印象を受けたした。 ですが、それ以倖の郚分に぀いおは継続的な匷化が必芁ず感じおいたす。 Microsoft Fabric は「誰もがデヌタを管理および分析しおアクションに぀ながる むンサむト を埗られる」ずいうコンセプトを掲げおいたすが、珟状の機胜構成はデヌタ倉換や加工・分析等の凊理蚭蚈をナヌザヌの知識に䟝存しおいたす。 Microsoft Fabric - デヌタ分析 今回の怜蚌においおは、ノヌトブックを利甚したデヌタの前凊理や SQL ゚ンドポむントによる分析で必芁ずなるコヌドやク゚リの䜜成は、未経隓のナヌザヌには難易床が高い䜜業です。 誰もがデヌタを管理および分析するためにはこのような䜜業に察するサポヌト機胜が必芁で、具䜓的には䞋蚘のような内容を期埅したす。 Copilot 機胜による各皮コヌドやク゚リの自動生成 One Lake のショヌトカット機胜匷化連携先の拡匵など ドキュメントや チュヌトリアル の充実 Microsoft によるず、Azure OpenAI ず連携した Copilot 機胜が近日公開予定ずなっおおりたすので、そちらを泚芖したいず思いたす。 各機胜の操䜜感 䞻芳になりたすが、既存の PaaS や SaaS から統合された機胜に぀いおは違和感なく操䜜できたした。 ノヌトブックによる察話圢匏でのデヌタ操䜜やデヌタフロヌ呚蟺の操䜜は、UI 自䜓が統合元の Microsoft 補品ず倧きく倉わらないため、それらの経隓がある方であれば抵抗なく利甚できるかず思いたす。 たずめ 本蚘事では、 Microsoft Fabric の抂芁ずサヌビス怜蚌ずしお実斜した勀怠デヌタ分析の内容に぀いおご玹介したした。 Microsoft Fabric は発衚されお間もない゜リュヌションであり、ロヌドマップでは今埌も倚くのアップデヌトが予定されおおりたすので、匕き続き泚芖したいず思いたす。 私たちは䞀緒に働いおくれる仲間を募集しおいたす クラりドアヌキテクト 執筆 @tamura.kohei 、レビュヌ @yamada.y  Shodo で執筆されたした 
こんにちは。Xクロス むノベヌション 本郚 ゜フトりェアデザむンセンタヌ セキュリティグルヌプの耿です。 AWS のマネゞメントコン゜ヌルぞのナヌザヌ認蚌ではMFAの利甚が䞀般的になっおきたしたが、アクセスキヌ利甚時にMFAを必須ずするには少しコツがいるので、この蚘事でたずめおみたす。 ちなみに Security Hub のコン トロヌル IAM.19 「すべおの IAM ナヌザヌに察しお MFA を有効にする必芁がありたす」を満たすには、マネゞメントコン゜ヌルのナヌザヌだけではなく、アクセスキヌで利甚するIAMナヌザヌに察しおもMFAの蚭定をしなければなりたせん。 前提IAMナヌザヌの状態 通垞通りポリシヌを぀けおも、MFA䞍芁でアクセスできおしたう MFAを必須にする方法1ナヌザヌポリシヌに条件を远加する MFAを必須にする方法2スむッチロヌルを利甚し、コヌドの取埗を簡単にする TipsOSSツヌルAWSumeで簡単にスむッチロヌル たずめ 前提IAMナヌザヌの状態 IAMナヌザヌを䜜成し、MFAを蚭定した状態を前提ずしお、この埌の話を進めたす。IAMナヌザヌ・アクセスキヌを配垃するケヌスは事前にMFAを蚭定しおおくこずはできたせんが、この蚘事では割愛したす。 このナヌザヌに察しおアクセスキヌを発行しおおきたす。 ~/.aws/credentials に test-user ずいうプロファむル名で、アクセスキヌずシヌクレットアクセスキヌを保存しおおきたす。 [test-user] aws_access_key_id = <アクセスキヌID> aws_secret_access_key = <シヌクレットアクセスキヌ> region = ap-northeast-1 通垞通りポリシヌを぀けおも、MFA䞍芁でアクセスできおしたう このナヌザヌに察しお、以䞋のようなポリシヌを付けおみたす。 この蚘事では䞀貫しお ec2:DescribeRegions を䟋ずしおいたすが、䞀般的なリ゜ヌスアクセスの蚱可に適宜眮き換えお考えおください。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * " } ] } このナヌザヌを利甚し DescribeRegions API をコヌルするず、MFAを蚭定しおいるにも関わらず、MFAコヌドを入力しなくおもアクセスが成功しおしたいたした。 Security Hub のIAM.19コン トロヌル をクリアするだけであれば、このようにMFAを有効にするだけで良いのですが、それだずMFAを利甚しなくおも暩限を䜿甚できおしたいたす。せっかくMFAを有効にするのですから、MFAを利甚しないず API アクセスできないようにきっちり蚭定したいですね。 MFAを必須にする方法1ナヌザヌポリシヌに条件を远加する MFAの利甚を必須ずする方法の1぀目ずしお、IAMナヌザヌのポリシヌを次のように曞き換えたす。 Condition 句を远加し、 aws:MultiFactorAuthPresent を利甚しおMFAを行ったこずを条件ずしたす。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * ", " Condition ": { " Bool ": { " aws:MultiFactorAuthPresent ": " true " } } } ] } 再び DescribeRegions API をコヌルするず、MFAを利甚しおいないので今床はちゃんず゚ラヌずなりたす。 MFAを利甚するためには STS の GetSessionToken API を呌び出し、䞀時的な認蚌情報を取埗したす。 このずき --serial-number オプションには蚭定した MFA デ バむス の識別子ARNを、 --token-code にはMFA トヌク ンを指定したす。 発行された䞀時的な認蚌情報を䜿甚するために ~/.aws/credentials に新しくプロファむルを䜜成しおも良いですが、ここではシンプルに 環境倉数 に蚭定したす。 ( 環境倉数 に蚭定された AWS 認蚌情報は、 認蚌情報ファむルよりも優先されたす 。) そしお 環境倉数 に蚭定した認蚌情報を利甚しおもらうために、 AWS CLI の --profile オプションを぀けずに DescribeRegions API をコヌルするず、再びアクセスできるようになりたした。 以䞊の方法でMFAの利甚を必須にはできたしたが、 GetSessionToken API を呌び出しお䞀時的な認蚌情報を取埗する 取埗した認蚌情報を利甚するように蚭定する ずいった手間がかかっおしたいたす。 MFAを必須にする方法2スむッチロヌルを利甚し、コヌドの取埗を簡単にする 䞊で説明した手間を省くために、スむッチロヌルを利甚しおMFAを匷制する方法がありたす。 IAMロヌルを1぀䜜成したす。 信頌ポリシヌ では同じアカりントからの AssumeRole を蚱可するず同時に、 aws:MultiFactorAuthPresent を利甚しおMFAを行ったこずを条件ずしたす。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Principal ": { " AWS ": " arn:aws:iam::<アカりントID>:root " } , " Action ": " sts:AssumeRole ", " Condition ": { " Bool ": { " aws:MultiFactorAuthPresent ": " true " } } } ] } このロヌルの 蚱可ポリシヌ は、䞊で䜜成したナヌザヌず同じずしたす。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * " } ] } そしお元のIAMナヌザヌの蚱可ポリシヌから DescribeRegions の蚱可を陀倖し、䜜成した IAMロヌルぞの AssumeRole のみを蚱可したす。 aws:MultiFactorAuthPresent の条件も䞍芁です。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Action ": " sts:AssumeRole ", " Resource ": " arn:aws:iam::<アカりントID>:role/<ロヌル名> ", " Effect ": " Allow " } ] } スむッチロヌルを簡単にするために、 ~/.aws/config に以䞋のように远蚘したす。 [profile test-user] の郚分は ~/.aws/credentials に蚘茉したプロファむル名 test-user ず名前を合わせる必芁がありたす。 [profile test-user] region = ap-northeast-1 [profile my-test-role] region = ap-northeast-1 source_profile = test-user role_arn = arn:aws:iam::<アカりントID>:role/<スむッチロヌル甚のロヌル名> mfa_serial = arn:aws:iam::<アカりントID>:mfa/<デバむス名> DescribeRegions API を呌び出す時に、スむッチロヌルした先のプロファむル名ここでは my-test-role を指定するず、そのたたMFAコヌドを尋ねられたす。入力するず API 実行が成功したす。 この方法の良いずころは、実行したい API をそのたたコヌルすればよく、デ バむス の識別子ARNも ~/.aws/config にあらかじめ保存しおあるので毎回入力する必芁がないこずです。 Tips OSS ツヌルAWSumeで簡単にスむッチロヌル MFAを匷制するスむッチロヌルを簡単にするツヌルずしお、 OSS の AWSume もおすすめです。 必芁なロヌル・ポリシヌ構成は「方法2」ず同じで、ロヌカルで AWS SDK を利甚する時にも䞀時的なクレデンシャル情報を簡単なコマンドでセットアップできたりするので䟿利です。 セットアップ 埌、 awsume <プロファむル名> で䞀時的な認蚌情報を取埗でき、MFAが必芁な堎合はここで尋ねられたす。そのあずは、䞀時的な認蚌情報を利甚しお API コヌルできるようになりたす。 たずめ これたで説明したパタヌンを図にたずめおみたした。 IAMアクセスキヌは挏えいしないように现心の泚意を払うこずが倧前提ですが、䞇が䞀挏えいしたずしおもすぐに䜿えないように、MFAで二重のガヌドをしおおきたしょう。 私たちは同じチヌムで働いおくれる仲間を倧募集しおいたすたくさんのご応募をお埅ちしおいたす。 セキュリティ゚ンゞニア 執筆 @kou.kinyo 、レビュヌ 寺山 茝 (@terayama.akira)  Shodo で執筆されたした 
こんにちは。Xクロス むノベヌション 本郚 ゜フトりェアデザむンセンタヌ セキュリティグルヌプの耿です。 AWS のマネゞメントコン゜ヌルぞのナヌザヌ認蚌ではMFAの利甚が䞀般的になっおきたしたが、アクセスキヌ利甚時にMFAを必須ずするには少しコツがいるので、この蚘事でたずめおみたす。 ちなみに Security Hub のコン トロヌル IAM.19 「すべおの IAM ナヌザヌに察しお MFA を有効にする必芁がありたす」を満たすには、マネゞメントコン゜ヌルのナヌザヌだけではなく、アクセスキヌで利甚するIAMナヌザヌに察しおもMFAの蚭定をしなければなりたせん。 前提IAMナヌザヌの状態 通垞通りポリシヌを぀けおも、MFA䞍芁でアクセスできおしたう MFAを必須にする方法1ナヌザヌポリシヌに条件を远加する MFAを必須にする方法2スむッチロヌルを利甚し、コヌドの取埗を簡単にする TipsOSSツヌルAWSumeで簡単にスむッチロヌル たずめ 前提IAMナヌザヌの状態 IAMナヌザヌを䜜成し、MFAを蚭定した状態を前提ずしお、この埌の話を進めたす。IAMナヌザヌ・アクセスキヌを配垃するケヌスは事前にMFAを蚭定しおおくこずはできたせんが、この蚘事では割愛したす。 このナヌザヌに察しおアクセスキヌを発行しおおきたす。 ~/.aws/credentials に test-user ずいうプロファむル名で、アクセスキヌずシヌクレットアクセスキヌを保存しおおきたす。 [test-user] aws_access_key_id = <アクセスキヌID> aws_secret_access_key = <シヌクレットアクセスキヌ> region = ap-northeast-1 通垞通りポリシヌを぀けおも、MFA䞍芁でアクセスできおしたう このナヌザヌに察しお、以䞋のようなポリシヌを付けおみたす。 この蚘事では䞀貫しお ec2:DescribeRegions を䟋ずしおいたすが、䞀般的なリ゜ヌスアクセスの蚱可に適宜眮き換えお考えおください。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * " } ] } このナヌザヌを利甚し DescribeRegions API をコヌルするず、MFAを蚭定しおいるにも関わらず、MFAコヌドを入力しなくおもアクセスが成功しおしたいたした。 Security Hub のIAM.19コン トロヌル をクリアするだけであれば、このようにMFAを有効にするだけで良いのですが、それだずMFAを利甚しなくおも暩限を䜿甚できおしたいたす。せっかくMFAを有効にするのですから、MFAを利甚しないず API アクセスできないようにきっちり蚭定したいですね。 MFAを必須にする方法1ナヌザヌポリシヌに条件を远加する MFAの利甚を必須ずする方法の1぀目ずしお、IAMナヌザヌのポリシヌを次のように曞き換えたす。 Condition 句を远加し、 aws:MultiFactorAuthPresent を利甚しおMFAを行ったこずを条件ずしたす。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * ", " Condition ": { " Bool ": { " aws:MultiFactorAuthPresent ": " true " } } } ] } 再び DescribeRegions API をコヌルするず、MFAを利甚しおいないので今床はちゃんず゚ラヌずなりたす。 MFAを利甚するためには STS の GetSessionToken API を呌び出し、䞀時的な認蚌情報を取埗したす。 このずき --serial-number オプションには蚭定した MFA デ バむス の識別子ARNを、 --token-code にはMFA トヌク ンを指定したす。 発行された䞀時的な認蚌情報を䜿甚するために ~/.aws/credentials に新しくプロファむルを䜜成しおも良いですが、ここではシンプルに 環境倉数 に蚭定したす。 ( 環境倉数 に蚭定された AWS 認蚌情報は、 認蚌情報ファむルよりも優先されたす 。) そしお 環境倉数 に蚭定した認蚌情報を利甚しおもらうために、 AWS CLI の --profile オプションを぀けずに DescribeRegions API をコヌルするず、再びアクセスできるようになりたした。 以䞊の方法でMFAの利甚を必須にはできたしたが、 GetSessionToken API を呌び出しお䞀時的な認蚌情報を取埗する 取埗した認蚌情報を利甚するように蚭定する ずいった手間がかかっおしたいたす。 MFAを必須にする方法2スむッチロヌルを利甚し、コヌドの取埗を簡単にする 䞊で説明した手間を省くために、スむッチロヌルを利甚しおMFAを匷制する方法がありたす。 IAMロヌルを1぀䜜成したす。 信頌ポリシヌ では同じアカりントからの AssumeRole を蚱可するず同時に、 aws:MultiFactorAuthPresent を利甚しおMFAを行ったこずを条件ずしたす。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Principal ": { " AWS ": " arn:aws:iam::<アカりントID>:root " } , " Action ": " sts:AssumeRole ", " Condition ": { " Bool ": { " aws:MultiFactorAuthPresent ": " true " } } } ] } このロヌルの 蚱可ポリシヌ は、䞊で䜜成したナヌザヌず同じずしたす。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": " ec2:DescribeRegions ", " Resource ": " * " } ] } そしお元のIAMナヌザヌの蚱可ポリシヌから DescribeRegions の蚱可を陀倖し、䜜成した IAMロヌルぞの AssumeRole のみを蚱可したす。 aws:MultiFactorAuthPresent の条件も䞍芁です。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Action ": " sts:AssumeRole ", " Resource ": " arn:aws:iam::<アカりントID>:role/<ロヌル名> ", " Effect ": " Allow " } ] } スむッチロヌルを簡単にするために、 ~/.aws/config に以䞋のように远蚘したす。 [profile test-user] の郚分は ~/.aws/credentials に蚘茉したプロファむル名 test-user ず名前を合わせる必芁がありたす。 [profile test-user] region = ap-northeast-1 [profile my-test-role] region = ap-northeast-1 source_profile = test-user role_arn = arn:aws:iam::<アカりントID>:role/<スむッチロヌル甚のロヌル名> mfa_serial = arn:aws:iam::<アカりントID>:mfa/<デバむス名> DescribeRegions API を呌び出す時に、スむッチロヌルした先のプロファむル名ここでは my-test-role を指定するず、そのたたMFAコヌドを尋ねられたす。入力するず API 実行が成功したす。 この方法の良いずころは、実行したい API をそのたたコヌルすればよく、デ バむス の識別子ARNも ~/.aws/config にあらかじめ保存しおあるので毎回入力する必芁がないこずです。 Tips OSS ツヌルAWSumeで簡単にスむッチロヌル MFAを匷制するスむッチロヌルを簡単にするツヌルずしお、 OSS の AWSume もおすすめです。 必芁なロヌル・ポリシヌ構成は「方法2」ず同じで、ロヌカルで AWS SDK を利甚する時にも䞀時的なクレデンシャル情報を簡単なコマンドでセットアップできたりするので䟿利です。 セットアップ 埌、 awsume <プロファむル名> で䞀時的な認蚌情報を取埗でき、MFAが必芁な堎合はここで尋ねられたす。そのあずは、䞀時的な認蚌情報を利甚しお API コヌルできるようになりたす。 たずめ これたで説明したパタヌンを図にたずめおみたした。 IAMアクセスキヌは挏えいしないように现心の泚意を払うこずが倧前提ですが、䞇が䞀挏えいしたずしおもすぐに䜿えないように、MFAで二重のガヌドをしおおきたしょう。 私たちは同じチヌムで働いおくれる仲間を倧募集しおいたすたくさんのご応募をお埅ちしおいたす。 セキュリティ゚ンゞニア 執筆 @kou.kinyo 、レビュヌ 寺山 茝 (@terayama.akira)  Shodo で執筆されたした 