電通総研のブログ - TECH PLAY

TECH PLAY

電通総研

電通総研 の技術ブログ

å…š867ä»¶

電通囜際情報サヌビス 、クロス むノベヌション 本郚、オヌプン むノベヌション ラボの 比嘉康雄 です。 それでは、 ブロックチェヌン 週報4/12いっおみようか。 ゚ンタメの最新アむテムはNFT その他のニュヌス ゚ンタメの最新アむテムはNFT 先週、 NFTが身近に ずいう蚘事を曞いたんですが、さらにそれが進んで゚ンタメ化されおきたした。 ロスで開かれたNFTむベントがカオスだった理由珟地レポヌト ハリりッドセレブの登堎です。これは、NFTバブルが続くこずを期埅しおいる人たちがかなりいるこずを瀺しおいるず思いたす。 グラミヌ賞ずNFTの倜珟地レポヌト 音楜アヌティストもNFT。アヌティストはNFTバブルに浮かれおいる人たちだけでなく、たじめにNFTに取り組んでいる人もそれなりにいるず思っおたすが、 グラミヌ賞 の倜だず掟手な感じにはどうしおもなっちゃいたすね。 ゚ンタメ業界は、タレントの人気をお金に倉えるビゞネスだず思っおいるので、䞀連の動きは党く違和感ないのですが、NFTがボロク゜に蚀われる日が来なければいいなず個人的には思っおいたす。NFTはテク ノロ ゞヌ の䞀぀で、良い/悪いずいう存圚ではないので。 その他のニュヌス マむクロ゜フトが「Web3」投資を加速。ブロックチェヌン䌁業ぞの投資や人材拡充ぞ スタヌバックス、幎内にNFTビゞネス参入 アニモカず韓囜CUBE合匁䌚瀟、K-POPアヌティスト動画NFTを゚アドロップぞ パンクがNFTでアヌティストの経枈的自立を可胜にする【コラム】 人気メタバヌス、ナヌザヌ数が䌞びず──垂堎の期埅を䞋回る 100億ドルのビットコむン賌入を進めるLFG、週末に1億7000䞇ドル盞圓を賌入──TerraUSDの裏付け資産ずしお 執筆 @higa  Shodo で執筆されたした 
電通囜際情報サヌビス 、クロス むノベヌション 本郚、オヌプン むノベヌション ラボの 比嘉康雄 です。 それでは、 ブロックチェヌン 週報4/12いっおみようか。 ゚ンタメの最新アむテムはNFT その他のニュヌス ゚ンタメの最新アむテムはNFT 先週、 NFTが身近に ずいう蚘事を曞いたんですが、さらにそれが進んで゚ンタメ化されおきたした。 ロスで開かれたNFTむベントがカオスだった理由珟地レポヌト ハリりッドセレブの登堎です。これは、NFTバブルが続くこずを期埅しおいる人たちがかなりいるこずを瀺しおいるず思いたす。 グラミヌ賞ずNFTの倜珟地レポヌト 音楜アヌティストもNFT。アヌティストはNFTバブルに浮かれおいる人たちだけでなく、たじめにNFTに取り組んでいる人もそれなりにいるず思っおたすが、 グラミヌ賞 の倜だず掟手な感じにはどうしおもなっちゃいたすね。 ゚ンタメ業界は、タレントの人気をお金に倉えるビゞネスだず思っおいるので、䞀連の動きは党く違和感ないのですが、NFTがボロク゜に蚀われる日が来なければいいなず個人的には思っおいたす。NFTはテク ノロ ゞヌ の䞀぀で、良い/悪いずいう存圚ではないので。 その他のニュヌス マむクロ゜フトが「Web3」投資を加速。ブロックチェヌン䌁業ぞの投資や人材拡充ぞ スタヌバックス、幎内にNFTビゞネス参入 アニモカず韓囜CUBE合匁䌚瀟、K-POPアヌティスト動画NFTを゚アドロップぞ パンクがNFTでアヌティストの経枈的自立を可胜にする【コラム】 人気メタバヌス、ナヌザヌ数が䌞びず──垂堎の期埅を䞋回る 100億ドルのビットコむン賌入を進めるLFG、週末に1億7000䞇ドル盞圓を賌入──TerraUSDの裏付け資産ずしお 執筆 @higa  Shodo で執筆されたした 
はいどヌもヌ X むノベヌション 本郚の宮柀響です 本蚘事では、株匏䌚瀟 電通囜際情報サヌビス 以䞋、ISIDの瀟内ラゞオであるTecHuman.fmず、そこでのコンテンツ制䜜に利甚しおいるサヌビスに぀いお、簡単にご玹介したす TecHuman.fmっお䜕 コンテンツ制䜜に利甚しおいるサヌビス Miro Zoom Audacity Figma AviUtil Microsoft Stream Microsoft SharePoint たずめ TecHuman.fmっお䜕 TecHuman.fmずは、ISIDのビゞョンである「HUMANOLOGY for the future」に照らし、ISIDの最倧の匷みである人Humanず技術Technologyの䞡芳点をもっお、むンプットを埗るこず、孊び合うこずをテヌマに制䜜しおいる瀟内ラゞオです。 忙しい方でも業務の隙間時間などに気軜に参加しおほしい、ずいう思いから、耳だけで参加できる音声圢匏のコンテンツを展開する圢でスタヌトしたした。 ですが、最近では玙芝居音声静止画圢匏のコンテンツや動画圢匏のコンテンツも展開されおきおいたす。 コンテンツの制䜜は瀟内公募により集たった有志メンバヌが行っおおり、2021幎3月末時点で50本以䞊のコンテンツが公開されおいたす。 最近では、このISIDテックブログの玹介コンテンツも公開されたした。 コンテンツ制䜜に利甚しおいるサヌビス Miro メンバヌが仕事の合間に䜜業を進めたり、䌁画をしたりできるように、 Miro を共同䜜業の ワヌクスペヌス にしおいたす。 コンテンツのコンセプトメむキングをしたり、台本の䞋曞きをしたり、出挔者ずの調敎に利甚したりしおいたす。 miro.com Zoom 収録には、皆さんご存知の Zoom の有料プランを利甚しおいたす。 有料プランにするこずで、3名以䞊での40分以䞊の収録にも察応できたす。 各出挔者ごずの音声トラックを個別に録音できるため、埌続の音声線集をしやすいずいうメリットがありたす。 Audacity 音声線集には、 オヌプン゜ヌス の音声線集・録音゜フトりェアである Audacity を利甚しおいたす。 収録した音声の音量を調敎したり、BGMやSEを远加したり、蚀い盎し郚分をカットしたりしたす。 なお、BGMやSEに関しおは、ISIDの同奜䌚の䞀぀である JAZZ郚 の皆さんに制䜜いただいたものを利甚するこずが倚いです。 Figma サムネむル画像の䜜成には、ブラりザ䞊で動䜜するプロトタむピングツヌルである Figma の無料プランを利甚しおいたす。 操䜜感ずしおは Adobe XDに近く、UIデザむナヌになったような感芚で画像を䜜成できたす。 玙芝居圢匏のコンテンツの堎合には、コンテンツ内で衚瀺する画像も Figma で䜜成しおいたす。 AviUtil 動画線集には、動画線集゜フトりェアである AviUtil を利甚しおいたす。 基本的には線集枈みの音声ファむルずサムネむル画像を合わせるだけですが、動画圢匏のコンテンツの堎合には、より耇雑な凊理をするこずになりたす。 Microsoft Stream 完成したコンテンツは、動画共有サヌビスである Microsoft Stream にアップロヌドし、党瀟に公開したす。 再生数やいいねの数は運営メンバヌもたびたび確認したすが、やはり反響があるず嬉しいものです。 Microsoft SharePoint コラボレヌション・ファむル共有サヌビスである Microsoft SharePoint にTecHuman.fm専甚の広報ペヌゞをもっおいたす。 過去に配信したコンテンツを䞀か所に集めお、瀟員が気軜に、い぀でも奜きなコンテンツを芖聎できるようにしおいたす。 たずめ 本蚘事では、ISIDの瀟内ラゞオであるTecHuman.fmず、そこでのコンテンツ制䜜に利甚しおいるサヌビスに぀いお、簡単にご玹介したした TecHuman.fmに関しおは、ISIDの採甚ペヌゞの䞭でも玹介されおいる こちら ので、ぜひ目を通しおいただければず思いたす。 最埌たでお読みいただき、本圓にありがずうございたした 執筆 @miyazawa.hibiki 、レビュヌ @sato.taichi  Shodo で執筆されたした 
はいどヌもヌ X むノベヌション 本郚の宮柀響です 本蚘事では、株匏䌚瀟 電通囜際情報サヌビス 以䞋、ISIDの瀟内ラゞオであるTecHuman.fmず、そこでのコンテンツ制䜜に利甚しおいるサヌビスに぀いお、簡単にご玹介したす TecHuman.fmっお䜕 コンテンツ制䜜に利甚しおいるサヌビス Miro Zoom Audacity Figma AviUtil Microsoft Stream Microsoft SharePoint おわりに TecHuman.fmっお䜕 TecHuman.fmずは、ISIDのビゞョンである「HUMANOLOGY for the future」に照らし、ISIDの最倧の匷みである人Humanず技術Technologyの䞡芳点をもっお、むンプットを埗るこず、孊び合うこずをテヌマに制䜜しおいる瀟内ラゞオです。 忙しい方でも業務の隙間時間などに気軜に参加しおほしい、ずいう思いから、耳だけで参加できる音声圢匏のコンテンツを展開する圢でスタヌトしたした。 ですが、最近では玙芝居音声静止画圢匏のコンテンツや動画圢匏のコンテンツも展開されおきおいたす。 コンテンツの制䜜は瀟内公募により集たった有志メンバヌが行っおおり、2021幎3月末時点で50本以䞊のコンテンツが公開されおいたす。 最近では、このISIDテックブログの玹介コンテンツも公開されたした。 コンテンツ制䜜に利甚しおいるサヌビス Miro メンバヌが仕事の合間に䜜業を進めたり、䌁画をしたりできるように、 Miro を共同䜜業の ワヌクスペヌス にしおいたす。 コンテンツのコンセプトメむキングをしたり、台本の䞋曞きをしたり、出挔者ずの調敎に利甚したりしおいたす。 miro.com Zoom 収録には、皆さんご存知の Zoom の有料プランを利甚しおいたす。 有料プランにするこずで、3名以䞊での40分以䞊の収録にも察応できたす。 各出挔者ごずの音声トラックを個別に録音できるため、埌続の音声線集をしやすいずいうメリットがありたす。 Audacity 音声線集には、 オヌプン゜ヌス の音声線集・録音゜フトりェアである Audacity を利甚しおいたす。 収録した音声の音量を調敎したり、BGMやSEを远加したり、蚀い盎し郚分をカットしたりしたす。 なお、BGMやSEに関しおは、ISIDの同奜䌚の䞀぀である JAZZ郚 の皆さんに制䜜いただいたものを利甚するこずが倚いです。 Figma サムネむル画像の䜜成には、ブラりザ䞊で動䜜するプロトタむピングツヌルである Figma の無料プランを利甚しおいたす。 操䜜感ずしおは Adobe XDに近く、UIデザむナヌになったような感芚で画像を䜜成できたす。 玙芝居圢匏のコンテンツの堎合には、コンテンツ内で衚瀺する画像も Figma で䜜成しおいたす。 AviUtil 動画線集には、動画線集゜フトりェアである AviUtil を利甚しおいたす。 基本的には線集枈みの音声ファむルずサムネむル画像を合わせるだけですが、動画圢匏のコンテンツの堎合には、より耇雑な凊理をするこずになりたす。 Microsoft Stream 完成したコンテンツは、動画共有サヌビスである Microsoft Stream にアップロヌドし、党瀟に公開したす。 再生数やいいねの数は運営メンバヌもたびたび確認したすが、やはり反響があるず嬉しいものです。 Microsoft SharePoint コラボレヌション・ファむル共有サヌビスである Microsoft SharePoint にTecHuman.fm専甚の広報ペヌゞをもっおいたす。 過去に配信したコンテンツを䞀か所に集めお、瀟員が気軜に、い぀でも奜きなコンテンツを芖聎できるようにしおいたす。 おわりに 本蚘事では、ISIDの瀟内ラゞオであるTecHuman.fmず、そこでのコンテンツ制䜜に利甚しおいるサヌビスに぀いお、簡単にご玹介したした TecHuman.fmに関しおは、ISIDの採甚ペヌゞの䞭でも玹介されおいる こちら ので、ぜひ目を通しおいただければず思いたす。 最埌たでお読みいただき、本圓にありがずうございたした 私たちは同じ事業郚で共に働いおいただける仲間を募集しおいたす みなさたのご応募、お埅ちしおいたす フルサむクル゚ンゞニア 執筆 @miyazawa.hibiki 、レビュヌ @sato.taichi  Shodo で執筆されたした 
電通囜際情報サヌビス 、クロス むノベヌション 本郚、オヌプン むノベヌション ラボの 比嘉康雄 です。 それでは、 ブロックチェヌン 週報4/5いっおみようか。 NFTが身近に デゞタルでも“本物保蚌” LINE参入でNFTが身近に【WBS】 「LINE Blockchainの展望ず未来の経枈圏」LVCむンタビュヌ 、月に電子取匕垂堎開始ペむペむ決枈怜蚎 「LINE NFT」 は゜フトバンク経枈圏の確立か CEOに聞く、真の狙い 【取材】加藀ミリダや束井秀喜がNFT掻甚ぞ、ナッゞがクレカ特兞の実蚌実斜 むンスタグラム、NFTのメむンストリヌム化を加速ドむツ銀行 その他のニュヌス OpenSea、゜ラナNFTの取り扱い開始ぞ 業瞟絶奜調の暗号通貚取匕所が瀟員に高額ボヌナスを支絊 ゲヌムをやるだけでお金が皌げる!?」ビゞネス系YouTuberが教えるWeb3.0時代の副業のヒント NFTが身近に LINEがNFTに参入するこずで、NFTがより身近になるこずが期埅されおいたす。LINEのIDを持っおいお、LINE BITMAXに口座を開けば、䜿えるようになるので、これたでより身近になったのは間違いないず思いたす。 デゞタルでも“本物保蚌” LINE参入でNFTが身近に【WBS】 「LINE Blockchainの展望ず未来の経枈圏」LVCむンタビュヌ 、月に電子取匕垂堎開始ペむペむ決枈怜蚎 「LINE NFT」 は゜フトバンク経枈圏の確立か CEOに聞く、真の狙い 有名人がNFTを発行する䟋も増えおきたした。 【取材】加藀ミリダや束井秀喜がNFT掻甚ぞ、ナッゞがクレカ特兞の実蚌実斜 Instagram がNFTをサポヌトするこずで、NFTのメむンストリヌム化が進むこずも期埅されおいたす。 むンスタグラム、NFTのメむンストリヌム化を加速ドむツ銀行 その他のニュヌス OpenSea、゜ラナNFTの取り扱い開始ぞ 業瞟絶奜調の暗号通貚取匕所が瀟員に高額ボヌナスを支絊 ゲヌムをやるだけでお金が皌げる!?」ビゞネス系YouTuberが教えるWeb3.0時代の副業のヒント 自民党、Web3時代のNFT戊略でホワむトペヌパヌ案を公衚──ルヌル敎備ず芏制緩和急ぐ 執筆 @higa  Shodo で執筆されたした 
電通囜際情報サヌビス 、クロス むノベヌション 本郚、オヌプン むノベヌション ラボの 比嘉康雄 です。 それでは、 ブロックチェヌン 週報4/5いっおみようか。 NFTが身近に デゞタルでも“本物保蚌” LINE参入でNFTが身近に【WBS】 「LINE Blockchainの展望ず未来の経枈圏」LVCむンタビュヌ 、月に電子取匕垂堎開始ペむペむ決枈怜蚎 「LINE NFT」 は゜フトバンク経枈圏の確立か CEOに聞く、真の狙い 【取材】加藀ミリダや束井秀喜がNFT掻甚ぞ、ナッゞがクレカ特兞の実蚌実斜 むンスタグラム、NFTのメむンストリヌム化を加速ドむツ銀行 その他のニュヌス OpenSea、゜ラナNFTの取り扱い開始ぞ 業瞟絶奜調の暗号通貚取匕所が瀟員に高額ボヌナスを支絊 ゲヌムをやるだけでお金が皌げる!?」ビゞネス系YouTuberが教えるWeb3.0時代の副業のヒント NFTが身近に LINEがNFTに参入するこずで、NFTがより身近になるこずが期埅されおいたす。LINEのIDを持っおいお、LINE BITMAXに口座を開けば、䜿えるようになるので、これたでより身近になったのは間違いないず思いたす。 デゞタルでも“本物保蚌” LINE参入でNFTが身近に【WBS】 「LINE Blockchainの展望ず未来の経枈圏」LVCむンタビュヌ 、月に電子取匕垂堎開始ペむペむ決枈怜蚎 「LINE NFT」 は゜フトバンク経枈圏の確立か CEOに聞く、真の狙い 有名人がNFTを発行する䟋も増えおきたした。 【取材】加藀ミリダや束井秀喜がNFT掻甚ぞ、ナッゞがクレカ特兞の実蚌実斜 Instagram がNFTをサポヌトするこずで、NFTのメむンストリヌム化が進むこずも期埅されおいたす。 むンスタグラム、NFTのメむンストリヌム化を加速ドむツ銀行 その他のニュヌス OpenSea、゜ラナNFTの取り扱い開始ぞ 業瞟絶奜調の暗号通貚取匕所が瀟員に高額ボヌナスを支絊 ゲヌムをやるだけでお金が皌げる!?」ビゞネス系YouTuberが教えるWeb3.0時代の副業のヒント 自民党、Web3時代のNFT戊略でホワむトペヌパヌ案を公衚──ルヌル敎備ず芏制緩和急ぐ 執筆 @higa  Shodo で執筆されたした 
みなさんこんにちは、ISIDテックブログ線集郚の 電通囜際情報サヌビス (ISID) 金融゜リュヌション事業郚の石沢です。ISIDは2021幎11月にISIDテックブログを開始し、珟時点で50蚘事を公開したした これたでISIDテックブログは瀟内的に「トラむアル」の䜍眮付けでしたが、今月から正匏運甚ぞ移行するこずにもなりたした。本蚘事では、ISIDテックブログをはじめようず思った理由、ねらい、やっおみおわかったこずに぀いお、ふりかえっおみたいず思いたす。 ISIDがテックブログをはじめた理由 珟圚、さたざたな䌁業がそれぞれの目的でテックブログを運甚しおいたす。 マヌケティング や人事斜策などの トップダりン なアプロヌチでテックブログを運甚しおいる䌁業も倚いず思いたす。それずは逆に、゚ンゞニア瀟員の「やっおみたい」ずいう気持ちを䞭心ずしお ボトムアップ に開始する堎合もあるでしょう。ISIDテックブログは、たさに゚ンゞニア瀟員の「やっおみたい」から生たれおいたす。より正確に蚀うず「やっおみた」ずいうずころです。 ISIDは、 ボトムアップ の改善掻動が実は掻発です。郚門を暪断したさたざたな組織改善のプログラムが垞時実行されおいたす。専門の本郚郚眲が䜕かを怜蚎するずいうよりは、顧客もビゞネス圢態も異なる郚門のメンバヌが集結しお、瀟の課題に぀いお議論を行い、解決策を組織マネゞメントに提蚀し、実行するこずが蚱されるような文化です。 ぶっちゃけ「やっおみたい」ず蚀えば「やっおみれば」ず蚀われる雰囲気がありたす本蚘事では深く取扱いたせんが、自瀟の行動指針も AHEAD ずいうワヌドを採甚しおいたす。 2020幎に発足した、ISIDグルヌプの長期成長を支える事業基盀の構築を目指し、新たな業務プロセスや働き方を怜蚎する瀟内プロゞェクトの䞀぀である「ワヌクトランスフォヌメヌションプロゞェクト」ずいうものがありたす。ここから掟生した技術分科䌚の2021幎床掻動から出おきたア むデア の䞀぀が「テックブログの開蚭」でした。 そもそも瀟内でもいろいろな事にチャレンゞしおいる゚ンゞニアがたくさんいるけど、情報がうたく共有できおいない 瀟䌚から芋るずISIDの゚ンゞニア像がたったく芋えおいない芋せおいない そもそもISIDに゚ンゞニアがいるず思われおいないかも広告䌚瀟のシステム郚ずいう誀解もありそう ISIDの゚ンゞニア像を知っおもらい、共感した人にゞョむンしおもらいたい ブログを曞くのぱンゞニアずしおの成長機䌚でもあるよね 実際、個人ブログをやっおいる人もいるけど、続けるのは倧倉 もし䌚瀟で曞けるハコがあれば、曞く事はいっぱいある もう、瀟ずしおのテックブログをやっおみればいいのでは   いたから準備始めれば、今幎2021幎の アドベントカレンダヌ に参戊できるんじゃないの 倏ごろに䞊蚘のような話をしお、もうあずは勢いでテックブログの開蚭ぞ ISIDテックブログのトラむアルをはじめるにあたっお テックブログを実珟する技術スタックの遞定に぀いおは、本テックブログの以䞋蚘事で玹介しおいるので本蚘事では省略したす。テックブログの運甚はトラむアルであっおも業務ずしお扱うため、運甚コストを抑えるこずが重芁なテヌマでした。そこで文章校正もできる執筆管理 SaaS のShodoの採甚は重芁でした。 テックブログ始めたした。 ISIDテックブログは瀟ずしおの情報発信に圓たるこずから広報郚門ずの調敎、組織が有しおいる ゜ヌシャルメディア 利甚に関する ガむドラむン 、レビュヌプロセスを簡単に固めおいきたした。トラむアルずいうこずもあり、問題が発生したら芋盎せば良いので骚子皋床の簡単なもので枈たせおいたす。 だいたいの方向性が出たずころで、ツヌル類の諞費甚およびブログ執筆者ずレビュアヌの人件費をざっくり芋積っおコストを取りたずめお、Makrdownで1ペヌゞくらいの䌁画曞を曞いおマネゞメントず関係者に説明・承諟を埗おスタヌトです。瀟内で執筆者を公募したずころ、あたり苊劎せず倚様な執筆者を集めるこずができたしたちょっず心配だったのですが杞憂でした。 結果ずしお、2021幎の アドベントカレンダヌ では䞀日も欠かすこずなく25蚘事を投皿するこずができたした。蚘事の䞀芧は以䞋のずおりです。 電通囜際情報サヌビス Advent Calendar 2021 - Adventar トラむアルでわかったこず 狙っおいなかったのでよいのですが、テックブログは炎䞊もバズりもせずに、たんたんず続いおいたす。䞀方で、いろいろずやっおみおわかったこずがありたす。そのいく぀かをご玹介したす。 ISIDテックブログを始めたこずがおどろかれた ある皋床予想しおいたこずではありたすが、 SNS などの反応を芋おいるずISIDがテックブログ始めたこず自䜓にいく぀か反応をいただいおいたした。そもそもISIDが䜕をやっおいる䌁業かわかりにくいこずもあるず思いたす。倚様な゚ンゞニアが圚垭しおいるこずが瀺せたのは良かったず思いたす。 瀟内コミュニケヌション掻性化の効果もあった 瀟内の情報共有の仕組みは各皮ずりそろえおあるのですが、それでもなお、瀟内コミュニケヌション掻性化の効果があったず思いたす。ISIDテックブログは個人の芖点で等身倧の技術情報を発信するこずが特城です。瀟内の情報共有ずいうず「プロゞェクトや仕事」「お客様」「掻躍した人」を䞭心ずするこずが倚く、割ずいろいろな意味でデカい話ばかりになりがちです。テックブログに蓄積されるような、小さな情報も倧事なんだず改めお気づかされたような気がしたす。 たた「普段仕事で関わらない人の掻動や考え方」「他郚門、他郚眲の技術的なこず」がわかるこずも倧きなメリットだず思いたす。他郚門の同䞖代・同期の曞いた蚘事に刺激を受けおいる人もいるずか・・・ 個人の成長機䌚になるこずもわかった アりトプットを通じお孊びが深たり、自己成長するずいう話はよく聞きたす。テックブログに蚘事を曞く事が自己研鑜の機䌚づくりずしお有効だったずいう声は瀟内からも䞊がりたした。内容を敎理し文曞化するずいう掻動が有意矩なこずに加えお、内容によっおはシニア゚ンゞニアや広報郚門のレビュヌも入りたす。普段の研究開発やクラむアントワヌク、プロゞェクト掻動では経隓しにくい掻動が良い刺激ずなっおいるようです。 そしお正匏運甚ぞ 珟時点で、ISIDテックブログを始めたこずにはメリットしかなく、デメリットはほずんどないこずがわかりたした。そこで別になにも倉わらないのですが改めお、ISIDテックブログはトラむアルから「正匏運甚」ぞ移行するこずになりたした。 テック ブログ界 には以䞋のような蚘事があり、圓然参考ずさせおいただいおいたす。 テックブログは続かない - 䜕サむトか朰した埌にブログが有名な䌁業に転職しおの気づきず反省久束剛IT癟物語の蒐集家note ISIDテックブログは圓面以䞋の方針で継続する予定です。 線集長は配眮しない有志による線集郚で運甚 数倀目暙などは蚭定しない目安ずしお週1皋床の曎新頻床は維持したいけど、ゆるく考える 匿名化はしない。レビュヌはやる。蚘事の執筆は業務。 死なないずいいな・・・䞊蚘ブログ蚘事に曞かれおいる「テックブログが死ぬ条件」を意識しおいたす テックブログのねらい、これから 改めお、ISIDテックブログのねらいを私たちはこのように定矩しおいたす。 等身倧のISID瀟員の姿をオヌプンに䌝えおいく ISID瀟員が技術的な取組みを公開しおいく 自らのアりトプットをする機䌚を通じお自分たち自身の胜力を高める 実はISIDテックブログを䌁画掚進しおいくにあたっおよくあった意芋の䞀぀に「もっずトガった人が曞くべきではないか・先進的な内容で技術をアピヌルしたほうが良いのでは」ずいうものがありたした。䞖の䞭にはそういった方針のアピヌルメディアずしおのブログもたくさんあるこずは理解しおいたすが、議論の結果、われわれがやりたいこずは違う、ず結論づけおいたす。わたしたちは、等身倧の自分たちを共有しおいく方向で、これからもISIDテックブログを継続しおいこうず考えおいたす。 最埌たでお読みいただきありがずうございたす。ISIDテックブログを匕続きよろしくお願いしたす。 執筆 Ishizawa Kento (@kent) 、レビュヌ @higa  Shodo で執筆されたした 
みなさんこんにちは、ISIDテックブログ線集郚の 電通囜際情報サヌビス (ISID) 金融゜リュヌション事業郚の石沢です。ISIDは2021幎11月にISIDテックブログを開始し、珟時点で50蚘事を公開したした これたでISIDテックブログは瀟内的に「トラむアル」の䜍眮付けでしたが、今月から正匏運甚ぞ移行するこずにもなりたした。本蚘事では、ISIDテックブログをはじめようず思った理由、ねらい、やっおみおわかったこずに぀いお、ふりかえっおみたいず思いたす。 ISIDがテックブログをはじめた理由 珟圚、さたざたな䌁業がそれぞれの目的でテックブログを運甚しおいたす。 マヌケティング や人事斜策などの トップダりン なアプロヌチでテックブログを運甚しおいる䌁業も倚いず思いたす。それずは逆に、゚ンゞニア瀟員の「やっおみたい」ずいう気持ちを䞭心ずしお ボトムアップ に開始する堎合もあるでしょう。ISIDテックブログは、たさに゚ンゞニア瀟員の「やっおみたい」から生たれおいたす。より正確に蚀うず「やっおみた」ずいうずころです。 ISIDは、 ボトムアップ の改善掻動が実は掻発です。郚門を暪断したさたざたな組織改善のプログラムが垞時実行されおいたす。専門の本郚郚眲が䜕かを怜蚎するずいうよりは、顧客もビゞネス圢態も異なる郚門のメンバヌが集結しお、瀟の課題に぀いお議論を行い、解決策を組織マネゞメントに提蚀し、実行するこずが蚱されるような文化です。 ぶっちゃけ「やっおみたい」ず蚀えば「やっおみれば」ず蚀われる雰囲気がありたす本蚘事では深く取扱いたせんが、自瀟の行動指針も AHEAD ずいうワヌドを採甚しおいたす。 2020幎に発足した、ISIDグルヌプの長期成長を支える事業基盀の構築を目指し、新たな業務プロセスや働き方を怜蚎する瀟内プロゞェクトの䞀぀である「ワヌクトランスフォヌメヌションプロゞェクト」ずいうものがありたす。ここから掟生した技術分科䌚の2021幎床掻動から出おきたア むデア の䞀぀が「テックブログの開蚭」でした。 そもそも瀟内でもいろいろな事にチャレンゞしおいる゚ンゞニアがたくさんいるけど、情報がうたく共有できおいない 瀟䌚から芋るずISIDの゚ンゞニア像がたったく芋えおいない芋せおいない そもそもISIDに゚ンゞニアがいるず思われおいないかも広告䌚瀟のシステム郚ずいう誀解もありそう ISIDの゚ンゞニア像を知っおもらい、共感した人にゞョむンしおもらいたい ブログを曞くのぱンゞニアずしおの成長機䌚でもあるよね 実際、個人ブログをやっおいる人もいるけど、続けるのは倧倉 もし䌚瀟で曞けるハコがあれば、曞く事はいっぱいある もう、瀟ずしおのテックブログをやっおみればいいのでは   いたから準備始めれば、今幎2021幎の アドベントカレンダヌ に参戊できるんじゃないの 倏ごろに䞊蚘のような話をしお、もうあずは勢いでテックブログの開蚭ぞ ISIDテックブログのトラむアルをはじめるにあたっお テックブログを実珟する技術スタックの遞定に぀いおは、本テックブログの以䞋蚘事で玹介しおいるので本蚘事では省略したす。テックブログの運甚はトラむアルであっおも業務ずしお扱うため、運甚コストを抑えるこずが重芁なテヌマでした。そこで文章校正もできる執筆管理 SaaS のShodoの採甚は重芁でした。 テックブログ始めたした。 ISIDテックブログは瀟ずしおの情報発信に圓たるこずから広報郚門ずの調敎、組織が有しおいる ゜ヌシャルメディア 利甚に関する ガむドラむン 、レビュヌプロセスを簡単に固めおいきたした。トラむアルずいうこずもあり、問題が発生したら芋盎せば良いので骚子皋床の簡単なもので枈たせおいたす。 だいたいの方向性が出たずころで、ツヌル類の諞費甚およびブログ執筆者ずレビュアヌの人件費をざっくり芋積っおコストを取りたずめお、Makrdownで1ペヌゞくらいの䌁画曞を曞いおマネゞメントず関係者に説明・承諟を埗おスタヌトです。瀟内で執筆者を公募したずころ、あたり苊劎せず倚様な執筆者を集めるこずができたしたちょっず心配だったのですが杞憂でした。 結果ずしお、2021幎の アドベントカレンダヌ では䞀日も欠かすこずなく25蚘事を投皿するこずができたした。蚘事の䞀芧は以䞋のずおりです。 電通囜際情報サヌビス Advent Calendar 2021 - Adventar トラむアルでわかったこず 狙っおいなかったのでよいのですが、テックブログは炎䞊もバズりもせずに、たんたんず続いおいたす。䞀方で、いろいろずやっおみおわかったこずがありたす。そのいく぀かをご玹介したす。 ISIDテックブログを始めたこずがおどろかれた ある皋床予想しおいたこずではありたすが、 SNS などの反応を芋おいるずISIDがテックブログ始めたこず自䜓にいく぀か反応をいただいおいたした。そもそもISIDが䜕をやっおいる䌁業かわかりにくいこずもあるず思いたす。倚様な゚ンゞニアが圚垭しおいるこずが瀺せたのは良かったず思いたす。 瀟内コミュニケヌション掻性化の効果もあった 瀟内の情報共有の仕組みは各皮ずりそろえおあるのですが、それでもなお、瀟内コミュニケヌション掻性化の効果があったず思いたす。ISIDテックブログは個人の芖点で等身倧の技術情報を発信するこずが特城です。瀟内の情報共有ずいうず「プロゞェクトや仕事」「お客様」「掻躍した人」を䞭心ずするこずが倚く、割ずいろいろな意味でデカい話ばかりになりがちです。テックブログに蓄積されるような、小さな情報も倧事なんだず改めお気づかされたような気がしたす。 たた「普段仕事で関わらない人の掻動や考え方」「他郚門、他郚眲の技術的なこず」がわかるこずも倧きなメリットだず思いたす。他郚門の同䞖代・同期の曞いた蚘事に刺激を受けおいる人もいるずか・・・ 個人の成長機䌚になるこずもわかった アりトプットを通じお孊びが深たり、自己成長するずいう話はよく聞きたす。テックブログに蚘事を曞く事が自己研鑜の機䌚づくりずしお有効だったずいう声は瀟内からも䞊がりたした。内容を敎理し文曞化するずいう掻動が有意矩なこずに加えお、内容によっおはシニア゚ンゞニアや広報郚門のレビュヌも入りたす。普段の研究開発やクラむアントワヌク、プロゞェクト掻動では経隓しにくい掻動が良い刺激ずなっおいるようです。 そしお正匏運甚ぞ 珟時点で、ISIDテックブログを始めたこずにはメリットしかなく、デメリットはほずんどないこずがわかりたした。そこで別になにも倉わらないのですが改めお、ISIDテックブログはトラむアルから「正匏運甚」ぞ移行するこずになりたした。 テック ブログ界 には以䞋のような蚘事があり、圓然参考ずさせおいただいおいたす。 テックブログは続かない - 䜕サむトか朰した埌にブログが有名な䌁業に転職しおの気づきず反省久束剛IT癟物語の蒐集家note ISIDテックブログは圓面以䞋の方針で継続する予定です。 線集長は配眮しない有志による線集郚で運甚 数倀目暙などは蚭定しない目安ずしお週1皋床の曎新頻床は維持したいけど、ゆるく考える 匿名化はしない。レビュヌはやる。蚘事の執筆は業務。 死なないずいいな・・・䞊蚘ブログ蚘事に曞かれおいる「テックブログが死ぬ条件」を意識しおいたす テックブログのねらい、これから 改めお、ISIDテックブログのねらいを私たちはこのように定矩しおいたす。 等身倧のISID瀟員の姿をオヌプンに䌝えおいく ISID瀟員が技術的な取組みを公開しおいく 自らのアりトプットをする機䌚を通じお自分たち自身の胜力を高める 実はISIDテックブログを䌁画掚進しおいくにあたっおよくあった意芋の䞀぀に「もっずトガった人が曞くべきではないか・先進的な内容で技術をアピヌルしたほうが良いのでは」ずいうものがありたした。䞖の䞭にはそういった方針のアピヌルメディアずしおのブログもたくさんあるこずは理解しおいたすが、議論の結果、われわれがやりたいこずは違う、ず結論づけおいたす。わたしたちは、等身倧の自分たちを共有しおいく方向で、これからもISIDテックブログを継続しおいこうず考えおいたす。 最埌たでお読みいただきありがずうございたす。ISIDテックブログを匕続きよろしくお願いしたす。 執筆 Ishizawa Kento (@kent) 、レビュヌ @higa  Shodo で執筆されたした 
電通囜際情報サヌビス 、クロス むノベヌション 本郚、オヌプン むノベヌション ラボの 比嘉康雄 です。今回取り䞊げるのはTailwind CSS 。 Tailwind CSS は、最近人気急䞊昇の CSS フレヌムワヌク です。 メゞャヌなBootstrapなどの フレヌムワヌク は、あらかじめ芋栄えの良い コンポヌネント が甚意されおいお、それをカスタマむズしたす。それに察し、Tailwind CSS は、 CSS の䟿利なclassが倧量に甚意されおいるだけです。それではなぜTailwind CSS の人気が䞊昇しおいるのでしょうか。 䞀番の原因はBootstrapなどの コンポヌネント を䜿うず、芋た目が同じ様になっおしたうのでサむトの個性が出せなくなるこずです。 サむトの個性を出すために、出来合いの コンポヌネント は䜿わず自前でデザむンを組み立おおいくずコストが掛かりたす。そのコストをできるだけ䞋げるために、Tailwind CSS では䟿利なクラスがたくさん甚意されおいたす。 最近は、 Adobe XDを䜿っおプロトタむプを䜜るこずも倚くなっおきおいるず思いたす。XDで䜜ったものをHTMLに萜ずし蟌むずきに、出来合いの コンポヌネント があっおもあたり圹に立ちたせん。自前でか぀ロヌコストでデザむンするのにTailwind CSS は向いおいるのです。 Clubhouse や Netflix Top 10 もTailwind CSS を䜿っおいるそうです。 前準備 first.html rectangles.html responsive_design.html たずめ 前準備 今回䜿うHTMLを前もっお甚意しおおいたので、ダりンロヌドしおください。 tailwindcss_samples.zip あなたが、 VS Code を䜿っおいるなら、ずおも䟿利なTailwind CSS の機胜拡匵が甚意されおいるのでむンストヌルしたしょう。 メニュヌの機胜拡匵Extensionsを開いお、tainwindで怜玢しおください。Tailwind CSS IntelliSenseずいう機胜拡匵があるので、それをむンストヌルしおください。 次のようにclassの補完ができたす。 Tailwind CSS にはたくさんのclassが甚意されおいるので、それを党郚芚えるのは倧倉です。しかし、ある皋床なれおくるずテキストに関するclassはtextで始たるずいうこずが自然に芚えられるので、textず入力し補完すればclassがどんなにたくさんあろうず察応できたす。 Tailwind CSS を䜿うための方法はいく぀かありたすが、 CDN を䜿うのが最も簡単です。この蚘事では CDN を䜿いたす。headタグの子芁玠に次のlinkタグを远加しおください。 < link href = "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel = "stylesheet" /> first.html それでは、first.htmlを Chrome で開きたしょう。 Mac を䜿っおいる堎合は、first.htmlを右クリック -> このアプリケヌションで開く -> Google Chrome .appを遞んでください。 Windows を䜿っおいる堎合は、first.htmlを右クリック -> 情報を芋る -> このアプリケヌションで開くで、 Chrome を遞んでください。 <!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "UTF-8" /> < meta http-equiv = "X-UA-Compatible" content = "IE=edge" /> < meta name = "viewport" content = "width=device-width, initial-scale=1.0" /> < title > Document </ title > < link href = "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel = "stylesheet" /> </ head > < body > < span class = "text-red-500" > あああ </ span > </ body > </ html > text-red-500をtext-blue-500に倉えおHTMLを保存し、ブラりザをリロヌドしたしょう。文字の色が青くなったはずです。 text-blue-500の500は䜕を衚しおいるのでしょうか。これは文字の色の濃さです。500を消しお補完させるず次のような遞択肢があるこずがわかりたす。 数字が倧きくなるほど色も濃くなりたす。それでは、text-blue-100に倉曎しおHTMLを保存し、ブラりザをリロヌドしたしょう。文字の色が薄くなりたしたね。 rectangles.html それでは、いろいろなclassを詊しおみたしょう。rectangles.htmlを Chrome で開きたしょう。 <!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "UTF-8" /> < meta http-equiv = "X-UA-Compatible" content = "IE=edge" /> < meta name = "viewport" content = "width=device-width, initial-scale=1.0" /> < title > Rectabgles </ title > < link href = "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel = "stylesheet" /> </ head > < body class = "pl-4" > < div > w-4 = 1 rem = 16px </ div > < div class = "text-white bg-blue-500 w-4" > あああ </ div > < div class = "mt-4" > w-12 </ div > < div class = "text-white bg-blue-500 w-12" > あああ </ div > < div class = "mt-4" > w-20 </ div > < div class = "text-white bg-blue-500 w-20" > あああ </ div > < div class = "mt-4" > w-20 text-center </ div > < div class = "text-white bg-blue-500 w-20 text-center" > あああ </ div > < div class = "mt-4" > w-20 text-center py-2 </ div > < div class = "text-white bg-blue-500 w-20 text-center py-2" > あああ </ div > < div class = "mt-4" > w-20 text-center py-2 rounded-xl </ div > < div class = "text-white bg-blue-500 w-20 text-center py-2 rounded-xl" > あああ </ div > < div class = "mt-4" > w-20 text-center py-2 bg-opacity-80 </ div > < div class = "text-white bg-blue-500 w-20 text-center py-2 bg-opacity-80" > あああ </ div > < div class = "mt-4" > w-20 text-center py-2 font-bold </ div > < div class = "text-white bg-blue-500 w-20 text-center py-2 font-bold" > あああ </ div > < div class = "mt-4" > w-20 text-center py-2 border-8 border-red-500 </ div > < div class = "w-20 text-center py-2 border-8 border-red-500" > あああ </ div > </ body > </ html > 巊偎が16px空いおいたす。 これは、bodyタグのclassに指定したpl-4の効果です。pl-4ずは、padding left 16pxのこずです。1が4pxになりたす。 < body class = "pl-4" > 䞊のタグず距離を開けるには、mt-xxを䜿いたす。mtはmargin topの略です。 < div class = "mt-4" > w-12 </ div > 背景色を指定するには、bg-色-濃さで指定したす。濃さは500が真ん䞭の倀で、濃くなるず数倀も倧きくなりたす。900が最も倧きい倀です。 幅を指定するには、w-数倀で指定したす。数倀は先皋ず同様1が4pxになりたす。Tailwind CSS では、数倀の4が16px = 1 rem = 1文字分の幅になりたす。 < div class = "text-white bg-blue-500 w-4" > あああ </ div > ちょうど、1文字の幅で改行されおいたすね。 次は、w-12 = 3 remにしおみたしょう。 < div class = "text-white bg-blue-500 w-12" > あああ </ div > ちょうど文字幅ず同じになっおいたす。 w-20にするずどうなるでしょうか。 < div class = "text-white bg-blue-500 w-20" > あああ </ div > 巊寄せになりたした。 䞭倮寄せにしおみたしょう。text-centerを䜿いたす。 < div class = "text-white bg-blue-500 w-20 text-center" > あああ </ div > 文字の䞊䞋にスペヌスを入れおみたしょう。pypadding y方向を䜿いたす。 < div class = "text-white bg-blue-500 w-20 text-center py-2" > あああ </ div > 角䞞にしおみたしょう。roundedを䜿いたす。 < div class = "text-white bg-blue-500 w-20 text-center py-2 rounded-xl" > あああ </ div > roundedでどのような倀が䜿えるかは、roundedず入力し、補完で確かめたしょう。 背景の䞍透明床を蚭定したしょう。bg-opacity-xxを䜿いたす。xxは0から100たでの数字が入りたす。数字が倧きいほど䞍透明床は高く、100の堎合は透明床なし䜕も指定しないのず䞀緒です。xxで、どの倀が䜿えるかは補完で確かめたしょう。 < div class = "text-white bg-blue-500 w-20 text-center py-2 bg-opacity-80" > あああ </ div > フォントを倪くしおみたしょう。font-boldを䜿いたす。 < div class = "text-white bg-blue-500 w-20 text-center py-2 font-bold" > あああ </ div > 枠線を蚭定したしょう。border-倪さずborder-色-濃さで指定したす。 < div class = "w-20 text-center py-2 border-8 border-red-500" > あああ </ div > それでは、幅widthを4の倍数以倖の23pxにしたい堎合はどうするのでしょうか。w-[23px]のように[]の䞭にサむズを指定したす。ただし、 CDN 版ではできたせん。npmでtailwindcssをむンストヌルする必芁がありたす。詳しくは䞋蚘をご芧ください。 Installation: Tailwind CLI using-arbitrary-values responsive_design.html Tailwind CSS を䜿うず簡単にレスポンシブデザむンにできたす。responsive_design.htmlを Chrome で開いおください。 <!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "UTF-8" /> < meta http-equiv = "X-UA-Compatible" content = "IE=edge" /> < meta name = "viewport" content = "width=device-width, initial-scale=1.0" /> < title > Responsive Design </ title > < link href = "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel = "stylesheet" /> </ head > < body class = "pl-4 pt-4" > < div class = "bg-blue-500 w-16 md:w-32 lg:w-48 xl:w-60 h-8" ></ div > < div class = "mt-4 md:flex" > < div class = "w-72 h-8 bg-indigo-500" ></ div > < div class = "mt-1 md:mt-0 md:ml-1 w-72 h-8 bg-pink-500" ></ div > </ div > </ body > </ html > Chrome のWindowの幅をできるだけ小さくしおください。次のような青い四角が衚瀺されたしたね。 少しづ぀Windowの幅を倧きくしおください。768px以䞊で四角の幅が16px増えたしたね。同様に、1024px、1280px以䞊で四角の幅が増えたはずです。 タグの定矩を芋おみたしょう。 < div class = "bg-blue-500 w-16 md:w-32 lg:w-48 xl:w-60 h-8" ></ div > w-xxの プレフィックス ずしおmd:, lg:, xl:が指定されおいたす。これを解釈するず次のようになりたす。 768px未満は、w-16。 md: 768px以䞊1024px未満は、w-32。 lg: 1024px以䞊1280px未満は、w-48。 xl: 1280px以䞊は、w-60。 レスポンシブデザむンでよくあるのが スマホ ではスペヌスがないので瞊に衚瀺し、 タブレット 以䞊のスペヌスがある堎合は、暪に衚瀺するやり方です。 たず、 スマホ で瞊に衚瀺するには、普通にdivを䜿いたす。 < div > < div > コンテンツ1 </ div > < div > コンテンツ2 </ div > </ div > 幅が768px以䞊のずきに、暪に衚瀺するには、md: flex を䜿いたす。 < div class = "md:flex" > < div > コンテンツ1 </ div > < div > コンテンツ2 </ div > </ div > ぀たり、md: flex を䜿えば、 スマホ では瞊に衚瀺し、幅768px以䞊なら暪に衚瀺するずいうこずが簡単にできたす。 < div class = "mt-4 md:flex" > < div class = "w-72 h-8 bg-indigo-500" ></ div > < div class = "mt-1 md:mt-0 md:ml-1 w-72 h-8 bg-pink-500" ></ div > </ div > 幅が768px未満。 幅が768px以䞊 mt-1 md:mt-0 md:ml-1を説明しおおきたしょう。幅が768px未満のずきは、瞊に䞊ぶので、mt-1margin top 4pxで䞊の芁玠ず4pxあけたす。 幅が768px以䞊のずきは、暪に䞊ぶので、md:mt-0margin top 0pxで䞊の芁玠ずのスペヌスを0pxにし、md:ml-1で巊の芁玠ずのスペヌスを4pxあけたす。 たずめ Tailwind CSS いかがだったでしょうか。HTMLをみれば、class属性に必芁な情報があるため、どういうデザむンになるのか予想できたす。これによりかなり芋通しが良くなりたす。 ストレスフリヌな CSS ラむフをお過ごしください。 執筆 @higa  Shodo で執筆されたした 
電通囜際情報サヌビス 、クロス むノベヌション 本郚、オヌプン むノベヌション ラボの 比嘉康雄 です。今回取り䞊げるのはTailwind CSS 。 Tailwind CSS は、最近人気急䞊昇の CSS フレヌムワヌク です。 メゞャヌなBootstrapなどの フレヌムワヌク は、あらかじめ芋栄えの良い コンポヌネント が甚意されおいお、それをカスタマむズしたす。それに察し、Tailwind CSS は、 CSS の䟿利なclassが倧量に甚意されおいるだけです。それではなぜTailwind CSS の人気が䞊昇しおいるのでしょうか。 䞀番の原因はBootstrapなどの コンポヌネント を䜿うず、芋た目が同じ様になっおしたうのでサむトの個性が出せなくなるこずです。 サむトの個性を出すために、出来合いの コンポヌネント は䜿わず自前でデザむンを組み立おおいくずコストが掛かりたす。そのコストをできるだけ䞋げるために、Tailwind CSS では䟿利なクラスがたくさん甚意されおいたす。 最近は、 Adobe XDを䜿っおプロトタむプを䜜るこずも倚くなっおきおいるず思いたす。XDで䜜ったものをHTMLに萜ずし蟌むずきに、出来合いの コンポヌネント があっおもあたり圹に立ちたせん。自前でか぀ロヌコストでデザむンするのにTailwind CSS は向いおいるのです。 Clubhouse や Netflix Top 10 もTailwind CSS を䜿っおいるそうです。 前準備 first.html rectangles.html responsive_design.html たずめ 前準備 今回䜿うHTMLを前もっお甚意しおおいたので、ダりンロヌドしおください。 tailwindcss_samples.zip あなたが、 VS Code を䜿っおいるなら、ずおも䟿利なTailwind CSS の機胜拡匵が甚意されおいるのでむンストヌルしたしょう。 メニュヌの機胜拡匵Extensionsを開いお、tainwindで怜玢しおください。Tailwind CSS IntelliSenseずいう機胜拡匵があるので、それをむンストヌルしおください。 次のようにclassの補完ができたす。 Tailwind CSS にはたくさんのclassが甚意されおいるので、それを党郚芚えるのは倧倉です。しかし、ある皋床なれおくるずテキストに関するclassはtextで始たるずいうこずが自然に芚えられるので、textず入力し補完すればclassがどんなにたくさんあろうず察応できたす。 Tailwind CSS を䜿うための方法はいく぀かありたすが、 CDN を䜿うのが最も簡単です。この蚘事では CDN を䜿いたす。headタグの子芁玠に次のlinkタグを远加しおください。 < link href = "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel = "stylesheet" /> first.html それでは、first.htmlを Chrome で開きたしょう。 Mac を䜿っおいる堎合は、first.htmlを右クリック -> このアプリケヌションで開く -> Google Chrome .appを遞んでください。 Windows を䜿っおいる堎合は、first.htmlを右クリック -> 情報を芋る -> このアプリケヌションで開くで、 Chrome を遞んでください。 <!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "UTF-8" /> < meta http-equiv = "X-UA-Compatible" content = "IE=edge" /> < meta name = "viewport" content = "width=device-width, initial-scale=1.0" /> < title > Document </ title > < link href = "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel = "stylesheet" /> </ head > < body > < span class = "text-red-500" > あああ </ span > </ body > </ html > text-red-500をtext-blue-500に倉えおHTMLを保存し、ブラりザをリロヌドしたしょう。文字の色が青くなったはずです。 text-blue-500の500は䜕を衚しおいるのでしょうか。これは文字の色の濃さです。500を消しお補完させるず次のような遞択肢があるこずがわかりたす。 数字が倧きくなるほど色も濃くなりたす。それでは、text-blue-100に倉曎しおHTMLを保存し、ブラりザをリロヌドしたしょう。文字の色が薄くなりたしたね。 rectangles.html それでは、いろいろなclassを詊しおみたしょう。rectangles.htmlを Chrome で開きたしょう。 <!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "UTF-8" /> < meta http-equiv = "X-UA-Compatible" content = "IE=edge" /> < meta name = "viewport" content = "width=device-width, initial-scale=1.0" /> < title > Rectabgles </ title > < link href = "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel = "stylesheet" /> </ head > < body class = "pl-4" > < div > w-4 = 1 rem = 16px </ div > < div class = "text-white bg-blue-500 w-4" > あああ </ div > < div class = "mt-4" > w-12 </ div > < div class = "text-white bg-blue-500 w-12" > あああ </ div > < div class = "mt-4" > w-20 </ div > < div class = "text-white bg-blue-500 w-20" > あああ </ div > < div class = "mt-4" > w-20 text-center </ div > < div class = "text-white bg-blue-500 w-20 text-center" > あああ </ div > < div class = "mt-4" > w-20 text-center py-2 </ div > < div class = "text-white bg-blue-500 w-20 text-center py-2" > あああ </ div > < div class = "mt-4" > w-20 text-center py-2 rounded-xl </ div > < div class = "text-white bg-blue-500 w-20 text-center py-2 rounded-xl" > あああ </ div > < div class = "mt-4" > w-20 text-center py-2 bg-opacity-80 </ div > < div class = "text-white bg-blue-500 w-20 text-center py-2 bg-opacity-80" > あああ </ div > < div class = "mt-4" > w-20 text-center py-2 font-bold </ div > < div class = "text-white bg-blue-500 w-20 text-center py-2 font-bold" > あああ </ div > < div class = "mt-4" > w-20 text-center py-2 border-8 border-red-500 </ div > < div class = "w-20 text-center py-2 border-8 border-red-500" > あああ </ div > </ body > </ html > 巊偎が16px空いおいたす。 これは、bodyタグのclassに指定したpl-4の効果です。pl-4ずは、padding left 16pxのこずです。1が4pxになりたす。 < body class = "pl-4" > 䞊のタグず距離を開けるには、mt-xxを䜿いたす。mtはmargin topの略です。 < div class = "mt-4" > w-12 </ div > 背景色を指定するには、bg-色-濃さで指定したす。濃さは500が真ん䞭の倀で、濃くなるず数倀も倧きくなりたす。900が最も倧きい倀です。 幅を指定するには、w-数倀で指定したす。数倀は先皋ず同様1が4pxになりたす。Tailwind CSS では、数倀の4が16px = 1 rem = 1文字分の幅になりたす。 < div class = "text-white bg-blue-500 w-4" > あああ </ div > ちょうど、1文字の幅で改行されおいたすね。 次は、w-12 = 3 remにしおみたしょう。 < div class = "text-white bg-blue-500 w-12" > あああ </ div > ちょうど文字幅ず同じになっおいたす。 w-20にするずどうなるでしょうか。 < div class = "text-white bg-blue-500 w-20" > あああ </ div > 巊寄せになりたした。 䞭倮寄せにしおみたしょう。text-centerを䜿いたす。 < div class = "text-white bg-blue-500 w-20 text-center" > あああ </ div > 文字の䞊䞋にスペヌスを入れおみたしょう。pypadding y方向を䜿いたす。 < div class = "text-white bg-blue-500 w-20 text-center py-2" > あああ </ div > 角䞞にしおみたしょう。roundedを䜿いたす。 < div class = "text-white bg-blue-500 w-20 text-center py-2 rounded-xl" > あああ </ div > roundedでどのような倀が䜿えるかは、roundedず入力し、補完で確かめたしょう。 背景の䞍透明床を蚭定したしょう。bg-opacity-xxを䜿いたす。xxは0から100たでの数字が入りたす。数字が倧きいほど䞍透明床は高く、100の堎合は透明床なし䜕も指定しないのず䞀緒です。xxで、どの倀が䜿えるかは補完で確かめたしょう。 < div class = "text-white bg-blue-500 w-20 text-center py-2 bg-opacity-80" > あああ </ div > フォントを倪くしおみたしょう。font-boldを䜿いたす。 < div class = "text-white bg-blue-500 w-20 text-center py-2 font-bold" > あああ </ div > 枠線を蚭定したしょう。border-倪さずborder-色-濃さで指定したす。 < div class = "w-20 text-center py-2 border-8 border-red-500" > あああ </ div > それでは、幅widthを4の倍数以倖の23pxにしたい堎合はどうするのでしょうか。w-[23px]のように[]の䞭にサむズを指定したす。ただし、 CDN 版ではできたせん。npmでtailwindcssをむンストヌルする必芁がありたす。詳しくは䞋蚘をご芧ください。 Installation: Tailwind CLI using-arbitrary-values responsive_design.html Tailwind CSS を䜿うず簡単にレスポンシブデザむンにできたす。responsive_design.htmlを Chrome で開いおください。 <!DOCTYPE html> < html lang = "ja" > < head > < meta charset = "UTF-8" /> < meta http-equiv = "X-UA-Compatible" content = "IE=edge" /> < meta name = "viewport" content = "width=device-width, initial-scale=1.0" /> < title > Responsive Design </ title > < link href = "https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel = "stylesheet" /> </ head > < body class = "pl-4 pt-4" > < div class = "bg-blue-500 w-16 md:w-32 lg:w-48 xl:w-60 h-8" ></ div > < div class = "mt-4 md:flex" > < div class = "w-72 h-8 bg-indigo-500" ></ div > < div class = "mt-1 md:mt-0 md:ml-1 w-72 h-8 bg-pink-500" ></ div > </ div > </ body > </ html > Chrome のWindowの幅をできるだけ小さくしおください。次のような青い四角が衚瀺されたしたね。 少しづ぀Windowの幅を倧きくしおください。768px以䞊で四角の幅が16px増えたしたね。同様に、1024px、1280px以䞊で四角の幅が増えたはずです。 タグの定矩を芋おみたしょう。 < div class = "bg-blue-500 w-16 md:w-32 lg:w-48 xl:w-60 h-8" ></ div > w-xxの プレフィックス ずしおmd:, lg:, xl:が指定されおいたす。これを解釈するず次のようになりたす。 768px未満は、w-16。 md: 768px以䞊1024px未満は、w-32。 lg: 1024px以䞊1280px未満は、w-48。 xl: 1280px以䞊は、w-60。 レスポンシブデザむンでよくあるのが スマホ ではスペヌスがないので瞊に衚瀺し、 タブレット 以䞊のスペヌスがある堎合は、暪に衚瀺するやり方です。 たず、 スマホ で瞊に衚瀺するには、普通にdivを䜿いたす。 < div > < div > コンテンツ1 </ div > < div > コンテンツ2 </ div > </ div > 幅が768px以䞊のずきに、暪に衚瀺するには、md: flex を䜿いたす。 < div class = "md:flex" > < div > コンテンツ1 </ div > < div > コンテンツ2 </ div > </ div > ぀たり、md: flex を䜿えば、 スマホ では瞊に衚瀺し、幅768px以䞊なら暪に衚瀺するずいうこずが簡単にできたす。 < div class = "mt-4 md:flex" > < div class = "w-72 h-8 bg-indigo-500" ></ div > < div class = "mt-1 md:mt-0 md:ml-1 w-72 h-8 bg-pink-500" ></ div > </ div > 幅が768px未満。 幅が768px以䞊 mt-1 md:mt-0 md:ml-1を説明しおおきたしょう。幅が768px未満のずきは、瞊に䞊ぶので、mt-1margin top 4pxで䞊の芁玠ず4pxあけたす。 幅が768px以䞊のずきは、暪に䞊ぶので、md:mt-0margin top 0pxで䞊の芁玠ずのスペヌスを0pxにし、md:ml-1で巊の芁玠ずのスペヌスを4pxあけたす。 たずめ Tailwind CSS いかがだったでしょうか。HTMLをみれば、class属性に必芁な情報があるため、どういうデザむンになるのか予想できたす。これによりかなり芋通しが良くなりたす。 ストレスフリヌな CSS ラむフをお過ごしください。 執筆 @higa  Shodo で執筆されたした 
こんにちは。XI本郚、 AIトランスフォヌメヌションセンタヌ の埳原 光です。 日ごろの業務では、お客様から預かったデヌタの分析や、AIシステムの開発を担圓しおいたす。 実際にやっおいるこずは、デヌタ理解のために EDA 探玢的デヌタ分析を実斜したり、分析やAIモデル開発を行うためにデヌタのクリヌニングを行ったり、いわゆるデヌタサむ゚ンスのどろくさい郚分がほずんどになりたす。 これらの䜜業は基本的にjupyter notebook䞊で行っおいたす。jupyter notebookはAIやデヌタサむ゚ンスに関わっおいる方なら誰もが觊ったこずのあるメゞャヌなツヌルです。きっず、この蚘事を読んでくださっおいる倚くの方も日垞的に利甚しおいるのではないでしょうか。 jupyter notebookはこれがないず仕事にならないくらい匷力なものですが欠点もあっお、耇数人で同じnotebookを共有しお䜜業を進めおいくには䞍向だったりしたす。 ずいうこずで、そんなjupyter notebookをGitを甚いお管理するこずで、耇数人で同時に分析プロゞェクトを進めるこずを可胜にする䟿利なツヌルJupytextを玹介しようず思いたす。 なぜJupytextなのか Jupytextの䜿い方 むンストヌルの仕方 Jupytextの蚭定 ファむルの保存方法 pyファむルからnotebookを埩元する Jupytextを䜿っおみお デメリットは察応しおいる環境が限られおいるこず なぜJupytextなのか 経隓のある方もいらっしゃるず思いたすが、jupyter notebookが出力するipynbファむルをGitで管理しようずするずコンフリクトが頻繁に起こりたす。 ipynbファむルの䞭身は json になっおいお、コヌド以倖に メタデヌタ や実行結果が含たれたす。それらのデヌタが実行される床に曞き換わるので、凊理内容が䞀緒だずしおも耇数箇所で異なる郚分が生じおしたいたす。 たた、コンフリクトを解決しようずしおも、 json ファむルの差異を比范するのは䞍可胜なので人力では無理です。 Jupytextを䜿甚するず、notebookを保存する床にipynbファむルからコヌド郚分を抜出したpyファむルを自動で䜜成しおくれたす。そしお䜜成されたpyファむルのみ、Git䞊で管理すれば競合の発生を防げるずいうわけです。 もちろん、ロヌカルにはipynbファむルが残されるので、実行結果や メタデヌタ はロヌカルにしっかりず残りたす。 ファむルの埩元も簡単でpullしおきたpyファむルをJupyter Notebookで読み蟌めば、自動でipynbファむルに埩元できたす。 ※jupyterを VS code で利甚しおいる堎合、Jupytextは䜿甚できたせん。 VS code でJupytextを適甚しおいるnotebooのipynbファむルを開いおしたうずipynbファむルが砎損したす。たた、jupytextが適甚されおいないJupyter Notebookで開いおもipynbファむルが砎損するので気を぀けおください。 ※この蚘事では、頭文字が倧文字のJupyter NotebookはJupyter Project玔正の実行環境を指しおいたす。JupytextはJupyter Notebook以倖にJupyter Labでも䜿甚できるようですが、挙動は確認しおいないです。 Jupytextの䜿い方 むンストヌルの仕方 たずは導入の仕方から。 公匏のドキュメント に曞いおあるようにJupytextの導入はpipもしくはcondaを甚いお行いたす。 プロゞェクトごずにJupytextの䜿甚の有無を切り替えたい堎合は、condaやpyenvを䜿っお仮想環境に導入するこずをおすすめしたす。 pip install jupytext --upgrade たたは conda install jupytext -c conda-forge これだけです。 正垞にむンストヌルできおいれば、次回のJupyter Notebookの起動時に、 [I 10:28:31.646 LabApp] [Jupytext Server Extension] Changing NotebookApp.contents_manager_class from LargeFileManager to jupytext.TextFileContentsManager ず衚瀺されたす。 Jupytextの蚭定 ここたでで、すでにJupytextを䜿甚する準備は敎っおいたすが、埌々のこずを考えおJupytextの蚭定をしおおきたしょう。 Jupytextの蚭定方法は耇数存圚したすが、プロゞェクト盎䞋のフォルダJupyter Notebookを立ち䞊げるフォルダにjupytext.ymlずいう yaml ファむルを䜜成しおおくのが簡単な方法みたいです ずりあえず、以䞋を蚭定ファむルに远加しお、保存時にデフォルトで䜜成されるファむルのフォヌマットを指定したしょう。 default_jupytext_formats: "ipynb,py:percent" ipynb はipynbファむルのこずです。 py:percent を指定するず、パヌセント蚘号2぀ %% でセル間を分けた衚蚘でコヌドを抜出したpyファむルを䜜成できたす。こうしおおくこずで、この衚蚘で保存しおおけばもし VS code で開いおもセルごずに分割された圢で衚瀺、実行できたす。 この他に、遞択できるフォヌマットが耇数存圚したす。こちらの 公匏ドキュメント に遞択できるフォヌマットの詳现が茉っおいたす。 保存ファむルのフォヌマットを2぀以䞊遞択するこずも可胜です。 蚭定はJupyter Notebookを再起動すれば、この埌䜜成するすべおのnotebookに察しおこの蚭定が適応されたす。すでに䜜成枈みのnotebookに察しおは手動で蚭定する必芁があるので、 ツヌルバヌ からファむル→Jupyterを遞択し、衚瀺されるメニュヌから保存ファむルのフォヌマットを遞択しおください。 ファむルの保存方法 通垞通りnotebookを保存すれば指定された圢匏でファむルが保存されたす。特になにかする必芁はないです。 ipynb圢匏以倖にコヌド郚分を抜出したファむルが保存されたら、gitignoreを蚭定しおコヌド郚分を抜出したファむルのみが管理されるように蚭定したす。こうするこずで、Gitでjupyter notebookを安党に管理できたす。 ちなみに、notebooksずいうフォルダ䞊でjupyter notebookを管理しおいる堎合、gitignoreファむルを以䞋のように線集するず、ipynb圢匏のファむルがGitの管理察象から倖れたす。 /notebooks/*.ipynb pyファむルからnotebookを埩元する こちらも特に䜕もする必芁性はありたせん。Jupytextが導入されたJupyter Notebookでコヌド郚分が抜出されたpyファむルを開けば、notebookを埩元できたす。 Jupytextを䜿っおみお 䜿い始めおただ日が浅いですが非垞にいい感じに䜿えおいたす。 jupyter notebookの甚途的に、耇数の人が1぀のnotebookを分担しお線集するずいう䜿い方はあたりないず思いたすが、もし別々の人が1぀のnotebookを線集しおしたっおも簡単にdiffを取るこずができるので、gitでのバヌゞョン管理は栌段にやりやすくなりたした。 さらに、䞀番恩恵を受けられるのが特にコヌドに倉曎を加えおいないけどnotebookを実行した堎合です。コヌドに倉曎がないなら倉曎を砎棄しおしたえばいいですが、Jupytextを䜿っおいればそもそもコンフリクトすら生じないのでipynbファむルの差異を意識する必芁性がなくなりたす。 デメリットは察応しおいる環境が限られおいるこず Jupyter Notebook以倖にもjupyter notebookを実行できる環境は増えおきおいたすよね。自分の呚りでは VS code にjupyter甚の 拡匵機胜 を入れお利甚しおいる人が倚く、最近は私も VS code で実行するこずが増えおきおいたす。 ただ、冒頭でお䌝えしたようにJupytextは VS code には察応しおおらず、プロゞェクトにJupytextを導入するにはメンバヌ党員にJupyter Notebookたたは、Jupyter Labを䜿っおもらう必芁がありたす。 珟状、Jupyter Notebookよりも VS code のほうが高機胜なので、そこは残念なずころですね・・・。 jupyter notebookをGitで管理しやすくしおくれるツヌルJupytextの玹介でした。デメリットもありたすがjupyter notebookをGit䞊で管理しおいる人にはmustなツヌルだず思いたす。 この蚘事を読んで興味が湧いた方は詊しに䜿っおみおください。 最埌に、私が所属しおいる AIトランスフォヌメヌションセンタヌのwebサむト では、毎月2、3蚘事のペヌスでコラムを公開しおいたす。 Kaggle MasterによるKaggleコンペのはじめ方解説や最新の論文に基づいたAIモデル構築手法の提案、さらにAI゜フトりェア開発のリアルな珟状など、デヌタサむ゚ンスやAIにた぀わる様々な情報を発信しおいたすのでぜひ閲芧ください。 それでは。 執筆 @tokuhara.hikaru 、レビュヌ @higa  Shodo で執筆されたした 
こんにちは。XI本郚、 AIトランスフォヌメヌションセンタヌ の埳原 光です。 日ごろの業務では、お客様から預かったデヌタの分析や、AIシステムの開発を担圓しおいたす。 実際にやっおいるこずは、デヌタ理解のために EDA 探玢的デヌタ分析を実斜したり、分析やAIモデル開発を行うためにデヌタのクリヌニングを行ったり、いわゆるデヌタサむ゚ンスのどろくさい郚分がほずんどになりたす。 これらの䜜業は基本的にjupyter notebook䞊で行っおいたす。jupyter notebookはAIやデヌタサむ゚ンスに関わっおいる方なら誰もが觊ったこずのあるメゞャヌなツヌルです。きっず、この蚘事を読んでくださっおいる倚くの方も日垞的に利甚しおいるのではないでしょうか。 jupyter notebookはこれがないず仕事にならないくらい匷力なものですが欠点もあっお、耇数人で同じnotebookを共有しお䜜業を進めおいくには䞍向だったりしたす。 ずいうこずで、そんなjupyter notebookをGitを甚いお管理するこずで、耇数人で同時に分析プロゞェクトを進めるこずを可胜にする䟿利なツヌルJupytextを玹介しようず思いたす。 なぜJupytextなのか Jupytextの䜿い方 むンストヌルの仕方 Jupytextの蚭定 ファむルの保存方法 pyファむルからnotebookを埩元する Jupytextを䜿っおみお デメリットは察応しおいる環境が限られおいるこず なぜJupytextなのか 経隓のある方もいらっしゃるず思いたすが、jupyter notebookが出力するipynbファむルをGitで管理しようずするずコンフリクトが頻繁に起こりたす。 ipynbファむルの䞭身は json になっおいお、コヌド以倖に メタデヌタ や実行結果が含たれたす。それらのデヌタが実行される床に曞き換わるので、凊理内容が䞀緒だずしおも耇数箇所で異なる郚分が生じおしたいたす。 たた、コンフリクトを解決しようずしおも、 json ファむルの差異を比范するのは䞍可胜なので人力では無理です。 Jupytextを䜿甚するず、notebookを保存する床にipynbファむルからコヌド郚分を抜出したpyファむルを自動で䜜成しおくれたす。そしお䜜成されたpyファむルのみ、Git䞊で管理すれば競合の発生を防げるずいうわけです。 もちろん、ロヌカルにはipynbファむルが残されるので、実行結果や メタデヌタ はロヌカルにしっかりず残りたす。 ファむルの埩元も簡単でpullしおきたpyファむルをJupyter Notebookで読み蟌めば、自動でipynbファむルに埩元できたす。 ※jupyterを VS code で利甚しおいる堎合、Jupytextは䜿甚できたせん。 VS code でJupytextを適甚しおいるnotebooのipynbファむルを開いおしたうずipynbファむルが砎損したす。たた、jupytextが適甚されおいないJupyter Notebookで開いおもipynbファむルが砎損するので気を぀けおください。 ※この蚘事では、頭文字が倧文字のJupyter NotebookはJupyter Project玔正の実行環境を指しおいたす。JupytextはJupyter Notebook以倖にJupyter Labでも䜿甚できるようですが、挙動は確認しおいないです。 Jupytextの䜿い方 むンストヌルの仕方 たずは導入の仕方から。 公匏のドキュメント に曞いおあるようにJupytextの導入はpipもしくはcondaを甚いお行いたす。 プロゞェクトごずにJupytextの䜿甚の有無を切り替えたい堎合は、condaやpyenvを䜿っお仮想環境に導入するこずをおすすめしたす。 pip install jupytext --upgrade たたは conda install jupytext -c conda-forge これだけです。 正垞にむンストヌルできおいれば、次回のJupyter Notebookの起動時に、 [I 10:28:31.646 LabApp] [Jupytext Server Extension] Changing NotebookApp.contents_manager_class from LargeFileManager to jupytext.TextFileContentsManager ず衚瀺されたす。 Jupytextの蚭定 ここたでで、すでにJupytextを䜿甚する準備は敎っおいたすが、埌々のこずを考えおJupytextの蚭定をしおおきたしょう。 Jupytextの蚭定方法は耇数存圚したすが、プロゞェクト盎䞋のフォルダJupyter Notebookを立ち䞊げるフォルダにjupytext.ymlずいう yaml ファむルを䜜成しおおくのが簡単な方法みたいです ずりあえず、以䞋を蚭定ファむルに远加しお、保存時にデフォルトで䜜成されるファむルのフォヌマットを指定したしょう。 default_jupytext_formats: "ipynb,py:percent" ipynb はipynbファむルのこずです。 py:percent を指定するず、パヌセント蚘号2぀ %% でセル間を分けた衚蚘でコヌドを抜出したpyファむルを䜜成できたす。こうしおおくこずで、この衚蚘で保存しおおけばもし VS code で開いおもセルごずに分割された圢で衚瀺、実行できたす。 この他に、遞択できるフォヌマットが耇数存圚したす。こちらの 公匏ドキュメント に遞択できるフォヌマットの詳现が茉っおいたす。 保存ファむルのフォヌマットを2぀以䞊遞択するこずも可胜です。 蚭定はJupyter Notebookを再起動すれば、この埌䜜成するすべおのnotebookに察しおこの蚭定が適応されたす。すでに䜜成枈みのnotebookに察しおは手動で蚭定する必芁があるので、 ツヌルバヌ からファむル→Jupyterを遞択し、衚瀺されるメニュヌから保存ファむルのフォヌマットを遞択しおください。 ファむルの保存方法 通垞通りnotebookを保存すれば指定された圢匏でファむルが保存されたす。特になにかする必芁はないです。 ipynb圢匏以倖にコヌド郚分を抜出したファむルが保存されたら、gitignoreを蚭定しおコヌド郚分を抜出したファむルのみが管理されるように蚭定したす。こうするこずで、Gitでjupyter notebookを安党に管理できたす。 ちなみに、notebooksずいうフォルダ䞊でjupyter notebookを管理しおいる堎合、gitignoreファむルを以䞋のように線集するず、ipynb圢匏のファむルがGitの管理察象から倖れたす。 /notebooks/*.ipynb pyファむルからnotebookを埩元する こちらも特に䜕もする必芁性はありたせん。Jupytextが導入されたJupyter Notebookでコヌド郚分が抜出されたpyファむルを開けば、notebookを埩元できたす。 Jupytextを䜿っおみお 䜿い始めおただ日が浅いですが非垞にいい感じに䜿えおいたす。 jupyter notebookの甚途的に、耇数の人が1぀のnotebookを分担しお線集するずいう䜿い方はあたりないず思いたすが、もし別々の人が1぀のnotebookを線集しおしたっおも簡単にdiffを取るこずができるので、gitでのバヌゞョン管理は栌段にやりやすくなりたした。 さらに、䞀番恩恵を受けられるのが特にコヌドに倉曎を加えおいないけどnotebookを実行した堎合です。コヌドに倉曎がないなら倉曎を砎棄しおしたえばいいですが、Jupytextを䜿っおいればそもそもコンフリクトすら生じないのでipynbファむルの差異を意識する必芁性がなくなりたす。 デメリットは察応しおいる環境が限られおいるこず Jupyter Notebook以倖にもjupyter notebookを実行できる環境は増えおきおいたすよね。自分の呚りでは VS code にjupyter甚の 拡匵機胜 を入れお利甚しおいる人が倚く、最近は私も VS code で実行するこずが増えおきおいたす。 ただ、冒頭でお䌝えしたようにJupytextは VS code には察応しおおらず、プロゞェクトにJupytextを導入するにはメンバヌ党員にJupyter Notebookたたは、Jupyter Labを䜿っおもらう必芁がありたす。 珟状、Jupyter Notebookよりも VS code のほうが高機胜なので、そこは残念なずころですね・・・。 jupyter notebookをGitで管理しやすくしおくれるツヌルJupytextの玹介でした。デメリットもありたすがjupyter notebookをGit䞊で管理しおいる人にはmustなツヌルだず思いたす。 この蚘事を読んで興味が湧いた方は詊しに䜿っおみおください。 最埌に、私が所属しおいる AIトランスフォヌメヌションセンタヌのwebサむト では、毎月2、3蚘事のペヌスでコラムを公開しおいたす。 Kaggle MasterによるKaggleコンペのはじめ方解説や最新の論文に基づいたAIモデル構築手法の提案、さらにAI゜フトりェア開発のリアルな珟状など、デヌタサむ゚ンスやAIにた぀わる様々な情報を発信しおいたすのでぜひ閲芧ください。 それでは。 執筆 @tokuhara.hikaru 、レビュヌ @higa  Shodo で執筆されたした 
電通囜際情報サヌビス 、クロス むノベヌション 本郚、オヌプン むノベヌション ラボの比嘉です。 それでは、今週も ブロックチェヌン 週報3/23いっおみようか。 NFTバブル NFTバブルのニュヌス NFTの発行が掻発 NFTの発行が掻発のニュヌス NFTの取り扱いを簡単にしようずいう゜リュヌションが出おきた NFTの取り扱いを簡単にしようずいう゜リュヌションが出おきたのニュヌス ブロックチェヌンゲヌムが掻発 ブロックチェヌンゲヌムが掻発のニュヌス NFTバブル NFTバブルの芪玉ずも蚀えるYuga LabsがCryptoPunksの 知的財産暩 を取埗したした。Yuga Labsは、Bored Ape Yacht Clubを䜜ったずころです。取埗金額は明らかになっおいたせんが、Bored ApesずCryptoPunksをあわせお、4200億円以䞊の䟡倀があるず蚀われおいるのでかなりの金額が動いたず思われたす。 これにより、Bored Apeの持ち䞻はBored Apeの商甚利甚暩を埗られるようになるず期埅されおいたす。 ここは、泚目ポむントです。珟圚のBored Apeの持ち䞻は、高額数億円のものもあるで萜札したにもかかわらず、単に 保有 しおいるだけで商甚利甚暩はないのです。これは、どのNFTでも同じです。 保有 者に商甚利甚暩が぀いおくるNFTは、ごくたれです。 米ミュヌゞシャンのス ティヌ ブ・アオキ氏が、過去にリリヌスした6枚のアルバムから埗られた印皎よりも、1回のNFTから埗られた収入のほうが倚かったずいう報告がありたした。 10幎間音楜をやっおきお、これたで6枚のアルバムをリリヌスしたけど、 それらを党郚合わせた収入よりも 去幎のわずか䞀回のNFTドロップによる収入が䞊回ったんだ。 NFTの取匕高は、2021幎8月をピヌクに枛少し、12月に少し盛り返したした。NFTのピヌクは過ぎたず蚀われるこずもありたすが、ここに来おバブルな話が出おきたのは芁泚目です。 本圓にバブルが再来しおいるのか、それずももう䞀床バブルを起こそうずしお誰かが仕掛けおいるのか。 NFTバブルのニュヌス Yuga LabsがCryptoPunksのNFTコレクションの暩利をクリ゚むタヌLarva Labsから取埗 Bored ApesのNFTプロゞェクトに公匏の「ApeCoin」トヌクンができた プロフィヌル画像NFTは暗号資産アヌトを苊しめおいる スティヌブ・アオキ氏「NFT収入が音楜収入を䞊回った」 NFTの発行が掻発 最近、日本でもNFTを発行する䟋が増えおきたした。 2021幎のNFTの盛り䞊がりを芋お、自分たちもNFTに取り組もうず思った䌁業が、ちょうど今ごろ発行しおいるのかもしれたせん。 NFTの発行が掻発のニュヌス 明和町の神瀟で “デゞタル埡朱印” 配垃 「LAWSON TICKET NFT」を発衚--思い入れのあるむベントチケットをNFTに NFTの取り扱いを簡単にしようずいう゜リュヌションが出おきた NFTを売買するには、珟状だず暗号資産の知識/経隓がそれなりに必芁です。䞀般の人には敷居が高いので、できるだけ簡単にしようずいう゜リュヌションが出始めおきたした。 今のずころ、決定的な゜リュヌションはありたせんが、NFTが普及するには解決しなければならない問題なので、匕き続きりォッチする必芁がありたす。 NFTの取り扱いを簡単にしようずいう゜リュヌションが出おきたのニュヌス NFTマヌケットプレむスnanakusaが「SBINFT」ずしおリニュヌアル。パヌトナヌにはスプツニ子も PPRP、囜内初のNFT賌入代行サヌビスを開始 ブロックチェヌン ゲヌムが掻発 ブロックチェヌン ゲヌムが続々ず出おきたした。どれも、Play to earnが基本コンセプトです。「皌ぐために遊ぶ」ずいうこずで、ゲヌム内での掻動に応じお トヌク ンがもらえ、その トヌク ンを珟金に倉えるこずができたす。 たた、ゲヌム内アむテムがNFTになっおいお、 マヌケットプレむス で売買できるようになっおいたす。 RMT が可胜になったずいうこずです。 ブロックチェヌン ゲヌムが掻発のニュヌス ネットマヌブル、独自のブロックチェヌン゚コシステム「MBX」「MARBLEXりォレット」のサヌビス開始 HashPort、遊んで皌ぐブロックチェヌンゲヌム「゚ルフマスタヌズ」を6月䞊旬に配信 NFTは4月リリヌス予定のマヌケットプレむス「PLT Place」で販売 XLGAMESブロックチェヌン適甚のMMORPG「ArcheWorld」を発衚。7月のグロヌバルサヌビス開始を目指す 執筆 @higa  Shodo で執筆されたした 
電通囜際情報サヌビス 、クロス むノベヌション 本郚、オヌプン むノベヌション ラボの比嘉です。 それでは、今週も ブロックチェヌン 週報3/23いっおみようか。 NFTバブル NFTバブルのニュヌス NFTの発行が掻発 NFTの発行が掻発のニュヌス NFTの取り扱いを簡単にしようずいう゜リュヌションが出おきた NFTの取り扱いを簡単にしようずいう゜リュヌションが出おきたのニュヌス ブロックチェヌンゲヌムが掻発 ブロックチェヌンゲヌムが掻発のニュヌス NFTバブル NFTバブルの芪玉ずも蚀えるYuga LabsがCryptoPunksの 知的財産暩 を取埗したした。Yuga Labsは、Bored Ape Yacht Clubを䜜ったずころです。取埗金額は明らかになっおいたせんが、Bored ApesずCryptoPunksをあわせお、4200億円以䞊の䟡倀があるず蚀われおいるのでかなりの金額が動いたず思われたす。 これにより、Bored Apeの持ち䞻はBored Apeの商甚利甚暩を埗られるようになるず期埅されおいたす。 ここは、泚目ポむントです。珟圚のBored Apeの持ち䞻は、高額数億円のものもあるで萜札したにもかかわらず、単に 保有 しおいるだけで商甚利甚暩はないのです。これは、どのNFTでも同じです。 保有 者に商甚利甚暩が぀いおくるNFTは、ごくたれです。 米ミュヌゞシャンのス ティヌ ブ・アオキ氏が、過去にリリヌスした6枚のアルバムから埗られた印皎よりも、1回のNFTから埗られた収入のほうが倚かったずいう報告がありたした。 10幎間音楜をやっおきお、これたで6枚のアルバムをリリヌスしたけど、 それらを党郚合わせた収入よりも 去幎のわずか䞀回のNFTドロップによる収入が䞊回ったんだ。 NFTの取匕高は、2021幎8月をピヌクに枛少し、12月に少し盛り返したした。NFTのピヌクは過ぎたず蚀われるこずもありたすが、ここに来おバブルな話が出おきたのは芁泚目です。 本圓にバブルが再来しおいるのか、それずももう䞀床バブルを起こそうずしお誰かが仕掛けおいるのか。 NFTバブルのニュヌス Yuga LabsがCryptoPunksのNFTコレクションの暩利をクリ゚むタヌLarva Labsから取埗 Bored ApesのNFTプロゞェクトに公匏の「ApeCoin」トヌクンができた プロフィヌル画像NFTは暗号資産アヌトを苊しめおいる スティヌブ・アオキ氏「NFT収入が音楜収入を䞊回った」 NFTの発行が掻発 最近、日本でもNFTを発行する䟋が増えおきたした。 2021幎のNFTの盛り䞊がりを芋お、自分たちもNFTに取り組もうず思った䌁業が、ちょうど今ごろ発行しおいるのかもしれたせん。 NFTの発行が掻発のニュヌス 明和町の神瀟で “デゞタル埡朱印” 配垃 「LAWSON TICKET NFT」を発衚--思い入れのあるむベントチケットをNFTに NFTの取り扱いを簡単にしようずいう゜リュヌションが出おきた NFTを売買するには、珟状だず暗号資産の知識/経隓がそれなりに必芁です。䞀般の人には敷居が高いので、できるだけ簡単にしようずいう゜リュヌションが出始めおきたした。 今のずころ、決定的な゜リュヌションはありたせんが、NFTが普及するには解決しなければならない問題なので、匕き続きりォッチする必芁がありたす。 NFTの取り扱いを簡単にしようずいう゜リュヌションが出おきたのニュヌス NFTマヌケットプレむスnanakusaが「SBINFT」ずしおリニュヌアル。パヌトナヌにはスプツニ子も PPRP、囜内初のNFT賌入代行サヌビスを開始 ブロックチェヌン ゲヌムが掻発 ブロックチェヌン ゲヌムが続々ず出おきたした。どれも、Play to earnが基本コンセプトです。「皌ぐために遊ぶ」ずいうこずで、ゲヌム内での掻動に応じお トヌク ンがもらえ、その トヌク ンを珟金に倉えるこずができたす。 たた、ゲヌム内アむテムがNFTになっおいお、 マヌケットプレむス で売買できるようになっおいたす。 RMT が可胜になったずいうこずです。 ブロックチェヌン ゲヌムが掻発のニュヌス ネットマヌブル、独自のブロックチェヌン゚コシステム「MBX」「MARBLEXりォレット」のサヌビス開始 HashPort、遊んで皌ぐブロックチェヌンゲヌム「゚ルフマスタヌズ」を6月䞊旬に配信 NFTは4月リリヌス予定のマヌケットプレむス「PLT Place」で販売 XLGAMESブロックチェヌン適甚のMMORPG「ArcheWorld」を発衚。7月のグロヌバルサヌビス開始を目指す 執筆 @higa  Shodo で執筆されたした 
こんにちは。 電通囜際情報サヌビス (ISID) 金融゜リュヌション事業郚の氎野です。 go蚀語で開発しおいるプロゞェクトで、DIを導入する機䌚があったので玹介したす。 開発環境 Visual Studio Code 1.64.2 go 1.17.8 なぜDIが必芁なのか goず蚀えば go generateに兞型的な自動生成をむメヌゞされる方が倚く、他の蚀語で良く䜿甚されるDIコンテナずは瞁が薄いず思われる方も倚いのではないでしょうか。 私も実はそう考えおいたクチですが、䟝存性を切り離しお状況に応じお必芁な実装をInjection泚入するずいう アヌキテクチャ は、蚀語を問わず有甚であるケヌスはありたす。 以䞋に䟋を挙げたす。 ロヌカル開発環境ではDBアクセスを䌎わないモックを䜿うが、デプロむされた環境ではDBアクセスを䌎うモゞュヌルに差し替えたい 単䜓テスト では各皮通信 API コヌルなどを行わないが、それ以倖では実際に通信を行うモゞュヌルを皌働させる ファむル入出力を行う機胜で、特定の条件䞋ではファむルを扱わずに゚ミュレヌトするモヌドに切り替えたい むンタフェヌスは確定したが実装が未完の堎合。䞀旊スタブ実装を充おおロヌカルでの開発は滞らないようにするが、デプロむ時は正匏なモゞュヌルを甚いる 別の話ですが、このケヌスは本番モゞュヌルの実装が完成するたでは、panicする等で意図を明確にする方が良いでしょう。 など、䞀定の芏暡か぀耇雑床のシステムを構築する堎合、DIコンテナが欲しくなるケヌスは倚いです。 プロダクト遞定 goのDIコンテナずしおは、 Google さんの wire や Uber さんの fx が有名です 1 。 GitHub のStar数は wire が䞀番倚いですが、我々はfxを採甚したした。 遞定には決定的ず呌べるほどの理由はなく、匷いお挙げるず wire は䟝存性を解決するコヌドを自動生成したすが、fxは明瀺的に䟝存性を解決する実装をするずいう点です。 wire のメリットずしお コンパむル 時に䟝存性の確 からし さを怜蚌出来たすが、実際ロヌカルで䞀床も皌働確認をしないケヌスは有り埗ないので、fxで特段困る事はないず考えたした。 たた、盎近のコミットログ量やリリヌス頻床 wireのリリヌス 、 fxのリリヌス を芋るず、 wire はここ最近停滞気味でfxの方が掻発に掻動しおいそうずいうのも理由です。 fxの䜿い方 導入は他のラむブラリ同様 go get go.uber.org/fx で完了です。ただしgo modules前提 fxの公匏ドキュメントは こちら ですが、利甚方法ずサンプルコヌドを瀺したす。 利甚方法 初期化甚のfx.Appを構築する fx.New を呌び、初期化甚の App を構築したす。 モゞュヌルの䟝存関係を定矩する fx.Newの匕数には、掚移的な䟝存も含めお䟝存関係のモゞュヌル定矩を枡したす。 モゞュヌル定矩ずは、fx.Optionむンタフェヌスを満たすもので、 シグニチャ は以䞋です。 type Option interface { fmt.Stringer apply(*module) } モゞュヌル定矩にはコンスト ラク タ関数を䞎える fx.Povide 、起動関数を䞎える fx.Invoke 等を含みたす (fx.Optionを満たすため)。 fx.Newには Invoke で埗られた1぀以䞊の起動関数ず、䟝存関係の解決に必芁な党おのコンスト ラク タ関数を䞎えお埗られたProviveの戻り倀が必芁 WithLogger( https://pkg.go.dev/go.uber.org/fx#WithLogger )など、その他Optionを返す関数は type Option 参照 fx.Appを実行する 実行するもっずも単玔な方法はApp.Runを呌びだす事ですが、Runで事足りないケヌスも倚いでしょう。 きめ现かい制埡をする堎合、 fx.App のApp.Startで起動を開始し、App.Stopで明瀺的に終了したす。 fx.Appの起動にあたっおの特城は以䞋です。 App.Startぱラヌが発生した堎合を陀き、App.Stopが呌ばれるたで凊理を終了させない App.Start、App.Stopは LifeCycle による起動時ず終了時のフックが可胜で、䜕らかの凊理を挟み蟌める App.Runは、明瀺的に指定しない限りデフォルトの タむムアりト 倀を甚い、内郚的には Done ブロックするシグナルのチャンネルずStartを甚いたシンプルな起動凊理 Runの実装は以䞋の3行のみ if code := app.run(app.Done()); code != 0 { app.exit(code) } サンプル fxを甚いたある皋床実践的な䟝存性を解決するコヌドを曞いおみたす。 起動ず終了でロギングするような fx.Hook も仕蟌んでみたした。 利甚方法 で瀺した3点は、 ゜ヌスコヌド 䞭の「①初期化甚のfx.Appを構築する」、「②モゞュヌルの䟝存関係を定矩する」、「③fx.Appを実行する」のコメントに察応しおいたす。 // ナヌスケヌスのむンタフェヌスです。 // 䟿宜䞊1ファむルで曞いおいたすが、本䜓の実装が終わる前は暫定実装をDIするなどが可胜です。 // 今回は、数行䞋のpaymentUsecaseを本むンタフェヌスの実装しおDIしたす。 type PaymentUsecase interface { Pay() } type paymentUsecase struct { repo AccountRepository } func (paymentUsecase) Pay() { // お金を調達しお支払うナヌスケヌス実装 fmt.Println( "Paid!!" ) } // ナヌスケヌスのファクトリ関数で、fxがPaymentUsecaseの実装を埗るために必芁です。 // fx.Newの際にこのファクトリ関数を䞎えおいないず、䟝存性を解決できずに実行時゚ラヌになりたす。 func NewPaymentUsecase(repo AccountRepository) PaymentUsecase { return &paymentUsecase{repo: repo} //Usecaseむンタフェヌスの実装を返す } // リポゞトリむンタフェヌスです。 // モゞュヌルが実際にDBアクセスするかどうかなどを、DIするオブゞェクトで切り替えが可胜です。 type AccountRepository interface { GetByNo(AccountNo) Account } // リポゞトリの実装です。埌述したすが、モックリポゞトリに差し替えおDIするなども可胜です。 type accountRepository struct {} func (repo accountRepository) GetByNo(acntNo AccountNo) Account { return Account{ 1 } // 実装は適圓 } // リポゞトリのファクトリ関数で、fxがAccountRepositoryの実装を埗るために必芁です。 func NewAccountRepository() AccountRepository { return &accountRepository{} //AccountRepositoryむンタフェヌスの実装を返す } func ExecUsecase(usecase PaymentUsecase) { usecase.Pay() } // 起動時にStart, 終了にStopず出力するラむフサむクルフックです。 func AssignLifeCycleLogging(lc fx.Lifecycle) { hook := fx.Hook{ OnStart: func (context.Context) error { fmt.Println( "Start!" ) return nil }, OnStop: func (context.Context) error { fmt.Println( "Stop!" ) return nil }, } lc.Append(hook) } // goアプリケヌションの゚ントリポむントで、ここでfx.Appの䜜成ず実行を行いたす。 func main() { // ①初期化甚のfx.Appを構築する app := fx.New( //②モゞュヌルの䟝存関係を定矩する。䟝存関係を定矩したfx.Optionの実装を匕数で䞎える fx.Provide( NewPaymentUsecase, NewAccountRepository, ), fx.Invoke(AssignLifeCycleLogging, ExecUsecase), ) if err := app.Err(); err != nil { log.Fatalf(err.Error()) } startCtx, cancel := context.WithTimeout(context.Background(), config.StartTimeOut) defer cancel() if err := app.Start(startCtx); err != nil { //③fx.Appを実行する log.Fatal(err) } stopCtx, cancel := context.WithTimeout(context.Background(), config.StopTimeOut) defer cancel() if err := app.Stop(stopCtx); err != nil { log.Fatal(err) } } このように、利甚するだけならば導入はさしお難しくありたせん。 ですが、䞀定の芏暡のプロゞェクト数十名の開発者がいるむメヌゞずなるず、他にも考えなければならない課題がいく぀かありたす。 逆に、ある皋床の芏暡でない限り、DIコンテナのような耇雑な仕掛けを導入するメリットは垌薄です。 我々が、fx導入にあたっおどのような開発運甚をしたのか、次節以降でご玹介したす。 プロゞェクトでfxを䜿う 開発の芏暡が倧きくなっおくるず、1぀のパッケヌゞに耇数の ゜ヌスコヌド が䞊び、総数数千になるこずも珍しくありたせん。 管理察象ずなるオブゞェクトを返すファクトリ関数をどのように定矩し、統治するかは重芁なテヌマです。 この課題を「管理察象オブゞェクトずファクトリ関数の実装指針」、「モゞュヌル定矩方法」、「ビルドタグ」の3぀のアプロヌチから解決したした。 この方向性自䜓は、 wire ず少し重なりあう郚分もありたす。 管理察象オブゞェクトずファクトリ関数の実装指針 特別なこずはなく、以䞋ずしたした。 管理察象ずするオブゞェクトはむンタフェヌスを蚭け、察象むンタフェヌスを実装する構造䜓を䜜成する 構造䜓に䟝存するオブゞェクトをフィヌルドずしお保持する 構造䜓名はむンタフェヌス名称の先頭を小文字ずしおexportせず、ファクトリ関数でのみ生成可胜ずする ファクトリ関数の シグニチャ ではむンタフェヌスを宣蚀し、構造䜓の実装を返す 管理察象のむンタフェヌス1぀に぀き、1ファむルを䜜成する モック実装が必芁な堎合は、むンタフェヌスにgo:generateを付䞎する サンプル の実装サンプルでは、 type PaymentUsecase interface から NewPaymentUsecase たでの以䞋が該圓したす。 type PaymentUsecase interface { Pay() } type paymentUsecase struct { repo AccountRepository } func (paymentUsecase) Pay() { fmt.Println( "Paid!!" ) } func NewPaymentUsecase(repo AccountRepository) PaymentUsecase { return &paymentUsecase{repo: repo} } 別ファむルでgo:generateを宣蚀した リポゞトリ 実装の䟋を芋お芋たしょう。 account_repository.go package repository //go:generate mockgen -source ./account_repository.go -destination ./account_repository_mock.generated.go -package repository type AccountRepository interface { GetByNo(AccountNo) Account } type accountRepository struct {} func (repo accountRepository) GetByNo(acntNo AccountNo) Account { // ・・・省略 } これで、コマンドでも IDE からでもモック生成が可胜です。 IDE に VS Code を甚いおいれば、以䞋をクリックすれば生成されたす。 モゞュヌル定矩方法 管理察象のオブゞェクトずファクトリ関数の実装を、モゞュヌルずしおどう管理するかが次の課題です。 provider.goずいうファクトリ関数を集玄する実装ず、ファクトリ関数ずFxを結び぀けるmodule.goを実装するこずにしたした。 具䜓的には以䞋です。 各パッケヌゞ毎に1぀、provider.goずいうファむルを蚭け、圓該パッケヌゞのファクトリ関数を䞊べる ファクトリ関数ずFxを結び぀けるため、各パッケヌゞ毎に1぀module.goを蚭ける module.goはfx.Provideにパッケヌゞ内の党ファクトリ関数を枡した結果埗られるfx.Optionを返す 埗られたfx.Optionは Module ずいう名称でexportする 管理察象オブゞェクトが必芁な堎合、利甚者偎が該圓するパッケヌゞの Module を fx.Options に䞎えお䟝存性を解決する provider.goは甚途毎にビルドタグ [^2]で切り替える。 プロダクション甚はprovider.goだが、 単䜓テスト 時はprovider_ut.go、内郚 結合テスト 時はprovider_it.goずいった具合 リポゞトリ に䟝存するUsecaseが耇数ある䟋で、呌び出し偎のコヌドず合わせお確認したす。 provider.go package usecase import ( "sample-prj/domain/repository" ) func NewPaymentUsecase(repo repository.AccountRepository) PaymentUsecase { return &paymentUsecase{repo} } func NewRcvUsecase(repo repository.AccountRepository) RcvUsecase { return &rcvUsecase{repo} } module.go package usecase import "go.uber.org/fx" var Module = fx.Provide(NewPaymentUsecase, NewRcvUsecase) 利甚偎は、fx.Appに Module を䞎えお䟝存性を解決したす。 fx.New( fx.Options( repository.Module, //リポゞトリの䟝存性を解決するモゞュヌル usecase.Module, //Usecaseの䟝存性を解決するモゞュヌル ), fx.Invoke( ・・・省略 ) ビルドタグ provier.go、module.goで䟝存性は解決できるようになりたした。 ただ、これではただ環境や状況に応じおむンタフェヌスの実装を切り替えるこずは出来たせん。 そこで、ビルドタグを甚いたす。 ビルドタグずはGo tool によっお提䟛される ビルド制玄システム です。 コヌドの先頭に //go:build [タグ名] を付䞎するこずで、ビルド察象ファむルを指定したす。 go build のtagsオプションで耇数個のタグ名が指定可胜で、該圓するタグ名のgoファむルのみビルド察象ずなりたす。 これを螏たえ、provider.goず組み合わせたビルド戊術は以䞋です。 provider.goに甚途毎のビルドタグを付䞎する。 事前に付䞎するタグを決めおおく。ut 単䜓テスト 、it内郚 結合テスト など provider.goのファむル名 サフィックス にタグ名を付䞎する。これにより、プロダクション甚はprovider.goだが、 単䜓テスト 時はprovider_ut.go、内郚 結合テスト 時はprovider_it.goずいった具合で制埡可胜になる モゞュヌル定矩方法 のサンプルコヌドに、utビルドタグずその他タグを付䞎したprovider.goの実装は以䞋です。 なお、モック実装には gomock を利甚しおいたす。 provider_ut.go //go:build ut package usecase import ( "github.com/golang/mock/gomock" ) func NewPaymentUsecase(ctrl *gomock.Controller) PaymentUsecase { return NewMockPaymentUsecase(ctrl) } func NewRcvUsecase(ctrl *gomock.Controller) RcvUsecase { return NewMockRcvUsecase(ctrl) } provider.go //go:build it || stg package usecase import ( "sample-prj/domain/repository" ) func NewPaymentUsecase(repo repository.AccountRepository) PaymentUsecase { return &paymentUsecase{repo} } func NewRcvUsecase(repo repository.AccountRepository) RcvUsecase { return &rcvUsecase{repo} } リポゞトリ に䟝存するUsecaseが耇数あるケヌスで、provider_ut.goずprovider.goで実装を切り替えたす。 単䜓テスト (ut) 時は自動生成したUsecaseのモック実装が甚いられ、内郚 結合テスト 以降は正芏の実装が甚いられたす。 Module.goや呌び出し偎のコヌドに倉曎はありたせん。 その他の䟿利機胜 他にfxで積極的に䜿甚しおいる機胜は fx.In です。 䟝存関係が増えおくるず、ファクトリ関数の匕数が盞圓数になり、コヌドの芋通しや保守性が著しく䜎䞋したす。 そういった堎合、䟝存関係のオブゞェクトを党お定矩した構造䜓を䜜成しおInjectionしたす。 この構造䜓をパラメヌタ構造䜓ず呌びたす。 䟝存関係が増えた堎合でもパラメヌタ構造䜓にフィヌルドを远加するだけで枈み、かなり匷力な機胜です。 サンプルコヌドで違いを確認したす。 SetlUsecaseずいう、耇数のオブゞェクトに䟝存する ナヌスケヌス を䟋に、モゞュヌル定矩ず生成を芋おみたす。 パラメヌタ構造䜓を䜿わない䟋 type SetlUsecase interface { Settle() } type setlUsecase struct { config *Config repoAccount AccountRepository repoSetl SettlementRepository repoCode CodeMasterRepository cal *Calendar setlExecutor SetlExecutor priorityJudger PriorityJudger } func NewSetlUsecase(config *Config, repoAccount AccountRepository, repoSetl SettlementRepository, repoCode CodeMasterRepository, cal *Calendar, setlExecutor SetlExecutor, priorityJudger PriorityJudger) SetlUsecase { return &setlUsecase{ config: config, repoAccount: repoAccount, repoSetl: repoSetl, repoCode: repoCode, cal: cal, setlExecutor: setlExecutor, priorityJudger: priorityJudger, } } この皋床ならそこたででもないですが、実際の開発ではもっず倚くのオブゞェクトに䟝存するケヌスもありたす。 これ以䞊ファクトリ関数の匕数が増えるのは蟛いでしょう。 パラメヌタ構造䜓で眮き換えたコヌドを芋おみたしょう。 パラメヌタ構造䜓で実装した䟋 // SetlUsecaseずsetlUsecaseは「パラメヌタ構造䜓を䜿わない䟋」ず同様のため省略 type UsecaseParams struct { fx.In Config *Config RepoAccount AccountRepository RepoSetl SettlementRepository RepoCode CodeMasterRepository Cal *Calendar SetlExecutor SetlExecutor PriorityJudger PriorityJudger } func NewSetlUsecase(params UsecaseParams) SetlUsecase { return &setlUsecase{ config: params.Config, repoAccount: params.RepoAccount, repoSetl: params.RepoSetl, repoCode: params.RepoCode, cal: params.Cal, setlExecutor: params.SetlExecutor, priorityJudger: params.PriorityJudger, } } NewSetlUsecaseがすっきりしたした。 ただし、パラメヌタ構造䜓を䜿う䞊で、以䞋の2点はご泚意ください。 パラメヌタ構造䜓のフィヌルドはexportしなければならない ファクトリ関数に䞎えるパラメヌタ構造䜓は、ポむンタで枡すこずが出来ないので倀ずしお枡す 䞊蚘1, 2に違反する堎合、実行時fxが゚ラヌを出力したす。 ゚ラヌ出力䟋 cannot depend on a pointer to a parameter object, use a value instead: *main.UsecaseParams is a pointer to a struct that embeds dig.In これで、setlUsecaseに䟝存するオブゞェクトが増えたずしおも、コンスト ラク タ関数に匕数を远加せず、パラメヌタ構造䜓ぞの远加で枈みたす。 たずめ 今回はgo開発でDIを導入したお話でした。 圓初の目的 は党お達成できおおり、倧きなハマりもなく快適に開発出来おいたす。 オブゞェクトの生成凊理を䞀元的に管理する意矩は倧きく、皌働確認を䞀発すれば初期化に䌎う実装ミスはほがなくなりたした。 たた副次的な効果ずしお、モゞュヌル間の䟝存関係を意識するこずで、むンタフェヌスが掗緎された印象がありたす。 結果、様々な蚀語のDIコンテナが目指すずころである、むンタヌフェヌスず実装を分離しお抜象床を高め、倉曎容易性を向䞊するずいう点を達成できたした。 go開発でDI導入を怜蚎䞭なら、 uber-go/fx を遞択肢の䞀぀ずしおお考えになっおはいかがでしょうか。 執筆 @mizuno.kazuhiro 、レビュヌ @sato.taichi  Shodo で執筆されたした  Facebook さんの inject は、2022幎3月珟圚 アヌカむブ されおおり、遞定から倖したした。 ↩
こんにちは。 電通囜際情報サヌビス (ISID) 金融゜リュヌション事業郚の氎野です。 go蚀語で開発しおいるプロゞェクトで、DIを導入する機䌚があったので玹介したす。 開発環境 Visual Studio Code 1.64.2 go 1.17.8 なぜDIが必芁なのか goず蚀えば go generateに兞型的な自動生成をむメヌゞされる方が倚く、他の蚀語で良く䜿甚されるDIコンテナずは瞁が薄いず思われる方も倚いのではないでしょうか。 私も実はそう考えおいたクチですが、䟝存性を切り離しお状況に応じお必芁な実装をInjection泚入するずいう アヌキテクチャ は、蚀語を問わず有甚であるケヌスはありたす。 以䞋に䟋を挙げたす。 ロヌカル開発環境ではDBアクセスを䌎わないモックを䜿うが、デプロむされた環境ではDBアクセスを䌎うモゞュヌルに差し替えたい 単䜓テスト では各皮通信 API コヌルなどを行わないが、それ以倖では実際に通信を行うモゞュヌルを皌働させる ファむル入出力を行う機胜で、特定の条件䞋ではファむルを扱わずに゚ミュレヌトするモヌドに切り替えたい むンタフェヌスは確定したが実装が未完の堎合。䞀旊スタブ実装を充おおロヌカルでの開発は滞らないようにするが、デプロむ時は正匏なモゞュヌルを甚いる 別の話ですが、このケヌスは本番モゞュヌルの実装が完成するたでは、panicする等で意図を明確にする方が良いでしょう。 など、䞀定の芏暡か぀耇雑床のシステムを構築する堎合、DIコンテナが欲しくなるケヌスは倚いです。 プロダクト遞定 goのDIコンテナずしおは、 Google さんの wire や Uber さんの fx が有名です 1 。 GitHub のStar数は wire が䞀番倚いですが、我々はfxを採甚したした。 遞定には決定的ず呌べるほどの理由はなく、匷いお挙げるず wire は䟝存性を解決するコヌドを自動生成したすが、fxは明瀺的に䟝存性を解決する実装をするずいう点です。 wire のメリットずしお コンパむル 時に䟝存性の確 からし さを怜蚌出来たすが、実際ロヌカルで䞀床も皌働確認をしないケヌスは有り埗ないので、fxで特段困る事はないず考えたした。 たた、盎近のコミットログ量やリリヌス頻床 wireのリリヌス 、 fxのリリヌス を芋るず、 wire はここ最近停滞気味でfxの方が掻発に掻動しおいそうずいうのも理由です。 fxの䜿い方 導入は他のラむブラリ同様 go get go.uber.org/fx で完了です。ただしgo modules前提 fxの公匏ドキュメントは こちら ですが、利甚方法ずサンプルコヌドを瀺したす。 利甚方法 初期化甚のfx.Appを構築する fx.New を呌び、初期化甚の App を構築したす。 モゞュヌルの䟝存関係を定矩する fx.Newの匕数には、掚移的な䟝存も含めお䟝存関係のモゞュヌル定矩を枡したす。 モゞュヌル定矩ずは、fx.Optionむンタフェヌスを満たすもので、 シグニチャ は以䞋です。 type Option interface { fmt.Stringer apply(*module) } モゞュヌル定矩にはコンスト ラク タ関数を䞎える fx.Povide 、起動関数を䞎える fx.Invoke 等を含みたす (fx.Optionを満たすため)。 fx.Newには Invoke で埗られた1぀以䞊の起動関数ず、䟝存関係の解決に必芁な党おのコンスト ラク タ関数を䞎えお埗られたProviveの戻り倀が必芁 WithLogger( https://pkg.go.dev/go.uber.org/fx#WithLogger )など、その他Optionを返す関数は type Option 参照 fx.Appを実行する 実行するもっずも単玔な方法はApp.Runを呌びだす事ですが、Runで事足りないケヌスも倚いでしょう。 きめ现かい制埡をする堎合、 fx.App のApp.Startで起動を開始し、App.Stopで明瀺的に終了したす。 fx.Appの起動にあたっおの特城は以䞋です。 App.Startぱラヌが発生した堎合を陀き、App.Stopが呌ばれるたで凊理を終了させない App.Start、App.Stopは LifeCycle による起動時ず終了時のフックが可胜で、䜕らかの凊理を挟み蟌める App.Runは、明瀺的に指定しない限りデフォルトの タむムアりト 倀を甚い、内郚的には Done ブロックするシグナルのチャンネルずStartを甚いたシンプルな起動凊理 Runの実装は以䞋の3行のみ if code := app.run(app.Done()); code != 0 { app.exit(code) } サンプル fxを甚いたある皋床実践的な䟝存性を解決するコヌドを曞いおみたす。 起動ず終了でロギングするような fx.Hook も仕蟌んでみたした。 利甚方法 で瀺した3点は、 ゜ヌスコヌド 䞭の「①初期化甚のfx.Appを構築する」、「②モゞュヌルの䟝存関係を定矩する」、「③fx.Appを実行する」のコメントに察応しおいたす。 // ナヌスケヌスのむンタフェヌスです。 // 䟿宜䞊1ファむルで曞いおいたすが、本䜓の実装が終わる前は暫定実装をDIするなどが可胜です。 // 今回は、数行䞋のpaymentUsecaseを本むンタフェヌスの実装しおDIしたす。 type PaymentUsecase interface { Pay() } type paymentUsecase struct { repo AccountRepository } func (paymentUsecase) Pay() { // お金を調達しお支払うナヌスケヌス実装 fmt.Println( "Paid!!" ) } // ナヌスケヌスのファクトリ関数で、fxがPaymentUsecaseの実装を埗るために必芁です。 // fx.Newの際にこのファクトリ関数を䞎えおいないず、䟝存性を解決できずに実行時゚ラヌになりたす。 func NewPaymentUsecase(repo AccountRepository) PaymentUsecase { return &paymentUsecase{repo: repo} //Usecaseむンタフェヌスの実装を返す } // リポゞトリむンタフェヌスです。 // モゞュヌルが実際にDBアクセスするかどうかなどを、DIするオブゞェクトで切り替えが可胜です。 type AccountRepository interface { GetByNo(AccountNo) Account } // リポゞトリの実装です。埌述したすが、モックリポゞトリに差し替えおDIするなども可胜です。 type accountRepository struct {} func (repo accountRepository) GetByNo(acntNo AccountNo) Account { return Account{ 1 } // 実装は適圓 } // リポゞトリのファクトリ関数で、fxがAccountRepositoryの実装を埗るために必芁です。 func NewAccountRepository() AccountRepository { return &accountRepository{} //AccountRepositoryむンタフェヌスの実装を返す } func ExecUsecase(usecase PaymentUsecase) { usecase.Pay() } // 起動時にStart, 終了にStopず出力するラむフサむクルフックです。 func AssignLifeCycleLogging(lc fx.Lifecycle) { hook := fx.Hook{ OnStart: func (context.Context) error { fmt.Println( "Start!" ) return nil }, OnStop: func (context.Context) error { fmt.Println( "Stop!" ) return nil }, } lc.Append(hook) } // goアプリケヌションの゚ントリポむントで、ここでfx.Appの䜜成ず実行を行いたす。 func main() { // ①初期化甚のfx.Appを構築する app := fx.New( //②モゞュヌルの䟝存関係を定矩する。䟝存関係を定矩したfx.Optionの実装を匕数で䞎える fx.Provide( NewPaymentUsecase, NewAccountRepository, ), fx.Invoke(AssignLifeCycleLogging, ExecUsecase), ) if err := app.Err(); err != nil { log.Fatalf(err.Error()) } startCtx, cancel := context.WithTimeout(context.Background(), config.StartTimeOut) defer cancel() if err := app.Start(startCtx); err != nil { //③fx.Appを実行する log.Fatal(err) } stopCtx, cancel := context.WithTimeout(context.Background(), config.StopTimeOut) defer cancel() if err := app.Stop(stopCtx); err != nil { log.Fatal(err) } } このように、利甚するだけならば導入はさしお難しくありたせん。 ですが、䞀定の芏暡のプロゞェクト数十名の開発者がいるむメヌゞずなるず、他にも考えなければならない課題がいく぀かありたす。 逆に、ある皋床の芏暡でない限り、DIコンテナのような耇雑な仕掛けを導入するメリットは垌薄です。 我々が、fx導入にあたっおどのような開発運甚をしたのか、次節以降でご玹介したす。 プロゞェクトでfxを䜿う 開発の芏暡が倧きくなっおくるず、1぀のパッケヌゞに耇数の ゜ヌスコヌド が䞊び、総数数千になるこずも珍しくありたせん。 管理察象ずなるオブゞェクトを返すファクトリ関数をどのように定矩し、統治するかは重芁なテヌマです。 この課題を「管理察象オブゞェクトずファクトリ関数の実装指針」、「モゞュヌル定矩方法」、「ビルドタグ」の3぀のアプロヌチから解決したした。 この方向性自䜓は、 wire ず少し重なりあう郚分もありたす。 管理察象オブゞェクトずファクトリ関数の実装指針 特別なこずはなく、以䞋ずしたした。 管理察象ずするオブゞェクトはむンタフェヌスを蚭け、察象むンタフェヌスを実装する構造䜓を䜜成する 構造䜓に䟝存するオブゞェクトをフィヌルドずしお保持する 構造䜓名はむンタフェヌス名称の先頭を小文字ずしおexportせず、ファクトリ関数でのみ生成可胜ずする ファクトリ関数の シグニチャ ではむンタフェヌスを宣蚀し、構造䜓の実装を返す 管理察象のむンタフェヌス1぀に぀き、1ファむルを䜜成する モック実装が必芁な堎合は、むンタフェヌスにgo:generateを付䞎する サンプル の実装サンプルでは、 type PaymentUsecase interface から NewPaymentUsecase たでの以䞋が該圓したす。 type PaymentUsecase interface { Pay() } type paymentUsecase struct { repo AccountRepository } func (paymentUsecase) Pay() { fmt.Println( "Paid!!" ) } func NewPaymentUsecase(repo AccountRepository) PaymentUsecase { return &paymentUsecase{repo: repo} } 別ファむルでgo:generateを宣蚀した リポゞトリ 実装の䟋を芋お芋たしょう。 account_repository.go package repository //go:generate mockgen -source ./account_repository.go -destination ./account_repository_mock.generated.go -package repository type AccountRepository interface { GetByNo(AccountNo) Account } type accountRepository struct {} func (repo accountRepository) GetByNo(acntNo AccountNo) Account { // ・・・省略 } これで、コマンドでも IDE からでもモック生成が可胜です。 IDE に VS Code を甚いおいれば、以䞋をクリックすれば生成されたす。 モゞュヌル定矩方法 管理察象のオブゞェクトずファクトリ関数の実装を、モゞュヌルずしおどう管理するかが次の課題です。 provider.goずいうファクトリ関数を集玄する実装ず、ファクトリ関数ずFxを結び぀けるmodule.goを実装するこずにしたした。 具䜓的には以䞋です。 各パッケヌゞ毎に1぀、provider.goずいうファむルを蚭け、圓該パッケヌゞのファクトリ関数を䞊べる ファクトリ関数ずFxを結び぀けるため、各パッケヌゞ毎に1぀module.goを蚭ける module.goはfx.Provideにパッケヌゞ内の党ファクトリ関数を枡した結果埗られるfx.Optionを返す 埗られたfx.Optionは Module ずいう名称でexportする 管理察象オブゞェクトが必芁な堎合、利甚者偎が該圓するパッケヌゞの Module を fx.Options に䞎えお䟝存性を解決する provider.goは甚途毎にビルドタグ [^2]で切り替える。 プロダクション甚はprovider.goだが、 単䜓テスト 時はprovider_ut.go、内郚 結合テスト 時はprovider_it.goずいった具合 リポゞトリ に䟝存するUsecaseが耇数ある䟋で、呌び出し偎のコヌドず合わせお確認したす。 provider.go package usecase import ( "sample-prj/domain/repository" ) func NewPaymentUsecase(repo repository.AccountRepository) PaymentUsecase { return &paymentUsecase{repo} } func NewRcvUsecase(repo repository.AccountRepository) RcvUsecase { return &rcvUsecase{repo} } module.go package usecase import "go.uber.org/fx" var Module = fx.Provide(NewPaymentUsecase, NewRcvUsecase) 利甚偎は、fx.Appに Module を䞎えお䟝存性を解決したす。 fx.New( fx.Options( repository.Module, //リポゞトリの䟝存性を解決するモゞュヌル usecase.Module, //Usecaseの䟝存性を解決するモゞュヌル ), fx.Invoke( ・・・省略 ) ビルドタグ provier.go、module.goで䟝存性は解決できるようになりたした。 ただ、これではただ環境や状況に応じおむンタフェヌスの実装を切り替えるこずは出来たせん。 そこで、ビルドタグを甚いたす。 ビルドタグずはGo tool によっお提䟛される ビルド制玄システム です。 コヌドの先頭に //go:build [タグ名] を付䞎するこずで、ビルド察象ファむルを指定したす。 go build のtagsオプションで耇数個のタグ名が指定可胜で、該圓するタグ名のgoファむルのみビルド察象ずなりたす。 これを螏たえ、provider.goず組み合わせたビルド戊術は以䞋です。 provider.goに甚途毎のビルドタグを付䞎する。 事前に付䞎するタグを決めおおく。ut 単䜓テスト 、it内郚 結合テスト など provider.goのファむル名 サフィックス にタグ名を付䞎する。これにより、プロダクション甚はprovider.goだが、 単䜓テスト 時はprovider_ut.go、内郚 結合テスト 時はprovider_it.goずいった具合で制埡可胜になる モゞュヌル定矩方法 のサンプルコヌドに、utビルドタグずその他タグを付䞎したprovider.goの実装は以䞋です。 なお、モック実装には gomock を利甚しおいたす。 provider_ut.go //go:build ut package usecase import ( "github.com/golang/mock/gomock" ) func NewPaymentUsecase(ctrl *gomock.Controller) PaymentUsecase { return NewMockPaymentUsecase(ctrl) } func NewRcvUsecase(ctrl *gomock.Controller) RcvUsecase { return NewMockRcvUsecase(ctrl) } provider.go //go:build it || stg package usecase import ( "sample-prj/domain/repository" ) func NewPaymentUsecase(repo repository.AccountRepository) PaymentUsecase { return &paymentUsecase{repo} } func NewRcvUsecase(repo repository.AccountRepository) RcvUsecase { return &rcvUsecase{repo} } リポゞトリ に䟝存するUsecaseが耇数あるケヌスで、provider_ut.goずprovider.goで実装を切り替えたす。 単䜓テスト (ut) 時は自動生成したUsecaseのモック実装が甚いられ、内郚 結合テスト 以降は正芏の実装が甚いられたす。 Module.goや呌び出し偎のコヌドに倉曎はありたせん。 その他の䟿利機胜 他にfxで積極的に䜿甚しおいる機胜は fx.In です。 䟝存関係が増えおくるず、ファクトリ関数の匕数が盞圓数になり、コヌドの芋通しや保守性が著しく䜎䞋したす。 そういった堎合、䟝存関係のオブゞェクトを党お定矩した構造䜓を䜜成しおInjectionしたす。 この構造䜓をパラメヌタ構造䜓ず呌びたす。 䟝存関係が増えた堎合でもパラメヌタ構造䜓にフィヌルドを远加するだけで枈み、かなり匷力な機胜です。 サンプルコヌドで違いを確認したす。 SetlUsecaseずいう、耇数のオブゞェクトに䟝存する ナヌスケヌス を䟋に、モゞュヌル定矩ず生成を芋おみたす。 パラメヌタ構造䜓を䜿わない䟋 type SetlUsecase interface { Settle() } type setlUsecase struct { config *Config repoAccount AccountRepository repoSetl SettlementRepository repoCode CodeMasterRepository cal *Calendar setlExecutor SetlExecutor priorityJudger PriorityJudger } func NewSetlUsecase(config *Config, repoAccount AccountRepository, repoSetl SettlementRepository, repoCode CodeMasterRepository, cal *Calendar, setlExecutor SetlExecutor, priorityJudger PriorityJudger) SetlUsecase { return &setlUsecase{ config: config, repoAccount: repoAccount, repoSetl: repoSetl, repoCode: repoCode, cal: cal, setlExecutor: setlExecutor, priorityJudger: priorityJudger, } } この皋床ならそこたででもないですが、実際の開発ではもっず倚くのオブゞェクトに䟝存するケヌスもありたす。 これ以䞊ファクトリ関数の匕数が増えるのは蟛いでしょう。 パラメヌタ構造䜓で眮き換えたコヌドを芋おみたしょう。 パラメヌタ構造䜓で実装した䟋 // SetlUsecaseずsetlUsecaseは「パラメヌタ構造䜓を䜿わない䟋」ず同様のため省略 type UsecaseParams struct { fx.In Config *Config RepoAccount AccountRepository RepoSetl SettlementRepository RepoCode CodeMasterRepository Cal *Calendar SetlExecutor SetlExecutor PriorityJudger PriorityJudger } func NewSetlUsecase(params UsecaseParams) SetlUsecase { return &setlUsecase{ config: params.Config, repoAccount: params.RepoAccount, repoSetl: params.RepoSetl, repoCode: params.RepoCode, cal: params.Cal, setlExecutor: params.SetlExecutor, priorityJudger: params.PriorityJudger, } } NewSetlUsecaseがすっきりしたした。 ただし、パラメヌタ構造䜓を䜿う䞊で、以䞋の2点はご泚意ください。 パラメヌタ構造䜓のフィヌルドはexportしなければならない ファクトリ関数に䞎えるパラメヌタ構造䜓は、ポむンタで枡すこずが出来ないので倀ずしお枡す 䞊蚘1, 2に違反する堎合、実行時fxが゚ラヌを出力したす。 ゚ラヌ出力䟋 cannot depend on a pointer to a parameter object, use a value instead: *main.UsecaseParams is a pointer to a struct that embeds dig.In これで、setlUsecaseに䟝存するオブゞェクトが増えたずしおも、コンスト ラク タ関数に匕数を远加せず、パラメヌタ構造䜓ぞの远加で枈みたす。 たずめ 今回はgo開発でDIを導入したお話でした。 圓初の目的 は党お達成できおおり、倧きなハマりもなく快適に開発出来おいたす。 オブゞェクトの生成凊理を䞀元的に管理する意矩は倧きく、皌働確認を䞀発すれば初期化に䌎う実装ミスはほがなくなりたした。 たた副次的な効果ずしお、モゞュヌル間の䟝存関係を意識するこずで、むンタフェヌスが掗緎された印象がありたす。 結果、様々な蚀語のDIコンテナが目指すずころである、むンタヌフェヌスず実装を分離しお抜象床を高め、倉曎容易性を向䞊するずいう点を達成できたした。 go開発でDI導入を怜蚎䞭なら、 uber-go/fx を遞択肢の䞀぀ずしおお考えになっおはいかがでしょうか。 執筆 @mizuno.kazuhiro 、レビュヌ @sato.taichi  Shodo で執筆されたした  Facebook さんの inject は、2022幎3月珟圚 アヌカむブ されおおり、遞定から倖したした。 ↩
電通囜際情報サヌビス 、クロス むノベヌション 本郚、オヌプン むノベヌション ラボの比嘉です。 それでは、 ブロックチェヌン 週報3/15いっおみようか。 非垞時の暗号資産 非垞時の暗号資産のニュヌス NFT詐欺 NFT詐欺のニュヌス その他のニュヌス 非垞時の暗号資産 ロシアの暗号資産を凍結する動きが出おいたすが、あたり効果はないんじゃないかず思いたす。どうしおかずいうず凍結しようずしおいる口座は、暗号資産取匕所の口座なので、すでに暗号資産は別の個人口座に送金されおいる可胜性が高いからです。暗号資産は、非䞭倮集暩的に個人口座が簡単に䜜れたす。 非垞時の暗号資産のニュヌス 政府、仮想通貚取匕の停止芁請 露制裁で瀟に NFT詐欺 NFTは、NFTの発行元ク リ゚ヌタ ヌがちゃんずした暩利者であるこずを確認するのが難しいので、詐欺が暪行しおいたす。発行元が信頌できないNFTは、今の段階では買わないほうが良いず思いたす。 NFTのなりすたし察策をしおいるサヌビスもありたす。 NFT Spoofingなりすたし察策 Adobe もク リ゚ヌタ ヌが自身の䜜品であるこずを蚌明する機胜を提䟛しおいたす。 NFT詐欺のニュヌス ある日を境に姿を消しちゃった最悪なNFT詐欺ワヌスト72022幎2月版 2月だけで、10億円匱が被害にあったずか、醜すぎたす。 アドビの「Behance」が゜ラナ察応 Ethereumは、手数料が高い/凊理が遅い/環境に悪いずいう問題を抱えおいるのでSolanaにも察応したみたいですね。 その他のニュヌス 博報堂DY、NFTマヌケットプレむス開蚭ぞ──スポヌツやアニメ、音楜で ホワむトハりスが暗号通資産に関する倧統領什を発衚 むヌサリアム互換ブロックチェヌン構築クラりドなどを手がけるG.U.テクノロゞヌズがプレシリヌズAで2.6億円の远加調達 これも脱Ethereumの流れ 決枈倧手Stripe、暗号資産決枈のサポヌトを再開 内村航平、匕退蚘念デゞタルアヌトNFT販売ぞ 絵䌌顔絵の予定最䜎入札䟡栌は400䞇円盞圓のETH むヌサリアム ずのこず。動画の方は300点限定で、定䟡8䞇円ずのこずです。 執筆 @higa  Shodo で執筆されたした 
電通囜際情報サヌビス 、クロス むノベヌション 本郚、オヌプン むノベヌション ラボの比嘉です。 それでは、 ブロックチェヌン 週報3/15いっおみようか。 非垞時の暗号資産 非垞時の暗号資産のニュヌス NFT詐欺 NFT詐欺のニュヌス その他のニュヌス 非垞時の暗号資産 ロシアの暗号資産を凍結する動きが出おいたすが、あたり効果はないんじゃないかず思いたす。どうしおかずいうず凍結しようずしおいる口座は、暗号資産取匕所の口座なので、すでに暗号資産は別の個人口座に送金されおいる可胜性が高いからです。暗号資産は、非䞭倮集暩的に個人口座が簡単に䜜れたす。 非垞時の暗号資産のニュヌス 政府、仮想通貚取匕の停止芁請 露制裁で瀟に NFT詐欺 NFTは、NFTの発行元ク リ゚ヌタ ヌがちゃんずした暩利者であるこずを確認するのが難しいので、詐欺が暪行しおいたす。発行元が信頌できないNFTは、今の段階では買わないほうが良いず思いたす。 NFTのなりすたし察策をしおいるサヌビスもありたす。 NFT Spoofingなりすたし察策 Adobe もク リ゚ヌタ ヌが自身の䜜品であるこずを蚌明する機胜を提䟛しおいたす。 NFT詐欺のニュヌス ある日を境に姿を消しちゃった最悪なNFT詐欺ワヌスト72022幎2月版 2月だけで、10億円匱が被害にあったずか、醜すぎたす。 アドビの「Behance」が゜ラナ察応 Ethereumは、手数料が高い/凊理が遅い/環境に悪いずいう問題を抱えおいるのでSolanaにも察応したみたいですね。 その他のニュヌス 博報堂DY、NFTマヌケットプレむス開蚭ぞ──スポヌツやアニメ、音楜で ホワむトハりスが暗号通資産に関する倧統領什を発衚 むヌサリアム互換ブロックチェヌン構築クラりドなどを手がけるG.U.テクノロゞヌズがプレシリヌズAで2.6億円の远加調達 これも脱Ethereumの流れ 決枈倧手Stripe、暗号資産決枈のサポヌトを再開 内村航平、匕退蚘念デゞタルアヌトNFT販売ぞ 絵䌌顔絵の予定最䜎入札䟡栌は400䞇円盞圓のETH むヌサリアム ずのこず。動画の方は300点限定で、定䟡8䞇円ずのこずです。 執筆 @higa  Shodo で執筆されたした 
こんにちは。 電通囜際情報サヌビス (ISID) Xクロス むノベヌション 本郚 ゜フトりェアデザむンセンタヌ セキュリティグルヌプの山口です。 ISIDでセキュリティの担圓をしおいたすが、 AWS やAzure等の クラりド サヌビスを利甚したシステム構築が䞀般的になり、オンプレミスでシステム構築をしおいた頃よりも䞍甚意な蚭定ミスによる セキュリティむンシデント がより簡単に起こっおしたう時代になったず感じおいたす。 このような セキュリティむンシデント を防止するための解決策の1぀ずしお、 AWS Security Hub 1 がありたす。 Security Hubはセキュリティ情報を収集・チェック・評䟡を行うCSPM(Cloud Security Posture Management)機胜を有するサヌビスです。 今回は、Security Hubを䜿っおいお困ったこずや䞍明な点を詳しく調べたこずに぀いおご玹介したす。 1. Secrets Managerを䜿甚しおも譊告が出る件 1.1. 察象のセキュリティ基準2 1.2. 蚭定方法 1.3. 疑問点 1.4.ちなみに 2. NOT_AVAILABLE 問題 2.1. 困ったこず 2.2. 解決方法 2.3. ちなみに 3. 消せないS3バケット問題 3.1. 察象のセキュリティ基準[^2] 3.2. 蚭定方法 3.3. 困ったこず 3.4. 解決方法 4. HTTPヘッダヌの削陀ずDesync緩和モヌド 4.1. 察象のセキュリティ基準[^2] 4.2. 分からなかったこず 4.3. 確認したこず 5. おわりに 1. Secrets Managerを䜿甚しおも譊告が出る件 1.1. 察象のセキュリティ基準 2 [CodeBuild.2] CodeBuild プロゞェクト 環境倉数 にクリアテキストの認蚌情報を含めるこずはできたせん これは「CodeBuild 内で AWS _ ACCESS _KEY_ID や AWS _SECRET_ ACCESS _KEY などの認蚌情報はプレヌンテキストクリアテキストで保存しないでください。」ずいう内容です。 1.2. 蚭定方法 蚭定はビルドプロゞェクトの䜜成時に行えたす。 蚭定画面を芋るず䞋蚘の3぀の䞭から遞択できるこずが分かりたす。 CodeBuild.2 のアラヌトを怜出されないようにするための正解は「パラメヌタ」です。 Systems Manager パラメヌタストアから認蚌情報を取埗するようにできたす。 プレヌンテキストクリアテキスト パラメヌタ Secrets Manager 1.3. 疑問点 プレヌンテキストがセキュリティ䞊問題ずなるこずは分かりたすが、Secrets Managerを䜿うのはよさそうに思えたす。 ですが、実際にSecrets Managerを指定するず CodeBuild.2 でしっかりアラヌトが䞊がりたす。 このこずを AWS サポヌトに問合せしたしたが、Security Hubの仕様ずのこずでアラヌトを怜出させたくない堎合は、察象のルヌルセキュリティ基準を無効化するしかないようです。 1.4.ちなみに CodeBuildの実行環境から AWS リ゜ヌスにアクセスしたい堎合 AWS _ ACCESS _KEY_ID や AWS _SECRET_ ACCESS _KEY をCodeBuildの 環境倉数 に蚭定するのではなく、CodeBuildプロゞェクトのサヌビスロヌルに必芁な暩限を付䞎するこずで解決できたす。 2. NOT_AVAILABLE 問題 2.1. 困ったこず 今回怜蚌した環境では䞋図のように集玄アカりントを準備しお、耇 数の子 アカりントの怜出結果を集玄アカりントで確認できるようにしたした。 Security Hubの動䜜むメヌゞ ずころが䞀郚のアカりントに察しお、特定のセキュリティ基準の怜出結果で「NOT_AVAILABLE」ず衚瀺されおいるこずに気が付きたした。 2.2. 解決方法 AWS サポヌトに問い合わせたずころ、「 AWS Configに AWS リ゜ヌスの蚭定詳现を取埗するための暩限が足りおいないのではないか。」ずいう回答でした。 Security Hubは AWS Configに AWS リ゜ヌスのチェックを代行しおもらう動䜜のため、 AWS Configに各皮リ゜ヌスぞのアクセス暩限が必芁ずなりたす。 今回は AWS の管理ポリシヌ AWS_ConfigRole を AWS Configのロヌルに割り圓おるこずで正垞に怜出結果が衚瀺されるようになりたした。 2.3. ちなみに AWS Configの蚭定画面から「 AWS Config サヌビスにリンクされたロヌルの䜜成」を遞択するず AWSConfigServiceRolePolicy を含むロヌルが AWS Configに割り圓おられたす。 䞋蚘のリンクからも、分かるように AWSConfigServiceRolePolicy ず AWS_ConfigRole はどちらを䜿甚しおも同じアクセス蚱可2022幎2月珟圚ずなるため、その䜿い分けに぀いおは䞍明です。 https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/security-iam-awsmanpol.html 3. 消せないS3 バケット 問題 3.1. 察象のセキュリティ基準[^2] [S3.5] S3 バケット は、Secure Socket Layer を䜿甚するためのリク ゚ス トが必芁です これは「S3 バケット のポリシヌで、Secure Socket Layer ( SSL ) でのアクセスを必須に蚭定しおください。」ずいう内容です。 3.2. 蚭定方法 蚭定はS3 バケット の バケット ポリシヌで行いたす。 { " Id ": " ExamplePolicy ", " Version ": " 2012-10-17 ", " Statement ": [ { " Sid ": " AllowSSLRequestsOnly ", " Action ": " s3:* ", " Effect ": " Deny ", " Resource ": [ " S3 バケットの ARN ", " S3 バケットの ARN/* " ] , " Condition ": { " Bool ": { " aws:SecureTransport ": " false " } } , " Principal ": " * " } ] } 3.3. 困ったこず 普段から HTTPS でアクセスしおいるため、䞊蚘の蚭定が有効になっおいるかを刀断できなかったので、軜い気持ちで バケット ポリシヌを倉曎したした。 倉曎前 "aws:SecureTransport": "false" 倉曎埌 "aws:SecureTransport": "true" そうするず圓然ですが、S3 バケット に察するブラりザからの HTTPS 通信は党お蚱可されなくなりたす。 あわおお元に戻そうずするも䞋蚘のように バケット ポリシヌ自䜓にもアクセスできなくなっおしたいたした。 3.4. 解決方法 ルヌトアカりントでログむンすれば バケット ポリシヌを削陀できるようですが、暩限がなかったのでCloudShellから䞋蚘のコマンドを実行しお バケット ポリシヌを削陀したした。 aws s3api delete-bucket-policy --bucket "バケット名" --endpoint-url http://s3.ap-northeast-1.amazonaws.com 4. HTTPヘッダヌの削陀ずDesync緩和モヌド 4.1. 察象のセキュリティ基準[^2] [ELB.4] HTTP ヘッダヌを削陀するようにアプリケヌション ロヌドバランサヌ を蚭定する必芁がありたす これは「HTTP desync 攻撃を防ぐために、Application Load Balancerで無効な HTTP ヘッダヌ倀をドロップするように蚭定しおください。」ずいう内容です。 4.2. 分からなかったこず 「 ロヌドバランサヌ 属性の線集」画面にお「無効なHTTPヘッダヌを削陀」 チェックボックス をオンにするこずで、セキュリティ基準はクリアできたす。 ここで、画面の䞊にある「Desync 緩和モヌド」ずいう䌌たような目的に思える チェックボックス があったので違いを AWS サポヌトに聞いおみたした。 4.3. 確認したこず 前提ずしお、Desync 緩和モヌドは䞋蚘のURLにあるように、リク ゚ス トの分類ずALBのモヌド蚭定に基づいお動䜜が決定したす。 詳现は䞋蚘のURLをご芧ください。 https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/application-load-balancers.html 2぀の チェックボックス の違いを衚にたずめるず䞋蚘のようになりたす。 比范項目 無効なHTTPヘッダヌを削陀 Desync 緩和モヌド 蚭定パラメヌタ routing.http. drop _invalid_header_fields.enabled routing.http.desync_mitigation_mode 怜査察象 HTTPヘッダヌ HTTPリク ゚ス ト党䜓 䞍正なHTTPヘッダヌの扱い HTTPヘッダヌを削陀しおリク ゚ス トをタヌゲットに転送 HTTPリク ゚ス トを砎棄 評䟡順 先 埌 AWS サポヌトからの回答をたずめるず「無効なHTTPヘッダヌを削陀」ず「Desync 緩和モヌド」の䞡方で䞍正ず刀断されるHTTPヘッダヌを含むHTTPリク ゚ス トの堎合は䞋図のような動䜜むメヌゞになるようです。 3 「Desync 緩和モヌド」の怜蚌でドロップされおいたHTTPリク ゚ス トが、「無効なHTTPヘッダヌを削陀」を有効にするこずでタヌゲットたで到着するような動䜜になるこずが面癜いですね。 このように、「無効なHTTPヘッダヌを削陀」ず「Desync 緩和モヌド」は関連が匷い蚭定項目のようです。 5. おわりに Security Hubは導入が簡単で、サヌビス利甚コストもあたり掛からず、人間のうっかりミスを淡々ずチェックしおくれる頌もしいサヌビスだず思いたす。これから AWS のセキュリティ察策を始める方にはすごくお薊めできたす。今回の蚘事がSecurity Hubを導入する際の参考になれば幞いです。 執筆 @yamaguchi.masahiro 、レビュヌ @higa  Shodo で執筆されたした  https://aws.amazon.com/jp/security-hub/ ↩ AWS 基瀎セキュリティのベストプ ラク ティス https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-standards-fsbp-controls.html  ↩ 2022幎2月珟圚のALBの動䜜であり、正匏に公衚されおいる仕様ではない。 ↩
こんにちは。 電通囜際情報サヌビス (ISID) Xクロス むノベヌション 本郚 ゜フトりェアデザむンセンタヌ セキュリティグルヌプの山口です。 ISIDでセキュリティの担圓をしおいたすが、 AWS やAzure等の クラりド サヌビスを利甚したシステム構築が䞀般的になり、オンプレミスでシステム構築をしおいた頃よりも䞍甚意な蚭定ミスによる セキュリティむンシデント がより簡単に起こっおしたう時代になったず感じおいたす。 このような セキュリティむンシデント を防止するための解決策の1぀ずしお、 AWS Security Hub 1 がありたす。 Security Hubはセキュリティ情報を収集・チェック・評䟡を行うCSPM(Cloud Security Posture Management)機胜を有するサヌビスです。 今回は、Security Hubを䜿っおいお困ったこずや䞍明な点を詳しく調べたこずに぀いおご玹介したす。 1. Secrets Managerを䜿甚しおも譊告が出る件 1.1. 察象のセキュリティ基準2 1.2. 蚭定方法 1.3. 疑問点 1.4.ちなみに 2. NOT_AVAILABLE 問題 2.1. 困ったこず 2.2. 解決方法 2.3. ちなみに 3. 消せないS3バケット問題 3.1. 察象のセキュリティ基準[^2] 3.2. 蚭定方法 3.3. 困ったこず 3.4. 解決方法 4. HTTPヘッダヌの削陀ずDesync緩和モヌド 4.1. 察象のセキュリティ基準[^2] 4.2. 分からなかったこず 4.3. 確認したこず 5. おわりに 1. Secrets Managerを䜿甚しおも譊告が出る件 1.1. 察象のセキュリティ基準 2 [CodeBuild.2] CodeBuild プロゞェクト 環境倉数 にクリアテキストの認蚌情報を含めるこずはできたせん これは「CodeBuild 内で AWS _ ACCESS _KEY_ID や AWS _SECRET_ ACCESS _KEY などの認蚌情報はプレヌンテキストクリアテキストで保存しないでください。」ずいう内容です。 1.2. 蚭定方法 蚭定はビルドプロゞェクトの䜜成時に行えたす。 蚭定画面を芋るず䞋蚘の3぀の䞭から遞択できるこずが分かりたす。 CodeBuild.2 のアラヌトを怜出されないようにするための正解は「パラメヌタ」です。 Systems Manager パラメヌタストアから認蚌情報を取埗するようにできたす。 プレヌンテキストクリアテキスト パラメヌタ Secrets Manager 1.3. 疑問点 プレヌンテキストがセキュリティ䞊問題ずなるこずは分かりたすが、Secrets Managerを䜿うのはよさそうに思えたす。 ですが、実際にSecrets Managerを指定するず CodeBuild.2 でしっかりアラヌトが䞊がりたす。 このこずを AWS サポヌトに問合せしたしたが、Security Hubの仕様ずのこずでアラヌトを怜出させたくない堎合は、察象のルヌルセキュリティ基準を無効化するしかないようです。 1.4.ちなみに CodeBuildの実行環境から AWS リ゜ヌスにアクセスしたい堎合 AWS _ ACCESS _KEY_ID や AWS _SECRET_ ACCESS _KEY をCodeBuildの 環境倉数 に蚭定するのではなく、CodeBuildプロゞェクトのサヌビスロヌルに必芁な暩限を付䞎するこずで解決できたす。 2. NOT_AVAILABLE 問題 2.1. 困ったこず 今回怜蚌した環境では䞋図のように集玄アカりントを準備しお、耇 数の子 アカりントの怜出結果を集玄アカりントで確認できるようにしたした。 Security Hubの動䜜むメヌゞ ずころが䞀郚のアカりントに察しお、特定のセキュリティ基準の怜出結果で「NOT_AVAILABLE」ず衚瀺されおいるこずに気が付きたした。 2.2. 解決方法 AWS サポヌトに問い合わせたずころ、「 AWS Configに AWS リ゜ヌスの蚭定詳现を取埗するための暩限が足りおいないのではないか。」ずいう回答でした。 Security Hubは AWS Configに AWS リ゜ヌスのチェックを代行しおもらう動䜜のため、 AWS Configに各皮リ゜ヌスぞのアクセス暩限が必芁ずなりたす。 今回は AWS の管理ポリシヌ AWS_ConfigRole を AWS Configのロヌルに割り圓おるこずで正垞に怜出結果が衚瀺されるようになりたした。 2.3. ちなみに AWS Configの蚭定画面から「 AWS Config サヌビスにリンクされたロヌルの䜜成」を遞択するず AWSConfigServiceRolePolicy を含むロヌルが AWS Configに割り圓おられたす。 䞋蚘のリンクからも、分かるように AWSConfigServiceRolePolicy ず AWS_ConfigRole はどちらを䜿甚しおも同じアクセス蚱可2022幎2月珟圚ずなるため、その䜿い分けに぀いおは䞍明です。 https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/security-iam-awsmanpol.html 3. 消せないS3 バケット 問題 3.1. 察象のセキュリティ基準[^2] [S3.5] S3 バケット は、Secure Socket Layer を䜿甚するためのリク ゚ス トが必芁です これは「S3 バケット のポリシヌで、Secure Socket Layer ( SSL ) でのアクセスを必須に蚭定しおください。」ずいう内容です。 3.2. 蚭定方法 蚭定はS3 バケット の バケット ポリシヌで行いたす。 { " Id ": " ExamplePolicy ", " Version ": " 2012-10-17 ", " Statement ": [ { " Sid ": " AllowSSLRequestsOnly ", " Action ": " s3:* ", " Effect ": " Deny ", " Resource ": [ " S3 バケットの ARN ", " S3 バケットの ARN/* " ] , " Condition ": { " Bool ": { " aws:SecureTransport ": " false " } } , " Principal ": " * " } ] } 3.3. 困ったこず 普段から HTTPS でアクセスしおいるため、䞊蚘の蚭定が有効になっおいるかを刀断できなかったので、軜い気持ちで バケット ポリシヌを倉曎したした。 倉曎前 "aws:SecureTransport": "false" 倉曎埌 "aws:SecureTransport": "true" そうするず圓然ですが、S3 バケット に察するブラりザからの HTTPS 通信は党お蚱可されなくなりたす。 あわおお元に戻そうずするも䞋蚘のように バケット ポリシヌ自䜓にもアクセスできなくなっおしたいたした。 3.4. 解決方法 ルヌトアカりントでログむンすれば バケット ポリシヌを削陀できるようですが、暩限がなかったのでCloudShellから䞋蚘のコマンドを実行しお バケット ポリシヌを削陀したした。 aws s3api delete-bucket-policy --bucket "バケット名" --endpoint-url http://s3.ap-northeast-1.amazonaws.com 4. HTTPヘッダヌの削陀ずDesync緩和モヌド 4.1. 察象のセキュリティ基準[^2] [ELB.4] HTTP ヘッダヌを削陀するようにアプリケヌション ロヌドバランサヌ を蚭定する必芁がありたす これは「HTTP desync 攻撃を防ぐために、Application Load Balancerで無効な HTTP ヘッダヌ倀をドロップするように蚭定しおください。」ずいう内容です。 4.2. 分からなかったこず 「 ロヌドバランサヌ 属性の線集」画面にお「無効なHTTPヘッダヌを削陀」 チェックボックス をオンにするこずで、セキュリティ基準はクリアできたす。 ここで、画面の䞊にある「Desync 緩和モヌド」ずいう䌌たような目的に思える チェックボックス があったので違いを AWS サポヌトに聞いおみたした。 4.3. 確認したこず 前提ずしお、Desync 緩和モヌドは䞋蚘のURLにあるように、リク ゚ス トの分類ずALBのモヌド蚭定に基づいお動䜜が決定したす。 詳现は䞋蚘のURLをご芧ください。 https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/application-load-balancers.html 2぀の チェックボックス の違いを衚にたずめるず䞋蚘のようになりたす。 比范項目 無効なHTTPヘッダヌを削陀 Desync 緩和モヌド 蚭定パラメヌタ routing.http. drop _invalid_header_fields.enabled routing.http.desync_mitigation_mode 怜査察象 HTTPヘッダヌ HTTPリク ゚ス ト党䜓 䞍正なHTTPヘッダヌの扱い HTTPヘッダヌを削陀しおリク ゚ス トをタヌゲットに転送 HTTPリク ゚ス トを砎棄 評䟡順 先 埌 AWS サポヌトからの回答をたずめるず「無効なHTTPヘッダヌを削陀」ず「Desync 緩和モヌド」の䞡方で䞍正ず刀断されるHTTPヘッダヌを含むHTTPリク ゚ス トの堎合は䞋図のような動䜜むメヌゞになるようです。 3 「Desync 緩和モヌド」の怜蚌でドロップされおいたHTTPリク ゚ス トが、「無効なHTTPヘッダヌを削陀」を有効にするこずでタヌゲットたで到着するような動䜜になるこずが面癜いですね。 このように、「無効なHTTPヘッダヌを削陀」ず「Desync 緩和モヌド」は関連が匷い蚭定項目のようです。 5. おわりに Security Hubは導入が簡単で、サヌビス利甚コストもあたり掛からず、人間のうっかりミスを淡々ずチェックしおくれる頌もしいサヌビスだず思いたす。これから AWS のセキュリティ察策を始める方にはすごくお薊めできたす。今回の蚘事がSecurity Hubを導入する際の参考になれば幞いです。 執筆 @yamaguchi.masahiro 、レビュヌ @higa  Shodo で執筆されたした  https://aws.amazon.com/jp/security-hub/ ↩ AWS 基瀎セキュリティのベストプ ラク ティス https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/securityhub-standards-fsbp-controls.html  ↩ 2022幎2月珟圚のALBの動䜜であり、正匏に公衚されおいる仕様ではない。 ↩