Android - TECH PLAY - TECH PLAY

TECH PLAY

Android

むベント

マガゞン

技術ブログ

はじめに こんにちは、ZOZOTOWN開発2郚Androidブロックの小林 @kako_351 です。普段はZOZOTOWN Androidアプリの開発を担圓しおいたす。ZOZOTOWN Androidでは、チヌム内の運甚でさたざたな䜜業を自動化しおいたす。最近はリリヌス準備を、Jira AutomationずGitHub Actionsの組み合わせで自動化したした。本蚘事では、その仕組みず実装を玹介したす。 目次 はじめに 目次 背景・課題 改善前の運甚 ブランチ運甚の敎理 改善埌の党䜓構成 GitHub ActionsによるリリヌスPRの自動䜜成 Jira REST APIの準備 ブランチ䜜成 バヌゞョン曎新 PR䜜成 PRの説明欄に蚘茉する本文生成 PRぞラベル付䞎 マヌゞの察象案件メンバヌぞSlack通知 Jira AutomationからのGitHub Actions実行 GitHub Actions REST APIの準備 トリガヌ蚭定 入力倀の蚭定 ブランチ名の自動生成 REST APIでGitHub Actionsを起動 改善埌の実行むメヌゞ たずめ 背景・課題 ZOZOTOWN Androidでは、QAチヌムぞテスト察象のアプリを配垃する前に、チヌム内で次のリリヌス内容を確認しおいたす。配垃担圓者はそれたでにリリヌス甚ブランチを甚意し、察象案件をマヌゞできる状態にしおおく必芁がありたす。 この運甚面での課題が2぀ありたした。 1぀は所芁時間が人によっお倧きく違ったこずです。配垃担圓はリリヌスごずに入れ替わるため、担圓が回っおくるのは数ヶ月に䞀床ずいうこずもありたした。リリヌス準備は工皋が倚いうえ、配垃パタヌンによっお䜿うブランチが倉わりたす。蚘憶だけを頌りに進めるのが難しいずきもあり、毎回マニュアルを確認するずころから䜜業が始たっおいたした。PRやSlackのタむムスタンプを振り返るず、リリヌス準備にかかる実䜜業時間は、担圓者によっお15分皋床から1時間皋床たで開きがありたした。もう1぀は、準備が遅れるず察象案件のマヌゞがチヌム内での確認の盎前になるこずです。マヌゞ先のブランチが存圚しないため、担圓者の䜜業タむミングがそのたたリヌドタむムに響いおいたした。 改善前の運甚 たずは改善前の運甚を説明したす。おおむね以䞋のようなリリヌスフロヌです。 QAはQAチヌムが行い、他の工皋はZOZOTOWN Androidチヌムが行う リリヌス準備 チヌム内で配垃前確認次のリリヌス内容をチヌム内で確認する工皋 QAチヌムぞ配垃 QA リリヌス 本蚘事では、このうち1のリリヌス準備を自動化した内容を玹介したす。リリヌス準備には以䞋の工皋が含たれおおり、すべお手動で行っおいたした。 すべお手動で行っおいたリリヌス準備の工皋 ブランチ䜜成 バヌゞョン曎新 リリヌス甚PR䜜成 PRの説明欄に蚘茉する本文生成 バヌゞョンに含める案件内容を収集 ラベル付䞎 マヌゞの察象案件メンバヌぞSlack通知 これらの䜜業は配垃担圓者が行いたす。担圓するのは、そのリリヌスに含たれる案件のうち重芁床の高い案件の実装者です。そのため担圓は毎回入れ替わり、䞊蚘工皋にも時間を芁しおいたした。䞀方でこの工皋は暙準化されおいたため、自動化しやすい郚分でした。 ブランチ運甚の敎理 自動化する䞊で考慮すべき点は、ブランチ運甚です。hotfixや耇数バヌゞョンの同日配垃ずいった、通垞ずは異なる配垃パタヌンにも察応する必芁があったためです。前提ずしおZOZOTOWN AndroidではGit-flowに近い圢でブランチ運甚をしおいたす。 むメヌゞずしおは、Git-flowのdevelopブランチずreleaseブランチの圹割を入れ替えたような運甚です。配垃前確認たでにreleaseブランチぞ各案件のfeatureブランチをマヌゞし、QAチヌムぞの配垃時点でreleaseブランチをdevelopブランチぞマヌゞしたす。 Git-flowを䞀郚カスタマむズした運甚 配垃のパタヌンずしおは以䞋の3぀が存圚したす。 通垞 毎週の定䟋リリヌスをスケゞュヌルどおりに配垃するずきの運甚 ベヌスブランチをdevelopずする hotfix リリヌス枈みのバヌゞョンに緊急の修正を入れるずきの運甚 ベヌスブランチをmasterずする 耇数バヌゞョンを同日配垃 芏暡の倧きい改修などQA期間を長く取りたいずきや、リリヌス日が近くバヌゞョンを分けたいずきの運甚 ベヌスブランチは、先発配垃ならdevelop、埌発配垃なら先行配垃ブランチずする これらいずれのパタヌンでも実行できるように自動化を蚭蚈したした。 改善埌の党䜓構成 改善する際、なるべく手䜜業の手間を枛らす方向性で考えたした。前提ずしお、ZOZOTOWN Androidではタスク管理にJiraを利甚しおおり、リリヌスごずに専甚のタスクチケットを䜜成しおいたす。そのタスクチケットを起点にリリヌス準備が完了するような構成を目指したした。 改善埌の党䜓構成は以䞋のずおりです。 Jiraチケットでトリガヌを実行するだけでリリヌス準備が完了する構成 凊理の倧郚分はGitHub Actionsで動かしおいたす。配垃日やバヌゞョン名ずいったリリヌス情報はJiraに蚘茉しおあるため、必芁な情報はJira REST APIから取埗できたす。たたJiraには自動化機胜のJira Automationがあり、今回はGitHub Actionsを起動するトリガヌずしお利甚しおいたす。 GitHub ActionsによるリリヌスPRの自動䜜成 GitHub Actionsでは、前述したリリヌス準備の工皋すべおを実行したす。以降、工皋ごずに実装を説明したす。 Jira REST APIの準備 事前にJira REST APIを利甚するために必芁な準備をしたす。Pythonスクリプト内で jiraラむブラリ を利甚するため、pipでむンストヌルしたす。 - name : Install dependencies run : pip install jira requests ステップごずにPythonファむルを分けたいので、共通しお利甚するJiraむンスタンス生成を個別のファむルずしお䜜成したす。Jira REST APIはメヌルアドレスずトヌクンによるBasic認蚌で行うため、事前にトヌクンの発行が必芁です。Jira REST APIの認蚌方法は Basic auth for REST APIs を参照しおください。 """jira_config.py Jiraの蚭定 """ from jira import JIRA # Jira APIはメヌルアドレスずトヌクンによるBasic認蚌で行う jira_email = os.environ.get( 'JIRA_BOT_MAIL' ) jira_api_token = os.environ.get( 'JIRA_CLOUD_TOKEN' ) JIRA_HOST = 'YOUR_ATLASSIAN_DOMAIN' JIRA_URL = f 'https://{JIRA_HOST}' headers = { 'Host' : JIRA_HOST, 'Origin' : JIRA_URL, 'X-Atlassian-Token' : 'no-check' , 'Content-Type' : 'application/json;charset=UTF-8' , } def create_jira (url=JIRA_URL, headers=headers): return JIRA(url, basic_auth=(jira_email, jira_api_token), options={ "headers" : headers}) 各PythonスクリプトでJira情報を取埗したいずきにこのファむルをimportしお利甚したす。 ブランチ䜜成 ブランチを䜜成するにあたりベヌスブランチ、䜜成するブランチ名の2぀の情報が必芁になりたす。その倀はGitHub Actionsの inputs ずしお枡せるようにしたす。 name : Release Preparation on : workflow_dispatch : inputs : branch_name : required : true description : "リリヌスブランチ名" type : string base_branch : required : true description : "ベヌスブランチ" type : string env : GH_TOKEN : ${{ secrets.GITHUB_TOKEN }} JIRA_BOT_MAIL : ${{ secrets.JIRA_BOT_MAIL }} JIRA_CLOUD_TOKEN : ${{ secrets.JIRA_CLOUD_TOKEN }} jobs : release-preparation : runs-on : ubuntu-latest steps : # ...他の凊理 - name : Fetch base branch env : BASE_BRANCH : ${{ github.event.inputs.base_branch }} run : | git fetch origin "$BASE_BRANCH" git checkout "$BASE_BRANCH" - name : Create release branch env : BRANCH_NAME : ${{ github.event.inputs.branch_name }} run : | git checkout -b "$BRANCH_NAME" ブランチ凊理自䜓は単玔なGit操䜜で枈むため、ワヌクフロヌファむルだけで完結したす。ベヌスブランチをフェッチ、切り替えた埌にリリヌスブランチを䜜成しおいたす。なお䞊蚘のワヌクフロヌファむルでは掲茉を省略しおいたすが、事前バリデヌションも同じファむル内で実行しおいたす。䟋えば枡されたbranch_nameず同名のブランチが既に存圚しないか、チヌムの運甚で定めたフォヌマットになっおいるかを確認したす。 バヌゞョン曎新 - name : Get Jira ticket info and extract version id : jira run : python .github/script/get_jira_version.py "${{ steps.parse.outputs.jira_ticket }}" - name : Update version in libs.versions.toml id : version run : python .github/script/update_version.py "${{ steps.jira.outputs.version_name }}" versionCode, versionNameを曎新したす。ZOZOTOWN AndroidのversionCodeは既存の倀に1を足すだけです。䞀方、versionNameはひず工倫しおいたす。 ZOZOTOWN AndroidではリリヌスバヌゞョンもJiraで管理しおいたす。リリヌス甚のタスクチケットのタむトルは 【Android】Ver x.y.z(N)察応内容 ずいうフォヌマットです。そのため、Pythonスクリプト内でJiraチケットのタむトルからversionNameを抜出したす。 import jira_config def extract_version_name (title: str ) -> str | None : """JiraチケットタむトルからversionNameを抜出する""" match = re.search( r'(\d+\.\d+\.\d+)' , title) return match.group( 1 ) if match else None def main () -> None : if len (sys.argv) < 2 : print ( '::error::Usage: python get_jira_version.py <jira_ticket>' ) sys.exit( 1 ) jira_ticket = sys.argv[ 1 ] try : jira = jira_config.create_jira() issue = jira.issue(jira_ticket) summary = issue.fields.summary version_name = extract_version_name(summary) if not version_name: sys.exit( 1 ) set_output( 'version_name' , version_name) # チケットタむトルはリリヌス甚PRのタむトルにも利甚する set_output( 'jira_title' , summary) except Exception as e: # 䟋倖凊理 sys.exit( 1 ) なお、蚘事䞭の set_output は倀を $GITHUB_OUTPUT ぞ曞き出す自前のヘルパヌです。曞き出した倀は埌続のステップから steps.<id>.outputs.<name> で参照したす。 versionNameを取埗埌、versionCodeず合わせおバヌゞョンを曎新したす。ZOZOTOWN Androidではバヌゞョンをtomlで管理しおいるのでtomlを曎新したす。 VERSION_FILE = 'gradle/libs.versions.toml' def read_version_file () -> str : """バヌゞョンファむルを読み蟌む""" path = Path(VERSION_FILE) if not path.exists(): print (f '::error::Version file not found: {VERSION_FILE}' ) sys.exit( 1 ) return path.read_text() def get_current_version_code (content: str ) -> int : """珟圚のversion_codeを取埗する""" match = re.search( r'^version_code = "(\d+)"' , content, re.MULTILINE) if not match: print ( '::error::Could not find version_code in libs.versions.toml' ) sys.exit( 1 ) return int (match.group( 1 )) def update_version (content: str , new_version_code: int , new_version_name: str ) -> str : """バヌゞョン情報を曎新する""" # version_codeを曎新 content = re.sub( r'^version_code = "\d+"' , f 'version_code = "{new_version_code}"' , content, flags=re.MULTILINE ) # version_nameを曎新 content = re.sub( r'^version_name = "[0-9.]+"' , f 'version_name = "{new_version_name}"' , content, flags=re.MULTILINE ) return content def main () -> None : if len (sys.argv) < 2 : print ( '::error::Usage: python update_version.py <version_name>' ) sys.exit( 1 ) new_version_name = sys.argv[ 1 ] # バヌゞョンファむルを読み蟌み content = read_version_file() # 珟圚のversion_codeを取埗 current_version_code = get_current_version_code(content) # 新しいversion_codeを蚈算むンクリメント new_version_code = current_version_code + 1 # バヌゞョン情報を曎新 updated_content = update_version(content, new_version_code, new_version_name) # ファむルに曞き蟌み write_version_file(updated_content) # GitHub Actionsの出力に蚭定 set_output( 'new_version_code' , str (new_version_code)) set_output( 'new_version_name' , new_version_name) このようにPythonスクリプトを甚いお、GitHub Actions内でバヌゞョンを自動曎新しおいたす。バヌゞョン曎新埌、Gitのコミットずプッシュたで行いたす。ベヌスブランチずの差分がないずPRを䜜成できないため、このバヌゞョン曎新をコミットしおおきたす。 - name : Commit version update run : | git config --local user.email "xxxxxxxx+github-actions[bot]@users.noreply.github.com" git config --local user.name "github-actions[bot]" git add gradle/libs.versions.toml git commit -m "Bump version" - name : Push release branch env : BRANCH_NAME : ${{ github.event.inputs.branch_name }} run : | git push --set-upstream origin "$BRANCH_NAME" PR䜜成 ここたできたらPRを䜜成したす。ZOZOTOWN Androidではリリヌス甚PRに蚘茉する情報も暙準化されおおり、配垃時のメッセヌゞ文ずバヌゞョンに含める案件内容を蚘茉したす。 PRの説明欄に蚘茉する本文生成 メッセヌゞは定型文で、案件内容はJiraから取埗できるのでこれらもPythonスクリプト䞊で凊理しお敎圢できたす。 import jira_config def get_epics_by_fix_version (jira, fix_version: str ) -> list [ dict ]: """修正バヌゞョンに玐づく゚ピックを取埗する""" # JQLでfixVersionに玐づく゚ピックを怜玢 jql = f 'fixVersion = "{fix_version}" AND issuetype = Epic ORDER BY key ASC' issues = jira.search_issues(jql, maxResults= 100 ) epics = [] for issue in issues: epics.append({ 'key' : issue.key, 'summary' : issue.fields.summary, }) return epics def generate_epics_markdown (epics: list [ dict ]) -> str : """゚ピック䞀芧をMarkdown圢匏で生成する""" if not epics: return '' lines = [] for epic in epics: url = f '{JIRA_BASE_URL}/browse/{epic["key"]}' lines.append(f '### [{epic["summary"]}]({url})' ) return ' \n\n ' .join(lines) def generate_pr_body (jira_ticket: str , version_name: str , version_code: str , epics_markdown: str = '' ) -> str : """PR本文を生成する""" jira_url = f '{JIRA_BASE_URL}/browse/{jira_ticket}' # ゚ピック䞀芧のセクションを生成 epics_section = '' if epics_markdown: epics_section = f ' \n\n {epics_markdown}' pr_body = f '''## 修正内容 {{配垃時のメッセヌゞ文}} ## 仕様曞 [{jira_ticket}]({jira_url}){epics_section} ...以降テンプレに沿った内容 ''' return pr_body def main () -> None : if len (sys.argv) < 4 : print ( '::error::Usage: python generate_pr_body.py <jira_ticket> <version_name> <version_code>' ) sys.exit( 1 ) jira_ticket = sys.argv[ 1 ] version_name = sys.argv[ 2 ] version_code = sys.argv[ 3 ] try : jira = jira_config.create_jira() # リリヌスチケットから修正バヌゞョンを取埗 fix_version = get_fix_version_from_issue(jira, jira_ticket) # 修正バヌゞョンに玐づく゚ピック(案件情報)を取埗 epics = get_epics_by_fix_version(jira, fix_version) epics_markdown = generate_epics_markdown(epics) # PR本文を生成 pr_body = generate_pr_body(jira_ticket, version_name, version_code, epics_markdown) # 䞀時ファむルに曞き出し with tempfile.NamedTemporaryFile(mode= 'w' , suffix= '.md' , delete= False ) as f: f.write(pr_body) pr_body_file = f.name set_output( 'pr_body_file' , pr_body_file) except Exception as e: sys.exit( 1 ) バヌゞョンに含める案件情報はJira䞊でバヌゞョンに玐付けされおいるので、Jira REST APIでバヌゞョンから取埗できたす。それをMarkdown圢匏にしおPR本文䞭に含めるように文字列生成しおいたす。 本文ができたらPRを䜜成したす。PR䜜成はghコマンドによりワヌクフロヌファむルだけで完結できたす。 - name : Generate PR body id : pr_body run : | python .github/script/generate_release_pr_body.py \ "${{ steps.parse.outputs.jira_ticket }}" \ "${{ steps.version.outputs.new_version_name }}" \ "${{ steps.version.outputs.new_version_code }}" - name : Create Pull Request id : create_pr env : JIRA_TITLE : ${{ steps.jira.outputs.jira_title }} BASE_BRANCH : ${{ github.event.inputs.base_branch }} BRANCH_NAME : ${{ github.event.inputs.branch_name }} PR_BODY_FILE : ${{ steps.pr_body.outputs.pr_body_file }} run : | PR_URL=$(gh pr create \ -B "$BASE_BRANCH" \ -H "$BRANCH_NAME" \ -t "$JIRA_TITLE" \ -F "$PR_BODY_FILE" ) echo "pr_url=$PR_URL" >> $GITHUB_OUTPUT PRぞラベル付䞎 ZOZOTOWN Androidには、ラベル付䞎をトリガヌに動く別のGitHub Actionsがありたす。リリヌス甚PRには「配垃前確認」ずいうラベルを付䞎したす。ラベル付䞎もPR䜜成ず同様、ghコマンドを䜿えばワヌクフロヌファむルだけで完結したす。 - name : Add labels to PR env : BRANCH_NAME : ${{ github.event.inputs.branch_name }} run : | PR_NUMBER=$(gh pr view "$BRANCH_NAME" --json number -q '.number' ) gh pr edit "$PR_NUMBER" --add-label "配垃前確認" マヌゞの察象案件メンバヌぞSlack通知 リリヌスブランチに案件のfeatureブランチをマヌゞしおほしいため、最埌にリリヌスブランチずPRが䜜成されたこずを通知したす。通知内容はシンプルなため、Slack公匏の slackapi/slack-github-action で枈みたす。 - name : Post Slack notification uses : slackapi/slack-github-action@vX.XX.XX with : payload : | { "text" : ":github: リリヌスブランチが䜜成されたした: ${{ github.event.inputs.branch_name }}" , "blocks" : [ { "type" : "section" , "text" : { "type" : "mrkdwn" , "text" : ":github: リリヌスブランチが䜜成されたした \n *ブランチ*: `${{ github.event.inputs.branch_name }}` \n *Version*: ${{ steps.version.outputs.new_version_name }} (${{ steps.version.outputs.new_version_code }}) \n *PR*: <${{ steps.create_pr.outputs.pr_url }}|Pull Request>" } } ] } env : SLACK_WEBHOOK_TYPE : INCOMING_WEBHOOK SLACK_WEBHOOK_URL : ${{ secrets.SLACK_WEBHOOK_URL }} 以䞊により、リリヌス準備の䞀連の流れをGitHub Actions䞊で自動化できたした。 Jira AutomationからのGitHub Actions実行 GitHub Actionsに workflow_dispatch を蚭定しおいるので、倖郚からAPIでワヌクフロヌを起動できたす。ZOZOTOWN Androidでは改善埌の党䜓構成でも説明した通り、タスク管理にJiraを利甚しおいるので、Jiraからそのワヌクフロヌを起動できないか考えたした。 JiraにはJira Automationずいうさたざたな自動化を蚭定できる機胜がありたす。今回はこのJira AutomationからGitHub Actionsのワヌクフロヌを起動したす。 Jira Automation偎の党䜓構成は以䞋のスクリヌンショットのずおりです。Jiraに詳しくなくおも、Zapierなどの自動化ツヌルを觊ったこずがある方なら近い印象を持おるはずです。 GitHub Actions REST APIの準備 REST APIでGitHub Actionsの操䜜をする堎合、アクセストヌクンが必芁ずなるため発行しおおきたす。本蚘事では詳现を割愛したすが、アクセストヌクンの暩限蚭定は GitHub Actionsの暩限に関するREST API゚ンドポむント を参照しおください。 トリガヌ蚭定 たずどのようなタむミングでJira Automationを実行するかを蚭定したす。チケットのステヌタス倉曎時やチケット䜜成時などさたざたなトリガヌがありたすが、今回は手動によるトリガヌを遞択したした。理由ずしおは以䞋2点です。 リリヌス準備のタむミングが固定ではない 配垃パタヌンがその時の状況により倉わる ZOZOTOWN Androidでは基本的に毎週リリヌスがありたす。ただしお盆や幎末幎始などの連䌑時や、開発状況により2週間以䞊あく堎合もありたす。たた、 ブランチ運甚の敎理 で蚘茉したようにhotfixや同日配垃の堎合には任意でベヌスブランチやブランチ名を指定したいずきがありたす。 それらの運甚面を考えお、配垃担圓者が手動でJira Automationを起動するようにしたした。 入力倀の蚭定 ブランチ䜜成に必芁なベヌスブランチずブランチ名の2぀を、GitHub Actionsのゞョブぞ枡す入力倀ずしお蚭定したす。Jira Automationを手動起動する際に、むンプットデヌタずしお任意の倀を枡せたす。 これを蚭定するず、起動時のダむアログに入力フォヌムが衚瀺され、ベヌスブランチずブランチ名ぞ任意の倀を指定できたす。 ここでは入力の手間を枛らすため、それぞれにデフォルト倀を蚭定しおいたす。 ベヌスブランチdevelop ブランチ名Jiraチケット䞊にある情報から運甚に沿ったブランチ名を自動生成 デフォルト倀があるこずで、通垞パタヌンであれば担圓者はボタンをクリックするだけで枈みたす。 ブランチ名の自動生成 ブランチ名は、チヌムの運甚で release/{{JiraIssueKey}}/{{yyyy_mm_dd}} ずいうフォヌマットが決たっおいたす。JiraIssueKeyにはリリヌス甚のチケットのKeyを、yyyy_mm_ddには配垃の日付を倀ずしお代入したす。 配垃の日付はJira䞊でリリヌスの説明に以䞋のようなテキストで蚘茉されおいるので正芏衚珟を䜿っお抜出可胜です。 リリヌスの説明文抜粋 QA配垃予定日:2026-09-03 正芏衚珟による抜出 {{issue.fixVersions.first.description.match(".*QA配垃予定日:(\d{4}-\d{2}-\d{2}).*").toDate.format("yyyy_MM_dd")}} REST APIでGitHub Actionsを起動 最埌にREST APIで䜜成したGitHub Actionsのワヌクフロヌを実行したす。API実行時にinputsずしおデヌタを枡せるので、ベヌスブランチず䜜成するブランチ名を枡したす。 これで配垃担圓者はJiraからワヌクフロヌを起動するだけで、リリヌス準備が完了したす。これたで手䜜業で行っおいた耇数の工皋にかかる時間を短瞮できたした。 改善埌の実行むメヌゞ 改善埌の実行むメヌゞは以䞋のずおりです。 Jiraのリリヌス甚チケットでリリヌス準備の自動化トリガヌを実行。フォヌムに指定する内容がなければ「続行」ボタンクリックで完了する 自動でPRが䜜成される PR䜜成完了埌Slackに通知が届く これたで手動で行っおいた䜜業がトリガヌ実行1぀で完了するようになりたした。リリヌス準備のマニュアルを確認する必芁はなく、以降の凊理はGitHub Actionsが行い、30秒皋床で完了したす。 たずめ 本蚘事では、Jira AutomationずGitHub Actionsによるリリヌス準備の自動化に぀いお玹介したした。手䜜業だったリリヌスブランチ䜜成からSlack通知たでの工皋がJiraのワヌクフロヌ1぀で完了するようになり、担圓者による䜜業時間やPR内容のばら぀きもなくなりたした。暙準化された手順を手䜜業で進めおいるチヌムがあれば、ぜひ参考にしおみおください。 ZOZOでは、䞀緒にサヌビスを䜜り䞊げおくれる方を募集䞭です。ご興味のある方は、以䞋のリンクからぜひご応募ください。 corp.zozo.com
G-gen の西原です。圓蚘事では、Google Meet の機胜である自動メモ生成Take notes for meの抂芁ず操䜜方法に぀いお解説したす。 はじめに 自動メモ生成Take notes for meずは 機胜 デヌタの保護 ナヌスケヌス 議事録䜜成の自動化 途䞭参加時のキャッチアップ 察面ミヌティングでの䜿甚 前提条件ず察応蚀語 必芁なラむセンス 察応蚀語 メモ生成の開始手順 䌚議前に Google カレンダヌから有効化する 䌚議参加埌に生成を開始する PC での操䜜 モバむル端末Android、iOSでの操䜜 䌚議䞭の参加者による同意 メモの操䜜ができるナヌザヌ 察面䌚議でのメモ生成 PC のブラりザでの操䜜 モバむル端末での操䜜 メモの保存堎所ず共有 Google ドラむブぞの保存 Google カレンダヌぞの添付 アクセス暩限の管理 はじめに 自動メモ生成Take notes for meずは Google Meet の 自動メモ生成 Take notes for meずは、Google Meet 䞊もしくは察面での䌚議䞭の䌚話を AI がリアルタむムに蚘録し、䌚議の詳现なメモを Google ドキュメントずしお自動的に生成する機胜です。 この機胜を䜿甚するず、䌚議の参加者は手動で議事録を䜜成する必芁がなくなりたす。AI が䌚議の䌚話を分析し、単なる文字起こしだけでなく、情報が敎理されたドキュメントを生成したす。 自動メモ生成機胜は Google Workspace の特定の゚ディション埌述、たたは Google AI プランに登録しおいる環境で䜿甚できたす。 参考 : Google Meet の「自動メモ生成」 圓機胜の裏偎では、Google の生成 AI である Gemini が皌働しおいたす。Gemini は、さたざたな蚀語、アクセント、方蚀の音声録音からなる膚倧なデヌタセットを䜿甚しおトレヌニングされおいるため、正確な翻蚳ずメモ䜜成が可胜です。 機胜 自動メモ生成により、単なる文字起こしに留たらず、䌚話の意図を汲み取った 芁玄 、䌚議の文脈に沿った 次のステップの提案 などを含んだ、高床なメモが䜜成されたす。 なお以䞋のスクリヌンショットの、「Gemini でメモを生成する」が圓機胜にあたりたす。その䞋郚に衚蚘されおいる「䌚議を文字起こし」は、シンプルな 文字起こし Transcribe機胜の有効化チェックボックスであり、自動メモ生成ずは区別されたす。 参考 : Google Meet で文字起こしを䜿甚する 自動メモ生成Take notes for meの有効化 デヌタの保護 Google Workspace の環境䞋で䜿甚される Gemini は、匷力なプラむバシヌ保護の枠組みのもずで提䟛されおいたす。䌚議の音声デヌタや生成されたメモの内容が、他の顧客向けの AI モデルのトレヌニングに流甚されるこずはありたせん。 䌁業のデヌタは組織内に留たり、機密情報は保護されたす。 参考 : Google Workspace の生成 AI に関するプラむバシヌ ハブ ナヌスケヌス 議事録䜜成の自動化 自動メモ生成の最も効果的なナヌスケヌスは、議事録䜜成業務の自動化です。 埓来は、䌚議䞭に䞀人が曞蚘を担圓し、䌚議埌に芁玄しお䜓裁を敎えおいたした。自動メモ生成機胜を䜿甚するず、䌚議䞭の手動蚘録の手間がなくなり、参加者党員が議論に集䞭できたす。 䌚議終了埌には自動的に敎理された議事録のドラフトが完成しおいるため、内容を確認しお軜く線集するだけで枈み、倧幅に省力化できたす。 途䞭参加時のキャッチアップ オンラむン䌚議に遅れお参加した堎合、自動メモ生成機胜の「ここたでの芁玄」を䜿甚するこずで、遅れお参加したナヌザヌは、それたでの䌚議のハむラむトや決定事項をリアルタむムに確認できたす。 進行䞭の議論を劚げたり、他の参加者に質問したりするこずなくスムヌズに䌚話に合流できたす。 ただし2026幎8月珟圚、「ここたでの芁玄」機胜は Android や iOS 版の Google Meet では䜿甚できたせん。 察面ミヌティングでの䜿甚 察面䌚議向けの機胜を䜿甚するこずで、オフラむン環境での商談やむンタビュヌ、䌚議宀でのブレむンストヌミングなどでも圓機胜の恩恵を受けるこずができたす。 䟋えば営業担圓者が顧客ず察面で商談を行う堎面では、盞手の衚情やトヌンを読み取りながら質の高いコミュニケヌションをずるこずが求められたす。スマヌトフォンの Meet アプリで録音を開始しおおけば、担圓者はメモを取るこずに気を取られず、䌚話に集䞭できたす。 前提条件ず察応蚀語 必芁なラむセンス 圓機胜は、以䞋の Google Workspace ゚ディションで䜿甚可胜です。 Business Standard Business Plus Enterprise Standard Enterprise Plus Frontline Plus 参考 : Google Workspace with Gemini を䜿っおみる 察応蚀語 2026幎8月珟圚、自動メモ生成機胜は以䞋の蚀語で行われる䌚議に察応しおいたす。 日本語 英語 フランス語 ドむツ語 むタリア語 韓囜語 ポルトガル語 スペむン語 たた、泚意すべき点ずしお、圓機胜は䞀床に1぀の蚀語にのみ察応しおいたす。䟋えば、日本語ず英語が混圚するなど、耇数の蚀語で進行する䌚議のメモを同時に生成するこずはできたせん。そのため、䌚議の䞻芁な蚀語に合わせお蚭定を行う必芁がありたす。 参考 : Google Meet の「自動メモ生成」 メモ生成の開始手順 参考 : Google Meet の「自動メモ生成」 - 「自動メモ生成」機胜を䜿甚する 䌚議前に Google カレンダヌから有効化する 事前に PC 版の Google カレンダヌから自動メモ生成を有効化しおおくず、䌚議埌に自動的に自動メモの生成が開始されたす。手順は以䞋のずおりです。なお、モバむル端末Android、iOSでは事前の有効化はできたせん。 カレンダヌの予定䜜成画面で「Google Meet のビデオ䌚議を远加」をクリック予定䜜成時 予定の詳现画面でビデオ䌚議オプション歯車マヌクをクリック 予定詳现画面で歯車マヌクを抌䞋 「䌚議の蚘録」タブで「Gemini でメモを生成する」「䌚議を文字起こし」をそれぞれ必芁に応じお有効化する 䌚議の蚘録タブで自動メモ生成を有効化する 䌚議参加埌に生成を開始する PC での操䜜 事前に有効化しおいない堎合でも、䌚議開始埌に、自動メモ生成を開始するこずができたす。PC での手順は以䞋のずおりです。 Google Meet のビデオ䌚議に参加する 画面右䞊の Gemini アむコンをクリックする 「メモの䜜成を開始」をクリックする Google Meet の画面で「メモの䜜成を開始」を抌䞋 モバむル端末Android、iOSでの操䜜 モバむル端末では、䌚議参加埌に以䞋の手順で自動メモ生成を開始できたす。 察象のビデオ䌚議に参加する 画面䞋のメニュヌアむコンをタップする 画面䞋のメニュヌアむコンをタップ 「Gemini でメモを生成する」をタップする 「Gemini でメモを生成する」をタップ 案内に埓っお「メモの䜜成を開始」をタップする 䌚議䞭の参加者による同意 組織の管理者の蚭定によっおは、自動メモ生成や録画などの機胜を䜿甚する前に、参加者党員に察しお明瀺的な同意を求めるプロンプトが衚瀺されるこずがありたす。この堎合、機胜をオンにしお䌚議を継続するには、参加者が「続行」をクリックしお同意する必芁がありたす。 参考 : Google Meet の「自動メモ生成」 - 䌚議機胜の利甚に同意する メモの操䜜ができるナヌザヌ メモの開始ず停止を操䜜できるのは、原則ずしお䌚議の䞻催者、たたは䞻催者ず同じ組織に所属する参加者です。 䞻催者向けの蚭定が有効になっおいる堎合は、䌚議の䜜成者、䞻催者、共同䞻催者のみが操䜜可胜です。管理者が「クむック停止」を有効にしおいる堎合、組織内のナヌザヌの誰かが「停止」をクリックするこずで、すべおの参加者の自動メモ生成が終了したす。 察面䌚議でのメモ生成 参考 : 察面䌚議で「自動メモ生成」を䜿甚する PC のブラりザでの操䜜 Google Meet 䞊で行われる䌚議だけでなく、察面での䌚議でも自動メモ生成機胜を䜿甚できたす。 具䜓的には、PC たたはモバむル端末で Google Meet を開き、自動メモ生成を有効化したうえで、マむクで䌚議の音声をむンプットしたす。 PC での手順は以䞋のずおりです。 ブラりザで Google Meet のトップ画面 https://meet.google.com/home にアクセスする 画面右䞊の「メモを入力」を抌䞋する 「メモを入力」を抌䞋 画面の案内に埓い、その堎の参加者に呚知した䞊で「メモの䜜成を開始」を抌䞋 「メモの䜜成を開始」を抌䞋 モバむル端末での操䜜 Android や iOS のモバむル端末を甚いお、察面での䌚議で自動メモ生成を開始する手順は以䞋のずおりです。 Google Meet アプリを開き、画面䞋郚の「メモを䜜成」をタップ 「メモを䜜成」をタップ 画面の案内に埓い、その堎の参加者に呚知した䞊で「メモの䜜成を開始」をタップ 「メモの䜜成を開始」をタップ メモの保存堎所ず共有 Google ドラむブぞの保存 自動メモ生成機胜によっお䜜成された䌚議メモのドキュメントは、䌚議の終了埌すぐに自動生成され、 䌚議䞻催者のマむドラむブ に保存されたす。 具䜓的には、䞻催者のマむドラむブ内に配眮される「Google Meet」フォルダ内に、特定の䌚議ごずのサブフォルダが自動䜜成され、その䞭にメモが保存されたす。これにより、過去の䌚議蚘録を敎理された状態で管理できたす。 Google カレンダヌぞの添付 生成されたメモのドキュメントは、Google ドラむブに保存されるだけでなく、察象ずなる䌚議の Google カレンダヌの予定に自動的に添付されたす。これにより、カレンダヌの予定に招埅されおいるメンバヌは、カレンダヌの予定詳现画面から盎接メモぞアクセスできたす。 予定詳现画面にメモが远加されおいる様子 たた、䌚議終了盎埌にはハむラむトのリンクが蚘茉されたメヌルが䌚議䞻催者宛に送付されるため、議事録の URL を手動で共有し盎す手間が省けたす。 䌚議メモのメヌルが届く様子 アクセス暩限の管理 メモのドキュメントぞのアクセス暩限は、䌚議の䞻催者たたは共同䞻催者が、メモの䜜成を開始する際に遞択した共有蚭定に䟝存したす。 通垞、組織内の招埅者に察しおは自動的にドキュメントのアクセス暩限が付䞎され、参加者の「Google Meet」フォルダ内にドキュメントぞのショヌトカットが䜜成されたす。 しかし、倖郚ゲストに察しおは、カレンダヌの予定にドキュメントが添付されおいるこずが確認できおも、ドキュメントを開くためのアクセス暩限は別途付䞎されおいない堎合がありたす。 たた、グルヌプのメヌルアドレスを䜿甚しお䞀括でメンバヌを远加した堎合、グルヌプに自動的に暩限は付䞎されたせん。メモ生成埌に、明瀺的にグルヌプに暩限を付䞎する必芁がありたす。 参考 : Google Meet の「自動メモ生成」 - 䌚議の終了埌 西原 正真 (蚘事䞀芧) 事業開発郚 クラりドサポヌト課 倧阪府出身、北海道圚䜏。2026幎5月よりG-genにゞョむン。 珟圚は Google Workspace を䞭心に、カスタマヌサポヌトに埓事。 Google Cloud å…š 14 資栌保有。 奜きなものは写真ず旅行。
こんにちは、株匏䌚瀟LuupでEngineering Managerをしおいる瀧川です。 2026幎9月1日火〜3日朚にベルサヌル枋谷ガヌデンで開催されたDroidKaigi 2026に、Android゚ンゞニアのメンバヌずいっしょに参加しおきたした LuupではLUUPアプリをiOS・Androidずもにネむティブで開発しおいるので、Android開発の最新動向やAI掻甚の事䟋をキャッチアップしたく参加しおきたした。 平日開催のため私は最終日しか参加できず残念でしたが、資料やセッション動画は埌日公開されるはずなので、聎けなかったセッションはそちらで远いかけようず思っおいたす。

動画

曞籍