TECH PLAY

電通総研

電通総研 の技術ブログ

å…š837ä»¶

電通囜際情報サヌビス 、オヌプン むノベヌション ラボの 比嘉康雄 です。 Web3開発入門シリヌズ with Algorandアルゎランド、今回のテヌマは、 支払い です。 今回の蚘事のGoogle Colab甚のノヌトブックはこちらになりたす。ブラりザだけでブロックチェヌンに察するコヌドを、実際に動かしながら詊せるので、おすすめです。 Web3開発入門 with Algorandの党おのコンテンツ アカりント TestNetでALGOをゲット 支払い アセットの䜜成 py-algorand-sdkのむンストヌル アカりントAの䜜成 アカりントAにAlgorand Dispenserを䜿っお入金する アカりントBの䜜成 ALGO残高の確認 AlgodClientオブゞェクトの䜜成 PaymentTxnオブゞェクトの䜜成 眲名 トランザクションをAlgorandに送る トランザクションが確定するのを埅぀ ALGO残高の再確認 たずめ 仲間募集 今回は、アカりントAからアカりントBに 1 ALGO を支払う支払い トランザクション を実行しおみたしょう。 py-algorand- sdk のむンストヌル py-algorand-sdk をむンストヌルしたす。 䞋蚘のコヌドを実行しおください。 !pip3 install py-algorand-sdk アカりントAの䜜成 アカりントAを䜜成したしょう。 䞋蚘のコヌドを実行しおください。 from algosdk import account a_private_key, a_address = account.generate_account() print("AccountA Address:", a_address) 出力結果の䟋です AccountA Address: QLK6LJT2CWOV5XIILG5XRSM6QLOMLYG77YLE3F5EFIQU37BY3WKL2HPYEM アカりントAにAlgorand Dispenserを䜿っお入金する アカりントAがアカりントBに送金するためには、 ALGO の残高がなければいけたせん。 TestNet では、 Algorand Dispenser のサむトで、 ALGO を無料でゲットできたす。 AccountA Address: の埌ろの郚分のアドレスをコピヌしおください。 Algorand Dispenser のサむトにアクセスし、 I'm not a roboot をチェックし、 target address の入力゚リアに先ほどコピヌしたアドレスをペヌストしたす。 Dispense のボタンをクリックしおください。 Status: Code 200 success のように衚瀺されればOKです。 アカりントBの䜜成 アカりントBを䜜成したしょう。 䞋蚘のコヌドを実行しおください。 from algosdk import account b_private_key, b_address = account.generate_account() print("AccountB Address:", b_address) 出力結果の䟋です。 AccountB Address: JO7RPRV36UVWWEAUA5JMXTPX62REHXFY5EYGNX3RBCSCITOO76PZCI2Y6E ALGO残高の確認 アカりントAずアカりントBの残高を確認しおみたしょう。 TestNetのAlgoexplorer のサむトにアクセスし、䞀番䞊の真ん䞭の怜玢゚リアに、アカりントAのアドレスをコピヌ&ペヌストしお実行しおください。 Balances残高に 10 ず衚瀺されおいたすね。 アカりントBの残高も同様に確認しおみたしょう。䞀床、ブラりザでペヌゞをリロヌドし、アカりントBのアドレスをコピヌ&ペヌストしお実行しおください。ペヌゞをリロヌドしないずたたに倉になるこずがありたす。 Balances残高は - ぀たり 0 ですね。 AlgodClientオブゞェクトの䜜成 Algorand にアクセスするために、 AlgodClient オブゞェクトを䜜成したす。 䞋蚘のコヌドを実行しおください。 from algosdk.v2client.algod import AlgodClient algod = AlgodClient("", "https://node.testnet.algoexplorerapi.io:443") AlgodClient オブゞェクトを䜜成するずきに、 https://node.testnet.algoexplorerapi.io:443 を指定しおいたすね。これにより Algoexplorer の TestNet のノヌドに接続したす。 PaymentTxnオブゞェクトの䜜成 あるアカりントが別のアカりントぞALGOを支払うためには、 PaymentTxn オブゞェクトを䜜成したす。 䞋蚘のコヌドを実行しおください。 from algosdk.future.transaction import PaymentTxn sp = algod.suggested_params() txn = PaymentTxn(sender=a_address, sp=sp, receiver=b_address, amt=1000000) この トランザクション の差出人senderはアカりントAa_addressです。 この トランザクション の受取人receiverはアカりントBb_addressです。 金額amtは、1000000 micro ALGO = 1.0 ALGOになりたす。 spは気にしなくおも倧䞈倫です。 眲名 トランザクション は、確かに差出人はアカりントAであるずいうこずず、 トランザクション が䜜成されおから倉曎されおいないこずを怜蚌するために、そのアカりントの秘密キヌで眲名をする必芁がありたす。 䞋蚘のコヌドを実行しおください。 signed_txn = txn.sign(a_private_key) アカりントAの秘密キヌa_private_keyで眲名 sign しおいたすね。 トランザクション をAlgorandに送る 眲名した トランザクション を Algorand に送り出したしょう それを行うのが、 AlgodClientオブゞェクト.send_transactions() になりたす。 䞋蚘のコヌドを実行しおください。 tx_id = algod.send_transactions([signed_txn]) トランザクション を Algorand に送るず トランザクション IDtx_idがふられ、 Algoexplorer などで怜玢可胜になりたす。正確には、次で説明する トランザクション の確定埌、怜玢可胜になりたす。 トランザクション が確定するのを埅぀ トランザクション を Algoland に送っおも、それで トランザクション が確定されたわけではありたせん。 トランザクション がブロックに取り蟌たれるのを埅぀必芁がありたす。 Algorand の堎合、 トランザクションがブロックに取り蟌たれた == トランザクションが確定された ずいう意味になりたす。 Algorand の堎合、3.8秒ほどで トランザクション が確定したす。 トランザクション が確定されるのを埅぀には、 wait_for_confirmation() を呌び出したす。 䞋蚘のコヌドを実行しおください。 from algosdk.future.transaction import wait_for_confirmation wait_for_confirmation(algod, tx_id, 10) 3぀目の匕数の10は、どれくらいのラりンドを埅぀のかの指定になりたす。ここで指定されたラりンドで トランザクション が確定しない堎合、 wait_for_confirmation() の呌び出しから凊理が返っおきたす。 Algorand に䜕らかの問題があったずきに、無限に埅ち続けないためのパラメヌタです。 ラりンドずは、䞀぀のブロックが䜜成される時間垯です。前のブロックが䜜成されおから、今回のブロックが䜜成されるたでの時間が䞀぀のラりンドになりたす。 ALGO残高の再確認 アカりントAずアカりントBの残高をもう䞀床確認しおみたしょう。 TestNetのAlgoexplorer のサむトにアクセスし、䞀番䞊の真ん䞭の怜玢゚リアに、アカりントAのアドレスをコピヌ&ペヌストしお実行しおください。 Balances残高に 8.999 ず衚瀺されおいたすね。 10 の状態から、 1 支払ったので、 9 になりそうですが、 0.001 足りたせん。 0.001 は トランザクション 手数料ずしお支払った分です。 アカりントBの残高も同様に確認しおみたしょう。䞀床、ブラりザでペヌゞをリロヌドし、アカりントBのアドレスをコピヌ&ペヌストしお実行しおください。ペヌゞをリロヌドしないずたたに倉になるこずがありたす。 Balances残高は予想通りに 1 ず衚瀺されおいたすね。 たずめ 今回は、 支払い を孊びたした。 トランザクション を䜜成した埌の、「 トランザクション に眲名する」、「眲名した トランザクション を Algorand に送り出す」の凊理はどの トランザクション でも同じです。 トランザクション 凊理の山は今回でこえたしたよ。 なにか感想があれば、 Twitter で @yasuo_algo にメンションしお぀ぶやいおください。 次回は、 アセットの䜜成 です。 仲間募集 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 珟圚、以䞋のような職皮を募集しおいたす。 ゜リュヌションアヌキテクト AI゚ンゞニア 執筆 @higa 、レビュヌ Ishizawa Kento (@kent)  Shodo で執筆されたした 
電通囜際情報サヌビス 、オヌプン むノベヌション ラボの 比嘉康雄 です。 Web3開発入門シリヌズ with Algorandアルゎランド、今回のテヌマは、 支払い です。 今回の蚘事のGoogle Colab甚のノヌトブックはこちらになりたす。ブラりザだけでブロックチェヌンに察するコヌドを、実際に動かしながら詊せるので、おすすめです。 Web3開発入門 with Algorandの党おのコンテンツ アカりント TestNetでALGOをゲット 支払い アセットの䜜成 py-algorand-sdkのむンストヌル アカりントAの䜜成 アカりントAにAlgorand Dispenserを䜿っお入金する アカりントBの䜜成 ALGO残高の確認 AlgodClientオブゞェクトの䜜成 PaymentTxnオブゞェクトの䜜成 眲名 トランザクションをAlgorandに送る トランザクションが確定するのを埅぀ ALGO残高の再確認 たずめ 仲間募集 今回は、アカりントAからアカりントBに 1 ALGO を支払う支払い トランザクション を実行しおみたしょう。 py-algorand- sdk のむンストヌル py-algorand-sdk をむンストヌルしたす。 䞋蚘のコヌドを実行しおください。 !pip3 install py-algorand-sdk アカりントAの䜜成 アカりントAを䜜成したしょう。 䞋蚘のコヌドを実行しおください。 from algosdk import account a_private_key, a_address = account.generate_account() print("AccountA Address:", a_address) 出力結果の䟋です AccountA Address: QLK6LJT2CWOV5XIILG5XRSM6QLOMLYG77YLE3F5EFIQU37BY3WKL2HPYEM アカりントAにAlgorand Dispenserを䜿っお入金する アカりントAがアカりントBに送金するためには、 ALGO の残高がなければいけたせん。 TestNet では、 Algorand Dispenser のサむトで、 ALGO を無料でゲットできたす。 AccountA Address: の埌ろの郚分のアドレスをコピヌしおください。 Algorand Dispenser のサむトにアクセスし、 I'm not a roboot をチェックし、 target address の入力゚リアに先ほどコピヌしたアドレスをペヌストしたす。 Dispense のボタンをクリックしおください。 Status: Code 200 success のように衚瀺されればOKです。 アカりントBの䜜成 アカりントBを䜜成したしょう。 䞋蚘のコヌドを実行しおください。 from algosdk import account b_private_key, b_address = account.generate_account() print("AccountB Address:", b_address) 出力結果の䟋です。 AccountB Address: JO7RPRV36UVWWEAUA5JMXTPX62REHXFY5EYGNX3RBCSCITOO76PZCI2Y6E ALGO残高の確認 アカりントAずアカりントBの残高を確認しおみたしょう。 TestNetのAlgoexplorer のサむトにアクセスし、䞀番䞊の真ん䞭の怜玢゚リアに、アカりントAのアドレスをコピヌ&ペヌストしお実行しおください。 Balances残高に 10 ず衚瀺されおいたすね。 アカりントBの残高も同様に確認しおみたしょう。䞀床、ブラりザでペヌゞをリロヌドし、アカりントBのアドレスをコピヌ&ペヌストしお実行しおください。ペヌゞをリロヌドしないずたたに倉になるこずがありたす。 Balances残高は - ぀たり 0 ですね。 AlgodClientオブゞェクトの䜜成 Algorand にアクセスするために、 AlgodClient オブゞェクトを䜜成したす。 䞋蚘のコヌドを実行しおください。 from algosdk.v2client.algod import AlgodClient algod = AlgodClient("", "https://node.testnet.algoexplorerapi.io:443") AlgodClient オブゞェクトを䜜成するずきに、 https://node.testnet.algoexplorerapi.io:443 を指定しおいたすね。これにより Algoexplorer の TestNet のノヌドに接続したす。 PaymentTxnオブゞェクトの䜜成 あるアカりントが別のアカりントぞALGOを支払うためには、 PaymentTxn オブゞェクトを䜜成したす。 䞋蚘のコヌドを実行しおください。 from algosdk.future.transaction import PaymentTxn sp = algod.suggested_params() txn = PaymentTxn(sender=a_address, sp=sp, receiver=b_address, amt=1000000) この トランザクション の差出人senderはアカりントAa_addressです。 この トランザクション の受取人receiverはアカりントBb_addressです。 金額amtは、1000000 micro ALGO = 1.0 ALGOになりたす。 spは気にしなくおも倧䞈倫です。 眲名 トランザクション は、確かに差出人はアカりントAであるずいうこずず、 トランザクション が䜜成されおから倉曎されおいないこずを怜蚌するために、そのアカりントの秘密キヌで眲名をする必芁がありたす。 䞋蚘のコヌドを実行しおください。 signed_txn = txn.sign(a_private_key) アカりントAの秘密キヌa_private_keyで眲名 sign しおいたすね。 トランザクション をAlgorandに送る 眲名した トランザクション を Algorand に送り出したしょう それを行うのが、 AlgodClientオブゞェクト.send_transactions() になりたす。 䞋蚘のコヌドを実行しおください。 tx_id = algod.send_transactions([signed_txn]) トランザクション を Algorand に送るず トランザクション IDtx_idがふられ、 Algoexplorer などで怜玢可胜になりたす。正確には、次で説明する トランザクション の確定埌、怜玢可胜になりたす。 トランザクション が確定するのを埅぀ トランザクション を Algoland に送っおも、それで トランザクション が確定されたわけではありたせん。 トランザクション がブロックに取り蟌たれるのを埅぀必芁がありたす。 Algorand の堎合、 トランザクションがブロックに取り蟌たれた == トランザクションが確定された ずいう意味になりたす。 Algorand の堎合、3.8秒ほどで トランザクション が確定したす。 トランザクション が確定されるのを埅぀には、 wait_for_confirmation() を呌び出したす。 䞋蚘のコヌドを実行しおください。 from algosdk.future.transaction import wait_for_confirmation wait_for_confirmation(algod, tx_id, 10) 3぀目の匕数の10は、どれくらいのラりンドを埅぀のかの指定になりたす。ここで指定されたラりンドで トランザクション が確定しない堎合、 wait_for_confirmation() の呌び出しから凊理が返っおきたす。 Algorand に䜕らかの問題があったずきに、無限に埅ち続けないためのパラメヌタです。 ラりンドずは、䞀぀のブロックが䜜成される時間垯です。前のブロックが䜜成されおから、今回のブロックが䜜成されるたでの時間が䞀぀のラりンドになりたす。 ALGO残高の再確認 アカりントAずアカりントBの残高をもう䞀床確認しおみたしょう。 TestNetのAlgoexplorer のサむトにアクセスし、䞀番䞊の真ん䞭の怜玢゚リアに、アカりントAのアドレスをコピヌ&ペヌストしお実行しおください。 Balances残高に 8.999 ず衚瀺されおいたすね。 10 の状態から、 1 支払ったので、 9 になりそうですが、 0.001 足りたせん。 0.001 は トランザクション 手数料ずしお支払った分です。 アカりントBの残高も同様に確認しおみたしょう。䞀床、ブラりザでペヌゞをリロヌドし、アカりントBのアドレスをコピヌ&ペヌストしお実行しおください。ペヌゞをリロヌドしないずたたに倉になるこずがありたす。 Balances残高は予想通りに 1 ず衚瀺されおいたすね。 たずめ 今回は、 支払い を孊びたした。 トランザクション を䜜成した埌の、「 トランザクション に眲名する」、「眲名した トランザクション を Algorand に送り出す」の凊理はどの トランザクション でも同じです。 トランザクション 凊理の山は今回でこえたしたよ。 なにか感想があれば、 Twitter で @yasuo_algo にメンションしお぀ぶやいおください。 次回は、 アセットの䜜成 です。 仲間募集 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 珟圚、以䞋のような職皮を募集しおいたす。 ゜リュヌションアヌキテクト AI゚ンゞニア 執筆 @higa 、レビュヌ Ishizawa Kento (@kent)  Shodo で執筆されたした 
電通囜際情報サヌビス 、X むノベヌション 本郚デゞタル゚ンゲヌゞメントセンタヌの堀越です。 Salesforce の開発でも GitHub を䜿っお CI/CD をできるようにしたいのですが、この蚘事ではそのやり方などに぀いお曞きたす。 最近の Salesforce の開発では、 Salesforce DX ずいうコンセプトのもず、 CLI を䜿っお Salesforce 䞊のロヌコヌド蚭定を XML で取埗したり反映したりできたす。 XML ずしお取り扱えれば、 GitHub などで構成管理したり、環境間の差異がないかの比范をしたりずいうこずも可胜です。 圓然ながらロヌコヌドだけでなくApexやVisualforce、Lightning コンポヌネント ずいったプログラムコヌドも CLI で取り扱うこずができたす。 ここたでは 個々の開発者で CLI ずGitを利甚すれば実珟できるずころです。 が、せっかく GitHub で構成管理するのであれば、Pull Request した際に自動テストやデプロむ可吊のチェックいわゆるCI/CDもやりたくなりたすね。 これを螏たえお、ここでは Salesforce DX の CLI を日ごろから䜿っおいる  プロゞェクト構成が GitHub 䞊の リポゞトリ に登録されおいるこずを前提に、CI/CDを組み蟌んでみたいず思いたす。 CI/CD の実行には、 GitHub 暙準装備の GitHub Actions を䜿いたいず思いたす。 やりたいこずのむメヌゞは次のようなものです。 統合甚のブランチにSandboxを察応させお、Pull Request されたずきにそのSandboxにデプロむできるかを自動チェックできるようにしたいず思いたす。 CLIによる Sandbox ぞの接続 秘密鍵ずそれずペアになった蚌明曞の甚意 Salesforce 偎の準備 プロファむルの蚱可IPアドレス蚭定 プロファむルに䞎える暩限 GitHub偎の準備 セキュリティの考慮で secrets を䜿う CLIでの接続蚭定のむメヌゞ CLIでの認蚌に向けた蚭定䜜業 キヌペアず蚌明曞の準備 Sandbox偎の蚭定 接続甚のプロファむルの準備 接続甚のナヌザヌの準備 接続アプリケヌションの準備 GitHubリポゞトリ偎の蚭定 Secretsの蚭定 GitHub Actions ワヌクフロヌの䜜成 GitHub Actions ワヌクフロヌの接続怜蚌 CLI認蚌埌の操䜜 接続時のトラブルシュヌティングのヒント Salesforce偎のID怜蚌履歎を確認 䜙談 CLI による Sandbox ぞの接続 Salesforce DX の CLI では、たず Sandbox に接続認蚌し、それから取埗やデプロむなどの操䜜を行う必芁がありたす。 CLI による認蚌にはいく぀か方匏が提䟛されおいたすが、CI/CDで利甚可胜なのは「JWTベアラヌ トヌク ンフロヌ」です。 JWTベアラヌ トヌク ンフロヌでの接続には、以䞋の準備が必芁です。 秘密鍵 ずそれずペアになった蚌明曞 自己眲名蚌明曞 でOKの甚意 Salesforce 偎の準備 GitHub 偎の準備 秘密鍵 ずそれずペアになった蚌明曞の甚意 opensslで 秘密鍵 ず 自己眲名蚌明曞 を準備したす。 自己眲名蚌明曞 は、 Salesforce 偎の「接続アプリケヌション」蚭定に登録されるこずになりたす。 たた、 秘密鍵 は GitHub 偎で利甚されるこずになりたす。 Salesforce 偎の準備 Salesforce 偎がJWTベアラヌ トヌク ンフロヌでアクセスを受けるためには、「接続アプリケヌション」の蚭定が必芁ずなりたす。 「接続アプリケヌション」では倧きく以䞋の芁玠の蚭定が必芁です。 JWTベアラヌ トヌク ンフロヌを有効化する諞蚭定 JWT を怜蚌するための蚌明曞のアップロヌド 接続アプリケヌションで利甚するプロファむルたたは暩限セットずナヌザヌ プロファむルたたは暩限セットでSandbox内の操䜜可吊を制埡する認可の蚭定をしたす。 今回は、CI/CDでの利甚のため、デプロむやテストを実行するための暩限を䞎えおおく必芁がありたす。 たた、そのプロファむルたたは暩限セットに属する Salesforce ナヌザヌで接続するこずになりたすので、そのためのナヌザヌも甚意しおおく必芁がありたす。 今回は、セキュリティを考慮し、デプロむやテストを実行するための最小の暩限を持った専甚ナヌザヌず専甚プロファむルを甚意するこずにしたした。 たた、このナヌザヌはブラりザでのログむンを行わないものずし、 API 呌出専甚のナヌザヌずしお甚意しおおくこずにしたす。 これらの䞀連の蚭定方法は、 Salesforce DXのドキュメントの以䞋が参照できたす。 https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_auth_connected_app.htm プロファむルの蚱可 IPアドレス 蚭定 プロファむルには、ログむンが蚱可できるアクセス元 IPアドレス 範囲の指定が可胜で、 GitHub からのアクセスを蚱可するように蚭定するようにしたす。 ただ、぀ぶさに蚭定するのは数が倚くお珟実的ではないので広めのレンゞにならざるを埗ないものず思いたす。 その分、クレデンシャル情報はしっかりず管理しおおく必芁があるでしょう。 なお、 GitHub のIPレンゞは以䞋から取埗できたす。 https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/about-githubs-ip-addresses プロファむルに䞎える暩限 プロファむルで䞎える暩限システム暩限は、以䞋になりたす。 「アプリケヌションのカスタマむズ」Customize Application 「 メタデヌタ API 関数を䜿甚した メタデヌタ の倉曎」Modify Metadata Through Metadata API Function 「 API の有効化」 API Enabled 「 API 限定ナヌザ」 API Only User 「すべおのデヌタの線集」Modify All Data 必芁な暩限に぀いおの情報は以䞋を参照しおいたす。 https://developer.salesforce.com/docs/atlas.ja-jp.238.0.api_meta.meta/api_meta/meta_modify_metadata_perm.htm なお、「すべおのデヌタの線集」は、党おのオブゞェクトに察する CRUD 操䜜を行える暩限ずなりたす。 デプロむに䌎っおApexのテストコヌドの実行が必芁であり、それに䌎っおオブゞェクトの CRUD 操䜜が必芁ずなるこずから、この暩限を䞎えおおくのが無難でしょう。 GitHub 偎の準備 JWTベアラヌ トヌク ンフロヌで認蚌する際には、 CLI コマンドで以䞋を指定する必芁がありたす。 JWT を眲名するための 秘密鍵 のファむル Sandboxぞの接続に利甚するナヌザヌ名 接続アプリケヌションのコンシュヌマ鍵(OAuthのクラむアントID) Salesforce 環境のログむンURL 認蚌のコマンドは以䞋のようなむメヌゞずなりたす。 sfdx auth:jwt:grant --instanceurl=https://test.salesforce.com/ --jwtkeyfile 【秘密鍵ファむル名】 --username 【接続ナヌザヌ名】 --clientid 【接続アプリケヌションのコンシュヌマ鍵】 ここで、 https://test.salesforce.com/ はログむンURLであり、今回はSandboxを利甚するためにこちらのURLずなっおいたす。 もし本番環境に接続したい堎合は Salesforce の「私の ドメむン 」で指定したURLを適切に指定する必芁があるず思われたす。 「接続アプリケヌションのコンシュヌマ鍵」は、準備した接続アプリケヌション蚭定から取埗したす。 たた、「接続ナヌザヌ名」も同様に Salesforce 偎の準備で䜜成したものを利甚したす。 セキュリティの考慮で secrets を䜿う コンシュヌマ鍵や 秘密鍵 ファむルなどはクレデンシャル情報なので リポゞトリ 内に含めるわけにはいきたせん。 そこで、 GitHub の secrets に登録しおおくものずしたす。 たた 秘密鍵 ファむルはX.509圢匏ですが、改行が含たれるため、そのたた secrets で扱うこずはできたせん。 そこで、 BASE64 ゚ンコヌド しお secrets に登録しおおき、それを実行時に取り出しお BASE64 デコヌド、䞀時ファむルに曞き出しお鍵ファむルずするものずしたす。 今回は secrets を利甚したしたが、接続先の Sandbox が増えるようであれば、 Environments 機胜を利甚するのが良いでしょう。 CLI での接続蚭定のむメヌゞ この接続蚭定をたずめるず、むメヌゞは次のようになりたす。 CLI での認蚌に向けた蚭定䜜業 以䞋、このむメヌゞに沿っお蚭定䜜業を進めおいきたす。 キヌペアず蚌明曞の準備 最初に、opensslで 秘密鍵 ず 自己眲名蚌明曞 を準備したす。 この手順は比范的よくある手順であり、詳しくは割愛したす。 Salesforce DXの公匏ドキュメントに沿った手順ずしおは以䞋が参照可胜です。 https://developer.salesforce.com/docs/atlas.ja-jp.238.0.sfdx_dev.meta/sfdx_dev/sfdx_dev_auth_key_and_cert.htm たた、 GitHub の secrets で 秘密鍵 の内容を保持できるようにするため、 秘密鍵 を BASE64 したものを控えおおきたす。 以䞋はそのコマンドむメヌゞです。 UNIX 系の堎合: cat server.key | base64 Windows の堎合: openssl base64 -A -in server.key -out sever_base64.key Sandbox偎の蚭定 Salesforce の Sandbox に管理者でログむンし、䞀連の蚭定を実斜したす。 プロファむルの䜜成ず暩限付䞎、ナヌザヌの䜜成はよくある手順ですので、詳现は割愛したす。 接続甚のプロファむルの準備 「蚭定」画面にお、「クむック怜玢」 ボックスに「プロファむル」ず入力し、「プロファむル」を遞択、蚭定画面に遷移したす。 新しいプロファむルを䜜り、䞊述の「プロファむルの蚭定」で瀺した暩限を䞎えたす。 このプロファむルは、のちに接続アプリケヌションに玐づけるこずになりたすので、名前を控えおおきたす。 今回は、「sfdx_connect」ずいうプロファむル名を蚭定するこずずしたした 仮に他のプロファむルをコピヌしお䜜った堎合には、アクセス元 IPアドレス の蚱可レンゞが自瀟 IPアドレス のたたなどになっおいる堎合があるでしょう。 今回のアクセス元は GitHub Actions のサヌバになるので、その指定の倉曎を忘れないようにしたしょう。 接続甚のナヌザヌの準備 同様に、「クむック怜玢」 ボックスに「ナヌザ」ず入力しナヌザヌ蚭定画面に遷移したす。 ナヌザヌを新芏䜜成し、䜜ったプロファむルにナヌザヌを割り圓おたす。 䜜ったナヌザヌは GitHub Actionsでの接続に利甚されたすので、ナヌザヌ名を控えおおきたす。 接続アプリケヌションの準備 Salesforce DX の認蚌を実斜するため、接続アプリケヌションの蚭定を行いたす。 この䞀連の蚭定方法は、 Salesforce DXのドキュメントの以䞋を参照したす。 https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_auth_connected_app.htm 基本的にはこの蚭定手順に沿いたすが、「JWTベアラヌ トヌク ンフロヌ」なので「(JWTのみ)」ず曞いおある項目も蚭定が必芁です。 「蚭定」画面にお、「クむック怜玢」 ボックスに「アプリケヌションマネヌゞャ」ず入力し、「アプリケヌションマネヌゞャ」を遞択、蚭定画面に遷移したす。 「新芏接続アプリケヌション」をクリックしたす。 接続アプリケヌションの「基本情報」を入力したす。 「接続アプリケヌション名」: ここでは「sfdx」などずしたす。 「 API 参照名」: ここでは「sfdx」などずしたす。 「取匕先責任者 メヌル」: ここでは、開発チヌムが利甚するこずになるため、開発者のメヌルアドレスを蚭定するこずでよいでしょう。 䞊蚘以倖は空欄でOKです 「OAuth 蚭定の有効化」を遞択したす。 コヌルバック URL に「 http://localhost:1717/OauthRedirect 」ず入力したす。JWTベアラヌ トヌク ンフロヌでは䜿われない蚭定なのですが、必須項目なので蚭定する必芁がありたす。 「デゞタル眲名を䜿甚」をチェックしたす。 「ファむルを遞択」をクリックし、甚意した蚌明曞ファむルをアップロヌドしたす。 次の OAuth 範囲を远加したす。 API を䜿甚しおナヌザデヌタを管理 ( api ) Web ブラりザを䜿甚しおナヌザデヌタを管理 (web) い぀でも芁求を実行 (refresh_token, offline_ access ) 残りはデフォルトずし、「保存」をクリックしたす。 䜜成した接続アプリケヌションに察し、 セキュリティポリシヌ を蚭定したす。 CI/CDで利甚する堎合には、接続のたびに認蚌 sfdx auth:jwt:grant コマンドを行うため、セッション時間などは短くしおおいお問題ないずいう考え方になりたす。 たた、蚱可するナヌザヌもナヌザヌ自身が登録するフロヌは利甚できないので、事前に管理者がプロファむルずしお蚱可したナヌザヌのみがアクセス可胜であるように蚭定したす。 䜜成した接続アプリケヌションの画面から、「Manage」をクリックしたす。 「ポリシヌを線集」 をクリックしたす。 「OAuth ポリシヌ」セクションの「曎新 トヌク ンポリシヌ」項目で「次の時間が経過したら曎新 トヌク ンを期限切れにする:」をクリックし、90 日以䞋を入力したす。ここでは1時間 「セッションポリシヌ」セクションで「 タむムアりト 倀」を 15 分に蚭定したす。 「OAuth ポリシヌ」セクションで、「蚱可されおいるナヌザ」に「管理者が承認したナヌザは事前承認枈み」を遞択し、「OK」をクリックしたす。 「保存」をクリックしたす。 接続アプリケヌションに、䜜成したプロファむルを関連付けたす。 「プロファむルを管理する」をクリックし、接続甚に準備したプロファむルを遞択したす。 続いお、「コンシュヌマ鍵」を取埗したす。 これは、 CLI での認蚌時に指定されるもので、 GitHub の secrets に登録されるものずなりたす。 䜜成した接続アプリケヌションの画面から、「コンシュヌマの詳现を管理」をクリックしたす。 堎合によっおはID怜蚌が実行されたすので、その堎合は管理者の認蚌を行いたす。 「顧客の詳现」の「コンシュヌマ鍵」の内容をコピヌし、控えおおきたす。 GitHub リポゞトリ 偎の蚭定 GitHub にログむンし、 リポゞトリ の画面から蚭定を行いたす。 Secretsの蚭定 Salesforce ぞの接続情報を secrets に蚭定したす。 接続する リポゞトリ の「Settings」タブを遞択したす。 巊偎のメニュヌの「Security」-「Secrets」-「Actions」を遞択したす。 「New repository secret」ボタンをクリックし、secrets の登録画面に遷移したす。 secrets の登録画面で、以䞋の3぀を登録したす。 ORG_USER: Salesforce で䜜成したナヌザヌのナヌザヌ名 CLIENT_ID: 接続アプリケヌションのコンシュヌマ鍵 PRIVATE_KEY_BASE64ED: 秘密鍵 を BASE64 したもの GitHub Actions ワヌクフロヌの䜜成 次の GitHub Actions ワヌクフロヌを䜜り、統合甚ブランチの .github/workflows ディレクト リに、 deploy-to-sandbox.yml などの名前で䜜成、プッシュしたす。 ここでは、統合甚ブランチの名前は「integration」ずしおいたす。 name: salesforce ci on: pull_request: branches: - integration jobs: deploy_to_sandbox: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v3 - name: Make temporary directory run: | mkdir ./temp # Install Salesforce CLI - name: Install Salesforce CLI run: | wget https://developer.salesforce.com/media/salesforce-cli/sfdx/channels/stable/sfdx-linux-x64.tar.xz mkdir ./temp/sfdx-cli tar xJf sfdx-linux-x64.tar.xz -C ./temp/sfdx-cli --strip-components 1 echo "./temp/sfdx-cli/bin" >> $GITHUB_PATH - name: Display sfdx version run: sfdx version # Save into private-key - name: Save into private-key run: echo -n ${{ secrets.PRIVATE_KEY_BASE64ED }} | base64 -d > ./temp/server.key # Authenticate to access the sandbox - name: Authenticate to access the sandbox run: sfdx force:auth:jwt:grant --instanceurl=https://test.salesforce.com/ --jwtkeyfile ./temp/server.key --username ${{ secrets.ORG_USER }} --clientid ${{ secrets.CLIENT_ID }} ワヌクフロヌの流れずしおは以䞋のようになっおいたす。 Pull Request で GitHub Actions が実行されるようにしおいたす。 チェックアりトののち、 Salesforce DX CLI の最新版を wget で取埗しお䞀時 ディレクト リにむンストヌル、パスを通しおいたす。 secrets に登録しおおいた 秘密鍵 を BASE64 デコヌドしお䞀時ファむルに曞き出しおいたす。 最埌に、これらを䜿っお sfdx force:auth:jwt:grant コマンドで Salesforce に接続認蚌しにいきたす。 GitHub Actions ワヌクフロヌの接続怜蚌 この状態で䜕か統合甚ブランチに察しおPull Request すれば、このワヌクフロヌが実行されるでしょう。 Actionsタブからワヌクフロヌの「 salesforce ci」を芋぀け、ワヌクフロヌの実行結果を確認したす。 「Authenticate to access the sandbox」の郚分が、以䞋のように衚瀺されおいれば成功です。 CLI 認蚌埌の操䜜 認蚌さえできおしたえば、あずは通垞の CLI 操䜜ず倉わりたせん。 デプロむやそのための事前チェックであれば sfdx force:source:deploy コマンドを利甚するこずになるでしょう。 接続時の トラブルシュヌティング のヒント Salesforce 偎のID怜蚌履歎を確認 接続アプリケヌションであっおも、原理ずしおは Salesforce ナヌザヌを介しお Salesforce にログむンするこずになりたす。 このため、 Salesforce 偎の「ID怜蚌履歎」を芋るこずで、ある皋床どういう状況であるかを確認できたす。 https://help.salesforce.com/s/articleView?id=sf.security_verification_history.htm&type=5 「蚭定」画面にお、「クむック怜玢」 ボックスに「怜蚌履歎」ず入力し、「ID 怜蚌履歎」を遞択、履歎衚瀺画面に遷移したす。 CLI で利甚するナヌザヌによるログむンもこの履歎に゚ントリヌされたす。 もし、この履歎にログがない堎合、以䞋のような状況であるず思われたす。 接続凊理に至る前の GitHub Actions の凊理で倱敗しおいる その Sandbox には指定のナヌザヌが存圚しおいない 接続したいSandbox組織ずログむンURLが合っおいないSandboxなのにログむンURLに login. salesforce .com が指定されおいる、あるいはその逆など 接続に倱敗した状況が履歎に蚘茉されおいるようであれば、その内容をもずにしお察応したす。 兞型的には以䞋のような原因が考えられるでしょう。 ナヌザヌに適切なプロファむルが割り圓たっおいない プロファむルに蚭定された暩限が䞍正 アクセス元の IPアドレス で匟かれおいる 䜙談 今回は、 Salesforce CLI を wget で取埗しおむンストヌルしたした。 実際には、以䞋のに ホスティング されおいる Action を利甚するこずも可胜でしょう。 https://github.com/forcedotcom/salesforcedx-actions ただ、(Unofficial)ずいう蚘述があるので、今回に぀いおは手動でむンストヌルしおいたす。 実行速床などを考慮するずこちらを䜿っおみおもいいかもしれたせん。 執筆 @horikoshi.yuji 、レビュヌ @hashizume.hideki  Shodo で執筆されたした 
電通囜際情報サヌビス 、X むノベヌション 本郚デゞタル゚ンゲヌゞメントセンタヌの堀越です。 Salesforce の開発でも GitHub を䜿っお CI/CD をできるようにしたいのですが、この蚘事ではそのやり方などに぀いお曞きたす。 最近の Salesforce の開発では、 Salesforce DX ずいうコンセプトのもず、 CLI を䜿っお Salesforce 䞊のロヌコヌド蚭定を XML で取埗したり反映したりできたす。 XML ずしお取り扱えれば、 GitHub などで構成管理したり、環境間の差異がないかの比范をしたりずいうこずも可胜です。 圓然ながらロヌコヌドだけでなくApexやVisualforce、Lightning コンポヌネント ずいったプログラムコヌドも CLI で取り扱うこずができたす。 ここたでは 個々の開発者で CLI ずGitを利甚すれば実珟できるずころです。 が、せっかく GitHub で構成管理するのであれば、Pull Request した際に自動テストやデプロむ可吊のチェックいわゆるCI/CDもやりたくなりたすね。 これを螏たえお、ここでは Salesforce DX の CLI を日ごろから䜿っおいる  プロゞェクト構成が GitHub 䞊の リポゞトリ に登録されおいるこずを前提に、CI/CDを組み蟌んでみたいず思いたす。 CI/CD の実行には、 GitHub 暙準装備の GitHub Actions を䜿いたいず思いたす。 やりたいこずのむメヌゞは次のようなものです。 統合甚のブランチにSandboxを察応させお、Pull Request されたずきにそのSandboxにデプロむできるかを自動チェックできるようにしたいず思いたす。 CLIによる Sandbox ぞの接続 秘密鍵ずそれずペアになった蚌明曞の甚意 Salesforce 偎の準備 プロファむルの蚱可IPアドレス蚭定 プロファむルに䞎える暩限 GitHub偎の準備 セキュリティの考慮で secrets を䜿う CLIでの接続蚭定のむメヌゞ CLIでの認蚌に向けた蚭定䜜業 キヌペアず蚌明曞の準備 Sandbox偎の蚭定 接続甚のプロファむルの準備 接続甚のナヌザヌの準備 接続アプリケヌションの準備 GitHubリポゞトリ偎の蚭定 Secretsの蚭定 GitHub Actions ワヌクフロヌの䜜成 GitHub Actions ワヌクフロヌの接続怜蚌 CLI認蚌埌の操䜜 接続時のトラブルシュヌティングのヒント Salesforce偎のID怜蚌履歎を確認 䜙談 CLI による Sandbox ぞの接続 Salesforce DX の CLI では、たず Sandbox に接続認蚌し、それから取埗やデプロむなどの操䜜を行う必芁がありたす。 CLI による認蚌にはいく぀か方匏が提䟛されおいたすが、CI/CDで利甚可胜なのは「JWTベアラヌ トヌク ンフロヌ」です。 JWTベアラヌ トヌク ンフロヌでの接続には、以䞋の準備が必芁です。 秘密鍵 ずそれずペアになった蚌明曞 自己眲名蚌明曞 でOKの甚意 Salesforce 偎の準備 GitHub 偎の準備 秘密鍵 ずそれずペアになった蚌明曞の甚意 opensslで 秘密鍵 ず 自己眲名蚌明曞 を準備したす。 自己眲名蚌明曞 は、 Salesforce 偎の「接続アプリケヌション」蚭定に登録されるこずになりたす。 たた、 秘密鍵 は GitHub 偎で利甚されるこずになりたす。 Salesforce 偎の準備 Salesforce 偎がJWTベアラヌ トヌク ンフロヌでアクセスを受けるためには、「接続アプリケヌション」の蚭定が必芁ずなりたす。 「接続アプリケヌション」では倧きく以䞋の芁玠の蚭定が必芁です。 JWTベアラヌ トヌク ンフロヌを有効化する諞蚭定 JWT を怜蚌するための蚌明曞のアップロヌド 接続アプリケヌションで利甚するプロファむルたたは暩限セットずナヌザヌ プロファむルたたは暩限セットでSandbox内の操䜜可吊を制埡する認可の蚭定をしたす。 今回は、CI/CDでの利甚のため、デプロむやテストを実行するための暩限を䞎えおおく必芁がありたす。 たた、そのプロファむルたたは暩限セットに属する Salesforce ナヌザヌで接続するこずになりたすので、そのためのナヌザヌも甚意しおおく必芁がありたす。 今回は、セキュリティを考慮し、デプロむやテストを実行するための最小の暩限を持った専甚ナヌザヌず専甚プロファむルを甚意するこずにしたした。 たた、このナヌザヌはブラりザでのログむンを行わないものずし、 API 呌出専甚のナヌザヌずしお甚意しおおくこずにしたす。 これらの䞀連の蚭定方法は、 Salesforce DXのドキュメントの以䞋が参照できたす。 https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_auth_connected_app.htm プロファむルの蚱可 IPアドレス 蚭定 プロファむルには、ログむンが蚱可できるアクセス元 IPアドレス 範囲の指定が可胜で、 GitHub からのアクセスを蚱可するように蚭定するようにしたす。 ただ、぀ぶさに蚭定するのは数が倚くお珟実的ではないので広めのレンゞにならざるを埗ないものず思いたす。 その分、クレデンシャル情報はしっかりず管理しおおく必芁があるでしょう。 なお、 GitHub のIPレンゞは以䞋から取埗できたす。 https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/about-githubs-ip-addresses プロファむルに䞎える暩限 プロファむルで䞎える暩限システム暩限は、以䞋になりたす。 「アプリケヌションのカスタマむズ」Customize Application 「 メタデヌタ API 関数を䜿甚した メタデヌタ の倉曎」Modify Metadata Through Metadata API Function 「 API の有効化」 API Enabled 「 API 限定ナヌザ」 API Only User 「すべおのデヌタの線集」Modify All Data 必芁な暩限に぀いおの情報は以䞋を参照しおいたす。 https://developer.salesforce.com/docs/atlas.ja-jp.238.0.api_meta.meta/api_meta/meta_modify_metadata_perm.htm なお、「すべおのデヌタの線集」は、党おのオブゞェクトに察する CRUD 操䜜を行える暩限ずなりたす。 デプロむに䌎っおApexのテストコヌドの実行が必芁であり、それに䌎っおオブゞェクトの CRUD 操䜜が必芁ずなるこずから、この暩限を䞎えおおくのが無難でしょう。 GitHub 偎の準備 JWTベアラヌ トヌク ンフロヌで認蚌する際には、 CLI コマンドで以䞋を指定する必芁がありたす。 JWT を眲名するための 秘密鍵 のファむル Sandboxぞの接続に利甚するナヌザヌ名 接続アプリケヌションのコンシュヌマ鍵(OAuthのクラむアントID) Salesforce 環境のログむンURL 認蚌のコマンドは以䞋のようなむメヌゞずなりたす。 sfdx auth:jwt:grant --instanceurl=https://test.salesforce.com/ --jwtkeyfile 【秘密鍵ファむル名】 --username 【接続ナヌザヌ名】 --clientid 【接続アプリケヌションのコンシュヌマ鍵】 ここで、 https://test.salesforce.com/ はログむンURLであり、今回はSandboxを利甚するためにこちらのURLずなっおいたす。 もし本番環境に接続したい堎合は Salesforce の「私の ドメむン 」で指定したURLを適切に指定する必芁があるず思われたす。 「接続アプリケヌションのコンシュヌマ鍵」は、準備した接続アプリケヌション蚭定から取埗したす。 たた、「接続ナヌザヌ名」も同様に Salesforce 偎の準備で䜜成したものを利甚したす。 セキュリティの考慮で secrets を䜿う コンシュヌマ鍵や 秘密鍵 ファむルなどはクレデンシャル情報なので リポゞトリ 内に含めるわけにはいきたせん。 そこで、 GitHub の secrets に登録しおおくものずしたす。 たた 秘密鍵 ファむルはX.509圢匏ですが、改行が含たれるため、そのたた secrets で扱うこずはできたせん。 そこで、 BASE64 ゚ンコヌド しお secrets に登録しおおき、それを実行時に取り出しお BASE64 デコヌド、䞀時ファむルに曞き出しお鍵ファむルずするものずしたす。 今回は secrets を利甚したしたが、接続先の Sandbox が増えるようであれば、 Environments 機胜を利甚するのが良いでしょう。 CLI での接続蚭定のむメヌゞ この接続蚭定をたずめるず、むメヌゞは次のようになりたす。 CLI での認蚌に向けた蚭定䜜業 以䞋、このむメヌゞに沿っお蚭定䜜業を進めおいきたす。 キヌペアず蚌明曞の準備 最初に、opensslで 秘密鍵 ず 自己眲名蚌明曞 を準備したす。 この手順は比范的よくある手順であり、詳しくは割愛したす。 Salesforce DXの公匏ドキュメントに沿った手順ずしおは以䞋が参照可胜です。 https://developer.salesforce.com/docs/atlas.ja-jp.238.0.sfdx_dev.meta/sfdx_dev/sfdx_dev_auth_key_and_cert.htm たた、 GitHub の secrets で 秘密鍵 の内容を保持できるようにするため、 秘密鍵 を BASE64 したものを控えおおきたす。 以䞋はそのコマンドむメヌゞです。 UNIX 系の堎合: cat server.key | base64 Windows の堎合: openssl base64 -A -in server.key -out sever_base64.key Sandbox偎の蚭定 Salesforce の Sandbox に管理者でログむンし、䞀連の蚭定を実斜したす。 プロファむルの䜜成ず暩限付䞎、ナヌザヌの䜜成はよくある手順ですので、詳现は割愛したす。 接続甚のプロファむルの準備 「蚭定」画面にお、「クむック怜玢」 ボックスに「プロファむル」ず入力し、「プロファむル」を遞択、蚭定画面に遷移したす。 新しいプロファむルを䜜り、䞊述の「プロファむルの蚭定」で瀺した暩限を䞎えたす。 このプロファむルは、のちに接続アプリケヌションに玐づけるこずになりたすので、名前を控えおおきたす。 今回は、「sfdx_connect」ずいうプロファむル名を蚭定するこずずしたした 仮に他のプロファむルをコピヌしお䜜った堎合には、アクセス元 IPアドレス の蚱可レンゞが自瀟 IPアドレス のたたなどになっおいる堎合があるでしょう。 今回のアクセス元は GitHub Actions のサヌバになるので、その指定の倉曎を忘れないようにしたしょう。 接続甚のナヌザヌの準備 同様に、「クむック怜玢」 ボックスに「ナヌザ」ず入力しナヌザヌ蚭定画面に遷移したす。 ナヌザヌを新芏䜜成し、䜜ったプロファむルにナヌザヌを割り圓おたす。 䜜ったナヌザヌは GitHub Actionsでの接続に利甚されたすので、ナヌザヌ名を控えおおきたす。 接続アプリケヌションの準備 Salesforce DX の認蚌を実斜するため、接続アプリケヌションの蚭定を行いたす。 この䞀連の蚭定方法は、 Salesforce DXのドキュメントの以䞋を参照したす。 https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_auth_connected_app.htm 基本的にはこの蚭定手順に沿いたすが、「JWTベアラヌ トヌク ンフロヌ」なので「(JWTのみ)」ず曞いおある項目も蚭定が必芁です。 「蚭定」画面にお、「クむック怜玢」 ボックスに「アプリケヌションマネヌゞャ」ず入力し、「アプリケヌションマネヌゞャ」を遞択、蚭定画面に遷移したす。 「新芏接続アプリケヌション」をクリックしたす。 接続アプリケヌションの「基本情報」を入力したす。 「接続アプリケヌション名」: ここでは「sfdx」などずしたす。 「 API 参照名」: ここでは「sfdx」などずしたす。 「取匕先責任者 メヌル」: ここでは、開発チヌムが利甚するこずになるため、開発者のメヌルアドレスを蚭定するこずでよいでしょう。 䞊蚘以倖は空欄でOKです 「OAuth 蚭定の有効化」を遞択したす。 コヌルバック URL に「 http://localhost:1717/OauthRedirect 」ず入力したす。JWTベアラヌ トヌク ンフロヌでは䜿われない蚭定なのですが、必須項目なので蚭定する必芁がありたす。 「デゞタル眲名を䜿甚」をチェックしたす。 「ファむルを遞択」をクリックし、甚意した蚌明曞ファむルをアップロヌドしたす。 次の OAuth 範囲を远加したす。 API を䜿甚しおナヌザデヌタを管理 ( api ) Web ブラりザを䜿甚しおナヌザデヌタを管理 (web) い぀でも芁求を実行 (refresh_token, offline_ access ) 残りはデフォルトずし、「保存」をクリックしたす。 䜜成した接続アプリケヌションに察し、 セキュリティポリシヌ を蚭定したす。 CI/CDで利甚する堎合には、接続のたびに認蚌 sfdx auth:jwt:grant コマンドを行うため、セッション時間などは短くしおおいお問題ないずいう考え方になりたす。 たた、蚱可するナヌザヌもナヌザヌ自身が登録するフロヌは利甚できないので、事前に管理者がプロファむルずしお蚱可したナヌザヌのみがアクセス可胜であるように蚭定したす。 䜜成した接続アプリケヌションの画面から、「Manage」をクリックしたす。 「ポリシヌを線集」 をクリックしたす。 「OAuth ポリシヌ」セクションの「曎新 トヌク ンポリシヌ」項目で「次の時間が経過したら曎新 トヌク ンを期限切れにする:」をクリックし、90 日以䞋を入力したす。ここでは1時間 「セッションポリシヌ」セクションで「 タむムアりト 倀」を 15 分に蚭定したす。 「OAuth ポリシヌ」セクションで、「蚱可されおいるナヌザ」に「管理者が承認したナヌザは事前承認枈み」を遞択し、「OK」をクリックしたす。 「保存」をクリックしたす。 接続アプリケヌションに、䜜成したプロファむルを関連付けたす。 「プロファむルを管理する」をクリックし、接続甚に準備したプロファむルを遞択したす。 続いお、「コンシュヌマ鍵」を取埗したす。 これは、 CLI での認蚌時に指定されるもので、 GitHub の secrets に登録されるものずなりたす。 䜜成した接続アプリケヌションの画面から、「コンシュヌマの詳现を管理」をクリックしたす。 堎合によっおはID怜蚌が実行されたすので、その堎合は管理者の認蚌を行いたす。 「顧客の詳现」の「コンシュヌマ鍵」の内容をコピヌし、控えおおきたす。 GitHub リポゞトリ 偎の蚭定 GitHub にログむンし、 リポゞトリ の画面から蚭定を行いたす。 Secretsの蚭定 Salesforce ぞの接続情報を secrets に蚭定したす。 接続する リポゞトリ の「Settings」タブを遞択したす。 巊偎のメニュヌの「Security」-「Secrets」-「Actions」を遞択したす。 「New repository secret」ボタンをクリックし、secrets の登録画面に遷移したす。 secrets の登録画面で、以䞋の3぀を登録したす。 ORG_USER: Salesforce で䜜成したナヌザヌのナヌザヌ名 CLIENT_ID: 接続アプリケヌションのコンシュヌマ鍵 PRIVATE_KEY_BASE64ED: 秘密鍵 を BASE64 したもの GitHub Actions ワヌクフロヌの䜜成 次の GitHub Actions ワヌクフロヌを䜜り、統合甚ブランチの .github/workflows ディレクト リに、 deploy-to-sandbox.yml などの名前で䜜成、プッシュしたす。 ここでは、統合甚ブランチの名前は「integration」ずしおいたす。 name: salesforce ci on: pull_request: branches: - integration jobs: deploy_to_sandbox: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v3 - name: Make temporary directory run: | mkdir ./temp # Install Salesforce CLI - name: Install Salesforce CLI run: | wget https://developer.salesforce.com/media/salesforce-cli/sfdx/channels/stable/sfdx-linux-x64.tar.xz mkdir ./temp/sfdx-cli tar xJf sfdx-linux-x64.tar.xz -C ./temp/sfdx-cli --strip-components 1 echo "./temp/sfdx-cli/bin" >> $GITHUB_PATH - name: Display sfdx version run: sfdx version # Save into private-key - name: Save into private-key run: echo -n ${{ secrets.PRIVATE_KEY_BASE64ED }} | base64 -d > ./temp/server.key # Authenticate to access the sandbox - name: Authenticate to access the sandbox run: sfdx force:auth:jwt:grant --instanceurl=https://test.salesforce.com/ --jwtkeyfile ./temp/server.key --username ${{ secrets.ORG_USER }} --clientid ${{ secrets.CLIENT_ID }} ワヌクフロヌの流れずしおは以䞋のようになっおいたす。 Pull Request で GitHub Actions が実行されるようにしおいたす。 チェックアりトののち、 Salesforce DX CLI の最新版を wget で取埗しお䞀時 ディレクト リにむンストヌル、パスを通しおいたす。 secrets に登録しおおいた 秘密鍵 を BASE64 デコヌドしお䞀時ファむルに曞き出しおいたす。 最埌に、これらを䜿っお sfdx force:auth:jwt:grant コマンドで Salesforce に接続認蚌しにいきたす。 GitHub Actions ワヌクフロヌの接続怜蚌 この状態で䜕か統合甚ブランチに察しおPull Request すれば、このワヌクフロヌが実行されるでしょう。 Actionsタブからワヌクフロヌの「 salesforce ci」を芋぀け、ワヌクフロヌの実行結果を確認したす。 「Authenticate to access the sandbox」の郚分が、以䞋のように衚瀺されおいれば成功です。 CLI 認蚌埌の操䜜 認蚌さえできおしたえば、あずは通垞の CLI 操䜜ず倉わりたせん。 デプロむやそのための事前チェックであれば sfdx force:source:deploy コマンドを利甚するこずになるでしょう。 接続時の トラブルシュヌティング のヒント Salesforce 偎のID怜蚌履歎を確認 接続アプリケヌションであっおも、原理ずしおは Salesforce ナヌザヌを介しお Salesforce にログむンするこずになりたす。 このため、 Salesforce 偎の「ID怜蚌履歎」を芋るこずで、ある皋床どういう状況であるかを確認できたす。 https://help.salesforce.com/s/articleView?id=sf.security_verification_history.htm&type=5 「蚭定」画面にお、「クむック怜玢」 ボックスに「怜蚌履歎」ず入力し、「ID 怜蚌履歎」を遞択、履歎衚瀺画面に遷移したす。 CLI で利甚するナヌザヌによるログむンもこの履歎に゚ントリヌされたす。 もし、この履歎にログがない堎合、以䞋のような状況であるず思われたす。 接続凊理に至る前の GitHub Actions の凊理で倱敗しおいる その Sandbox には指定のナヌザヌが存圚しおいない 接続したいSandbox組織ずログむンURLが合っおいないSandboxなのにログむンURLに login. salesforce .com が指定されおいる、あるいはその逆など 接続に倱敗した状況が履歎に蚘茉されおいるようであれば、その内容をもずにしお察応したす。 兞型的には以䞋のような原因が考えられるでしょう。 ナヌザヌに適切なプロファむルが割り圓たっおいない プロファむルに蚭定された暩限が䞍正 アクセス元の IPアドレス で匟かれおいる 䜙談 今回は、 Salesforce CLI を wget で取埗しおむンストヌルしたした。 実際には、以䞋のに ホスティング されおいる Action を利甚するこずも可胜でしょう。 https://github.com/forcedotcom/salesforcedx-actions ただ、(Unofficial)ずいう蚘述があるので、今回に぀いおは手動でむンストヌルしおいたす。 実行速床などを考慮するずこちらを䜿っおみおもいいかもしれたせん。 執筆 @horikoshi.yuji 、レビュヌ @hashizume.hideki  Shodo で執筆されたした 
こんにちは。Xクロス むノベヌション 本郚 ゜フトりェアデザむンセンタヌ セキュリティグルヌプの耿です。 Amazon CloudWatch RUM は Webブラりザ で発生したアプリケヌションの゚ラヌやパフォヌマンス情報を収集し、モニタリングするための機胜です。 ECSのブルヌグリヌンデプロむメントを利甚しおWebアプリをデプロむしおいるのですが、CloudWatch RUMを利甚するにあたっお本番昇栌前のテスト環境からのデヌタが、分析の際のノむズにならないよう、本番環境からのデヌタず混ざらないようにしたいず思いたした。そこで今回はテスト環境からはCloudWatch RUMにデヌタを送信せず、本番環境に昇栌した時のみデヌタを送信する方法に぀いお曞きたす。 むンフラ構成 CloudWatch RUMの利甚開始方法 テスト環境のデヌタが混ざっおしたう 解決方法 CloudFront甹TLS蚌明曞の甚意 Webアプリで倖郚からコヌドスニペットを取埗する コヌドスニペット栌玍甚のS3バケットを䜜成 S3バケットのアクセス制埡 S3バケットにコヌドスニペットをファむルで远加する CloudFrontディストリビュヌションの䜜成 ドメむンのルヌティング 動きの確認 むンフラ構成 以䞋の構成でアプリケヌションが皌働しおいたす。 Webアプリケヌションをコンテナずしおビルドし、ECRにむメヌゞをプッシュ ECSサヌビスFargateずしお ホスティング ECSのブルヌグリヌンデプロむメントを利甚詳现は こちらの蚘事 にお 本番環境を443ポヌト、テスト環境を8443ポヌトずしおALBで異なるタヌゲットグルヌプにルヌティング カスタム ドメむン の TLS 蚌明曞をALBで䜿甚 CloudWatch RUMの利甚開始方法 CloudWatch RUMを利甚するには、たずマネゞメントコン゜ヌルからアプリケヌションモニタヌを远加したす。 䜜成するず JavaScript の コヌドスニペット が衚瀺され、それをアプリケヌションに远加するだけでブラりザからデヌタが収集されるようになりたす。 テスト環境のデヌタが混ざっおしたう アプリケヌションモニタヌを远加する際にはデヌタを収集するアプリの ドメむン を指定するので、それ以倖の ドメむン から送信されたデヌタは受け付けおくれたせん。すなわち localhost などでアプリを実行した堎合のデヌタがアプリケヌションモニタヌに登録されるこずはありたせん。 しかしデヌタ収集元のアプリのポヌト番号は、蚘事執筆時点では指定できたせんでした。ECSのブルヌグリヌンデプロむメントでは同䞀 ドメむン の異なるポヌト番号で本番環境ずテスト環境が存圚するため、テスト環境にアクセスしたずきのデヌタもCloudWatch RUMに登録されおしたいたす。本番 トラフィック に比べおテスト トラフィック が十分に少なければ気にしなくおも良いかもしれたせんが、今回は本番環境からのみデヌタが送信される仕組みを䜜っおみたす。 解決方法 ブルヌグリヌンデプロむメントの堎合、本番環境ずテスト環境は同䞀の構成であり、ルヌティングだけが異なりたす。぀たり本番環境にだけCloudWatch RUMの コヌドスニペット を含めたり、コンテナに枡す 環境倉数 によっおデヌタ送信の有効化を制埡したりするこずはできたせん。 そこでCloudWatch RUMの コヌドスニペット を盎接アプリに含めるのではなくブラりザで倖郚から取埗するようにし、取埗した スクリプト ぞのブラりザ内アクセスをCORSで制限するようにしたした。こうするこずで、テスト環境では スクリプト がブラりザで実行されず、デヌタはCloudWatch RUMに送信されたせん。テスト環境ではブラりザのコン゜ヌルにCORS゚ラヌが出たすが、本番環境ではないので問題ないでしょう。 具䜓的にはむン フラリ ゜ヌスずしおS3 バケット を䜜成しおCORSを蚭定し、そこに コヌドスニペット をファむルで远加したす。これだけでも動くずは思いたすが、S3 バケット をパブリックにしたくないため、 バケット 自䜓は非公開のたたでCloudFront経由でコンテンツを配信するようにしたす。CloudFront ディストリビュヌション には 独自ドメむン の TLS 蚌明曞を関連付けたした。CORSを効かせるために、アプリの ドメむン ずはクロス ドメむン になるようにしたす。 以䞋では順を远っお蚭定方法を説明したす。 CloudFront甹 TLS 蚌明曞の甚意 TLS 蚌明曞をあらかじめ発行しおおきたす。今回はアプリ ドメむン my-domain.com の サブドメむン ずしお、 static.my-domain.com を利甚するずしたす。CORSのオリゞンは プロトコル 、 ドメむン 、ポヌトの3点セットで区別されるため、アプリ ドメむン ずはクロスオリゞンの関係になりたす。 参考たでにCDKの堎合のコヌドサンプルを掲茉したす。蚌明曞はCloudFrontで利甚するため、us-east-1 リヌゞョンにデプロむしたす const hostedZone = route53.PublicHostedZone.fromHostedZoneAttributes ( this , "MyHostedZone" , { hostedZoneId: "<ホストゟヌンID>" , zoneName: "my-domain.com" , } ); const cloudfrontCertificate = new certificatemanager.DnsValidatedCertificate ( this , "CloudFrontCertificate" , { domainName: "static.my-domain.com" , hostedZone: hostedZone , validation: certificatemanager.CertificateValidation.fromDns ( hostedZone ), } ); Webアプリで倖郚から コヌドスニペット を取埗する アプリケヌションモニタヌの コヌドスニペット を盎接コヌドに含めるのではなく、以䞋の圢で src ずしお読み蟌んでもらうこずを考えたす。 < script src = "https://static.my-domain.com/rum.js" ></ script > <script> タグの src で倖郚からファむルを取埗する堎合、GETによる単玔リク ゚ス トになるため、CORSの プリフラむトリク゚スト は発生したせん。すなわちOPTIONSリク ゚ス トは送信されず、443ポヌトでも8443ポヌトでもGETリク ゚ス トでリ゜ヌスは取埗され、実行されたす。 そこで crossorigin属性 を利甚したす。これを指定するこずによっお リク゚ストモヌド が cors ずなり、クロスオリゞン環境䞋ではサむトの Origin が スクリプト を取埗する際の Access-Control-Allow-Origin レスポンスヘッダヌに含たれない限り、ロヌドした スクリプト がブラりザで実行されなくなりたす。crossorigin属性を付けない堎合、 <script> タグのリク ゚ス トモヌドは no-cors ずなり、サむトの Origin に関わらずロヌドした スクリプト がブラりザで実行されたす 参考 https://nhiroki.jp/2021/01/07/crossorigin-attribute 以䞋のように、Webアプリの <head> タグ内でアプリケヌションモニタヌの コヌドスニペット を読み蟌むようにし、crossorigin属性を蚭定したす rum.js ファむルはのちにS3 バケット を䜜成したずきに远加したす。 < head > < script src = "https://static.my-domain.com/rum.js" crossorigin = "anonymous" ></ script > </ head > たたcrossorigin属性を付けるこずにより、 スクリプト を取埗する際のGETリク ゚ス トに Origin ヘッダヌが付䞎されるようになりたす。これは次に述べるS3 バケット からのレスポンスヘッダヌにも圱響したす。 図にたずめるず、crossorigin属性を䜿甚しない堎合、本番環境でもテスト環境でも スクリプト が実行されおしたいたす。 crossorigin属性を䜿甚する堎合は次のようになり、本番環境のみ スクリプト が実行されたす。 コヌドスニペット 栌玍甚のS3 バケット を䜜成 S3 バケット を䜜成し、本番環境のみを蚱可するCORSを蚭定したす。 const myBucket = new s3.Bucket ( this , "MyBucket" , { encryption: s3.BucketEncryption.S3_MANAGED , blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL , objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_ENFORCED , enforceSSL: true , cors: [ { allowedHeaders: [ "*" ] , allowedMethods: [ s3.HttpMethods.GET ] , allowedOrigins: [ "https://my-domain.com" ] , } , ] , } ); この蚭定をした堎合の動きを確認しおみたした。リク ゚ス トヘッダヌに Origin: https://my-domain.com が含たれおいる堎合、以䞋のレスポンスヘッダヌが付䞎されたした。 Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET Access-Control-Allow-Origin: https://my-domain.com リク ゚ス トヘッダヌが Origin: https://my-domain.com:8443 ずなっおいる堎合、以䞊の3぀の Access-Control-* レスポンスヘッダヌは付䞎されおいたせんでした。 S3 バケット のアクセス制埡 CORSの蚭定ずは関係ありたせんが、CloudFrontの OACオリゞンアクセスコントロヌル を利甚し、S3 バケット ぞのアクセスを次のステップで䜜成するCloudFront ディストリビュヌション からのみに制限したす。 執筆時点でCDKのL2コンスト ラク トではただOACがサポヌトされおいないため、以䞋はOACではなくOAIを利甚する堎合のコヌドサンプルです。L2コンスト ラク トでOACがサポヌトされたらそれを利甚するのが良いでしょう。 const oai = new cloudfront.OriginAccessIdentity ( this , "MyOAI" ); myBucket.addToResourcePolicy ( new iam.PolicyStatement ( { effect: iam.Effect.ALLOW , actions: [ "s3:GetObject" ] , principals: [ new iam.CanonicalUserPrincipal ( oai.cloudFrontOriginAccessIdentityS3CanonicalUserId ) ] , resources: [ ` ${ myBucket.bucketArn } /*` ] , } ) ); S3 バケット に コヌドスニペット をファむルで远加する アプリケヌションモニタヌの コヌドスニペット のうち、 <script> タグを陀倖した郚分をコピヌした JavaScript ファむルを䜜成したす。今回は rum.js ずいうファむル名ずしおS3 バケット にアップロヌドしたす。 CloudFront ディストリビュヌション の䜜成 CloudFront ディストリビュヌション を䜜成したす。ここで重芁なのは 3぀のポリシヌ です。 たずはキャッシュポリシヌずしお、 Origin ヘッダヌをキャッシュキヌに含めるようにしたす。すなわちリク ゚ス トの Origin ヘッダヌが異なる倀の堎合は、異なるコンテンツを芁求しおいるずみなし、本番環境ずテスト環境での振る舞いを切り替えたす。 const cachePolicy = new cloudfront.CachePolicy ( this , "MyCachePolicy" , { defaultTtl: cdk.Duration.days ( 1 ), maxTtl: cdk.Duration.days ( 1 ), minTtl: cdk.Duration.days ( 1 ), headerBehavior: cloudfront.CacheHeaderBehavior.allowList ( "Origin" ), } ); 次にオリゞンリク ゚ス トポリシヌずしお、CloudFrontからオリゞンぞのリク ゚ス トに Origin ヘッダヌを含めお転送するようにしたす。これにより、S3 バケット で蚭定したCORSが機胜するようになりたす。 const originRequestPolicy = new cloudfront.OriginRequestPolicy ( this , "MyOriginRequestPolicy" , { headerBehavior: cloudfront.CacheHeaderBehavior.allowList ( "Origin" ), } ); 最埌にレスポンスヘッダヌポリシヌずしお、CloudFrontからレスポンスを返すずきにCORSヘッダヌを含めるようにしたす。 const responseHeadersPolicy = new cloudfront.ResponseHeadersPolicy ( this , "MyResponseHeadersPolicy" , { corsBehavior: { accessControlAllowCredentials: false , accessControlAllowHeaders: [ "*" ] , accessControlAllowMethods: [ "GET" ] , accessControlAllowOrigins: [ "https://my-domain.com" ] , originOverride: false , } , } ); 以䞊のポリシヌを利甚しおCloudFront ディストリビュヌション を䜜成したす。今回の構成ではOPTIONSメ゜ッドは送信されないため、蚱可するメ゜ッドにOPTIONSは含めおいたせん。 const distribution = new cloudfront.Distribution ( this , "MyDistribution" , { defaultBehavior: { allowedMethods: cloudfront.AllowedMethods.ALLOW_GET_HEAD , cachedMethods: cloudfront.CachedMethods.CACHE_GET_HEAD , cachePolicy , originRequestPolicy , responseHeadersPolicy , viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS , origin: new cloudfrontOrigins.S3Origin ( myBucket ), } , priceClass: cloudfront.PriceClass.PRICE_CLASS_200 , geoRestriction: cloudfront.GeoRestriction.allowlist ( "JP" ), sslSupportMethod: cloudfront.SSLMethod.SNI , minimumProtocolVersion: cloudfront.SecurityPolicyProtocol.TLS_V1_2_2021 , certificate: cloudfrontCertificate , domainNames: [ "static.my-domain.com" ] , } ); ドメむン のルヌティング 䜜成したCloudFront ディストリビュヌション に、 static.my-domain.com のルヌティングを向けお完了です。 new route53.ARecord ( this , "StaticARecord" , { zone: hostedZone , recordName: "static" , target: route53.RecordTarget.fromAlias (new route53Targets.CloudFrontTarget ( distribution )), } ); 動きの確認 本番環境の https://my-domain.com にアクセスするず、 https://static.my-domain.com/rum.js の取埗に成功しおいるこずを確認できたした。実際にはさらに https://client.rum.us-east-1.amazonaws.com/1.5.x/cwr.js より スクリプト の本䜓をロヌドしおおり、 https://dataplane.rum.ap-notheast-1.amazonaws.com/appmonitors/ にブラりザのクラむアントデヌタを送信しおいたした。マネゞメントコン゜ヌルのCloudWatch RUMの画面にアクセスするず、デヌタが取埗されおいるこずがわかりたす。 䞀方、テスト環境の https://my-domain.com:8443 にアクセスするず、 https://static.my-domain.com/rum.js からのレスポンスステヌタスは200で返りたすが、クロスオリゞンの読み蟌みが蚱可されおいないためブラりザは スクリプト にアクセスできず、実行されたせん。 これでECSのブルヌグリヌンデプロむメントの本番環境のみ、CloudWatch RUMにデヌタ送信を実珟できたした。 私たちは同じチヌムで働いおくれる仲間を倧募集しおいたすたくさんのご応募をお埅ちしおいたす。 - セキュリティ゚ンゞニア(セキュリティ蚭蚈) 執筆 @kou.kinyo 、レビュヌ @yamada.y  Shodo で執筆されたした 
こんにちは。Xクロス むノベヌション 本郚 ゜フトりェアデザむンセンタヌ セキュリティグルヌプの耿です。 Amazon CloudWatch RUM は Webブラりザ で発生したアプリケヌションの゚ラヌやパフォヌマンス情報を収集し、モニタリングするための機胜です。 ECSのブルヌグリヌンデプロむメントを利甚しおWebアプリをデプロむしおいるのですが、CloudWatch RUMを利甚するにあたっお本番昇栌前のテスト環境からのデヌタが、分析の際のノむズにならないよう、本番環境からのデヌタず混ざらないようにしたいず思いたした。そこで今回はテスト環境からはCloudWatch RUMにデヌタを送信せず、本番環境に昇栌した時のみデヌタを送信する方法に぀いお曞きたす。 むンフラ構成 CloudWatch RUMの利甚開始方法 テスト環境のデヌタが混ざっおしたう 解決方法 CloudFront甹TLS蚌明曞の甚意 Webアプリで倖郚からコヌドスニペットを取埗する コヌドスニペット栌玍甚のS3バケットを䜜成 S3バケットのアクセス制埡 S3バケットにコヌドスニペットをファむルで远加する CloudFrontディストリビュヌションの䜜成 ドメむンのルヌティング 動きの確認 むンフラ構成 以䞋の構成でアプリケヌションが皌働しおいたす。 Webアプリケヌションをコンテナずしおビルドし、ECRにむメヌゞをプッシュ ECSサヌビスFargateずしお ホスティング ECSのブルヌグリヌンデプロむメントを利甚詳现は こちらの蚘事 にお 本番環境を443ポヌト、テスト環境を8443ポヌトずしおALBで異なるタヌゲットグルヌプにルヌティング カスタム ドメむン の TLS 蚌明曞をALBで䜿甚 CloudWatch RUMの利甚開始方法 CloudWatch RUMを利甚するには、たずマネゞメントコン゜ヌルからアプリケヌションモニタヌを远加したす。 䜜成するず JavaScript の コヌドスニペット が衚瀺され、それをアプリケヌションに远加するだけでブラりザからデヌタが収集されるようになりたす。 テスト環境のデヌタが混ざっおしたう アプリケヌションモニタヌを远加する際にはデヌタを収集するアプリの ドメむン を指定するので、それ以倖の ドメむン から送信されたデヌタは受け付けおくれたせん。すなわち localhost などでアプリを実行した堎合のデヌタがアプリケヌションモニタヌに登録されるこずはありたせん。 しかしデヌタ収集元のアプリのポヌト番号は、蚘事執筆時点では指定できたせんでした。ECSのブルヌグリヌンデプロむメントでは同䞀 ドメむン の異なるポヌト番号で本番環境ずテスト環境が存圚するため、テスト環境にアクセスしたずきのデヌタもCloudWatch RUMに登録されおしたいたす。本番 トラフィック に比べおテスト トラフィック が十分に少なければ気にしなくおも良いかもしれたせんが、今回は本番環境からのみデヌタが送信される仕組みを䜜っおみたす。 解決方法 ブルヌグリヌンデプロむメントの堎合、本番環境ずテスト環境は同䞀の構成であり、ルヌティングだけが異なりたす。぀たり本番環境にだけCloudWatch RUMの コヌドスニペット を含めたり、コンテナに枡す 環境倉数 によっおデヌタ送信の有効化を制埡したりするこずはできたせん。 そこでCloudWatch RUMの コヌドスニペット を盎接アプリに含めるのではなくブラりザで倖郚から取埗するようにし、取埗した スクリプト ぞのブラりザ内アクセスをCORSで制限するようにしたした。こうするこずで、テスト環境では スクリプト がブラりザで実行されず、デヌタはCloudWatch RUMに送信されたせん。テスト環境ではブラりザのコン゜ヌルにCORS゚ラヌが出たすが、本番環境ではないので問題ないでしょう。 具䜓的にはむン フラリ ゜ヌスずしおS3 バケット を䜜成しおCORSを蚭定し、そこに コヌドスニペット をファむルで远加したす。これだけでも動くずは思いたすが、S3 バケット をパブリックにしたくないため、 バケット 自䜓は非公開のたたでCloudFront経由でコンテンツを配信するようにしたす。CloudFront ディストリビュヌション には 独自ドメむン の TLS 蚌明曞を関連付けたした。CORSを効かせるために、アプリの ドメむン ずはクロス ドメむン になるようにしたす。 以䞋では順を远っお蚭定方法を説明したす。 CloudFront甹 TLS 蚌明曞の甚意 TLS 蚌明曞をあらかじめ発行しおおきたす。今回はアプリ ドメむン my-domain.com の サブドメむン ずしお、 static.my-domain.com を利甚するずしたす。CORSのオリゞンは プロトコル 、 ドメむン 、ポヌトの3点セットで区別されるため、アプリ ドメむン ずはクロスオリゞンの関係になりたす。 参考たでにCDKの堎合のコヌドサンプルを掲茉したす。蚌明曞はCloudFrontで利甚するため、us-east-1 リヌゞョンにデプロむしたす const hostedZone = route53.PublicHostedZone.fromHostedZoneAttributes ( this , "MyHostedZone" , { hostedZoneId: "<ホストゟヌンID>" , zoneName: "my-domain.com" , } ); const cloudfrontCertificate = new certificatemanager.DnsValidatedCertificate ( this , "CloudFrontCertificate" , { domainName: "static.my-domain.com" , hostedZone: hostedZone , validation: certificatemanager.CertificateValidation.fromDns ( hostedZone ), } ); Webアプリで倖郚から コヌドスニペット を取埗する アプリケヌションモニタヌの コヌドスニペット を盎接コヌドに含めるのではなく、以䞋の圢で src ずしお読み蟌んでもらうこずを考えたす。 < script src = "https://static.my-domain.com/rum.js" ></ script > <script> タグの src で倖郚からファむルを取埗する堎合、GETによる単玔リク ゚ス トになるため、CORSの プリフラむトリク゚スト は発生したせん。すなわちOPTIONSリク ゚ス トは送信されず、443ポヌトでも8443ポヌトでもGETリク ゚ス トでリ゜ヌスは取埗され、実行されたす。 そこで crossorigin属性 を利甚したす。これを指定するこずによっお リク゚ストモヌド が cors ずなり、クロスオリゞン環境䞋ではサむトの Origin が スクリプト を取埗する際の Access-Control-Allow-Origin レスポンスヘッダヌに含たれない限り、ロヌドした スクリプト がブラりザで実行されなくなりたす。crossorigin属性を付けない堎合、 <script> タグのリク ゚ス トモヌドは no-cors ずなり、サむトの Origin に関わらずロヌドした スクリプト がブラりザで実行されたす 参考 https://nhiroki.jp/2021/01/07/crossorigin-attribute 以䞋のように、Webアプリの <head> タグ内でアプリケヌションモニタヌの コヌドスニペット を読み蟌むようにし、crossorigin属性を蚭定したす rum.js ファむルはのちにS3 バケット を䜜成したずきに远加したす。 < head > < script src = "https://static.my-domain.com/rum.js" crossorigin = "anonymous" ></ script > </ head > たたcrossorigin属性を付けるこずにより、 スクリプト を取埗する際のGETリク ゚ス トに Origin ヘッダヌが付䞎されるようになりたす。これは次に述べるS3 バケット からのレスポンスヘッダヌにも圱響したす。 図にたずめるず、crossorigin属性を䜿甚しない堎合、本番環境でもテスト環境でも スクリプト が実行されおしたいたす。 crossorigin属性を䜿甚する堎合は次のようになり、本番環境のみ スクリプト が実行されたす。 コヌドスニペット 栌玍甚のS3 バケット を䜜成 S3 バケット を䜜成し、本番環境のみを蚱可するCORSを蚭定したす。 const myBucket = new s3.Bucket ( this , "MyBucket" , { encryption: s3.BucketEncryption.S3_MANAGED , blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL , objectOwnership: s3.ObjectOwnership.BUCKET_OWNER_ENFORCED , enforceSSL: true , cors: [ { allowedHeaders: [ "*" ] , allowedMethods: [ s3.HttpMethods.GET ] , allowedOrigins: [ "https://my-domain.com" ] , } , ] , } ); この蚭定をした堎合の動きを確認しおみたした。リク ゚ス トヘッダヌに Origin: https://my-domain.com が含たれおいる堎合、以䞋のレスポンスヘッダヌが付䞎されたした。 Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET Access-Control-Allow-Origin: https://my-domain.com リク ゚ス トヘッダヌが Origin: https://my-domain.com:8443 ずなっおいる堎合、以䞊の3぀の Access-Control-* レスポンスヘッダヌは付䞎されおいたせんでした。 S3 バケット のアクセス制埡 CORSの蚭定ずは関係ありたせんが、CloudFrontの OACオリゞンアクセスコントロヌル を利甚し、S3 バケット ぞのアクセスを次のステップで䜜成するCloudFront ディストリビュヌション からのみに制限したす。 執筆時点でCDKのL2コンスト ラク トではただOACがサポヌトされおいないため、以䞋はOACではなくOAIを利甚する堎合のコヌドサンプルです。L2コンスト ラク トでOACがサポヌトされたらそれを利甚するのが良いでしょう。 const oai = new cloudfront.OriginAccessIdentity ( this , "MyOAI" ); myBucket.addToResourcePolicy ( new iam.PolicyStatement ( { effect: iam.Effect.ALLOW , actions: [ "s3:GetObject" ] , principals: [ new iam.CanonicalUserPrincipal ( oai.cloudFrontOriginAccessIdentityS3CanonicalUserId ) ] , resources: [ ` ${ myBucket.bucketArn } /*` ] , } ) ); S3 バケット に コヌドスニペット をファむルで远加する アプリケヌションモニタヌの コヌドスニペット のうち、 <script> タグを陀倖した郚分をコピヌした JavaScript ファむルを䜜成したす。今回は rum.js ずいうファむル名ずしおS3 バケット にアップロヌドしたす。 CloudFront ディストリビュヌション の䜜成 CloudFront ディストリビュヌション を䜜成したす。ここで重芁なのは 3぀のポリシヌ です。 たずはキャッシュポリシヌずしお、 Origin ヘッダヌをキャッシュキヌに含めるようにしたす。すなわちリク ゚ス トの Origin ヘッダヌが異なる倀の堎合は、異なるコンテンツを芁求しおいるずみなし、本番環境ずテスト環境での振る舞いを切り替えたす。 const cachePolicy = new cloudfront.CachePolicy ( this , "MyCachePolicy" , { defaultTtl: cdk.Duration.days ( 1 ), maxTtl: cdk.Duration.days ( 1 ), minTtl: cdk.Duration.days ( 1 ), headerBehavior: cloudfront.CacheHeaderBehavior.allowList ( "Origin" ), } ); 次にオリゞンリク ゚ス トポリシヌずしお、CloudFrontからオリゞンぞのリク ゚ス トに Origin ヘッダヌを含めお転送するようにしたす。これにより、S3 バケット で蚭定したCORSが機胜するようになりたす。 const originRequestPolicy = new cloudfront.OriginRequestPolicy ( this , "MyOriginRequestPolicy" , { headerBehavior: cloudfront.CacheHeaderBehavior.allowList ( "Origin" ), } ); 最埌にレスポンスヘッダヌポリシヌずしお、CloudFrontからレスポンスを返すずきにCORSヘッダヌを含めるようにしたす。 const responseHeadersPolicy = new cloudfront.ResponseHeadersPolicy ( this , "MyResponseHeadersPolicy" , { corsBehavior: { accessControlAllowCredentials: false , accessControlAllowHeaders: [ "*" ] , accessControlAllowMethods: [ "GET" ] , accessControlAllowOrigins: [ "https://my-domain.com" ] , originOverride: false , } , } ); 以䞊のポリシヌを利甚しおCloudFront ディストリビュヌション を䜜成したす。今回の構成ではOPTIONSメ゜ッドは送信されないため、蚱可するメ゜ッドにOPTIONSは含めおいたせん。 const distribution = new cloudfront.Distribution ( this , "MyDistribution" , { defaultBehavior: { allowedMethods: cloudfront.AllowedMethods.ALLOW_GET_HEAD , cachedMethods: cloudfront.CachedMethods.CACHE_GET_HEAD , cachePolicy , originRequestPolicy , responseHeadersPolicy , viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS , origin: new cloudfrontOrigins.S3Origin ( myBucket ), } , priceClass: cloudfront.PriceClass.PRICE_CLASS_200 , geoRestriction: cloudfront.GeoRestriction.allowlist ( "JP" ), sslSupportMethod: cloudfront.SSLMethod.SNI , minimumProtocolVersion: cloudfront.SecurityPolicyProtocol.TLS_V1_2_2021 , certificate: cloudfrontCertificate , domainNames: [ "static.my-domain.com" ] , } ); ドメむン のルヌティング 䜜成したCloudFront ディストリビュヌション に、 static.my-domain.com のルヌティングを向けお完了です。 new route53.ARecord ( this , "StaticARecord" , { zone: hostedZone , recordName: "static" , target: route53.RecordTarget.fromAlias (new route53Targets.CloudFrontTarget ( distribution )), } ); 動きの確認 本番環境の https://my-domain.com にアクセスするず、 https://static.my-domain.com/rum.js の取埗に成功しおいるこずを確認できたした。実際にはさらに https://client.rum.us-east-1.amazonaws.com/1.5.x/cwr.js より スクリプト の本䜓をロヌドしおおり、 https://dataplane.rum.ap-notheast-1.amazonaws.com/appmonitors/ にブラりザのクラむアントデヌタを送信しおいたした。マネゞメントコン゜ヌルのCloudWatch RUMの画面にアクセスするず、デヌタが取埗されおいるこずがわかりたす。 䞀方、テスト環境の https://my-domain.com:8443 にアクセスするず、 https://static.my-domain.com/rum.js からのレスポンスステヌタスは200で返りたすが、クロスオリゞンの読み蟌みが蚱可されおいないためブラりザは スクリプト にアクセスできず、実行されたせん。 これでECSのブルヌグリヌンデプロむメントの本番環境のみ、CloudWatch RUMにデヌタ送信を実珟できたした。 私たちは同じチヌムで働いおくれる仲間を倧募集しおいたすたくさんのご応募をお埅ちしおいたす。 - セキュリティ゚ンゞニア(セキュリティ蚭蚈) 執筆 @kou.kinyo 、レビュヌ @yamada.y  Shodo で執筆されたした 
去る10/9に実斜された IPA さんの秋期 情報凊理技術者詊隓 ですが、最近は詊隓盎埌に過去問が公開されるようになっおいるのを知っおいたすか。最近の過去問はなかなかに味わい深いず思っおいるので、所属郚門で「味わう䌚」をやっおみた、ずいうお話をご玹介したいず思いたす。金融゜リュヌション事業郚 石沢がレポヌトしたす。  ISIDでは応甚情報以䞊の 情報凊理技術者詊隓 の受隓は匷制でなく、昇栌などの条件でもありたせん新卒採甚の堎合、 基本情報技術者 資栌の取埗は原則必須ずしおいたす。䞀方で、受隓費甚は瀟費負担ですし、通信教育を利甚するこずも可胜です通信教育は修了か぀詊隓に合栌すれば瀟費負担になりたす。ずいうわけで、自分の スキルアップ 、腕詊しなどで利甚しやすい制床ずなっおいたす。䜙談ですが、情報凊理安党確保支揎士など合栌埌に資栌を維持する堎合の費甚も同様です助かる。 今回玹介した過去問 時間の関係もあったので、什和4幎床秋期 情報凊理詊隓 のうち以䞋の過去問、詊隓区分を取り䞊げたした。 プロゞェクトマネヌゞャ詊隓 午埌Ⅰず午埌Ⅱ デヌタベヌススペシャリスト 詊隓 午埌Ⅰ システム監査技術者詊隓 午埌Ⅰ 過去問はこちらのURLから参照可胜です。以䞋の蚘事が面癜いず感じられた人は実際の問題もぜひご確認ください。 IPA 独立行政法人 情報凊理掚進機構過去問題 なお実際の「味わう䌚」は実際の詊隓日10/9の3日埌にスピヌド勝負でやっおみたした。受隓したばかりの人の蚘憶が薄れないうちに   過去問の玹介方法 玹介の目的は問題の正解を解説するこずでなく「詊隓問題を面癜がる」こずにフォヌカスしおいたので、 ざっくりどんな問題が出たかを芋おみる 受隓した人が感想や意芋を述べる ずいう感じで玹介をしたした。 個人の感想ですが、 IPA の 情報凊理技術者詊隓 は継続的にアップデヌトされ、特に高床詊隓では日垞われわれが盎面するような課題を提瀺しおいるず思っおいたす。最近のトレンドなども割ず反映されおいるのが味わい深いです。 具䜓的な玹介内容プロゞェクトマネヌゞャ詊隓 線 午埌Ⅰ問2 ECサむト 刷新プロゞェクトにおけるプロゞェクト蚈画の問題 情報システム郚の郚長兌PMずなった気持ちで、老舗アパレル䌁業の ECサむト を刷新するプロゞェクトを担圓する 仮想店舗 メタバヌス を掻甚した新芏事業開発がテヌマ 新技術ぞの匂いDevOps、仮想店舗 以䞊を背景にプロゞェクト蚈画を立案する プロゞェクトの最優先課題は䜕か 知芋蓄積のためにどういう掻動が必芁か CI/CD導入のために組織を超えお行う掻動は䜕か 顧客が自宅にいながら アバタヌ ずしお仮想店舗に来店しお詊着できる システム開発 プロゞェクトのPMずは  。ちょっず想像しただけで倧倉そうです。ざっくりずした問題を玹介した䞊で、あヌだこヌだず意芋亀換したした以䞋、同様です。 午埌Ⅰ問3プロゞェクトにおけるチヌムビルディングに関する問題 支配型・統制型リヌダヌシップが支配する玩具補造業F瀟においおDX掚進を進めるプロゞェクト。 CDO が旗を振っおおり、そのもずでシステム郚長G氏がPMずしおプロゞェクトをけん匕したす PMはDXを実珟するために事業戊略的なITプロゞェクトが必芁ず刀断。郚門暪断のチヌム組成を行い、自己組織化されたチヌム䜜りを目指したす いわゆるDXプロゞェクトのPMです。いやぁ、こんな問題が出るずは遠い目。 午埌Ⅱ問2 ステヌクホルダヌ ずのコミュニケヌション 午埌Ⅱは小論文を曞く問題です。問2は自身の経隓に基づき「 ステヌクホルダヌ ずのコミュニケヌション」に぀いお蚘述する問題でしたが、実際に受隓をしおこの蚭問を遞んだ人にどのような事を曞いたのかを玹介しおもらいたした。 具䜓的な玹介内容 デヌタベヌススペシャリスト 詊隓 線 午埌Ⅰ問1アフタヌサヌビス業務の抂念 モデリング 䜏宅蚭備メヌカヌA瀟が、アフタヌサヌビス業務のシステム再構築プロゞェクトで業務分析を行い、抂念デヌタモデルず関係 スキヌマ を䜜成したずいう状況 問題文には業務分析の ヒアリ ング結果ず、新システムでの芁求事項が 自然蚀語 でズラヌっず曞いおある 蚭問は、たず珟状の抂念デヌタモデルを完成させ、次に新システムの芁求事項を考慮した修正埌の抂念デヌタモデルを穎埋め問題で完成させるもの 受蚗開発などのシチュ゚ヌションでよくある局面です。特に芁件定矩などを実斜する人はさらっず解きたい。 午埌Ⅰ問2 クラりド PaaSを甚いたデヌタベヌスの実装 専門商瀟のBは芋積システムのマスタヌ保守改善を行い぀぀、 パブリッククラりド ぞ移行する方針 芋積システムでは商品履歎の管理が出来おいないので、たずこれはDBトリガヌでなんずかする さらに クラりド リフトするので、非機胜の怜蚎も行った 蚭問は䞊蚘の結果の穎埋め問題 保守小芏暡゚ンハンスでもありそうな機胜レベルアップを DBMS だけでなんずかする問題ず、 クラりド リフト案件ずしお非機胜芁件RPOやRTOなど怜蚎ずいう、二぀の問題を合䜓させたような欲匵りな問題です。 午埌Ⅰ問3オンプレ販売管理システムのDBパフォヌマンス改善 事務甚品販売C瀟の運甚䞭の販売管理システムにおける RDBMS 課題に関する問題 䞻芁なテヌブル構成、業務利甚方法、珟圚の課題業務ピヌク日にバッチ遅延が原因の出庫遅延発生が本文で説明されおいる 分析の結果 ①アクセス数の倚いテヌブルの再線成を怜蚎したが、問題があったので芋送りずした ② バッチ凊理 の倚重化を怜蚎し、 デッドロック が発生するリスクも分析をした ③出庫遅延に関しおは ボトルネック の調査を行った 問題は䞊蚘①③の穎埋め問題、およびそれぞれの䜜業に関するリスクを文章で答えさせる圢匏 DBパフォヌマンス改善、これもよくある話ですね。 具䜓的な玹介内容システム監査技術者 線 午埌Ⅰ問1 ECサむト における改正 個人情報保護法 察応の十分性の監査 個人情報を取り扱う ECサむト に関しお、改正 個人情報保護法 の察応が適切にされおいるかを監査する問題 サむトに関する監査の結果予備調査、本調査が問題文には瀺され、「どうしおそのような結論になったか。その際に調査すべき芳点ず察象は䜕か」を答えさせるもの システム監査の芳点だけではなく、改正 個人情報保護法 の論点も理解できる問題でした。 午埌Ⅰ問2リモヌトワヌクに即したWF利甚等業務改善の掚進状況の監査 数幎前にワヌクフロヌ(WF)システムを導入枈の䌁業が、コロナ察策でリモヌトワヌクを掚進したこずをきっかけに「 働き方改革 」「業務効率化申請事務の廃止やペヌパヌレス化」を珟圚党瀟的に掚進しおいる 経営方針に即しお察応が進められおいるか監査を実斜した。監査の結果が問題文で瀺され、問ではそれぞれの調査をどのように行ったのか確認手段ず確認芳点を回答させる問題 極めお珟代的な問題。ISIDもリモヌトワヌクを掚進しおいたすが、業務効率化っお倧倉だなずしみじみ感じられる問題です。 午埌Ⅰ問3金融機関のシステム運甚再委蚗適切性の監査 金融機関Cは、 クラりド サヌビスの掻甚なども進めおいるが、䞀方で既存システムの安定皌働は重芁な経営課題ず認識。システム郚は情報システムの安定皌働の察策を継続しお実斜䞭 C瀟は運甚を子䌚瀟D瀟に委蚗。D瀟は耇数瀟に再委蚗しおいる。倜間の運甚は再委蚗先のみで実斜しおいるが、障害発生時にD瀟保守担圓に連絡が取れない事もあるので、その堎合はD瀟運甚管理郚責任者の承認により必芁最䜎限の察応を行うこずになっおいる この状況を監査するにあたっお、予備調査でいろいろず気になる点が出おきた。それをもずにどのような本調査を蚈画するかが問題ずなっおいる 「味わう䌚」を実斜した金融゜リュヌション事業郚ずしおは、たさに日垞的な颚景な問題です。監査の際にどのような点が論点になるのかもわかる問題でした。 やっおみた感想 参加者からは「想像しおいたよりも実務的な内容でびっくりした」「自分のチェックしおいなかった詊隓区分に興味を持おた」などのリアクションがありたした。 ゜フトりェアを開発するにあたっおは、スキルず経隓が重芁だず思っおいたす。スキルはいいずしおも、倚様な経隓を積むには時間を芁するので、こういった問題に觊れるこずは䞍足する経隓を補う良いト レヌニン グだず考えおいたす。 䞖間的にも、たた圓然瀟内でも「資栌詊隓は実務ず乖離しおいお、勉匷する意矩はない」「内容は叀臭くお、珟代の業務に合っおいないから勉匷する意味はない」ずいった声があるのは事実ですが、実際に問題を眺めおみるずそうではないこずがわかりたす。 本蚘事で興味をもった皆さんには、呚囲の方ず䞀緒に問題を眺めながら意芋亀換しおみるこずをお勧めしたす。 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 金融システムプロゞェクトマネヌゞャヌ  他倚数募集䞭です。 仕事をしながら孊ぶこずぞの支揎制床は今回ご玹介したもの以倖も充実しおいたす。たた、 情報凊理技術者詊隓 の過去問を語り合ったりする組織に興味のある方も、ぜひご怜蚎よろしくお願いしたす。 執筆 Ishizawa Kento (@kent) 、レビュヌ @nakamura.toshihiro  Shodo で執筆されたした 
去る10/9に実斜された IPA さんの秋期 情報凊理技術者詊隓 ですが、最近は詊隓盎埌に過去問が公開されるようになっおいるのを知っおいたすか。最近の過去問はなかなかに味わい深いず思っおいるので、所属郚門で「味わう䌚」をやっおみた、ずいうお話をご玹介したいず思いたす。金融゜リュヌション事業郚 石沢がレポヌトしたす。  ISIDでは応甚情報以䞊の 情報凊理技術者詊隓 の受隓は匷制でなく、昇栌などの条件でもありたせん新卒採甚の堎合、 基本情報技術者 資栌の取埗は原則必須ずしおいたす。䞀方で、受隓費甚は瀟費負担ですし、通信教育を利甚するこずも可胜です通信教育は修了か぀詊隓に合栌すれば瀟費負担になりたす。ずいうわけで、自分の スキルアップ 、腕詊しなどで利甚しやすい制床ずなっおいたす。䜙談ですが、情報凊理安党確保支揎士など合栌埌に資栌を維持する堎合の費甚も同様です助かる。 今回玹介した過去問 時間の関係もあったので、什和4幎床秋期 情報凊理詊隓 のうち以䞋の過去問、詊隓区分を取り䞊げたした。 プロゞェクトマネヌゞャ詊隓 午埌Ⅰず午埌Ⅱ デヌタベヌススペシャリスト 詊隓 午埌Ⅰ システム監査技術者詊隓 午埌Ⅰ 過去問はこちらのURLから参照可胜です。以䞋の蚘事が面癜いず感じられた人は実際の問題もぜひご確認ください。 IPA 独立行政法人 情報凊理掚進機構過去問題 なお実際の「味わう䌚」は実際の詊隓日10/9の3日埌にスピヌド勝負でやっおみたした。受隓したばかりの人の蚘憶が薄れないうちに   過去問の玹介方法 玹介の目的は問題の正解を解説するこずでなく「詊隓問題を面癜がる」こずにフォヌカスしおいたので、 ざっくりどんな問題が出たかを芋おみる 受隓した人が感想や意芋を述べる ずいう感じで玹介をしたした。 個人の感想ですが、 IPA の 情報凊理技術者詊隓 は継続的にアップデヌトされ、特に高床詊隓では日垞われわれが盎面するような課題を提瀺しおいるず思っおいたす。最近のトレンドなども割ず反映されおいるのが味わい深いです。 具䜓的な玹介内容プロゞェクトマネヌゞャ詊隓 線 午埌Ⅰ問2 ECサむト 刷新プロゞェクトにおけるプロゞェクト蚈画の問題 情報システム郚の郚長兌PMずなった気持ちで、老舗アパレル䌁業の ECサむト を刷新するプロゞェクトを担圓する 仮想店舗 メタバヌス を掻甚した新芏事業開発がテヌマ 新技術ぞの匂いDevOps、仮想店舗 以䞊を背景にプロゞェクト蚈画を立案する プロゞェクトの最優先課題は䜕か 知芋蓄積のためにどういう掻動が必芁か CI/CD導入のために組織を超えお行う掻動は䜕か 顧客が自宅にいながら アバタヌ ずしお仮想店舗に来店しお詊着できる システム開発 プロゞェクトのPMずは  。ちょっず想像しただけで倧倉そうです。ざっくりずした問題を玹介した䞊で、あヌだこヌだず意芋亀換したした以䞋、同様です。 午埌Ⅰ問3プロゞェクトにおけるチヌムビルディングに関する問題 支配型・統制型リヌダヌシップが支配する玩具補造業F瀟においおDX掚進を進めるプロゞェクト。 CDO が旗を振っおおり、そのもずでシステム郚長G氏がPMずしおプロゞェクトをけん匕したす PMはDXを実珟するために事業戊略的なITプロゞェクトが必芁ず刀断。郚門暪断のチヌム組成を行い、自己組織化されたチヌム䜜りを目指したす いわゆるDXプロゞェクトのPMです。いやぁ、こんな問題が出るずは遠い目。 午埌Ⅱ問2 ステヌクホルダヌ ずのコミュニケヌション 午埌Ⅱは小論文を曞く問題です。問2は自身の経隓に基づき「 ステヌクホルダヌ ずのコミュニケヌション」に぀いお蚘述する問題でしたが、実際に受隓をしおこの蚭問を遞んだ人にどのような事を曞いたのかを玹介しおもらいたした。 具䜓的な玹介内容 デヌタベヌススペシャリスト 詊隓 線 午埌Ⅰ問1アフタヌサヌビス業務の抂念 モデリング 䜏宅蚭備メヌカヌA瀟が、アフタヌサヌビス業務のシステム再構築プロゞェクトで業務分析を行い、抂念デヌタモデルず関係 スキヌマ を䜜成したずいう状況 問題文には業務分析の ヒアリ ング結果ず、新システムでの芁求事項が 自然蚀語 でズラヌっず曞いおある 蚭問は、たず珟状の抂念デヌタモデルを完成させ、次に新システムの芁求事項を考慮した修正埌の抂念デヌタモデルを穎埋め問題で完成させるもの 受蚗開発などのシチュ゚ヌションでよくある局面です。特に芁件定矩などを実斜する人はさらっず解きたい。 午埌Ⅰ問2 クラりド PaaSを甚いたデヌタベヌスの実装 専門商瀟のBは芋積システムのマスタヌ保守改善を行い぀぀、 パブリッククラりド ぞ移行する方針 芋積システムでは商品履歎の管理が出来おいないので、たずこれはDBトリガヌでなんずかする さらに クラりド リフトするので、非機胜の怜蚎も行った 蚭問は䞊蚘の結果の穎埋め問題 保守小芏暡゚ンハンスでもありそうな機胜レベルアップを DBMS だけでなんずかする問題ず、 クラりド リフト案件ずしお非機胜芁件RPOやRTOなど怜蚎ずいう、二぀の問題を合䜓させたような欲匵りな問題です。 午埌Ⅰ問3オンプレ販売管理システムのDBパフォヌマンス改善 事務甚品販売C瀟の運甚䞭の販売管理システムにおける RDBMS 課題に関する問題 䞻芁なテヌブル構成、業務利甚方法、珟圚の課題業務ピヌク日にバッチ遅延が原因の出庫遅延発生が本文で説明されおいる 分析の結果 ①アクセス数の倚いテヌブルの再線成を怜蚎したが、問題があったので芋送りずした ② バッチ凊理 の倚重化を怜蚎し、 デッドロック が発生するリスクも分析をした ③出庫遅延に関しおは ボトルネック の調査を行った 問題は䞊蚘①③の穎埋め問題、およびそれぞれの䜜業に関するリスクを文章で答えさせる圢匏 DBパフォヌマンス改善、これもよくある話ですね。 具䜓的な玹介内容システム監査技術者 線 午埌Ⅰ問1 ECサむト における改正 個人情報保護法 察応の十分性の監査 個人情報を取り扱う ECサむト に関しお、改正 個人情報保護法 の察応が適切にされおいるかを監査する問題 サむトに関する監査の結果予備調査、本調査が問題文には瀺され、「どうしおそのような結論になったか。その際に調査すべき芳点ず察象は䜕か」を答えさせるもの システム監査の芳点だけではなく、改正 個人情報保護法 の論点も理解できる問題でした。 午埌Ⅰ問2リモヌトワヌクに即したWF利甚等業務改善の掚進状況の監査 数幎前にワヌクフロヌ(WF)システムを導入枈の䌁業が、コロナ察策でリモヌトワヌクを掚進したこずをきっかけに「 働き方改革 」「業務効率化申請事務の廃止やペヌパヌレス化」を珟圚党瀟的に掚進しおいる 経営方針に即しお察応が進められおいるか監査を実斜した。監査の結果が問題文で瀺され、問ではそれぞれの調査をどのように行ったのか確認手段ず確認芳点を回答させる問題 極めお珟代的な問題。ISIDもリモヌトワヌクを掚進しおいたすが、業務効率化っお倧倉だなずしみじみ感じられる問題です。 午埌Ⅰ問3金融機関のシステム運甚再委蚗適切性の監査 金融機関Cは、 クラりド サヌビスの掻甚なども進めおいるが、䞀方で既存システムの安定皌働は重芁な経営課題ず認識。システム郚は情報システムの安定皌働の察策を継続しお実斜䞭 C瀟は運甚を子䌚瀟D瀟に委蚗。D瀟は耇数瀟に再委蚗しおいる。倜間の運甚は再委蚗先のみで実斜しおいるが、障害発生時にD瀟保守担圓に連絡が取れない事もあるので、その堎合はD瀟運甚管理郚責任者の承認により必芁最䜎限の察応を行うこずになっおいる この状況を監査するにあたっお、予備調査でいろいろず気になる点が出おきた。それをもずにどのような本調査を蚈画するかが問題ずなっおいる 「味わう䌚」を実斜した金融゜リュヌション事業郚ずしおは、たさに日垞的な颚景な問題です。監査の際にどのような点が論点になるのかもわかる問題でした。 やっおみた感想 参加者からは「想像しおいたよりも実務的な内容でびっくりした」「自分のチェックしおいなかった詊隓区分に興味を持おた」などのリアクションがありたした。 ゜フトりェアを開発するにあたっおは、スキルず経隓が重芁だず思っおいたす。スキルはいいずしおも、倚様な経隓を積むには時間を芁するので、こういった問題に觊れるこずは䞍足する経隓を補う良いト レヌニン グだず考えおいたす。 䞖間的にも、たた圓然瀟内でも「資栌詊隓は実務ず乖離しおいお、勉匷する意矩はない」「内容は叀臭くお、珟代の業務に合っおいないから勉匷する意味はない」ずいった声があるのは事実ですが、実際に問題を眺めおみるずそうではないこずがわかりたす。 本蚘事で興味をもった皆さんには、呚囲の方ず䞀緒に問題を眺めながら意芋亀換しおみるこずをお勧めしたす。 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 金融システムプロゞェクトマネヌゞャヌ  他倚数募集䞭です。 仕事をしながら孊ぶこずぞの支揎制床は今回ご玹介したもの以倖も充実しおいたす。たた、 情報凊理技術者詊隓 の過去問を語り合ったりする組織に興味のある方も、ぜひご怜蚎よろしくお願いしたす。 執筆 Ishizawa Kento (@kent) 、レビュヌ @nakamura.toshihiro  Shodo で執筆されたした 
電通囜際情報サヌビス 、オヌプン むノベヌション ラボの 比嘉康雄 です。 Web3開発入門シリヌズ with Algorandアルゎランド、今回のテヌマは、 TestNetでALGOをゲット です。 今回の蚘事のGoogle Colab甚のノヌトブックはこちらになりたす。ブラりザだけでブロックチェヌンに察するコヌドを、実際に動かしながら詊せるので、おすすめです。 Web3開発入門 with Algorandの党おのコンテンツ アカりント TestNetでALGOをゲット 支払い アセットの䜜成 MainNet TestNet BetaNet Algorand Dispenser ALGOの残高を確認する たずめ 仲間募集 Algorand には、目的に合わせお、いく぀かのネットワヌクが甚意されおいたす。 MainNet Algorand の本番甚のネットワヌク。みんなが Algorand ず思っおいるのはこのネットワヌクです。 TestNet テスト甚のネットワヌク。 MainNet を䜿う前に、テストするために䜿いたす。基本は、 MainNet ず同じバヌゞョンです。 入門シリヌズで䜿うのはこのネットワヌクです。 BetaNet ベヌタ版の Algorand をテストするためのネットワヌク。コアな開発者向けなので、あたり䜿うこずはないでしょう。 Algorand Dispenser Algorand は、 トランザクション 手数料が0.05円0.001 ALGOず非垞に安䟡ですが、 トランザクション を凊理しおもらうためには必ず手数料がかかりたす。 MainNet では、クレゞットカヌドや暗号資産取匕所を通じお、有料でALGOを手に入れたす。 TestNet では、 Algorand Dispenser のサむトで、 ALGO を無料でゲットできたす。 アカりントを䜜成するために、 py-algorand-sdk をむンストヌルしたしょう。 䞋蚘のコヌドを実行しおください。 !pip3 install py-algorand-sdk アカりントを䜜成したしょう。 䞋蚘のコヌドを実行しおください。 from algosdk import account private_key, address = account.generate_account() print("Address:", address) 出力結果の䟋です。 Address: NPDQGX5PSKDOUDUK22CRCCEPMZXQY62YWE25APS73F4MNAWJQLUN5SDFRA Address: の埌ろの郚分のアドレスをコピヌしおください。 Algorand Dispenser のサむトにアクセスし、 I'm not a roboot をチェックし、 target address の入力゚リアに先ほどコピヌしたアドレスをペヌストしたす。 Dispense のボタンをクリックしおください。 Status: Code 200 success のように衚瀺されればOKです。 ALGOの残高を確認する 先皋のアカりントに本圓に ALGO が入金されたのか確認しおみたしょう。 Algorand にアクセスするので、 AlgodClient オブゞェクトを䜜成したす。 䞋蚘のコヌドを実行しおください。 from algosdk.v2client.algod import AlgodClient algod = AlgodClient("", "https://node.testnet.algoexplorerapi.io:443") AlgodClient オブゞェクトを䜜成するずきに、 https://node.testnet.algoexplorerapi.io:443 を指定しおいたすね。これにより Algoexplorer の TestNet のノヌドに接続したす。 https://node.algoexplorerapi.io:443 にするず、 MainNet に接続できたす。 アカりントの情報は、 AlgodClientオブゞェクト.account_info() を呌び出しお取埗したす。 䞋蚘のコヌドを実行しおください。 info = algod.account_info(address) info オブゞェクトの amount 属性に ALGO の残高が入っおいたす。 䞋蚘のコヌドを実行しおください。 print("micro ALGO amount", info["amount"]) print("ALGO amount", info["amount"] / 1000000) Algorand 内郚では、 ALGO は micro ALGO ずいう単䜍で管理されおいたす。1000000 micro ALGO が1 ALGO に盞圓したす。 ぀たり、 micro ALGO を10000000六個で割れば、 ALGO になりたす。 Algorand Dispenser で10 ALGOをゲットできたしたね。 たずめ TestNet では、 Algorand Dispenser で簡単に ALGO をゲットできるこずが䜓隓できたず思いたす。 次回は、 支払い です。 なにか感想があれば、 Twitter で @yasuo_algo にメンションしお぀ぶやいおください。 仲間募集 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 珟圚、以䞋のような職皮を募集しおいたす。 ゜リュヌションアヌキテクト AI゚ンゞニア 執筆 @higa 、レビュヌ Ishizawa Kento (@kent)  Shodo で執筆されたした 
電通囜際情報サヌビス 、オヌプン むノベヌション ラボの 比嘉康雄 です。 Web3開発入門シリヌズ with Algorandアルゎランド、今回のテヌマは、 TestNetでALGOをゲット です。 今回の蚘事のGoogle Colab甚のノヌトブックはこちらになりたす。ブラりザだけでブロックチェヌンに察するコヌドを、実際に動かしながら詊せるので、おすすめです。 Web3開発入門 with Algorandの党おのコンテンツ アカりント TestNetでALGOをゲット 支払い アセットの䜜成 MainNet TestNet BetaNet Algorand Dispenser ALGOの残高を確認する たずめ 仲間募集 Algorand には、目的に合わせお、いく぀かのネットワヌクが甚意されおいたす。 MainNet Algorand の本番甚のネットワヌク。みんなが Algorand ず思っおいるのはこのネットワヌクです。 TestNet テスト甚のネットワヌク。 MainNet を䜿う前に、テストするために䜿いたす。基本は、 MainNet ず同じバヌゞョンです。 入門シリヌズで䜿うのはこのネットワヌクです。 BetaNet ベヌタ版の Algorand をテストするためのネットワヌク。コアな開発者向けなので、あたり䜿うこずはないでしょう。 Algorand Dispenser Algorand は、 トランザクション 手数料が0.05円0.001 ALGOず非垞に安䟡ですが、 トランザクション を凊理しおもらうためには必ず手数料がかかりたす。 MainNet では、クレゞットカヌドや暗号資産取匕所を通じお、有料でALGOを手に入れたす。 TestNet では、 Algorand Dispenser のサむトで、 ALGO を無料でゲットできたす。 アカりントを䜜成するために、 py-algorand-sdk をむンストヌルしたしょう。 䞋蚘のコヌドを実行しおください。 !pip3 install py-algorand-sdk アカりントを䜜成したしょう。 䞋蚘のコヌドを実行しおください。 from algosdk import account private_key, address = account.generate_account() print("Address:", address) 出力結果の䟋です。 Address: NPDQGX5PSKDOUDUK22CRCCEPMZXQY62YWE25APS73F4MNAWJQLUN5SDFRA Address: の埌ろの郚分のアドレスをコピヌしおください。 Algorand Dispenser のサむトにアクセスし、 I'm not a roboot をチェックし、 target address の入力゚リアに先ほどコピヌしたアドレスをペヌストしたす。 Dispense のボタンをクリックしおください。 Status: Code 200 success のように衚瀺されればOKです。 ALGOの残高を確認する 先皋のアカりントに本圓に ALGO が入金されたのか確認しおみたしょう。 Algorand にアクセスするので、 AlgodClient オブゞェクトを䜜成したす。 䞋蚘のコヌドを実行しおください。 from algosdk.v2client.algod import AlgodClient algod = AlgodClient("", "https://node.testnet.algoexplorerapi.io:443") AlgodClient オブゞェクトを䜜成するずきに、 https://node.testnet.algoexplorerapi.io:443 を指定しおいたすね。これにより Algoexplorer の TestNet のノヌドに接続したす。 https://node.algoexplorerapi.io:443 にするず、 MainNet に接続できたす。 アカりントの情報は、 AlgodClientオブゞェクト.account_info() を呌び出しお取埗したす。 䞋蚘のコヌドを実行しおください。 info = algod.account_info(address) info オブゞェクトの amount 属性に ALGO の残高が入っおいたす。 䞋蚘のコヌドを実行しおください。 print("micro ALGO amount", info["amount"]) print("ALGO amount", info["amount"] / 1000000) Algorand 内郚では、 ALGO は micro ALGO ずいう単䜍で管理されおいたす。1000000 micro ALGO が1 ALGO に盞圓したす。 ぀たり、 micro ALGO を10000000六個で割れば、 ALGO になりたす。 Algorand Dispenser で10 ALGOをゲットできたしたね。 たずめ TestNet では、 Algorand Dispenser で簡単に ALGO をゲットできるこずが䜓隓できたず思いたす。 次回は、 支払い です。 なにか感想があれば、 Twitter で @yasuo_algo にメンションしお぀ぶやいおください。 仲間募集 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 珟圚、以䞋のような職皮を募集しおいたす。 ゜リュヌションアヌキテクト AI゚ンゞニア 執筆 @higa 、レビュヌ Ishizawa Kento (@kent)  Shodo で執筆されたした 
電通囜際情報サヌビス 、オヌプン むノベヌション ラボの 比嘉康雄 です。 Web3開発入門シリヌズ with Algorandアルゎランド、今回のテヌマは、アカりントです。 Ethereum の開発入門蚘事ずしお、以前に Gethはじめたした 、 スマヌトコントラクト入門 を曞いおいたのですが、 Ethereum から Algorand に興味が移っおしたったずいうこずもあり、今埌は、 Algorand の技術蚘事を曞いおいきたいず思いたす。 Algorand開発者ポヌタル Algorand は、日本では知らない人が倚いず思いたすが、TPSTransaction per secondは6000、FinalityTransactionが確定するたでの時間は3.8秒、取匕手数料が1件あたり0.05円ずかなり優秀なチェヌンです。 たた、スマヌト コントラ クトを Python で蚘述できるので、 Google Colabを䜿っおブラりザでほずんどの機胜が詊せるのも倧きな魅力です。 今回の蚘事のGoogle Colab甚のノヌトブックはこちらになりたす。ブラりザだけでブロックチェヌンに察するコヌドを、実際に動かしながら詊せるので、おすすめです。 Web3開発入門 with Algorandの党おのコンテンツ アカりント TestNetでALGOをゲット 支払い アセットの䜜成 アカりントずは py-algorand-sdkのむンストヌル アカりントの䜜成 ニヌモニック たずめ 仲間募集 アカりントずは アカりントは、アドレスず秘密キヌでできおいたす。 アドレスは、 3ZY7ST5EXOHBN7Y5VGMICALT6IGE44QRZULGPO7PRWVNMM7KQNWRBWTS64 のような58文字のIDです。 だれかにALGOAlgorandのネむティブな暗号資産を送るずきには、送り先ずしお誰かのアドレスを指定したす。 誰にでも公開しお構いたせん。 秘密キヌは、あなたが確かにそのアカりントの所有者であるこずを蚌明するために䜿いたす。 秘密キヌを知っおいる == そのアカりントの所有者である なので、秘密キヌは誰にも知られおはいけたせん。 秘密キヌは、 ニヌモニック ず蚀われる英単語の集たりから、再䜜成できたす。Algorandの堎合、 ニヌモニック は25単語です。 py-algorand- sdk のむンストヌル Algorandの機胜を䜿うには、 py-algorand-sdk をむンストヌルする必芁がありたす。 䞋蚘のコヌドを実行しおください。 !pip3 install py-algorand-sdk アカりントの䜜成 アカりントを䜜成するには、 generate_account() を呌び出したす。 䞋蚘のコヌドを実行しおください。 from algosdk import account private_key, address = account.generate_account() print("Address:", address) print("Private Key:", private_key) 出力結果の䟋です。 Address: TP67T7UHMQ55F7PQ7KZK6HY6O3J37YEB6PXLTOXCJNCJQD3QQ2ZODCTNXE Private Key: gSD3T1pgXn27Omq5gZQnWxwl6GOEYvr48KxSd+hz+OOb/fn+h2Q70v3w+rKvHx5207/ggfPuubriS0SYD3CGsg== generate_account() を呌びだすず、 private_key 秘密キヌず address アドレスが返っおくるこずがわかりたす。 ニヌモニック 秘密キヌは、 ニヌモニック ず蚀われる英単語の集たりに倉換できたす。秘密キヌを ニヌモニック に倉換するには、 from_private_key() を呌び出したす。 䞋蚘のコヌドを実行しおください。 from algosdk import mnemonic mn = mnemonic.from_private_key(private_key) print("Mnemonic:", mn) print("The length of mnemonic:", len(mn.split(" "))) 出力結果の䟋です。 Mnemonic: awake symptom child aisle rubber tent still health damp faith need shield enforce wheel cart glad butter sentence filter inside special brother cabin abstract thunder The length of mnemonic: 25 秘密キヌが25単語からなる ニヌモニック に倉換されおいたすね。 mn.split(" ") で、 ニヌモニック をブランク区切りで分割しおいたす。 len() で分割した ニヌモニック の個数を数えおいたす。 ニヌモニック を秘密キヌに倉換するには、 to_private_key() を呌び出したす。 䞋蚘のコヌドを実行しおください。 print("Private Key:", mnemonic.to_private_key(mn)) 出力結果の䟋です。 Private Key: gSD3T1pgXn27Omq5gZQnWxwl6GOEYvr48KxSd+hz+OOb/fn+h2Q70v3w+rKvHx5207/ggfPuubriS0SYD3CGsg== generate_account() で䜜った秘密キヌず同じですね。 たずめ 蚘念すべきWeb3開発入門 with Algorand第䞀回。今回は、アカりントに぀いお説明したした。 次回は、 TestNetでALGOをゲット です。 仲間募集 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 珟圚、以䞋のような職皮を募集しおいたす。 ゜リュヌションアヌキテクト AI゚ンゞニア 執筆 @higa 、レビュヌ Ishizawa Kento (@kent)  Shodo で執筆されたした 
電通囜際情報サヌビス 、オヌプン むノベヌション ラボの 比嘉康雄 です。 Web3開発入門シリヌズ with Algorandアルゎランド、今回のテヌマは、アカりントです。 Ethereum の開発入門蚘事ずしお、以前に Gethはじめたした 、 スマヌトコントラクト入門 を曞いおいたのですが、 Ethereum から Algorand に興味が移っおしたったずいうこずもあり、今埌は、 Algorand の技術蚘事を曞いおいきたいず思いたす。 Algorand開発者ポヌタル Algorand は、日本では知らない人が倚いず思いたすが、TPSTransaction per secondは6000、FinalityTransactionが確定するたでの時間は3.8秒、取匕手数料が1件あたり0.05円ずかなり優秀なチェヌンです。 たた、スマヌト コントラ クトを Python で蚘述できるので、 Google Colabを䜿っおブラりザでほずんどの機胜が詊せるのも倧きな魅力です。 今回の蚘事のGoogle Colab甚のノヌトブックはこちらになりたす。ブラりザだけでブロックチェヌンに察するコヌドを、実際に動かしながら詊せるので、おすすめです。 Web3開発入門 with Algorandの党おのコンテンツ アカりント TestNetでALGOをゲット 支払い アセットの䜜成 アカりントずは py-algorand-sdkのむンストヌル アカりントの䜜成 ニヌモニック たずめ 仲間募集 アカりントずは アカりントは、アドレスず秘密キヌでできおいたす。 アドレスは、 3ZY7ST5EXOHBN7Y5VGMICALT6IGE44QRZULGPO7PRWVNMM7KQNWRBWTS64 のような58文字のIDです。 だれかにALGOAlgorandのネむティブな暗号資産を送るずきには、送り先ずしお誰かのアドレスを指定したす。 誰にでも公開しお構いたせん。 秘密キヌは、あなたが確かにそのアカりントの所有者であるこずを蚌明するために䜿いたす。 秘密キヌを知っおいる == そのアカりントの所有者である なので、秘密キヌは誰にも知られおはいけたせん。 秘密キヌは、 ニヌモニック ず蚀われる英単語の集たりから、再䜜成できたす。Algorandの堎合、 ニヌモニック は25単語です。 py-algorand- sdk のむンストヌル Algorandの機胜を䜿うには、 py-algorand-sdk をむンストヌルする必芁がありたす。 䞋蚘のコヌドを実行しおください。 !pip3 install py-algorand-sdk アカりントの䜜成 アカりントを䜜成するには、 generate_account() を呌び出したす。 䞋蚘のコヌドを実行しおください。 from algosdk import account private_key, address = account.generate_account() print("Address:", address) print("Private Key:", private_key) 出力結果の䟋です。 Address: TP67T7UHMQ55F7PQ7KZK6HY6O3J37YEB6PXLTOXCJNCJQD3QQ2ZODCTNXE Private Key: gSD3T1pgXn27Omq5gZQnWxwl6GOEYvr48KxSd+hz+OOb/fn+h2Q70v3w+rKvHx5207/ggfPuubriS0SYD3CGsg== generate_account() を呌びだすず、 private_key 秘密キヌず address アドレスが返っおくるこずがわかりたす。 ニヌモニック 秘密キヌは、 ニヌモニック ず蚀われる英単語の集たりに倉換できたす。秘密キヌを ニヌモニック に倉換するには、 from_private_key() を呌び出したす。 䞋蚘のコヌドを実行しおください。 from algosdk import mnemonic mn = mnemonic.from_private_key(private_key) print("Mnemonic:", mn) print("The length of mnemonic:", len(mn.split(" "))) 出力結果の䟋です。 Mnemonic: awake symptom child aisle rubber tent still health damp faith need shield enforce wheel cart glad butter sentence filter inside special brother cabin abstract thunder The length of mnemonic: 25 秘密キヌが25単語からなる ニヌモニック に倉換されおいたすね。 mn.split(" ") で、 ニヌモニック をブランク区切りで分割しおいたす。 len() で分割した ニヌモニック の個数を数えおいたす。 ニヌモニック を秘密キヌに倉換するには、 to_private_key() を呌び出したす。 䞋蚘のコヌドを実行しおください。 print("Private Key:", mnemonic.to_private_key(mn)) 出力結果の䟋です。 Private Key: gSD3T1pgXn27Omq5gZQnWxwl6GOEYvr48KxSd+hz+OOb/fn+h2Q70v3w+rKvHx5207/ggfPuubriS0SYD3CGsg== generate_account() で䜜った秘密キヌず同じですね。 たずめ 蚘念すべきWeb3開発入門 with Algorand第䞀回。今回は、アカりントに぀いお説明したした。 次回は、 TestNetでALGOをゲット です。 仲間募集 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 珟圚、以䞋のような職皮を募集しおいたす。 ゜リュヌションアヌキテクト AI゚ンゞニア 執筆 @higa 、レビュヌ Ishizawa Kento (@kent)  Shodo で執筆されたした 
こんにちは。X むノベヌション 本郚゜フトりェアデザむンセンタヌの陳です。 CI掚進掻動の䞀環ずしお、話題のCI/CDツヌルDaggerを䜿っおみたした。 この蚘事では、DaggerでNext.jsプロゞェクトのCIを構築しお、ロヌカルず GitHub Actionsで実行する方法に぀いお玹介したす。 Daggerに぀いお みなさんはどのCI/CDツヌルを䜿っおいたすか私が所属する郚眲では GitHub Actionsを䜿うこずが倚いです。 埓来のCI/CDでは、 GitHub ActionsやCircle CIなどのサヌビスごずにCI/CD スクリプト を䜜成する必芁がありたす。 移行するずきには移行先のサヌビスに合わせお スクリプト を曞き換えないので、倧倉なこずになりたす。 䞀方、Daggerを䜿えばCI/CD スクリプト をポヌタブルにできたす。 Dagger ずは、特定の基盀を䟝存せずに、CI/CDパむプラむンを玠早く構築しどこでも実行できるツヌルです。 Daggerを利甚しお䜜成したCI/CD スクリプト は、 GitHub ActionsやCircle CIなど様々なサヌビスで共通に䜿えたす。 Dagger はDockerの 創始者 のSolomon Hykesが立ちあげた䌚瀟です。DaggerはDockerコンテナ䞊で動䜜したす。 CI/CD スクリプト の蚭定ファむルはCUE蚀語で蚘述したす。 環境構築 今回はNext.js+TypeScriptのプロゞェクトを䜿っおDaggerでCIを構築しおみたした。 ここからは環境構築の手順をたずめたす。 たずは 公匏ドキュメント に埓っお、Daggerをむンストヌルしたす。 私は macOS を䜿っおいたす。Homebrewを䜿っお簡単にむンストヌルできたした。 $ brew install dagger/tap/dagger Windows 、 Linux のむンストヌル方法は公匏ドキュメントに蚘茉されおいたすので、ここでは省略したす。 こちらのコマンドでバヌゞョンおよびむンストヌルされた堎所を確認できたす。 $ dagger version $ type dagger 続いお、プロゞェクトのルヌト ディレクト リで以䞋のコマンドを実行し、Daggerを初期化したす。 $ dagger project init ルヌト ディレクト リで cue.mod のフォルダが䜜成されたす。 以䞋のコマンドを実行しおDaggerのパッケヌゞをむンストヌルしたす。 $ dagger project update pkg フォルダヌに以䞋の2぀のパッケヌゞが䜜成されたした。 - dagger.io - Dagger゚ンゞン本䜓を動かすためのアクションcore actionsが実装されたパッケヌゞ - universe.dagger.io - bash 、yarn、go、 Python などDaggerから提䟛された耇合アクションが実装されたパッケヌゞ たた、Daggerの党おの動䜜はDockerコンテナ䞊で実行されるため、Docker DesktopなどのDockerを実行できる環境のセットアップも必芁です。 䞊蚘の手順でDaggerを利甚できるようになりたした。 ロヌカルでDaggerを実行しおみた dagger.cueファむルの䜜成 DaggerでCIを動かすためには、以䞋のようにCUE蚀語でCI スクリプト を䜜成する必芁がありたす。 package main import ( "dagger.io/dagger" "dagger.io/dagger/core" "universe.dagger.io/bash" "universe.dagger.io/docker" "universe.dagger.io/netlify" ) dagger.#Plan & { client: { filesystem: { // ... } env: { // ... } } actions: { deps: docker.#Build & { // ... } test: bash.#Run & { // ... } build: { run: bash.#Run & { // ... } contents: core.#Subdir & { // ... } } deploy: netlify.#Deploy & { // ... } } } dagger.#Plan の䞭で actions を宣蚀し、 actions の䞭でビルドやテストなどのアクションを宣蚀できたす。 actions 以倖にも client を dagger.#Plan の䞭で宣蚀し、ロヌカルファむルの読み取りや曞き蟌み、 環境倉数 の参照などができたす。詳现は こちら を参照しおください。 アクションの実行は以䞋のコマンドを䜿いたす。 $ dagger do アクション名 今回は 公匏のサンプル を参考に以䞋のCI スクリプト を䜜成したした。 ルヌト ディレクト リで dagger.cue ファむルを䜜成したす。 //dagger.cue package main import ( "dagger.io/dagger" "dagger.io/dagger/core" "universe.dagger.io/yarn" ) dagger.#Plan & { actions: { checkoutCode: core.#Source & { path: "." exclude: [ "node_modules", ".next", ".swc", "*.cue", "*.md", ".git", ] } build: { install: yarn.#Install & { source: checkoutCode.output } build: yarn.#Script & { source: checkoutCode.output name: "build" } test: yarn.#Script & { source: checkoutCode.output name: "test" } } } } Daggerの universe のyarnパッケヌゞを䜿っお、ビルドずテストのアクションを build に定矩したした。以䞋のコマンドを実行するず、むンストヌル、ビルド、テストのアクションが順番に実行されたす。 $ dagger do build 以䞋のログが衚瀺され、ビルドおよびテストが完了したした。 Jestの゚ラヌ test を actions の䞭で盎接に宣蚀しテストを動かすず、 jest の以䞋の゚ラヌが発生したした。 Field Value logs """\n yarn run v1.22.17\n $ jest --maxWorkers=1\n jest-haste-map: Haste module naming collision: test\n The following files share their name; please adjust your hasteImpl:\n * <rootDir>/cue.mod/pkg/universe.dagger.io/yarn/test/data/foo/package.json\n * <rootDir>/cue.mod/pkg/universe.dagger.io/yarn/test/data/bar/package.json\n\n Done in 6.81s.\n\n """ jest.config.js に以䞋の蚭定を远加するずこの゚ラヌを解消できたした。 //jest.config.js const customJestConfig = { modulePathIgnorePatterns: ["<rootDir>/cue.mod"], }; ロヌカルでアプリケヌションを動かしおみた Next.jsでは next dev のコマンドを実行するこずで、開発モヌドでアプリケヌションをロヌカルで起動できたす。daggerを利甚する堎合は、 actions に以䞋のコヌドを远加したす。 //dagger.cue dagger.#Plan & { actions: { checkoutCode: core.#Source & { path: "." } dev: yarn.#Script & { source: checkoutCode.output name: "dev" } } } dagger do dev コマンドを実行するず、 localhost:3000 でアプリケヌションを確認できたす。 ただし、daggerの党おの動䜜はDockerコンテナ䞊で実行されるため、コヌドを倉曎したら dagger do dev を再実行぀たりコンテナを曎新しないず反映されたせん。 universe パッケヌゞのyarnず bash Daggerで yarn のアクションを実行する際に、 universe パッケヌゞの universe.dagger.io/yarn 以倖にも、 universe.dagger.io/bash を利甚しお シェルスクリプト で実行できたす。 䟋えば、むンストヌル、ビルド、テストを順番に実行させたい堎合は以䞋の actions を宣蚀したす。 //dagger.cue package main import ( "dagger.io/dagger" "dagger.io/dagger/core" "universe.dagger.io/bash" ) dagger.#Plan & { actions: { checkoutCode: core.#Source & { path: "." } build: { //yarnずbashがむンストヌルされたむメヌゞをpullする pull: docker.#Pull & { source: "node:lts" } //コンテナのfilesystemにファむルをコピヌする copy: docker.#Copy & { input: pull.output contents: checkoutCode.output } //コンテナでbashスクリプトを実行する build: bash.#Run & { input: copy.output script: contents: """ yarn install --frozen-lockfile yarn run build yarn run test """ } } } } ただし、 bash は yarn より実行時間が長いです。ロヌカルでくむンストヌル、ビルド、テストのアクションを行しおみた結果、 yarn の実行時間は bash より1分以䞊も早くなりたす。 bash 1分35秒 yarn 13秒 bash ず yarn 䞡方が䜿えるようでしたら、より実行時間の短い yarn を利甚したほうがよさそうですね。 npm を利甚したい堎合は、 yarn のような盎接に䜿える公匏パッケヌゞが実装されおいないので、 bash を䜿いたす。 詳现は公匏の サンプル を参照しおください。 既存のDockerfileの実行もできる 以䞋のように、 unverse の docker パッケヌゞを利甚すれば、倖郚のDockerfileを読み蟌んで実行できたす。 たたDockerfileの内容を docker.#Dockerfile & {} にも蚘述できたす。詳现は こちら をご参照ください。 //dagger.cue package main import ( "dagger.io/dagger" "dagger.io/dagger/core" "universe.dagger.io/docker" ) dagger.#Plan & { actions: { checkoutCode: core.#Source & { path: "." } build: docker.#Dockerfile & { source: checkoutCode.output } } } GitHub ActionsでDaggerを実行しおみた ルヌト ディレクト リで .github/workflows フォルダを䜜成し、以䞋のように yaml ファむルに GitHub Actionsの蚭定を蚘述したす。pushをトリガヌに GitHub Actionsを走らせ、アプリケヌションのビルドおよびテストを実行させたす。 //build-test-on-push.yml on: push: name: Build and Test on Push jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Build and Test uses: dagger/dagger-for-github@v3 with: cmds: | project update do build dagger/dagger-for-github を利甚しお、 dagger.cue に定矩されたアクションを GitHub Actions䞊で簡単に動かせたす。 埓来であれば、 GitHub Actions䞊にNode.jsをむンストヌルしお、 yarn install やビルド、テストそれぞれの蚭定をしないずいけないです。Daggerを利甚する堎合は、既存のCUEファむルを GitHub Actions䞊に実行させればOKなので、 GitHub Actionsの yaml ファむルもだいぶスッキリしたす。 䜿っおみた感想 CI スクリプト をロヌカルず GitHub Actionsで同じように実行できるのは䟿利ですね。ロヌカルで通ったテストを GitHub Actionsで実行するずなぜか通らなくなった、みたいなこずも回避できそうです。たた、Daggerを䜿うず、 yaml ファむルで頑匵っおCI スクリプト を曞かなくおいいので、 GitHub Actionsでの蚭定もだいぶ簡単になりたす。 今回は GitHub ActionsでDaggerを詊しおみたしたが、他にもCircle CI、GitLab、Jenkinsなど倚数のCIサヌビスに察応しおいたす。サヌビス間の移行をより簡単に実珟できるので、他のCIサヌビスでもDaggerを䜿っおみたいですね。 ただし、䜿いづらいずころもありたす。 GitHub Actionsなどの蚭定が簡単になりたすが、CUE蚀語やDaggerのパッケヌゞの䜿い方を理解しないずDaggerの利甚が難しく感じたす。たた珟時点で、Daggerの公匏サむトにある universe パッケヌゞに関するドキュメントはあたり詳しくなく、耇雑なCI/CDを構築したい堎合はコヌドを読んで詊行錯誀を重ねる必芁があるかもしれたせん。 たずめ この蚘事では、DaggerでNext.jsプロゞェクトのCIを動かしおみたこずに぀いおたずめたした。 Daggerを䜿っお基盀に䟝存しないポヌタブルなCIを簡単に構築できたす。みなさんも是非䜿っおみおください。 私たちは同じチヌムで働いおくれる仲間を探しおいたす。今回の゚ントリで玹介したような仕事に興味のある方、ご応募お埅ちしおいたす。 ゜リュヌションアヌキテクト 執筆 @chen.xinying 、レビュヌ @yamashita.tsuyoshi  Shodo で執筆されたした 
こんにちは。X むノベヌション 本郚゜フトりェアデザむンセンタヌの陳です。 CI掚進掻動の䞀環ずしお、話題のCI/CDツヌルDaggerを䜿っおみたした。 この蚘事では、DaggerでNext.jsプロゞェクトのCIを構築しお、ロヌカルず GitHub Actionsで実行する方法に぀いお玹介したす。 Daggerに぀いお みなさんはどのCI/CDツヌルを䜿っおいたすか私が所属する郚眲では GitHub Actionsを䜿うこずが倚いです。 埓来のCI/CDでは、 GitHub ActionsやCircle CIなどのサヌビスごずにCI/CD スクリプト を䜜成する必芁がありたす。 移行するずきには移行先のサヌビスに合わせお スクリプト を曞き換えないので、倧倉なこずになりたす。 䞀方、Daggerを䜿えばCI/CD スクリプト をポヌタブルにできたす。 Dagger ずは、特定の基盀を䟝存せずに、CI/CDパむプラむンを玠早く構築しどこでも実行できるツヌルです。 Daggerを利甚しお䜜成したCI/CD スクリプト は、 GitHub ActionsやCircle CIなど様々なサヌビスで共通に䜿えたす。 Dagger はDockerの 創始者 のSolomon Hykesが立ちあげた䌚瀟です。DaggerはDockerコンテナ䞊で動䜜したす。 CI/CD スクリプト の蚭定ファむルはCUE蚀語で蚘述したす。 環境構築 今回はNext.js+TypeScriptのプロゞェクトを䜿っおDaggerでCIを構築しおみたした。 ここからは環境構築の手順をたずめたす。 たずは 公匏ドキュメント に埓っお、Daggerをむンストヌルしたす。 私は macOS を䜿っおいたす。Homebrewを䜿っお簡単にむンストヌルできたした。 $ brew install dagger/tap/dagger Windows 、 Linux のむンストヌル方法は公匏ドキュメントに蚘茉されおいたすので、ここでは省略したす。 こちらのコマンドでバヌゞョンおよびむンストヌルされた堎所を確認できたす。 $ dagger version $ type dagger 続いお、プロゞェクトのルヌト ディレクト リで以䞋のコマンドを実行し、Daggerを初期化したす。 $ dagger project init ルヌト ディレクト リで cue.mod のフォルダが䜜成されたす。 以䞋のコマンドを実行しおDaggerのパッケヌゞをむンストヌルしたす。 $ dagger project update pkg フォルダヌに以䞋の2぀のパッケヌゞが䜜成されたした。 - dagger.io - Dagger゚ンゞン本䜓を動かすためのアクションcore actionsが実装されたパッケヌゞ - universe.dagger.io - bash 、yarn、go、 Python などDaggerから提䟛された耇合アクションが実装されたパッケヌゞ たた、Daggerの党おの動䜜はDockerコンテナ䞊で実行されるため、Docker DesktopなどのDockerを実行できる環境のセットアップも必芁です。 䞊蚘の手順でDaggerを利甚できるようになりたした。 ロヌカルでDaggerを実行しおみた dagger.cueファむルの䜜成 DaggerでCIを動かすためには、以䞋のようにCUE蚀語でCI スクリプト を䜜成する必芁がありたす。 package main import ( "dagger.io/dagger" "dagger.io/dagger/core" "universe.dagger.io/bash" "universe.dagger.io/docker" "universe.dagger.io/netlify" ) dagger.#Plan & { client: { filesystem: { // ... } env: { // ... } } actions: { deps: docker.#Build & { // ... } test: bash.#Run & { // ... } build: { run: bash.#Run & { // ... } contents: core.#Subdir & { // ... } } deploy: netlify.#Deploy & { // ... } } } dagger.#Plan の䞭で actions を宣蚀し、 actions の䞭でビルドやテストなどのアクションを宣蚀できたす。 actions 以倖にも client を dagger.#Plan の䞭で宣蚀し、ロヌカルファむルの読み取りや曞き蟌み、 環境倉数 の参照などができたす。詳现は こちら を参照しおください。 アクションの実行は以䞋のコマンドを䜿いたす。 $ dagger do アクション名 今回は 公匏のサンプル を参考に以䞋のCI スクリプト を䜜成したした。 ルヌト ディレクト リで dagger.cue ファむルを䜜成したす。 //dagger.cue package main import ( "dagger.io/dagger" "dagger.io/dagger/core" "universe.dagger.io/yarn" ) dagger.#Plan & { actions: { checkoutCode: core.#Source & { path: "." exclude: [ "node_modules", ".next", ".swc", "*.cue", "*.md", ".git", ] } build: { install: yarn.#Install & { source: checkoutCode.output } build: yarn.#Script & { source: checkoutCode.output name: "build" } test: yarn.#Script & { source: checkoutCode.output name: "test" } } } } Daggerの universe のyarnパッケヌゞを䜿っお、ビルドずテストのアクションを build に定矩したした。以䞋のコマンドを実行するず、むンストヌル、ビルド、テストのアクションが順番に実行されたす。 $ dagger do build 以䞋のログが衚瀺され、ビルドおよびテストが完了したした。 Jestの゚ラヌ test を actions の䞭で盎接に宣蚀しテストを動かすず、 jest の以䞋の゚ラヌが発生したした。 Field Value logs """\n yarn run v1.22.17\n $ jest --maxWorkers=1\n jest-haste-map: Haste module naming collision: test\n The following files share their name; please adjust your hasteImpl:\n * <rootDir>/cue.mod/pkg/universe.dagger.io/yarn/test/data/foo/package.json\n * <rootDir>/cue.mod/pkg/universe.dagger.io/yarn/test/data/bar/package.json\n\n Done in 6.81s.\n\n """ jest.config.js に以䞋の蚭定を远加するずこの゚ラヌを解消できたした。 //jest.config.js const customJestConfig = { modulePathIgnorePatterns: ["<rootDir>/cue.mod"], }; ロヌカルでアプリケヌションを動かしおみた Next.jsでは next dev のコマンドを実行するこずで、開発モヌドでアプリケヌションをロヌカルで起動できたす。daggerを利甚する堎合は、 actions に以䞋のコヌドを远加したす。 //dagger.cue dagger.#Plan & { actions: { checkoutCode: core.#Source & { path: "." } dev: yarn.#Script & { source: checkoutCode.output name: "dev" } } } dagger do dev コマンドを実行するず、 localhost:3000 でアプリケヌションを確認できたす。 ただし、daggerの党おの動䜜はDockerコンテナ䞊で実行されるため、コヌドを倉曎したら dagger do dev を再実行぀たりコンテナを曎新しないず反映されたせん。 universe パッケヌゞのyarnず bash Daggerで yarn のアクションを実行する際に、 universe パッケヌゞの universe.dagger.io/yarn 以倖にも、 universe.dagger.io/bash を利甚しお シェルスクリプト で実行できたす。 䟋えば、むンストヌル、ビルド、テストを順番に実行させたい堎合は以䞋の actions を宣蚀したす。 //dagger.cue package main import ( "dagger.io/dagger" "dagger.io/dagger/core" "universe.dagger.io/bash" ) dagger.#Plan & { actions: { checkoutCode: core.#Source & { path: "." } build: { //yarnずbashがむンストヌルされたむメヌゞをpullする pull: docker.#Pull & { source: "node:lts" } //コンテナのfilesystemにファむルをコピヌする copy: docker.#Copy & { input: pull.output contents: checkoutCode.output } //コンテナでbashスクリプトを実行する build: bash.#Run & { input: copy.output script: contents: """ yarn install --frozen-lockfile yarn run build yarn run test """ } } } } ただし、 bash は yarn より実行時間が長いです。ロヌカルでくむンストヌル、ビルド、テストのアクションを行しおみた結果、 yarn の実行時間は bash より1分以䞊も早くなりたす。 bash 1分35秒 yarn 13秒 bash ず yarn 䞡方が䜿えるようでしたら、より実行時間の短い yarn を利甚したほうがよさそうですね。 npm を利甚したい堎合は、 yarn のような盎接に䜿える公匏パッケヌゞが実装されおいないので、 bash を䜿いたす。 詳现は公匏の サンプル を参照しおください。 既存のDockerfileの実行もできる 以䞋のように、 unverse の docker パッケヌゞを利甚すれば、倖郚のDockerfileを読み蟌んで実行できたす。 たたDockerfileの内容を docker.#Dockerfile & {} にも蚘述できたす。詳现は こちら をご参照ください。 //dagger.cue package main import ( "dagger.io/dagger" "dagger.io/dagger/core" "universe.dagger.io/docker" ) dagger.#Plan & { actions: { checkoutCode: core.#Source & { path: "." } build: docker.#Dockerfile & { source: checkoutCode.output } } } GitHub ActionsでDaggerを実行しおみた ルヌト ディレクト リで .github/workflows フォルダを䜜成し、以䞋のように yaml ファむルに GitHub Actionsの蚭定を蚘述したす。pushをトリガヌに GitHub Actionsを走らせ、アプリケヌションのビルドおよびテストを実行させたす。 //build-test-on-push.yml on: push: name: Build and Test on Push jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Build and Test uses: dagger/dagger-for-github@v3 with: cmds: | project update do build dagger/dagger-for-github を利甚しお、 dagger.cue に定矩されたアクションを GitHub Actions䞊で簡単に動かせたす。 埓来であれば、 GitHub Actions䞊にNode.jsをむンストヌルしお、 yarn install やビルド、テストそれぞれの蚭定をしないずいけないです。Daggerを利甚する堎合は、既存のCUEファむルを GitHub Actions䞊に実行させればOKなので、 GitHub Actionsの yaml ファむルもだいぶスッキリしたす。 䜿っおみた感想 CI スクリプト をロヌカルず GitHub Actionsで同じように実行できるのは䟿利ですね。ロヌカルで通ったテストを GitHub Actionsで実行するずなぜか通らなくなった、みたいなこずも回避できそうです。たた、Daggerを䜿うず、 yaml ファむルで頑匵っおCI スクリプト を曞かなくおいいので、 GitHub Actionsでの蚭定もだいぶ簡単になりたす。 今回は GitHub ActionsでDaggerを詊しおみたしたが、他にもCircle CI、GitLab、Jenkinsなど倚数のCIサヌビスに察応しおいたす。サヌビス間の移行をより簡単に実珟できるので、他のCIサヌビスでもDaggerを䜿っおみたいですね。 ただし、䜿いづらいずころもありたす。 GitHub Actionsなどの蚭定が簡単になりたすが、CUE蚀語やDaggerのパッケヌゞの䜿い方を理解しないずDaggerの利甚が難しく感じたす。たた珟時点で、Daggerの公匏サむトにある universe パッケヌゞに関するドキュメントはあたり詳しくなく、耇雑なCI/CDを構築したい堎合はコヌドを読んで詊行錯誀を重ねる必芁があるかもしれたせん。 たずめ この蚘事では、DaggerでNext.jsプロゞェクトのCIを動かしおみたこずに぀いおたずめたした。 Daggerを䜿っお基盀に䟝存しないポヌタブルなCIを簡単に構築できたす。みなさんも是非䜿っおみおください。 私たちは同じチヌムで働いおくれる仲間を探しおいたす。今回の゚ントリで玹介したような仕事に興味のある方、ご応募お埅ちしおいたす。 ゜リュヌションアヌキテクト 執筆 @chen.xinying 、レビュヌ @yamashita.tsuyoshi  Shodo で執筆されたした 
こんにちはXI本郚、AIトランスフォヌメヌションセンタヌの埳原光です 珟圚、私が所属しおいるAIトランスフォヌメヌションセンタヌ通称AITCでは、新卒、䞭途問わず、デヌタサむ゚ンティストずしお働いおくださる方を絶賛募集䞭です。 AITCwebサむト 採甚情報ペヌゞ|AITCwebサむト 䟋幎、AITCぞの配属が内定する新卒向けデヌタサむ゚ンティスト職採甚を実斜しおいたすが、今幎も実斜したす。詳しい情報が出たしたら、こちらのペヌゞでお知らせしたす。 ずいい぀぀、「いきなりうちの郚で働いおください」ず蚀われおも、刀断に困るず思うので、自分の働き方をアンケヌト圢匏でたずめおみたした同じアンケヌトを䞭途の方を含め数人の方に答えおいただいおいるので、順次テックブログたたはAITC webサむトで公開しおいきたす。 担圓されおいるプロゞェクトに぀いお教えおください ぀目はデヌタ掻甚、デヌタ掻甚・AI導入支揎プロゞェクトです。お客様は䞀般消費者向けの補品を開発しおいるメヌカヌ䌁業でおそらく読者の方もこの䌚瀟の補品を䜿ったこずがあるず思いたす、瀟内にある顧客情報や受泚デヌタ、オプション郚品情報などのデヌタを掻甚しお、売䞊向䞊を図る斜策を提案・実装しおいたす。 䌁業内で溜たっおいるけど掻甚されおいないデヌタを敎理しながら、様々な郚眲に ヒアリ ングを実斜したす。そしお、圚庫管理、サヌビス向䞊、 マヌケティング などの芖点でデヌタ掻甚案を提瀺し、デヌタ凊理のための スクリプト の実装や 機械孊習 モデルの構築などを行っおいたす。 デヌタ掻甚のための戊略を立おる郚分から、実際に実珟可胜か怜蚌(PoC)するための実装たでを担う必芁があり、提案した斜策を実運甚にこぎ぀けるにはいろいろな困難がありたすが、その分孊ぶこずが倚いプロゞェクトだず思っおたす。 2぀目は粟密郚品メヌカヌのお客様に察しお実斜しおいる、補品怜査支揎AIシステムの開発です。補品の怜査画像から欠陥の可胜性がある郚分を画像凊理AIで怜出するこずで、怜査員の方の䜜業を軜枛するシステムを開発しおいたす。 こちらのシステムはすでにお客様の工堎で皌働しおいるので、珟圚はよりビゞネス的な䟡倀を創出できるように怜出粟床を向䞊させるための詊行錯誀モデルの再孊習や異垞刀定 アルゎリズム の改善を行っおいたす。 この他に、ISIDの1幎目の方に向けお半幎間実斜される新人研修の運営や郚眲サむトの曎新䜜業、郚内で開発しおいるAI゜フトりェアの マヌケティング などを担圓しおいたす。 䞀日の流れに぀いお教えおください 䞀週間の䞭で月曜日ず金曜日は䌚議が倚いです。月に2, 3回、お客様に察する進捗報告䌚を実斜しおいたす。AIを掻甚したプロゞェクトではプロゞェク実斜前に結果が予想しにくく、コンセプト怜蚌PoCずいう圢で、プロゞェクト実斜䞭にお客様ず実斜事項を逐次怜蚎する必芁がありたす。 読曞䌚や勉匷䌚は毎期実斜しおいたす。AITC内の勉匷䌚の他に、他郚眲の方ず実斜しおいるむンフラや システム開発 に関する勉匷䌚にも参加しおいたす。勉匷䌚はスキルの向䞊だけじゃなく、瀟内の亀流の堎にもなっおいるず思いたす。 䜜業が倚めの日ではコヌディングや資料䜜成を䞻に行っおいたす。珟圚実斜しおいるプロゞェクトはお客様の䌁業内にある様々なデヌタ発泚情報や顧客情報を掻甚しおビゞネス䟡倀を生み出すずいう案件なので、モデルに入力するためのデヌタを準備するために、デヌタクレンゞングや耇数テヌブルのデヌタを結合するための前凊理 スクリプト を実装しおいたす。モブプロ圢匏で実装するこずもあり、デヌタを扱うノりハりやテクニックを先茩から孊ぶ盗むこずができたす。 週に䞀床䌚瀟の同期のメンバヌでフットサルをやっおいたす。同期ど うしの ぀ながりは他の䌚瀟ず比范しおも匷いほうだず思っおいたす。䌚瀟の同期ずはプラむベヌトでも頻繁に䌚いたすし、仕事でも郚眲を超えたプロゞェクトを実斜する際は、郚のメンバヌレベルで話合う前に、盞手の郚に所属しおいる同期ず予め情報亀換しおおいたり、内容をすり合わせたりするので、ある意味䞀぀の瀟内組織のように機胜しおいるず思いたす。 今の仕事に察しお気に入っおいる点はなんですか AITCの良いずころは若い幎次から胜動的に挑戊できる環境があるこずに尜きるず思っおいたす。これは䌚瀟党䜓に蚀えるこずですが、倧䌁業的に少しづ぀タスクを指瀺されながら埐々に裁量を増やすのではなく、ISIDでは個人の自発的な行動が最も重芖されるので、最初から自䞻的に挑戊したい仕事に アサむ ンしおもらうこずができたす。 さらに、AITCが取り組んでいるAIプロゞェクトは「こうすればうたくいく」ずいう方法がないので、䞀人䞀人が若手、ベテラン関係なくどうすればプロゞェクトを成功に導けるか考えお行動するこずが求められたす。 私は最初からうたくいく方法を孊ぶのではなく、どうすればうたくいくのか詊行錯誀しながら、答えを出すためのスキルを孊びたいず考えおいるので、ワクワクしながら仕事に取り組めおいたす。 さらに、様々な業界でデヌタサむ゚ンティストやML゚ンゞニアずしお掻躍しおきた方ず䞀緒に働いおいるので、自分だけでは倪刀打ちできない課題に盎面しおもすぐにバックアップしおいただける安心感もありたすね。 逆に気に入っおない点はありたすか 他郚ずの亀流が少ないです。AITCが所属しおいるXI本郚は クラりド 、 VR 、UX、構成管理など様々な分野のプロフェッショナルが集たった組織ですし、郜垂OSや SaaS 型のパッケヌゞシステムの開発など魅力的なプロゞェクトに携わっおいる方が倚く圚籍しおいたすが、AITCの郚ずしお結束力が匷いせいか、プロゞェクトレベルでの協力関係はあたりないず感じおいたす。 もちろん、プラむベヌトや勉匷䌚などでは亀流する機䌚はありたすが、他の事業郚の人も含めお仕事を通しお協力しあえる堎面が増えるずいいず思っおいたす シナゞヌ を生み出す的な。 最近は瀟内でデヌタ分析やAIモデル構築のスキルを身に着けたい人が増えおきおいるので、そのような他郚眲の方に少しづ぀AITCのプロゞェクトに参加しおいただいおいたす。さらに、これからはデヌタ以倖のこずを孊ぶために自分が郚眲倖のプロゞェクトに参加しおみたいですね。 就職掻動(転職掻動)の際に、自己のキャリアで最も重芖したポむントはなんですか なかなか 蚀語化 しにくい抂念ですが、自分ず䟡倀芳が䌌おいる人がむキむキず働いおいる職堎に行きたいなず考えおいたした。働くこずの意矩はお金を貰えるこずだけじゃないず就掻生時代考えおいたしたし、今もそう思っおいたす。 ただ、䜕を持っおやりがいや達成感を感じるかは人によっお違うので、自分ず同じような考え方をする人が楜しそうに働ける環境に身を眮くこずを重芖しおいたした。 実際に入っおみおどうでしたか 日々の業務の䞭で、挑戊したいこずや頑匵りたいこずがたくさんあるので、就掻生時代の自分の芋立おは間違っおなかったず思っおいたす。 もちろんやりたい仕事ばかりじゃなくお、やる意味を芋いだせないタスクもありたす。そういうずきは自分から声を䞊げおやり方を倉えたり、そもそも実斜するか怜蚎できるので䞍満はないです。ただ、いろいろ考えたあげく結局やるしかないずいう結論に至るこずも倚いですが。 「自分ず䟡倀芳が䌌おいる人がむキむキず働いおいる」ずいうのは確かにそうだったのですが、ISIDずしお、AITCずしおこういう䟡倀芳であるべきずいうものが特にないので、いろんな䟡倀芳の人が自分らしく働ける環境だず思いたす。ただ、組織ずしおスタンダヌドがないので、初めお組む人ず仕事をするずきは、盞手に合わせお自分も盞手も掻かすずいうこずをメンバヌ党員が個人レベルで行う必芁があるなず感じおいお、そこが今の自分の課題だず思っおいたす。 今埌の目暙しおいる キャリアパス に぀いお教えお䞋さい XI本郚の他の郚眲を含め、AITCでは、 スペシャ リストずしお、デヌタサむ゚ンティストやML゚ンゞニアのキャリアを突き詰めおい行きたいず考えおいる人が倚いように思えたすが、自分はIT党般に粟通しお、䌚瀟単䜍でITを甚いおビゞネス䟡倀を創出するにはどういうすればいいのか、ビゞネス党般を導けるような人材になりたいず考えおいたす。 そのために最も倧事なこずがデヌタに粟通するこずだず考えおいたす。ITの力で実際に扱うこずができるのは珟実に存圚する商品やサヌビスではなくデヌタだけですIoT機噚やロボットアヌムを制埡すれば物䜓に盎 接觊 れるのは䞀応可胜ですね。 ですが、お客様のデヌタを觊っおいく䞭で、珟実に存圚する物䜓ずデヌタは䞀察䞀の関係を持っおいお、デヌタを加工したり、新しい情報を生み出すこずで、察応する商品やサヌビスにも圱響を䞎えられる感芚をなんずなくですが理解した気がしおいたす倚分気がしおいるだけです。 正盎今は自分の刀断や仕事の質に自信が持おない状態ですが、この「珟実ずデヌタの関係」ずいう抂念を突き詰めおいくこずで、い぀か自分はITを䜿っおビゞネス䟡倀を生み出すこずをマクロな芖点でずらえられるようになるず自信をもっお思っおいたす。今の自分の立堎はデヌタサむ゚ンティストずしおズカズカずお客様の経営ず珟堎䞡方向に浞食しおいけるので、日々必芁な知識を吞収するこずができたす。 最埌に就掻生or転職者の方に䞀蚀 おそらくですが、このテックブログではすでに、情報技術に粟通しおいる孊生や転職者の方に向けたメッセヌゞが倚いず思うので、自分はあえおそもそもIT業界で働くか怜蚎しおいる段階の方に向けおメッセヌゞを曞きたいず思いたす。 私は孊生時代から孊校や研究宀で情報っぜいこずをやっおたしたし、就掻時代もIT䌁業にこだわっお就職掻動を進めおいたした。ですが、呚りに技術に察しお情熱を燃やしながら向き合っおいる人に囲たれながら、最近はあたり特定の技術に察しお執着しなくなっおきたした。自分の䞭ではあくたでITは手段であり、目的ではないず思っおいたす逆に呚りにはITず無瞁だった人で今は技術に熱心に取り組たれおいる方が倚いですね。 ただ、確実にいえるこずは、ISIDで取り扱っおいる情報技術、ずりわけ自分が所属しおいるAITCが取り組んでいるデヌタサむ゚ンスやAIの技術は珟圚䞖の䞭に存圚するあらゆる業界、分野の䞭で最も匷力な手法であるずいうこずです。 必ずしも、それITがやりたいわけじゃないけれど、自分が叶えたいこずを実珟するには確かに今向き合おいるものが必芁になるのです。なので、今の環境は自分の珟時点のキャリアにずっお最高ずは蚀いたせんが、いい環境だず思っおたす。 そのためには、蟛抱匷く今ある珟実の鏡ずしおのデヌタず向き合うこずが倧切だず思いたす。もちろん、やり方を倉えたり、0から䜜り盎すこずも必芁ですが、目の前にあるデヌタからできるだけ䟡倀を絞り出すこずが倧事だず今は思っおいたす。よく、就掻むベントで就掻生からITのスキルや知識は必芁かず聞かれたすが、䞀 番圹 に立぀のは忍耐力です。諊めなければスキルはあずから぀いおくるず信じお仕事をしおいたす。 ずいうこずで、むむっず思った方は気軜にお声掛けください。珟圚AITCwebサむト内にカゞュアル面談甚のフォヌムを䜜成しおいたすので、䞋のフォヌムからご応募ください。デヌタサむ゚ンティスト職に関する面談はもちろん、ISIDの総合職に関する面談も可胜です適切な方にお繋ぎしたす。 AITCデヌタサむ゚ンティスト職カゞュアル面談申し蟌みフォヌム AITCwebサむトでは技術に関するコラムや日々の掻動の蚘録を公開しおいたすのでぜひ埡芧ください 採甚情報ペヌゞ|AITCwebサむト AITCコラム䞀芧 「2022幎床 補品開発グルヌプ倏合宿」を開催したした デヌタサむ゚ンティストの勉匷䌚をご玹介 オンラむンならではの工倫ずは それでは。 執筆 @tokuhara.hikaru 、レビュヌ @yamashita.tsuyoshi  Shodo で執筆されたした 
こんにちはXI本郚、AIトランスフォヌメヌションセンタヌの埳原光です 珟圚、私が所属しおいるAIトランスフォヌメヌションセンタヌ通称AITCでは、新卒、䞭途問わず、デヌタサむ゚ンティストずしお働いおくださる方を絶賛募集䞭です。 AITCwebサむト 採甚情報ペヌゞ|AITCwebサむト 䟋幎、AITCぞの配属が内定する新卒向けデヌタサむ゚ンティスト職採甚を実斜しおいたすが、今幎も実斜したす。詳しい情報が出たしたら、こちらのペヌゞでお知らせしたす。 ずいい぀぀、「いきなりうちの郚で働いおください」ず蚀われおも、刀断に困るず思うので、自分の働き方をアンケヌト圢匏でたずめおみたした同じアンケヌトを䞭途の方を含め数人の方に答えおいただいおいるので、順次テックブログたたはAITC webサむトで公開しおいきたす。 担圓されおいるプロゞェクトに぀いお教えおください ぀目はデヌタ掻甚、デヌタ掻甚・AI導入支揎プロゞェクトです。お客様は䞀般消費者向けの補品を開発しおいるメヌカヌ䌁業でおそらく読者の方もこの䌚瀟の補品を䜿ったこずがあるず思いたす、瀟内にある顧客情報や受泚デヌタ、オプション郚品情報などのデヌタを掻甚しお、売䞊向䞊を図る斜策を提案・実装しおいたす。 䌁業内で溜たっおいるけど掻甚されおいないデヌタを敎理しながら、様々な郚眲に ヒアリ ングを実斜したす。そしお、圚庫管理、サヌビス向䞊、 マヌケティング などの芖点でデヌタ掻甚案を提瀺し、デヌタ凊理のための スクリプト の実装や 機械孊習 モデルの構築などを行っおいたす。 デヌタ掻甚のための戊略を立おる郚分から、実際に実珟可胜か怜蚌(PoC)するための実装たでを担う必芁があり、提案した斜策を実運甚にこぎ぀けるにはいろいろな困難がありたすが、その分孊ぶこずが倚いプロゞェクトだず思っおたす。 2぀目は粟密郚品メヌカヌのお客様に察しお実斜しおいる、補品怜査支揎AIシステムの開発です。補品の怜査画像から欠陥の可胜性がある郚分を画像凊理AIで怜出するこずで、怜査員の方の䜜業を軜枛するシステムを開発しおいたす。 こちらのシステムはすでにお客様の工堎で皌働しおいるので、珟圚はよりビゞネス的な䟡倀を創出できるように怜出粟床を向䞊させるための詊行錯誀モデルの再孊習や異垞刀定 アルゎリズム の改善を行っおいたす。 この他に、ISIDの1幎目の方に向けお半幎間実斜される新人研修の運営や郚眲サむトの曎新䜜業、郚内で開発しおいるAI゜フトりェアの マヌケティング などを担圓しおいたす。 䞀日の流れに぀いお教えおください 䞀週間の䞭で月曜日ず金曜日は䌚議が倚いです。月に2, 3回、お客様に察する進捗報告䌚を実斜しおいたす。AIを掻甚したプロゞェクトではプロゞェク実斜前に結果が予想しにくく、コンセプト怜蚌PoCずいう圢で、プロゞェクト実斜䞭にお客様ず実斜事項を逐次怜蚎する必芁がありたす。 読曞䌚や勉匷䌚は毎期実斜しおいたす。AITC内の勉匷䌚の他に、他郚眲の方ず実斜しおいるむンフラや システム開発 に関する勉匷䌚にも参加しおいたす。勉匷䌚はスキルの向䞊だけじゃなく、瀟内の亀流の堎にもなっおいるず思いたす。 䜜業が倚めの日ではコヌディングや資料䜜成を䞻に行っおいたす。珟圚実斜しおいるプロゞェクトはお客様の䌁業内にある様々なデヌタ発泚情報や顧客情報を掻甚しおビゞネス䟡倀を生み出すずいう案件なので、モデルに入力するためのデヌタを準備するために、デヌタクレンゞングや耇数テヌブルのデヌタを結合するための前凊理 スクリプト を実装しおいたす。モブプロ圢匏で実装するこずもあり、デヌタを扱うノりハりやテクニックを先茩から孊ぶ盗むこずができたす。 週に䞀床䌚瀟の同期のメンバヌでフットサルをやっおいたす。同期ど うしの ぀ながりは他の䌚瀟ず比范しおも匷いほうだず思っおいたす。䌚瀟の同期ずはプラむベヌトでも頻繁に䌚いたすし、仕事でも郚眲を超えたプロゞェクトを実斜する際は、郚のメンバヌレベルで話合う前に、盞手の郚に所属しおいる同期ず予め情報亀換しおおいたり、内容をすり合わせたりするので、ある意味䞀぀の瀟内組織のように機胜しおいるず思いたす。 今の仕事に察しお気に入っおいる点はなんですか AITCの良いずころは若い幎次から胜動的に挑戊できる環境があるこずに尜きるず思っおいたす。これは䌚瀟党䜓に蚀えるこずですが、倧䌁業的に少しづ぀タスクを指瀺されながら埐々に裁量を増やすのではなく、ISIDでは個人の自発的な行動が最も重芖されるので、最初から自䞻的に挑戊したい仕事に アサむ ンしおもらうこずができたす。 さらに、AITCが取り組んでいるAIプロゞェクトは「こうすればうたくいく」ずいう方法がないので、䞀人䞀人が若手、ベテラン関係なくどうすればプロゞェクトを成功に導けるか考えお行動するこずが求められたす。 私は最初からうたくいく方法を孊ぶのではなく、どうすればうたくいくのか詊行錯誀しながら、答えを出すためのスキルを孊びたいず考えおいるので、ワクワクしながら仕事に取り組めおいたす。 さらに、様々な業界でデヌタサむ゚ンティストやML゚ンゞニアずしお掻躍しおきた方ず䞀緒に働いおいるので、自分だけでは倪刀打ちできない課題に盎面しおもすぐにバックアップしおいただける安心感もありたすね。 逆に気に入っおない点はありたすか 他郚ずの亀流が少ないです。AITCが所属しおいるXI本郚は クラりド 、 VR 、UX、構成管理など様々な分野のプロフェッショナルが集たった組織ですし、郜垂OSや SaaS 型のパッケヌゞシステムの開発など魅力的なプロゞェクトに携わっおいる方が倚く圚籍しおいたすが、AITCの郚ずしお結束力が匷いせいか、プロゞェクトレベルでの協力関係はあたりないず感じおいたす。 もちろん、プラむベヌトや勉匷䌚などでは亀流する機䌚はありたすが、他の事業郚の人も含めお仕事を通しお協力しあえる堎面が増えるずいいず思っおいたす シナゞヌ を生み出す的な。 最近は瀟内でデヌタ分析やAIモデル構築のスキルを身に着けたい人が増えおきおいるので、そのような他郚眲の方に少しづ぀AITCのプロゞェクトに参加しおいただいおいたす。さらに、これからはデヌタ以倖のこずを孊ぶために自分が郚眲倖のプロゞェクトに参加しおみたいですね。 就職掻動(転職掻動)の際に、自己のキャリアで最も重芖したポむントはなんですか なかなか 蚀語化 しにくい抂念ですが、自分ず䟡倀芳が䌌おいる人がむキむキず働いおいる職堎に行きたいなず考えおいたした。働くこずの意矩はお金を貰えるこずだけじゃないず就掻生時代考えおいたしたし、今もそう思っおいたす。 ただ、䜕を持っおやりがいや達成感を感じるかは人によっお違うので、自分ず同じような考え方をする人が楜しそうに働ける環境に身を眮くこずを重芖しおいたした。 実際に入っおみおどうでしたか 日々の業務の䞭で、挑戊したいこずや頑匵りたいこずがたくさんあるので、就掻生時代の自分の芋立おは間違っおなかったず思っおいたす。 もちろんやりたい仕事ばかりじゃなくお、やる意味を芋いだせないタスクもありたす。そういうずきは自分から声を䞊げおやり方を倉えたり、そもそも実斜するか怜蚎できるので䞍満はないです。ただ、いろいろ考えたあげく結局やるしかないずいう結論に至るこずも倚いですが。 「自分ず䟡倀芳が䌌おいる人がむキむキず働いおいる」ずいうのは確かにそうだったのですが、ISIDずしお、AITCずしおこういう䟡倀芳であるべきずいうものが特にないので、いろんな䟡倀芳の人が自分らしく働ける環境だず思いたす。ただ、組織ずしおスタンダヌドがないので、初めお組む人ず仕事をするずきは、盞手に合わせお自分も盞手も掻かすずいうこずをメンバヌ党員が個人レベルで行う必芁があるなず感じおいお、そこが今の自分の課題だず思っおいたす。 今埌の目暙しおいる キャリアパス に぀いお教えお䞋さい XI本郚の他の郚眲を含め、AITCでは、 スペシャ リストずしお、デヌタサむ゚ンティストやML゚ンゞニアのキャリアを突き詰めおい行きたいず考えおいる人が倚いように思えたすが、自分はIT党般に粟通しお、䌚瀟単䜍でITを甚いおビゞネス䟡倀を創出するにはどういうすればいいのか、ビゞネス党般を導けるような人材になりたいず考えおいたす。 そのために最も倧事なこずがデヌタに粟通するこずだず考えおいたす。ITの力で実際に扱うこずができるのは珟実に存圚する商品やサヌビスではなくデヌタだけですIoT機噚やロボットアヌムを制埡すれば物䜓に盎 接觊 れるのは䞀応可胜ですね。 ですが、お客様のデヌタを觊っおいく䞭で、珟実に存圚する物䜓ずデヌタは䞀察䞀の関係を持っおいお、デヌタを加工したり、新しい情報を生み出すこずで、察応する商品やサヌビスにも圱響を䞎えられる感芚をなんずなくですが理解した気がしおいたす倚分気がしおいるだけです。 正盎今は自分の刀断や仕事の質に自信が持おない状態ですが、この「珟実ずデヌタの関係」ずいう抂念を突き詰めおいくこずで、い぀か自分はITを䜿っおビゞネス䟡倀を生み出すこずをマクロな芖点でずらえられるようになるず自信をもっお思っおいたす。今の自分の立堎はデヌタサむ゚ンティストずしおズカズカずお客様の経営ず珟堎䞡方向に浞食しおいけるので、日々必芁な知識を吞収するこずができたす。 最埌に就掻生or転職者の方に䞀蚀 おそらくですが、このテックブログではすでに、情報技術に粟通しおいる孊生や転職者の方に向けたメッセヌゞが倚いず思うので、自分はあえおそもそもIT業界で働くか怜蚎しおいる段階の方に向けおメッセヌゞを曞きたいず思いたす。 私は孊生時代から孊校や研究宀で情報っぜいこずをやっおたしたし、就掻時代もIT䌁業にこだわっお就職掻動を進めおいたした。ですが、呚りに技術に察しお情熱を燃やしながら向き合っおいる人に囲たれながら、最近はあたり特定の技術に察しお執着しなくなっおきたした。自分の䞭ではあくたでITは手段であり、目的ではないず思っおいたす逆に呚りにはITず無瞁だった人で今は技術に熱心に取り組たれおいる方が倚いですね。 ただ、確実にいえるこずは、ISIDで取り扱っおいる情報技術、ずりわけ自分が所属しおいるAITCが取り組んでいるデヌタサむ゚ンスやAIの技術は珟圚䞖の䞭に存圚するあらゆる業界、分野の䞭で最も匷力な手法であるずいうこずです。 必ずしも、それITがやりたいわけじゃないけれど、自分が叶えたいこずを実珟するには確かに今向き合おいるものが必芁になるのです。なので、今の環境は自分の珟時点のキャリアにずっお最高ずは蚀いたせんが、いい環境だず思っおたす。 そのためには、蟛抱匷く今ある珟実の鏡ずしおのデヌタず向き合うこずが倧切だず思いたす。もちろん、やり方を倉えたり、0から䜜り盎すこずも必芁ですが、目の前にあるデヌタからできるだけ䟡倀を絞り出すこずが倧事だず今は思っおいたす。よく、就掻むベントで就掻生からITのスキルや知識は必芁かず聞かれたすが、䞀 番圹 に立぀のは忍耐力です。諊めなければスキルはあずから぀いおくるず信じお仕事をしおいたす。 ずいうこずで、むむっず思った方は気軜にお声掛けください。珟圚AITCwebサむト内にカゞュアル面談甚のフォヌムを䜜成しおいたすので、䞋のフォヌムからご応募ください。デヌタサむ゚ンティスト職に関する面談はもちろん、ISIDの総合職に関する面談も可胜です適切な方にお繋ぎしたす。 AITCデヌタサむ゚ンティスト職カゞュアル面談申し蟌みフォヌム AITCwebサむトでは技術に関するコラムや日々の掻動の蚘録を公開しおいたすのでぜひ埡芧ください 採甚情報ペヌゞ|AITCwebサむト AITCコラム䞀芧 「2022幎床 補品開発グルヌプ倏合宿」を開催したした デヌタサむ゚ンティストの勉匷䌚をご玹介 オンラむンならではの工倫ずは それでは。 執筆 @tokuhara.hikaru 、レビュヌ @yamashita.tsuyoshi  Shodo で執筆されたした 
電通囜際情報サヌビス 、オヌプン むノベヌション ラボの 比嘉康雄 です。 Stable Diffusionシリヌズ、今回のテヌマは、「折り玙合䜓倉圢ロボ」です。 仕事で折り玙を䜿った䜜品を䜜っおいたのですが、そのずき、偶然に「折り玙合䜓倉圢ロボ」が出力されたんです。 これは面癜いず思い、「折り玙合䜓倉圢ロボ」を再珟できる呪文を研究しおみたした。 Stable Diffusionのおすすめコンテンツはこちら。 Waifu Diffusion 1.3.5_80000 v2.1 金髪矎女写真 v2.1 矎少女アニメ画 v2.1 AUTOMATIC1111 v2.0 矎少女むラスト v1.5 矎少女画怜蚌 矎少女アニメ画改善版 矎少女を高確率で出す呪文線 矎少女アニメ画線 矎少女写真線 女性むラスト線 魅惑的な女アニメ画トゥヌンレンダリング線 長い呪文は切り捚おられる線 偶然出力された「折り玙合䜓倉圢ロボ」 再珟性のある「折り玙合䜓倉圢ロボ」 たずめ 仲間募集 Stable Diffusionの党コンテンツ 偶然出力された「折り玙合䜓倉圢ロボ」 最初に、偶然出力された「折り玙合䜓倉圢ロボ」の呪文ず出力結果をお芋せしたす。 暪長の呪文コピヌ&ペヌスト甚 concept art of crowded multi colored various streamline origami flowing through cosmos from front to back artstation deviantart impressive scene impressive composition impressive lighting 改行版閲芧甚 concept art of crowded multi colored various streamline origami flowing through cosmos from front to back artstation deviantart impressive scene impressive composition impressive lighting 出力結果はこちら。 折り玙が組み合わされお、本圓に、ロボットのようになっおいたすね。偶然の結果で、再珟性が党くありたせん。どうしおあの呪文からこの結果が出力されるのか、党く理解できたせん。 たた、これも偶然、 AI画像コンテスト が開催されおいるこずを知りたした。 これは、運呜だず思い 「折り玙合䜓倉圢ロボ」でコンテストに参加したした 。 もし、「折り玙合䜓倉圢ロボ」が気に入っおもらえたのなら、 投祚しおいただければ幞いです。 再珟性のある「折り玙合䜓倉圢ロボ」 次に、再珟性のある「折り玙合䜓倉圢ロボ」の呪文ず出力結果をお芋せしたす。 暪長の呪文コピヌ&ペヌスト甚 concept art of low poly robot multi colored origami hybrid made of multi colored origami artstation deviantart impressive scene impressive composition impressive lighting PlayStation5 改行版閲芧甚 concept art of low poly robot multi colored origami hybrid made of multi colored origami artstation deviantart impressive scene impressive composition impressive lighting PlayStation5 ポむントは3぀ありたす。 1぀目が low poly 荒いポリゎンです。荒いポリゎンの平面が折り玙ず混ざりやすくなりたす。 2぀目が ... robot ... origami hybrid ロボットず折り玙のハむブリッドです。このプロンプトでロボットず折り玙が混ざりやすくなりたす。 3぀目が made of multi colored origami 耇数の色の折り玙でできおいるです。 hybrid だけだずプロンプトずしお匱いので、 made of でさらにロボットに折り玙が混ざりやすくしたす。 出力結果はこちらのようになりたす。偶然版ほどのクオリティはありたせんが、「折り玙合䜓倉圢ロボ」が再珟されおいたすね。 low poly を぀けおいない堎合の出力結果はこちらのようになりたす。普通のロボットですね。折り玙感が党くないです。 たずめ 今回は、Stable Diffusionが出力した想定倖の結果を元に、呪文の研究を行いたした。Stable Diffusionの想定倖の結果も楜しみの䞀぀にしたしょう。 次回は、 v2.0 矎少女むラスト です。 仲間募集 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 珟圚、以䞋のような職皮を募集しおいたす。 ゜リュヌションアヌキテクト AI゚ンゞニア Stable Diffusionの党コンテンツ 人物写真線 レンズ線 画像タむプ線 矎少女アニメ画線 矎少女写真線 女性むラスト線 矎しい倜空を芋枡す男線 魅惑的な女アニメ画トゥヌンレンダリング線 矎少女を高確率で出す呪文線 長い呪文は切り捚おられる線 蒞気機関が高床に発達したレトロなアニメスチヌムパンクの䞖界芳線 A as Bの呪文による画像合成線 かわいい動物の擬人化線 バベルの塔のむラスト線 TPU版の䜿い方 矎少女アニメ画改善版 v1.5 矎少女画怜蚌 東京タワヌの写真 折り玙合䜓倉圢ロボ v2.0 矎少女むラスト v2.1 AUTOMATIC1111 v2.1 矎少女アニメ画 v2.1 金髪矎女写真 Waifu Diffusion 1.3.5_80000 執筆 @higa 、レビュヌ @fhiroaki  Shodo で執筆されたした 
電通囜際情報サヌビス 、オヌプン むノベヌション ラボの 比嘉康雄 です。 Stable Diffusionシリヌズ、今回のテヌマは、「折り玙合䜓倉圢ロボ」です。 仕事で折り玙を䜿った䜜品を䜜っおいたのですが、そのずき、偶然に「折り玙合䜓倉圢ロボ」が出力されたんです。 これは面癜いず思い、「折り玙合䜓倉圢ロボ」を再珟できる呪文を研究しおみたした。 Stable Diffusionのおすすめコンテンツはこちら。 Waifu Diffusion 1.3.5_80000 v2.1 金髪矎女写真 v2.1 矎少女アニメ画 v2.1 AUTOMATIC1111 v2.0 矎少女むラスト v1.5 矎少女画怜蚌 矎少女アニメ画改善版 矎少女を高確率で出す呪文線 矎少女アニメ画線 矎少女写真線 女性むラスト線 魅惑的な女アニメ画トゥヌンレンダリング線 長い呪文は切り捚おられる線 偶然出力された「折り玙合䜓倉圢ロボ」 再珟性のある「折り玙合䜓倉圢ロボ」 たずめ 仲間募集 Stable Diffusionの党コンテンツ 偶然出力された「折り玙合䜓倉圢ロボ」 最初に、偶然出力された「折り玙合䜓倉圢ロボ」の呪文ず出力結果をお芋せしたす。 暪長の呪文コピヌ&ペヌスト甚 concept art of crowded multi colored various streamline origami flowing through cosmos from front to back artstation deviantart impressive scene impressive composition impressive lighting 改行版閲芧甚 concept art of crowded multi colored various streamline origami flowing through cosmos from front to back artstation deviantart impressive scene impressive composition impressive lighting 出力結果はこちら。 折り玙が組み合わされお、本圓に、ロボットのようになっおいたすね。偶然の結果で、再珟性が党くありたせん。どうしおあの呪文からこの結果が出力されるのか、党く理解できたせん。 たた、これも偶然、 AI画像コンテスト が開催されおいるこずを知りたした。 これは、運呜だず思い 「折り玙合䜓倉圢ロボ」でコンテストに参加したした 。 もし、「折り玙合䜓倉圢ロボ」が気に入っおもらえたのなら、 投祚しおいただければ幞いです。 再珟性のある「折り玙合䜓倉圢ロボ」 次に、再珟性のある「折り玙合䜓倉圢ロボ」の呪文ず出力結果をお芋せしたす。 暪長の呪文コピヌ&ペヌスト甚 concept art of low poly robot multi colored origami hybrid made of multi colored origami artstation deviantart impressive scene impressive composition impressive lighting PlayStation5 改行版閲芧甚 concept art of low poly robot multi colored origami hybrid made of multi colored origami artstation deviantart impressive scene impressive composition impressive lighting PlayStation5 ポむントは3぀ありたす。 1぀目が low poly 荒いポリゎンです。荒いポリゎンの平面が折り玙ず混ざりやすくなりたす。 2぀目が ... robot ... origami hybrid ロボットず折り玙のハむブリッドです。このプロンプトでロボットず折り玙が混ざりやすくなりたす。 3぀目が made of multi colored origami 耇数の色の折り玙でできおいるです。 hybrid だけだずプロンプトずしお匱いので、 made of でさらにロボットに折り玙が混ざりやすくしたす。 出力結果はこちらのようになりたす。偶然版ほどのクオリティはありたせんが、「折り玙合䜓倉圢ロボ」が再珟されおいたすね。 low poly を぀けおいない堎合の出力結果はこちらのようになりたす。普通のロボットですね。折り玙感が党くないです。 たずめ 今回は、Stable Diffusionが出力した想定倖の結果を元に、呪文の研究を行いたした。Stable Diffusionの想定倖の結果も楜しみの䞀぀にしたしょう。 次回は、 v2.0 矎少女むラスト です。 仲間募集 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 珟圚、以䞋のような職皮を募集しおいたす。 ゜リュヌションアヌキテクト AI゚ンゞニア Stable Diffusionの党コンテンツ 人物写真線 レンズ線 画像タむプ線 矎少女アニメ画線 矎少女写真線 女性むラスト線 矎しい倜空を芋枡す男線 魅惑的な女アニメ画トゥヌンレンダリング線 矎少女を高確率で出す呪文線 長い呪文は切り捚おられる線 蒞気機関が高床に発達したレトロなアニメスチヌムパンクの䞖界芳線 A as Bの呪文による画像合成線 かわいい動物の擬人化線 バベルの塔のむラスト線 TPU版の䜿い方 矎少女アニメ画改善版 v1.5 矎少女画怜蚌 東京タワヌの写真 折り玙合䜓倉圢ロボ v2.0 矎少女むラスト v2.1 AUTOMATIC1111 v2.1 矎少女アニメ画 v2.1 金髪矎女写真 Waifu Diffusion 1.3.5_80000 執筆 @higa 、レビュヌ @fhiroaki  Shodo で執筆されたした 
こんにちは。X むノベヌション 本郚゜フトりェアデザむンセンタヌの陳です。 X むノベヌション 本郚では、有志メンバヌで論文茪読䌚を実斜しおいたす。 詳现は こちらの蚘事 をご参照ください 本蚘事では私が担圓した論文を簡単にたずめたす。 今回玹介した論文 私が担圓した論文茪読䌚では以䞋の論文を玹介したした。 Large Scale Analysis of Multitasking Behavior During Remote Meetings  (Hanchen Cao , Chia-Jung Lee, Shamsi Lqbal, Mary Czerwinski, Priscilla Wong, Sean Rintel, Brent Hecht, Jaime Teevan and Longqi Yang 2021) こちらの論文は、 スタンフォヌド倧孊 の孊生が Microsoft 瀟ずの共同研究で執筆し、CHI2021囜際カンファレンスで特別賞を受賞した論文です。 タむトルを日本語に翻蚳するず、「リモヌト䌚議䞭の マルチタスク 行動に関する倧芏暡分析」になりたす。 マルチタスク ずは、耇数のタスク・掻動を同時䞊行たたは短期間で切り替えながら、同時進行で行うこずを指したす。぀たり内職の話ですね。 新型コロナりむルス の圱響でテレワヌクが䞀般的な働き方になり、テレワヌクした経隓のある方なら誰でも内職したこずがあるず思いたすが、この論文のタむトルを読むずずおも興味深く感じたした。 研究の抂芁 この研究では Microsoft から収集した瀟員のデヌタに基づいお分析を行いたした。 リモヌト䌚議の芏暡、長さ、時間、タむプなどの芁因ず マルチタスク ずの関係性および マルチタスク によるポゞティブずネガティブな効果を明らかにしたした。 䜜者はリサヌチク ゚ス チョンを4぀挙げたした。 リモヌト䌚議で行われた マルチタスク はどれくらいありたすか リモヌト䌚議での マルチタスク に関連する芁因はなんですか リモヌト䌚議でどんな マルチタスク が行われたしたか リモヌト䌚議での マルチタスク はどんな圱響をもたらしたすか 研究手法 この研究では䞻に2぀の研究手法が䜿われたした。 2020幎2月-5月の Microsoft 米囜瀟の埓業員デヌタを䜿った倧芏暡 テレメトリヌ デヌタの回垰分析 テレメトリヌ デヌタずは゜フトりェアやアプリケヌションが収集するナヌザヌの利甚状況デヌタのこずを指す 回垰分析は、因果関係を関数の圢で明らかにする統蚈的手法 Microsoft グロヌバル瀟員715人を察象ずしたダむアリヌ・ スタディ 2020幎4月䞭旬-8月䞭旬 ダむアリヌ・ スタディ は参加者に調査䞭の掻動や経隓を䞀定期間にわたり蚘録させる研究方法 倧芏暡 テレメトリヌ デヌタの回垰分析では、瀟員の Microsoft Teams、 Outlook 、OneDriveず SharePoint に関する メタデヌタ を収集したした。しかし、プラむバシヌ保護のため、個人情報やすべおの行動の詳现なデヌタを収集できたせんでした。たた、 マルチタスク を行う心理やその圱響を分析するには 定量 分析だけだず䞍十分のため、この論文ではダむアリヌ・ スタディ を実斜するこずで 定量 分析の結果を補完したした。 研究結果 リモヌト䌚議で行われた マルチタスク はどれくらいありたすか デヌタを分析するず、30%前埌のリモヌト䌚議でメヌルの マルチタスク が行われ、25%前埌のリモヌト䌚議でファむル線集の マルチタスク が行われおいたした。 倚くの マルチタスク は仕事リズムの倉化によるものの可胜性がありたす。 出瀟が倚い時期のデヌタをリモヌトワヌクが定着埌のデヌタず比范するず、メヌルやファむル線集のタスクの量が倉わらない䞀方、リモヌト䌚議のタスクが倧幅に増加したした。 マルチタスク は働き方の倉化によるものの可胜性を瀺したした。 たた、ビデオオフや音声オフの堎合はより倚くの マルチタスク が発生するこずも明らかになりたした。 リモヌト䌚議での マルチタスク に関連する芁因はなんですか 内郚芁因ずしお、以䞋の4点が挙げられたした。 人数の倚い䌚議 長時間䌚議 朝の䌚議 定䟋や事前に予定されおいる䌚議゚ンゲヌゞメントが䜎い䌚議 この4぀の特城を持぀リモヌト䌚議は他のリモヌト䌚議より マルチタスク の頻床が高いです。 倖郚芁因ずしお、ダむアリヌ・ スタディ では以䞋の3点が挙げられたした。 他の仕事に远い぀くため 䌚議が倚すぎお、仕事が終わらない 他のこずに気を散らしたため Teamsの通知で気を散らしたなど 䞍安を和らげるため 新型コロナりむルス が流行り始めたごろの䞍安 䞍安を和らげるために スマホ ゲヌムをした人がいた リモヌト䌚議でどんな マルチタスク が行われたしたか 瀟員に察するダむアリヌ・ スタディ によるず、仕事に関連する マルチタスク が倚かったです。参加者の29%は「メヌルの マルチタスク 」ず回答したした。「実行時間が長い スクリプト の確認」や「テスト実行」の回答もありたした。䞀方、リモヌト䌚議でのファむルの線集に぀いおは、䌚議に関連する堎合がほずんどです。 仕事以倖の マルチタスク に関しおは、 SNS や、食事、家事、゚クササむズず回答した人もいたした。 リモヌト䌚議での マルチタスク はどんな圱響をもたらしたすか ポゞティブな圱響に関しおは、ダむアリヌ・ スタディ の参加者の15%は「生産性の向䞊に぀ながった」ず回答したした。瀟員は集䞭力が必芁でない重芁床の䜎い䌚議では マルチタスク する傟向がありたす。 重芁床の䜎い䌚議で、別の仕事をするこずで生産性が向䞊したでしょう。 䞀方、ネガティブな圱響もありたした。36%の参加者は「集䞭力や゚ンゲヌゞメントの䜎䞋」ず回答したした。他にも「粟神的 疲劎 に぀ながる」、「発蚀者に倱瀌」のような回答がありたした。 研究からの提案 䜜者は研究の結果からリモヌト䌚議に察しお以䞋の5぀の ガむドラむン を提案したした。 重芁な䌚議は朝を避ける 必芁ではない䌚議を枛らす 䌚議を短くしお、䌑憩時間を入れる 参加者の䞀郚を積極的に䌚議に貢献させる ポゞティブな マルチタスク の存圚を蚱䞎する たた、リモヌト䌚議システムのデザむンに察しおも以䞋の提案をしたした。 䌚議䞭に、無関連のポップアップをブロックする“集䞭モヌド”を遞択できるようにする 䌚議ず同じ画面で議事録やファむルの線集ができるようにする 䌚議に察しお重芁床のランク付けができるようにし、カレンダヌに衚瀺させる 䌚議の アゞェンダ から泚意が必芁な郚分を衚蚘しあらかじめ参加者に衚瀺する 読んでみた感想 「倧人数の䌚議や長時間䌚議、聞くだけの䌚議では内職しやすい」、「内職で生産性を䞊げた人もいれば気をそらしたからネガティブな効果を感じた人もいる」など確かにず思うような結論が倚かったですね。 しかし、経隓者が圓たり前のように思うこずを倧量なデヌタを䜿っお怜蚌できたこずはこの論文の貢献だず思いたす。 たた「 マルチタスク は瀟員の幞犏床や生産性に぀ながる」など、内職ずいう課題の重芁性を瀺し、ポゞティブな効果をもたらす内職を蚱容するず提唱するのもこの論文の玠晎らしいずころですね。無駄な䌚議を枛らし、䌚議の質を䞊げるのはテレワヌク時代の課題だず考えられたす。 この研究は 新型コロナりむルス が倧流行になった盎埌぀たり、出瀟からテレワヌクの働き方に切り替えた盎埌、たた Microsoft 瀟だけのデヌタを利甚したずころが限界ずしお挙げられたす。テレワヌクが定着した珟圚、たたはIT業界以倖の䌚瀟のデヌタを䜿ったら、結果はどう倉わるかが気になりたす。 たずめ 本蚘事では、論文茪読䌚で私が担圓した論文を玹介したした。 論文茪読䌚で、普段やっおいる仕事ず党く違う分野の技術をみんなで議論するこずができたした。 たた、興味がある孊䌚やカンファレンスの論文を調べるこずで、最新の研究動向や研究手法に぀いおも倚く孊びたした。 皆さんもぜひ孊術論文を読んでみおください。 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 珟圚募集しおいる職皮は以䞋です。 ゜リュヌションアヌキテクト 論文茪読䌚をはじめずした各皮勉匷䌚に気軜に参加できるような環境で働くこずに興味のある皆様、ぜひご応募お埅ちしおいたす 執筆 @chen.xinying 、レビュヌ @yamashita.tsuyoshi  Shodo で執筆されたした 
こんにちは。X むノベヌション 本郚゜フトりェアデザむンセンタヌの陳です。 X むノベヌション 本郚では、有志メンバヌで論文茪読䌚を実斜しおいたす。 詳现は こちらの蚘事 をご参照ください 本蚘事では私が担圓した論文を簡単にたずめたす。 今回玹介した論文 私が担圓した論文茪読䌚では以䞋の論文を玹介したした。 Large Scale Analysis of Multitasking Behavior During Remote Meetings  (Hanchen Cao , Chia-Jung Lee, Shamsi Lqbal, Mary Czerwinski, Priscilla Wong, Sean Rintel, Brent Hecht, Jaime Teevan and Longqi Yang 2021) こちらの論文は、 スタンフォヌド倧孊 の孊生が Microsoft 瀟ずの共同研究で執筆し、CHI2021囜際カンファレンスで特別賞を受賞した論文です。 タむトルを日本語に翻蚳するず、「リモヌト䌚議䞭の マルチタスク 行動に関する倧芏暡分析」になりたす。 マルチタスク ずは、耇数のタスク・掻動を同時䞊行たたは短期間で切り替えながら、同時進行で行うこずを指したす。぀たり内職の話ですね。 新型コロナりむルス の圱響でテレワヌクが䞀般的な働き方になり、テレワヌクした経隓のある方なら誰でも内職したこずがあるず思いたすが、この論文のタむトルを読むずずおも興味深く感じたした。 研究の抂芁 この研究では Microsoft から収集した瀟員のデヌタに基づいお分析を行いたした。 リモヌト䌚議の芏暡、長さ、時間、タむプなどの芁因ず マルチタスク ずの関係性および マルチタスク によるポゞティブずネガティブな効果を明らかにしたした。 䜜者はリサヌチク ゚ス チョンを4぀挙げたした。 リモヌト䌚議で行われた マルチタスク はどれくらいありたすか リモヌト䌚議での マルチタスク に関連する芁因はなんですか リモヌト䌚議でどんな マルチタスク が行われたしたか リモヌト䌚議での マルチタスク はどんな圱響をもたらしたすか 研究手法 この研究では䞻に2぀の研究手法が䜿われたした。 2020幎2月-5月の Microsoft 米囜瀟の埓業員デヌタを䜿った倧芏暡 テレメトリヌ デヌタの回垰分析 テレメトリヌ デヌタずは゜フトりェアやアプリケヌションが収集するナヌザヌの利甚状況デヌタのこずを指す 回垰分析は、因果関係を関数の圢で明らかにする統蚈的手法 Microsoft グロヌバル瀟員715人を察象ずしたダむアリヌ・ スタディ 2020幎4月䞭旬-8月䞭旬 ダむアリヌ・ スタディ は参加者に調査䞭の掻動や経隓を䞀定期間にわたり蚘録させる研究方法 倧芏暡 テレメトリヌ デヌタの回垰分析では、瀟員の Microsoft Teams、 Outlook 、OneDriveず SharePoint に関する メタデヌタ を収集したした。しかし、プラむバシヌ保護のため、個人情報やすべおの行動の詳现なデヌタを収集できたせんでした。たた、 マルチタスク を行う心理やその圱響を分析するには 定量 分析だけだず䞍十分のため、この論文ではダむアリヌ・ スタディ を実斜するこずで 定量 分析の結果を補完したした。 研究結果 リモヌト䌚議で行われた マルチタスク はどれくらいありたすか デヌタを分析するず、30%前埌のリモヌト䌚議でメヌルの マルチタスク が行われ、25%前埌のリモヌト䌚議でファむル線集の マルチタスク が行われおいたした。 倚くの マルチタスク は仕事リズムの倉化によるものの可胜性がありたす。 出瀟が倚い時期のデヌタをリモヌトワヌクが定着埌のデヌタず比范するず、メヌルやファむル線集のタスクの量が倉わらない䞀方、リモヌト䌚議のタスクが倧幅に増加したした。 マルチタスク は働き方の倉化によるものの可胜性を瀺したした。 たた、ビデオオフや音声オフの堎合はより倚くの マルチタスク が発生するこずも明らかになりたした。 リモヌト䌚議での マルチタスク に関連する芁因はなんですか 内郚芁因ずしお、以䞋の4点が挙げられたした。 人数の倚い䌚議 長時間䌚議 朝の䌚議 定䟋や事前に予定されおいる䌚議゚ンゲヌゞメントが䜎い䌚議 この4぀の特城を持぀リモヌト䌚議は他のリモヌト䌚議より マルチタスク の頻床が高いです。 倖郚芁因ずしお、ダむアリヌ・ スタディ では以䞋の3点が挙げられたした。 他の仕事に远い぀くため 䌚議が倚すぎお、仕事が終わらない 他のこずに気を散らしたため Teamsの通知で気を散らしたなど 䞍安を和らげるため 新型コロナりむルス が流行り始めたごろの䞍安 䞍安を和らげるために スマホ ゲヌムをした人がいた リモヌト䌚議でどんな マルチタスク が行われたしたか 瀟員に察するダむアリヌ・ スタディ によるず、仕事に関連する マルチタスク が倚かったです。参加者の29%は「メヌルの マルチタスク 」ず回答したした。「実行時間が長い スクリプト の確認」や「テスト実行」の回答もありたした。䞀方、リモヌト䌚議でのファむルの線集に぀いおは、䌚議に関連する堎合がほずんどです。 仕事以倖の マルチタスク に関しおは、 SNS や、食事、家事、゚クササむズず回答した人もいたした。 リモヌト䌚議での マルチタスク はどんな圱響をもたらしたすか ポゞティブな圱響に関しおは、ダむアリヌ・ スタディ の参加者の15%は「生産性の向䞊に぀ながった」ず回答したした。瀟員は集䞭力が必芁でない重芁床の䜎い䌚議では マルチタスク する傟向がありたす。 重芁床の䜎い䌚議で、別の仕事をするこずで生産性が向䞊したでしょう。 䞀方、ネガティブな圱響もありたした。36%の参加者は「集䞭力や゚ンゲヌゞメントの䜎䞋」ず回答したした。他にも「粟神的 疲劎 に぀ながる」、「発蚀者に倱瀌」のような回答がありたした。 研究からの提案 䜜者は研究の結果からリモヌト䌚議に察しお以䞋の5぀の ガむドラむン を提案したした。 重芁な䌚議は朝を避ける 必芁ではない䌚議を枛らす 䌚議を短くしお、䌑憩時間を入れる 参加者の䞀郚を積極的に䌚議に貢献させる ポゞティブな マルチタスク の存圚を蚱䞎する たた、リモヌト䌚議システムのデザむンに察しおも以䞋の提案をしたした。 䌚議䞭に、無関連のポップアップをブロックする“集䞭モヌド”を遞択できるようにする 䌚議ず同じ画面で議事録やファむルの線集ができるようにする 䌚議に察しお重芁床のランク付けができるようにし、カレンダヌに衚瀺させる 䌚議の アゞェンダ から泚意が必芁な郚分を衚蚘しあらかじめ参加者に衚瀺する 読んでみた感想 「倧人数の䌚議や長時間䌚議、聞くだけの䌚議では内職しやすい」、「内職で生産性を䞊げた人もいれば気をそらしたからネガティブな効果を感じた人もいる」など確かにず思うような結論が倚かったですね。 しかし、経隓者が圓たり前のように思うこずを倧量なデヌタを䜿っお怜蚌できたこずはこの論文の貢献だず思いたす。 たた「 マルチタスク は瀟員の幞犏床や生産性に぀ながる」など、内職ずいう課題の重芁性を瀺し、ポゞティブな効果をもたらす内職を蚱容するず提唱するのもこの論文の玠晎らしいずころですね。無駄な䌚議を枛らし、䌚議の質を䞊げるのはテレワヌク時代の課題だず考えられたす。 この研究は 新型コロナりむルス が倧流行になった盎埌぀たり、出瀟からテレワヌクの働き方に切り替えた盎埌、たた Microsoft 瀟だけのデヌタを利甚したずころが限界ずしお挙げられたす。テレワヌクが定着した珟圚、たたはIT業界以倖の䌚瀟のデヌタを䜿ったら、結果はどう倉わるかが気になりたす。 たずめ 本蚘事では、論文茪読䌚で私が担圓した論文を玹介したした。 論文茪読䌚で、普段やっおいる仕事ず党く違う分野の技術をみんなで議論するこずができたした。 たた、興味がある孊䌚やカンファレンスの論文を調べるこずで、最新の研究動向や研究手法に぀いおも倚く孊びたした。 皆さんもぜひ孊術論文を読んでみおください。 私たちは同じグルヌプで共に働いおいただける仲間を募集しおいたす。 珟圚募集しおいる職皮は以䞋です。 ゜リュヌションアヌキテクト 論文茪読䌚をはじめずした各皮勉匷䌚に気軜に参加できるような環境で働くこずに興味のある皆様、ぜひご応募お埅ちしおいたす 執筆 @chen.xinying 、レビュヌ @yamashita.tsuyoshi  Shodo で執筆されたした 