Suntory Wellness TechBlog

https://wellness-tech.suntory.co.jp/

サントリーウエルネス 技術ブログ

フィード

記事のアイキャッチ画像
Pythonの軽量ライブラリで始められる腸内細菌叢解析ツールを開発してみた
Suntory Wellness TechBlog
はじめにこんにちは。サントリーの浜口です。デジタルテクノロジー分野で新卒入社し、現在データサイエンティストとして新たな知見を発掘しています。今回は、個人の健康に影響を与える腸内細菌叢を解析する中で、ぶつかった課題とその取り組みについてご紹介したいと思います。背景と課題現代社会において、健康への関心が高まる中、食品業界もヘルスケア分野への取り組みを強化しています。サントリーでも、飲料や食品の開発を通じて人々の健康に寄与することを目指し、その一環としてヘルスケアデータの解析を実施しています。特に、腸内細菌叢は健康状態や疾患リスクと密接な関係があることが明らかになっており、その解析は新商品の開発や健康増進の提案において重要な役割を果たします。ヒトの腸内には、おおよそ1,000種類の腸内細菌が生息し、その組成は個人ごとに大きく異なります。腸内細菌叢は消化や免疫機能、さらには精神状態にも影響を与えるとされ、解析することで個々の健康状態を深く理解する手がかりとなります。腸内細菌データは非常に高次元で複雑です。そのため、直接全ての変数を解析するのは困難であり、膨大な次元の情報から本質的なパターンを抽出するためには、次元削減の手法が不可欠となります。ここで、PCoA(Principal Coordinates Analysis、主座標分析)という手法が有用な解析手法となります。腸内細菌叢解析におけるPCoAの重要性PCoAは、多次元データを低次元の空間にマッピングすることで、サンプル間の類似性や違いを直感的に視覚化できる手法です。たとえば、特定の食品を摂取したグループとそうでないグループの腸内細菌叢の違いをPCoAで表現することで、その食品が腸内環境に与える影響を容易に評価できます。さらに、健康な人と疾患を持つ人の腸内細菌叢を比較する際にも、PCoAは有用です。サンプル間の配置から、疾患に伴う細菌群の偏りや変動が明らかになり、これらの知見は新商品の開発や健康志向を訴求する際の科学的根拠として大きな役割を果たします。以上の理由から、PCoAは腸内細菌解析において不可欠なツールであり、細菌群の多様性やその変動を深く理解するために非常に重要です。今回このPCoAを用いるにあたって取り組んだ課題腸内細菌叢解析の分野では、長年にわたってR言語がスタンダードとして使用されてきました。Rは統計解
5ヶ月前
記事のアイキャッチ画像
入社3年目、はじめてのプロジェクト推進で得た学び
Suntory Wellness TechBlog
サントリーウエルネスサービス事業部の相川です。自社アプリComadoへのレコメンド機能の導入を目的とした、パーソナライズプロジェクトの推進を担当しました。プロジェクトの立ち上げ〜推進していく上で、個人的に気をつけたことや肝になったと思うことについて記したいと思います。1. はじめに今回の記事の位置付けタイトルにもありますが、入社3年目ではじめてPLというプロジェクト推進を担当する立場になり、諸々試行錯誤しながら頑張ってみたというお話になります。そのため、推進ガチ勢の皆様からすると当然すぎることや的外れなことも散見されるかと思います。ご容赦ください。逆に似たような状況の方にとっては何か参考となる情報があれば幸いです。宣伝私はサントリーホールディングスのデジタルテクノロジーコースに新卒で入社し、今年で3年目になります。基本的なデジタル研修を経た後にサービス事業部に配属され、Comadoの集客施策担当や簡単なデータ分析等の業務経験を積んできました。ザ・エンジニア以外にもこういうサービスに関わる仕事があるんだ〜という仕事紹介にもなるかなと思うので、本記事でご興味を持ってくださった方は是非ご検討ください。サントリー新卒採用_デジタル&テクノロジー部門Comadoにあるお仕事については他記事でも触れられているので、気になる方はそちらも見てみてください。2. プロジェクト基本情報①背景〜目的Comadoには健康行動を促進するための健康習慣・フィットネス・健康記事といった、ユーザーの心身の健康をサポートする多種多様なコンテンツがあります。しかし検索機能やレコメンド機能が乏しいことにより、自分に合ったコンテンツに出会いづらいという課題がありました。これを解消するため、レコメンド機能の導入を目指したプロジェクトが始まりました。②初期方針当時のComadoのレコメンドと目指す姿について当時Comadoのレコメンドは手動の運用で行われており、週に一度更新する7個のコンテンツを全員に提示する形でした。※TOPおすすめ枠に横カルーセルで表示 (下図赤枠)。もちろんこちらの運用でも、編集部の皆さんがユーザーに見られそうなコンテンツを毎週考えて選定してくださっており、改善が重ねられていました。しかし手動では、日次やリアルタイムなどの更新頻度の増加や、ユーザーセグメントごとの振り分けといった複雑な提
8ヶ月前
記事のアイキャッチ画像
アジリティを向上させるために、開発チームをカイゼンした話(マインドセット編)
Suntory Wellness TechBlog
サントリーウエルネス DX推進部の齋藤です。Comadoのネイティブアプリ開発を担当しております。今回の記事では、以前執筆したアジリティを向上させるために、開発チームをカイゼンした話の続編です。チームのアジリティを高めるために、チームのマインドセットを変えていった話になります。マインドセットの変革従来、各タスクに対して各メンバーが担当して作業を進めていました。これにより、以下のような状態になっていました。メンバー間のコミュニケーションが少ない各メンバーが担当タスクにフォーカスしているため、チームで活動するという意識が希薄チームが一つの有機体のように作用し、変化に素早く順応するチームにするためには、メンバー間がスキルセットや特性を相互に理解し、一定の目標や決まりごとに基づいてチームワークを発揮することが重要だと考えています。 そこで以下のように取り組みました。相互理解のための対話アジャイル界隈のチームビルディングでよく用いられるプラクティスであるドラッカー風エクササイズ(参考:ドラッカー風エクササイズ)を実施しました。これは、以下のような質問に答えてチームに共有することで、メンバーの価値観や強みを理解し、個々のパフォーマンスを最大限に発揮することを目的としています。質問自分は何が得意なのか?自分はどうやってチームの成果に貢献するつもりか?自分が大切に思う価値は何か?自分は何が苦手なのか?(今回導入したオリジナル質問)ここで意識したのは、オフラインで実施することでした。ネイティブアプリチームは、メンバーが東京、石川、北海道に分散しており、普段はフルリモートで作業しています。しかし、チームビルディングは、Face to Faceで実施しなければチームの一体感を醸成するのは難しいと感じています。そこで、東京でネイティブチームギャザリングを開催し、2日間に渡って相互理解のための対話と後述のWorking Agreementの作成を実施しました。Working AgreementWorking Agreementとは、その名の通り、チームの約束事です(参考:ワーキングアグリーメント)。チームやメンバーに対する暗黙の期待ではなく、こうして明文化することで、一定の価値観のもとでチーム活動を行えるようになります。決めていく中で工夫したことは、チームメンバー全員の総意を得ることでした。
8ヶ月前
記事のアイキャッチ画像
対話要約プロジェクト振り返り -生成AI活用のヒント-
Suntory Wellness TechBlog
サントリーウエルネスDX推進部の武田です。2023年10月に対話要約プロジェクトを立ち上げ、GPTで業務適用レベルの要約が得られること、GPTで業務時間が削減されることを短期間で実証しました。ここで、プロジェクトを成功に導くために色々試行錯誤して孝動したことについて振り返ります。対話要約プロジェクトについてはこちらの記事にて活動内容を詳しく記載していますので、ぜひご覧ください。ChatGPTを活用した対話要約機能の実証実験【顧客応対業務効率化】お客様との対話要約をChatGPTで自動化する振り返り様々な切り口から振り返ります。プロジェクト構想プロジェクト発足前の構想段階での考動について振り返ります。人で実施する部分とシステムで実施する部分を見極める対話要約では、お問い合わせ内容(以降、リーズン)を判断し、リーズンに応じた要約を作成する必要があります。何でも生成AIで実現しようとせず、対象業務を俯瞰して成果を最大化するために、人で実施する部分とシステムで実施する部分を見極めるという視点も重要だと考えています。タスクを分解し簡単にする商品の注文をはじめ、配送日の変更、キャンペーンなどリーズンは様々です。ここで言いたいことは、複雑で実現困難に見えるタスクも、分解して小さいタスクにすることで、簡単にできる可能性があるということです。プロジェクトの特性に応じた進め方を適用する対話要約では、GPTが作成する要約が現場適用できるレベルに達するか、対話要約により現場の負荷が本当に削減されるのか、PoCを実施する必要がありました。プロジェクト推進プロジェクトを推進する際の考動について振り返ります。プロジェクトの基盤を整備するプロジェクトを立ち上げる際に環境とルールを整備しました。Confluenceにプロジェクト用のスペースを作成し、議事録、調査内容、成果物などのドキュメントを格納するJiraにプロジェクトを作成し、タスク、作業状況を可視化するSlackにプロジェクト用のチャンネルを作成し、コミュニケーションを取るドキュメントの作成はConfluence、タスク管理はJira、日々のやり取りはSlackといったように、どこで何をするかを明確にすることで、プロジェクトを円滑に進めることができました。各自がタスクに集中できるようにする各自がタスクに集中できるように私がスクラムマスターとし
9ヶ月前
記事のアイキャッチ画像
「Developers X Summit 2024」参加レポート
Suntory Wellness TechBlog
こんにちは、青木です。今回、2024/11/14に浅草橋にて行われたDevelopers X Summit 2024に参加してきましたので、イベントレポートとしてまとめてみたいと思います。…と書いていたんですが、年末から年始にかけてバタバタしており、ほぼ書きかけていた記事を出せずにおりました…!せっかくカンファレンスに参加したのと、文章に書き起こしていたのでとても遅いですがひっそりとレポートを投稿させてください…。Developers X SummitDevelopers X Summitとは、Developers Summit(デブサミ)のスピンオフイベントです。公式サイトより説明を引用させていただきます。2003年の初開催から、国内最大級のITエンジニア向けカンファレンスとしてテクノロジーの最先端を届けてきた「Developers Summit」シリーズ。その中の新たなスピンオフイベント「Developers X Summit(通称:デブクロ)」は、多彩な領域とITの織りなす交差点となるカンファレンスです。今回の「Developers X Summit 2024」では、「ITエンジニア×大企業で社会を変革する」をテーマに、日本社会を長く支えてきた大企業でDX、内製化やアジャイル推進に取り組むエンジニアにスポットライトを当てます。本イベントでは、大企業における内製化を推進したトップランナーたちによるセッションや、大企業DXのヒントとなるプラクティスやトレンドを知ることができるセッションを用意しています。各社の取り組みを知り、明日から使える知見やマインドセットを得ることで、日本社会の発展に欠かせない大企業において奮闘するエンジニアが、DXに向けた一歩を踏み出せる場を目指します。https://event.shoeisha.jp/devsumi/20241114今回は「ITエンジニア×大企業で社会を変革する」がテーマであるように、大企業における内製化に着目したセッションが多かったため、タイムテーブルをみて参加を決めました。印象に残った講演どの講演も非常に参考になるものでしたが、特に印象に残った講演をピックアップします。 (なお、すべての講演に参加できたわけではないのと、個人の志向が大いに含まれております)。クレディセゾンでDXを進めてきた5年間を振り返る ~内製エンジ
9ヶ月前
記事のアイキャッチ画像
Mutureさん主催、「第2回 JTCX勉強会」に参加・登壇してみた
Suntory Wellness TechBlog
サントリーウエルネス DX推進部の青木です。齋藤で参加・登壇してきましたのでイベントレポートとしてまとめてみたいと思います。JTCX勉強会とはJTCX勉強会とは、JTC、エンタープライズ組織で様々な取り組みをしている方々のそれぞれのユースケースを学び合いながら、取り組み事例や内部での努力を共通の知にして行く場として、Mutureさんによって主催・企画されている会になります。この「X」はTransformationに準えられています。伝統的、保守的な企業は"JTC"として揶揄されがちですが、そのJTCを内側から前向きに変えていこうという想いが込められています。前回の開催レポートはこちら(イオンスマートテクノロジー社もりはやさんの記事です。)※本会はセミクローズドで開催しているため、一般公開しているイベントではありません。イベントレポートイベント会場会場は丸井グループさんに協力をいただき、丸井グループ本社ビル2Fにある「tamaru」をお借りしました。軽いお菓子やドリンク、ビールを片手にLTをしました!LT:DXを進める上での内製開発LTのテーマは「DXを進める上での内製開発」でして、弊社からは青木と齋藤で登壇しました。LTには弊社と合わせて2社が参加し、質疑応答合わせて30-40分程度でした。詳しい内容は別記事で執筆予定ですが、プロダクトが抱えていた課題課題に対応するための手段としての内製開発内製開発によって目指す姿開発チームの具体的な取り組み他チームへの越境などについて振り返り、発表しました。質疑では、皆さんやはり同じような境遇の中で現場に向き合われていることもあり、鋭い質問の連続で「こういう観点で普段考えられているんだな、問題と向き合っているんだな」と話し手でありながら非常に勉強になりました。パネルディスカッションパネルディスカッションでは複数の事前テーマをもとにディスカッションをする方式で議論させていただきました。ちゃっかり弊社の坂元もパネルディスカッションから参加しています。気づいたら隣にいました。懇親会パネルディスカッションでは複数の事前テーマをもとにディスカッションしました。全体的な感想まずこういうイベントやコミュニティを主催していただいているMutureさん、モデレーターをしてくださったもりはやさんに感謝申し上げます。このようなタイミングで自身やプロダク
9ヶ月前
記事のアイキャッチ画像
新人1年目が正解の無い業務を任され、戸惑い、向き合った話
Suntory Wellness TechBlog
はじめにサントリーウエルネスDX推進部エンジニアリングGに所属する浅井です。現在、健康行動アプリ「Comado」のサーバーサイドの開発業務を行っています。ComadoとはComadoは2022年10月からサービスの提供を開始した、サントリーウエルネスのお客様が無料でお使いいただける健康行動アプリです。健康行動アプリ「Comado」内でユーザーは様々な事が行えます。フィットネスZoomや動画を視聴することで、ヨガやエクササイズなどをオンラインで受けることができる記事の閲覧落語やレシピなど、多くの記事や動画を視聴できる(定期契約者のみ視聴可能な記事も存在 例:雑誌の読み放題)健康習慣さまざまな健康習慣を記録し、振り返ることができるチャレンジ健康行動によって、ポイントを貯めることができる(定期契約者のみ)SuntoryWellnessClubについてはこちら入社してからの業務入社前の私はプログラミングの経験がほとんどありませんでした。そのため、Comadoのサーバーサイドの開発チームに加入した当初、多くの知識とスキルを吸収しようと業務に向き合うことから始めました。与えられた業務を期限内に終わらせることは前提として、先輩方に納得できるまで質問し知識の理解を深めることに集中することで、業務の中でどれだけ自分が成長できるかに重点を置きました。知識をつけながらComadoをシステムとして安定稼働させるための細かい運用業務に向き合い続けていくと、徐々に成果も出てきました。成果が出ると振っていただける業務も幅が増え、企画の実現のために仕様の整理・実装・テスト・調整・リリースまで一気通貫して行うことも増えていきました。新たな業務でぶつかった壁業務に取り組み続け、少しずつ慣れてきた頃、1つの業務を新たに任されました。それはComadoの健康習慣に対しての「健康習慣のメタデータ管理について考える」という業務です。壁①:何をすればいいのか分からない「Comadoの健康習慣のメタデータ管理について考える」という業務を任されたものの、当初は何をすればいいのか分からず戸惑っていました。戸惑いの理由は、目的と業務の繋がりが分からないことと、今までの業務との性質の違いが理由でした。この業務の目的は「コンテンツによらずデータを横断活用できるようにすること」と聞いていました。データをコンテンツ横断で活用し
1年前
記事のアイキャッチ画像
仮説検証を素早く実施する取り組み
Suntory Wellness TechBlog
サントリーウエルネス DX推進部エンジニアリングGの坂元です。プロダクト開発マネジメントを担当しております。現在Comadoというシニア向けのプロダクトを担当しており、この記事では「仮説検証を素早く実施する取り組み」を紹介したいと思います。背景Comadoは、サントリーウエルネスのお客様が無料でお使いいただける健康行動アプリとして、2022年10月からサービスの提供を開始しました。リリースから約2年が立ち、アプリ利用者の行動パターンやよく使われる機能が見えてくる中で、顧客体験を更に向上させる施策を日々考え実現しています。出来るだけ効果の高い施策を実現したいと考える一方で、せっかく開発した機能がまったく使われないことは避けたいです。効果の高い施策とはなにか?最小コストで最大の価値提供が行える施策と考えています。価値提供とは顧客課題を解決できていることを意味しており、顧客課題を見極めることがとても重要となります。施策実現の流れ顧客課題を分析し、課題を解決する打ち手を実行した後に効果検証するサイクルを回していきます。顧客課題の見極めが正しくできていない場合、いくら施策をしても効果はでないです。一方で顧客課題の見極めはとてつもなく難しいです。アンケートやインタビューを通じて得られる顧客の声や、顧客行動を分析した上で、仮説検証を繰り返しながら効果の高い課題・解決策を見つけだすことが必要となります。Comadoでは、KARTEを活用して仮説検証を素早く行えるようにしています。顧客課題の見極め顧客の解像度が低い状態で、施策を実現しても高い効果は期待できません。顧客を面で捉えるKARTEのユーザータイプ分析を活用し、顧客のライフサイクル(新規、継続、離脱)を利用頻度からおおまかに分類し、状態遷移を追えるようにしています。プロダクトの利用状況を大まかに把握できますが、これだけで顧客像は見えてこないです。顧客特性を分類する顧客特性を分類し定量化していくことで、顧客像が徐々に見えてきます。ユーザータイプ分析のユーザー指標を作成し、顧客の特性を分類しています。顧客特性の分類方法顧客の行動をKARTE Insightのカスタムイベントにて収集し、セグメントを活用して行動特性を分類する外部で保管している顧客属性をKARTE Insightの紐づけテーブルにインポートし、KARTEのユーザー情報
1年前
記事のアイキャッチ画像
Jira Automationと仲良くなろう
Suntory Wellness TechBlog
サントリーウエルネス DX推進部の青木です。以前、JiraとGithubをシームレスに連携する記事を執筆しました。Jira AutomationとはなにかJira Automationとは、Jiraが用意しているあらゆるトリガーから柔軟にワークフローを組むことができる機能です。詳しくはこちら最初から下記のようにテンプレートが用意されているので、テンプレートからカスタマイズすることもそのままつかうことも可能です。便利ですね。設定しているルールここではJiraとGithubをシームレスに連携するで紹介したルールを中心に実際にプロジェクトで利用しているルールについていくつか紹介したいと思います。全体のステータス遷移図はこんなイメージです。Branchが作成されたらチケットを「進行中」に移動前提としてJiraにはGitHub for Jiraというアプリがあり、これを利用することでGithubとの連携が可能になります。その場合はJiraのステータスとGithubのBranchを同期させるような動きをJira Automationを使って組むことが可能です。その中でBranchが作成されたらチケットを進行中に移動するワークフローが下記です。BranchはJiraのチケットの画面からでも作成可能ですし、ローカルで作成したブランチをあとで紐づけることも可能なので、お好きな方で進めると良いと思います。最終的にはチケットとBranchが紐づいて管理されていれば何でもよいと思います。Pull Requestが作成されたらチケットを「レビュー中」に移動これもタイトル通りですが下記です。Pull Requestが却下されたとき、課題を「進行中」に差し戻すPull Requestが却下されたのにずっとレビュー中になっているのは微妙なので、進行中に差し戻すようにしています。却下されたのはPull Request作り直しかその対応自体が不要になったかですが、そこは却下のみでは判断つかないのでルール上は進行中に落としています。Pull Requestがマージされたら課題を「完了」に移動Merge=チケット完了と判断してステータスを遷移させています。親チケットからGithubのBranchを紐づけてしまうと、親チケットがCloseされてしまうことです。なのでJiraのチケットの切り方も1タスク=1B
1年前
記事のアイキャッチ画像
ChatGPTを活用した対話要約機能の実証実験
Suntory Wellness TechBlog
サントリーウエルネスDX推進部エンジニアリングGの武田です。先日、コンタクトセンターにてGPTを活用した対話要約機能の実証実験を行いました。プロンプトチューニングについてはこちらの記事にもう少し詳しく記載していますので、ぜひご覧ください。【顧客応対業務効率化】お客様との対話要約をChatGPTで自動化する対話要約機能についてまず初めに、顧客応対業務でどういった問題があり、それに対してどのように解決しようとしているのかについて記載します。お問い合わせ対応弊社のコンタクトセンターではお電話にてお客様からの様々なお問い合わせにお応えしています。お電話が終了したあと、次にお客様からお電話いただいた際に、過去にどういったお問い合わせをいただいたのかを短時間で確認するため、お電話の内容を要約(対話要約)して社内システムに登録しています。対話要約が抱える問題対話要約はお客様から過去にどういったお問い合わせをいただいたのかを記録し、次に応対する人に繋ぐ重要な役割を果たします。対話内容の要約に時間がかかる要約に記載される内容の粒度が応対した人によって異なる要約に記録したい内容が欠けてしまう場合があるこれらの問題を解決するために、GPTの活用を検討しました。GPTを活用した対話要約対話要約の生成を以下の流れで自動化しようと検討しています。お客様との通話を音声認識ツールでテキスト化するAPIでテキストからプロンプトを生成するGPTでプロンプトを実行し、対話を要約する実証実験に至るまでプロジェクトの立ち上げ、業務に適用できるレベルの要約を生成するプロンプトの作成、GPTを組み込んだ機能の開発など実証実験に至るまで様々な取り組みを行ってきました。プロジェクト発足体制としては会社、組織を横断し、サントリーグループのITサービス会社であるサントリーシステムテクノロジー(SST)、弊社のコンタクトセンター、DX推進部で体制を組み、内製化することにしました。プロンプトチューニングまず、評価データからプロンプトを作成、実行し、出力要約をアウトプットします。下の図はGPTが出力した要約の評価結果になります。機能開発各種サービスのインプット、アウトプットを明確にし、システムに落とし込みました。また、ユーザーが対話要約機能を利用するイメージを具体化し、画面およびAPIを設計・開発しました。GPT環境構築受電
1年前
記事のアイキャッチ画像
DevOpsDays Tokyo 2024に参加してみた
Suntory Wellness TechBlog
サントリーウエルネス DX推進部の齋藤です。Comadoのネイティブアプリ開発チームのリーダーを担当しております。参加してからだいぶ経ってしまいましたが、2024年4月16日(火)〜4月17日(水)に開催されたDevOpsDays Tokyo 2024の参加レポートを書いていきます。DevOpsDaysとは世界中で開催されているDevOpsのカンファレンスです1週間に1回は世界中のどこかで開催されている計算なんだそうです海外のDevOpsの有識者も招聘されています国内のトレンドだけではなく、海外のトレンドも抑えられます今回の注目は、DevOpsDaysの発起人、そしてDevOpsの父であるPatrick Debois氏がDevOpsDay Tokyoに初登壇!会場の様子は以下です。外国籍の方が多かったです(体感3割程度)。「歩いていける国際カンファレンス」 を目指しているという話があったのですが、あながち間違いじゃないです。参加のモチベーションアジリティを高めるために内製化やカイゼン活動に取り組んでいます(この活動内容は、こちらの記事をご覧ください)。 これらの活動のベースとなるDevOpsのトレンドと実践を学びたいというモチベーションで参加しました。キーワードDevOpsに関して、前提として知っておいた方がいい5つのキーワードを紹介します。① DORAGoogle Cloud のDevOps Research and Assessment(DORA)チーム(以下:DORA)約10年にわたり36,000 人以上の専門家に対してDevOpsのサーベイを実施。この調査により、ソフトウェアデリバリー、組織のパフォーマンスを向上させる技術、プロセス、文化が明らかにされてきました② Four KeysDORAが実施した6年間の研究から導き出した、ソフトウェア開発チームのパフォーマンスを示す4つの指標デプロイの頻度:組織による正常な本番環境へのリリースの頻度変更のリードタイム:commit から本番環境稼働までの所要時間変更障害率:デプロイが原因となり本番環境で障害が発生する割合(%)サービス復元時間:組織が本番環境での障害から回復するのにかかる時間詳しく知りたい方はこちらエリート DevOps チームであることを Four Keys プロジェクトで確認する③ 27 Capab
1年前
記事のアイキャッチ画像
AWS CodeBuildにおけるMavenのversion確認方法
Suntory Wellness TechBlog
サントリーウエルネス DX推進部エンジニアリングGの青木です。私が担当しているプロダクトではCodeBuildを利用しdocker imageのBuildを行っています。確認方法検索してもでてこない、公式サイトを見ても載ってない…。① CodeBuildで使っているimage tagを確認するIaCを使っている場合はTerraformやCloudFormationの設定からどのCodeBuildのimageを使っているかを確認してください。codebuild/amazonlinux2-x86_64-standard、タグ5.0を使って確認してみようと思います。② ECRに該当のimage tagがあることを確認するAWSが提供しているPublicのECRから確認できます。③ docker pull$ docker pull public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:5.05.0: Pulling from codebuild/amazonlinux2-x86_64-standard(省略)Status: Downloaded newer image for public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:5.0public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:5.0④ docker run & mvn -version$ docker run --rm -it --entrypoint /bin/sh public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:5.0sh-5.2# mvn -versionApache Maven 3.9.5Maven home: /opt/mavenJava version: 17.0.10, vendor: Amazon.com Inc., runtime: /usr/lib/jvm/java-17-amazon-corretto.x86_64Default locale: en_US, platform encoding: ANSI_X3.4-1968OS name: "linux", versio
1年前
記事のアイキャッチ画像
2年かけて自社ECサイトを再構築した話 #1
Suntory Wellness TechBlog
サントリーウエルネス DX推進部ディレクションGの大洞です。サントリーウエルネスオンライン」の企画・開発の統括を担当しています。サントリーウエルネスオンラインは2023年8月に大規模なリニューアルを実施しました。大分時間がたってしまったのですが、改めてリニューアルまでの道のりを振り返ってみようと思います。リビルド完了まではとてつもなく、長く険しく、甘酸っぱい道のりだったため、何回かに分けて書いていこうと思います。リビルドに至った経緯まず何故サントリーウエルネスオンラインのリビルドが必要だったのかということを簡単に説明します。私がサントリーウエルネスに入社した2021年は、サントリーウエルネスでは従来の「モノ」から「モノ+サービス」へと事業戦略が大きく舵を切ったタイミングでした。その中でサントリーウエルネスオンラインの担当となった私は今後サービスを軸に運営していくうえで、顧客とのデジタル接点の強化は真っ先に取り組まなければいけないテーマだと思いました。ただ、顧客とのデジタル接点の要になるべきサントリーウエルネスオンラインは様々な課題を抱えており(後述参照)、既存のシステムの延長戦ではその責務を全うできないと判断し、リビルドを実施することを決めました。既存システムが抱えていた課題従来のサントリーウエルネスオンラインは約20年間、老舗うなぎ屋のたれのように継ぎ足し継ぎ足しをされたようなシステムでした。以下に代表的な課題を書きます。システム品質が著しく低い私が着任した際にJIRAでの障害管理を導入したところ、1年間で400件以上のシステム障害が起票されました。デザイン崩れのような軽微なものから、商品を購入できない、サイトが停止するなど重篤なものまで、毎日が障害との格闘でした。機能拡張性がない各画面や機能が共通化されておらずコピペで増殖されており、ちょっとした機能を追加しようとすると100画面以上の改修が必要、というような状態でした。リビルドを始める前に着任して早々に上記の課題感を断片的に捉え始め、リビルドの必要性を感じたのですが、実はリビルドプロジェクトを直ぐには実行しませんでした。まずは既存の開発フローや業務フローを理解し、既存システムの負を明確にすることと、既存システムの範囲でも取り組める改善を通して、各ステークホルダーとの関係性を築くことを意識して活動をしていました。
1年前
記事のアイキャッチ画像
アジリティを向上させるために、開発チームをカイゼンした話
Suntory Wellness TechBlog
サントリーウエルネス DX推進部の齋藤です。2024年1月に入社し、Comadoのネイティブアプリ開発チームのリーダーを担当しております。今回の記事では、アジリティ向上を目指して、Comadoのネイティブアプリ開発チームをカイゼンしている話をします。Comadoとは私が担当しているComadoは、サントリーウエルネスのお客様が無料でお使いいただける健康行動アプリとして、2022年10月からサービスの提供を開始しました。ファーストリリースから2024年5月現在までのおよそ1年半は、機能のエンハンス、UI/UXのブラッシュアップ、不具合対応を継続的に実施しています。アジリティ向上の必要性はじめに、Comadoの開発戦略を説明します。(抜粋)目の前の事業を実現しながらも将来の事業成長に合わせ、開発チームとしてのアジリティ向上やシステムの進化も実現します。今回フォーカスするキーワードは、アジリティ向上です。アジリティとは「俊敏性」を意味します。VUCAの時代、ビジネス環境は急速に変化しており、企業はこの変化に迅速に対応する必要があります。プロダクト開発においても、アジリティの高さが求められます。プロダクト開発Aと比較すると、プロダクト開発Bは同じ期間で複数回検査と適応のループを回しています。これにより、ユーザーからの要望やニーズを短い期間で取り込むことができ、ユーザーが本当に求めていた価値に近づくことができます。つまり、アジリティの高いプロダクト開発は、プロダクトの本質的な価値に迅速に辿り着くことができます。さらには、ユーザーの要望の変化にも素早く適応できます。サントリーウエルネスおよびComadoチームはアジリティ向上を目指しています。理由は2点あります。弊社が他社にない新たなウエルネス体験を提供しているため弊社は、従来の健康食品だけを売るビジネスから脱却し、顧客接点を増やしLTVを最大化するためにDXを積極的に進めています。特にComadoは、新しいウエルネス体験を提供するプラットフォームとして位置づけられており、ユーザーのニーズに迅速に対応することを目指しています健康行動アプリは多くの企業や個人がリリースしているためComadoは健康行動アプリに分類されますが、多くの企業や個人デベロッパーが健康行動アプリをリリースしています。経済産業省の調査によると、ヘルスケア関連の
1年前
記事のアイキャッチ画像
Confluenceと仲良くなろう
Suntory Wellness TechBlog
サントリーウエルネス DX推進部エンジニアリングGの青木です。皆さんはナレッジ共有のアプリは何を利用しているでしょうか。TL;DRJiraのエディタも同じ仕様であるショートカットは使うものだけ使えればOKユースケースとセットで抑えておけば尚良し段落と改行の違いを理解しておくConfluenceのキーボードショートカットを使いこなせてますか?業務スピード向上のためにまず覚えないといけないのは、ショートカットですよね。キーボードショートカットの一覧はConfluence公式サイト及びConfluenceの任意ページ上にて?キー押下で確認できます。全般機能ショートカット(Mac/Windows共通)コンテンツの作成cダッシュボードに移動するgd通知を開くgn現在のスペースを参照gsショートカットのヘルプを開く?クイック検索/クイック検索ggサイドバーを切り替える[エディターからサイドバーを切り替えるControl+[ページの追加cブログを追加b編集eコメントm次のインラインコメントn以前のインラインコメントpToggle Inline Comments]ウォッチw共有sラベルの編集l添付ファイルを表示tお気に入りページfページのリンクkプレゼンター モードに入るrエディタ起動時機能ショートカット(Mac)ショートカット(Windows)段落⌘+Option+0Ctrl+Alt+0見出し 1⌘+Option+1Ctrl+Alt+1見出し 2⌘+Option+2Ctrl+Alt+2見出し 3⌘+Option+3Ctrl+Alt+3見出し 4⌘+Option+4Ctrl+Alt+4見出し 5⌘+Option+5Ctrl+Alt+5見出し 6⌘+Option+6Ctrl+Alt+6番号付きリスト⌘+Shift+7Ctrl+Shift+7記号付きリスト⌘+Shift+8Ctrl+Shift+8引用符⌘+Shift+9Ctrl+Shift+9ファイルと画像⌘+MCtrl+Mリンク⌘+KCtrl+Kマークアップを挿入します⌘+Shift+DCtrl+Shift+Dマクロ⌘+Shift+ACtrl+Shift+A表⌘+Shift+ICtrl+Shift+I上に行を追加Control+Option+↑Ctrl+Alt+↑下に行を追加Control+Option+↓Ctrl+Alt+↓後に列
1年前
記事のアイキャッチ画像
顧客の声を聞いて素早く修正する
Suntory Wellness TechBlog
サントリーウエルネス DX推進部エンジニアリングGの山田です。サントリーウエルネスオンライン」の開発にまつわるお話をします。前提サントリーウエルネスオンラインは、2023年8月に大規模リニューアルをしました。弊社のお客様の特徴としてミドル〜シニア層のお客様が多く、特にシニア層のお客様に多くご愛好いただいています。顧客の声を聞くオンライン経由でご購入いただくにあたって、日々のお問い合わせも当然ながら発生しています。一例として、コンタクトセンターを管轄する部署からの、ログインに関する問い合わせ共有事例を紹介します。コンタクトセンターを管轄する部署では、日々お客様からの声(VOC)を分析して、その内容を各部署の共有しています。この7件を多いと見るか少ないと見るかはさておき、「本当にこのUIがユーザーフレンドリーなのだろうか?」を自らに問うには十分な件数です。結果として、通常のログイン導線とサントリーアカウントを利用したログイン導線がわかりにくいという判断をして、すぐに修正することにしました。通常のログイン導線と、サントリーアカウントを利用した導線を分け、多く利用いただいている通常ログイン導線をUI上優先させるようにしました。我々の強みこのように、コンタクトセンターという顧客接点を持ち、かつお客様からお電話で"生の声"を聞けるというのは我々の強みでもあります。おわりに繰り返しになりますが、この改善サイクルをスピーディーに回せるようになったのも、2023年8月に大規模リニューアルを行い、モダンなアーキテクチャでシステムを作り直したからでもあります。デジタル&テクノロジー採用サイトをご覧ください。
1年前
記事のアイキャッチ画像
Github Actionsに色々任せよう -MergeされなかったPRからMilestoneを外す-
Suntory Wellness TechBlog
サントリーウエルネス DX推進部エンジニアリングGの青木です。日々の業務でGithubを利用しているのですが、Github Actionsを使えば面倒なことを任せられることがわかり試行錯誤しながら導入しています。第一弾の記事を投稿したので今回はその続きとしてMergeされなかったPRからMilestoneを外す方法について紹介したいと思います。課題感Github Milestoneとは、そのリポジトリのバージョンに紐づく変更管理を容易にしてくれる機能です。Milestoneを使って変更管理をしているという話をしました。GithubでPRのレビューやMergeを繰り返していく中で、とりあえずPRを作成したけどCloseしておこうといったPRも数多くあると思います。そうだ、Github Actionsに任せようこのMilestone外しもGithub Actionsを使って行えます。構成全体構成は下記の通りです。Workflow作成したワークフローはこんな感じです。ここでポイントとなるのがif: ${{ !github.event.pull_request.merged }}の分岐を入れることです。types: closedの中にMerge/Closeが含まれてしまっているため、Workflowの中で判定を入れる必要があります。※GithubのAPIを使ってPRをGETしたときのresponse.pull_request.merged_atがnullであることを見て判定可能ですが、わざわざPythonのスクリプトで処理させなくてもWorkflow内で判定できるなら無駄なスクリプトを実行しなくて良くなるのでオススメです。こちらをご覧ください。name: Remove Milestoneon: pull_request: types: - closedpermissions: issues: write pull-requests: write checks: write contents: readjobs: remove-milestone: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Python uses: act
1年前
記事のアイキャッチ画像
Github Actionsに色々任せよう -Milestoneの期限をSlackに通知する-
Suntory Wellness TechBlog
サントリーウエルネス DX推進部エンジニアリングGの青木です。日々の業務でGithubを利用しているのですが、Github Actionsを使えば面倒なことを任せられることがわかり試行錯誤しながら導入しています。Github MilestoneとはGithub Milestoneとは、対象リポジトリのバージョンに紐づく変更管理を容易にする機能です。Milestoneは変更管理に強く、期限管理に弱いMilestoneは変更管理には強いのですが、それに特化している機能であるとも言えると思います。期限に関してはカレンダーとして出るわけでもないですし、Milestoneにちょっと記載されているレベルです。これではぱっと見たときにいつがリリース日なのかがわかりません。そのため、他のツールでスケジュール管理しておく必要が出てくるのですが、せめて期限通知くらいはできたら楽なのにな…と思いました。そうだ、Github Actionsに任せようこの期限通知はGithub Actionsを使って行えます。Milestoneの期限を取得する必要がありますが、同じGithubなので構築が楽です。GITHUB_TOKENがあるのでわざわざPATを発行しなくていい点も気軽だと思います。構成全体構成は下記の通りです。Workflow作成したWorkflowはこんな感じです。name: Milestone Notifieron: schedule: - cron: '0 0 * * 3' # UTCで毎週水曜日の0時(日本時間で毎週水曜日の9時) workflow_dispatch:jobs: notify-milestones: runs-on: ubuntu-latest steps: - name: Check out code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Install dependencies run: | python -m pip install --upgrade pip pip install requests - name: Check Milestones and Notify
1年前
記事のアイキャッチ画像
JiraとGithubをシームレスに連携する
Suntory Wellness TechBlog
サントリーウエルネス DX推進部エンジニアリングGの青木です。Comadoのサーバーサイド(以下SS)チームでリーダーをしています。経緯Coamdoでは現在チケット管理でJiraを利用していますが、もともとSSチームとしてはGithub IssuesとMilestoneだけを使ってタスクとリリースの管理をしていました。他にも、Issueにはキーワードを使ってPull Requestとリンクさせる機能があります。これによりPull RequestがCloseするとIssueも自動的にCloseしてくれるなど開発者体験的にも良いと思いました。ただ同時並行で色々な事が進むにつれて、Githubだけだと管理しにくくなりました。結果としてはJiraにチケット管理を寄せながらMilestoneの良いところは残す形で移行しましたので、どう移行したのか書いてみたいと思います。なにが課題だったか1️⃣ Issue単体で期日を管理できない/プロジェクト管理ができないIssueはあくまでIssueを管理するものであり、期日まで管理するものではありません。期日まで管理したいならIssueだけではなく、Github Projectsを立ち上げ、そちらにリンクさせることで期日を管理できます。2️⃣ Milestoneはリリースの期日を管理するものであり、個別Issueの期日を管理するものではないMilestoneがあれば期日の管理ができるのでは?についていうと、できないと思います。3️⃣ リポジトリに紐づかない課題もある例えば調査依頼も課題としてチケット管理したい場面はプロジェクト運営上発生します。その場合、どのリポジトリにも紐づかない課題となってしまいます。Issueの特性上、必ずどこかのリポジトリ起点でIssueが切られる作りになっているので、Issueだけではプロジェクト全体で発生する課題管理は難しいです。4️⃣ リポジトリが増えてくるとチームメンバーのタスク状況が見えにくくなるすべてがモノレポで管理されていれば問題ありませんが、そういうわけにもいかないと思います。このIssueはこのリポジトリ、別のIssueはこのリポジトリ…と管理していくと結果、今持っているIssue全量ってなんだっけ?となります。5️⃣ Githubだけでは他チームとの連携がしにくいGithubはあくまで開発者目線
1年前
記事のアイキャッチ画像
思い切ってNativeアプリのリファクタリングを実施してみた
Suntory Wellness TechBlog
サントリーウエルネス DX推進部エンジニアリングGの坂元です。プロダクト開発マネジメントやディレクションの業務を担当しております。現在ComadoというNativeアプリの開発を担当しており、この記事では「思い切ってNativeアプリのリファクタリングを実施した」を紹介したいと思います。背景Comadoは、サントリーウエルネスのお客様が無料でお使いいただける健康行動アプリとして、2022年10月からサービスの提供を開始しました。開発はアジャイル手法のスクラムを採用し、4週間のスプリント単位でリリースを行なっております。サービス開始後も開発は継続し、ユーザ体験向上に向けた企画の実現と顕在化している不具合に蓋をする日々を送っておりました。スプリントを重ねる毎に、不具合の発生件数が増加し、同時に施策実現数が減少していくことで、徐々に開発の生産性の低下を感じるようになりました。このまま開発を継続すると、取り返しのつかない状態になるという危機感を抱くようになり、開発は継続しながらも、問題の本質がどこにあるのか分析することにしました。問題の本質は何か?分析結果として、初期開発時の進め方によって、コード品質が大きく低下したと判断しました。初期開発時はとにかくリリースを優先したため、ユーザーストーリー単位で開発を終わらせることを強く意識して進行しました。簡易に実装することが優先されたため、ロジックの共通化や当初のアーキテクチャの構造に従うことを諦め、その結果技術的負債が蓄積されてしまいました。当初のアーキテクチャの構造について開発初期の頃に設計したアーキテクチャは、処理の一方通行化と依存性の脱却、テスト容易性、可読性の向上を目的とし、MVVMを基準にクリーンアーキテクチャの概念を導入しました。アプリケーションの構成(As-Is)Presenter(プレゼンテーション層)画面と画面操作について受け持つ階層です。Domain(ドメイン層)ビジネスロジックとデータ入出力を受け持つ階層です。Infrastructure(リポジトリ層)外部通信や永続化データとのやりとりを受け持つ階層です。技術的負債についてドメイン層のUseCaseがリポジトリ層からのデータの入出力を受け持つだけの状態になり、プレゼンテーション層の間で素通りするだけの存在になっていました。そのためリポジトリ層の成否について、
2年前
記事のアイキャッチ画像
【顧客応対業務効率化】お客様との対話要約をChatGPTで自動化する
Suntory Wellness TechBlog
サントリーウエルネスDX推進部エンジニアリングGの武田です。今回はChatGPTを活用して顧客応対業務を効率化する取り組みについて紹介したいと思います。お問い合わせ対応について弊社のコンタクトセンターではお電話にてお客様からの様々なお問い合わせにお応えしています。対話要約が抱える問題対話要約はお客様から過去にどういったお問い合わせをいただいたのかを記録し、次に応対する人に繋ぐ重要な役割を果たします。対話内容の要約に時間がかかる要約に記載される内容の粒度が応対した人によって異なる要約に記録したい内容が欠けてしまう場合があるこれらの問題を解決するために、ChatGPTの活用を検討しています。ChatGPTを活用した対話要約の自動化対話要約の生成を以下の流れで自動化しようと検討しています。お客様との通話を音声認識ツールでテキスト化します。APIでテキストからプロンプトを生成します。ChatGPTでプロンプトを実行し、対話を要約します。対話要約の自動化PoCChatGPTによって出力される要約が業務レベルで活用できるかを検証するためにPoCを実施しています。体制構築社内にナレッジを蓄積するためにも内製で進めることを選択し、体制を構築しました。評価データ準備まず、評価対象のデータを準備しました。評価条件検討次に評価条件を検討しました。環境整備会社、組織を横断してプロジェクトを進めるために環境を整備しました。プロンプトチューニングまず、評価データからプロンプトを作成、実行し、出力要約をアウトプットします。システム化検討【ChatGPTを活用した対話要約の自動化】の項で記載した方式をシステムに落とし込みます。PoCを進めてみて現在進行形でプロンプトチューニングを実施していますが、プロジェクトが軌道に乗ってきたので、このタイミングで振り返ろうと思います。プロジェクトを軌道に乗せるまでプロンプトチューニングのサイクルを回すところまで立ち上げるのが大変でした。コスト試算は事前にした方がいいChatGPTはモデル、コンテキスト長によって単価が決まります。抽象化や言語化の重要性ChatGPTによる出力要約の評価FBをする際に各評価項目についてこの出力要約はこうしたい、あの出力要約はああしたいといったように具体のFBになりがちでした。ICTツールの浸透Jiraを導入し、最初は私が全てのタスク
2年前
記事のアイキャッチ画像
Suntory Wellness CLUB 始まりました
Suntory Wellness TechBlog
サントリーウエルネス DX推進部 エンジニアリングGの山田です。今回は、社内横断的な取り組みとして、2023年9月にローンチした「Suntory Wellness CLUB」というサービスについてお伝えしたいと思います。前提サントリーウエルネスでは、長年サントリーウエルネスの健康食品・ビューティケア商品をご愛好いただいているお客様に対して、商品価値プラスアルファのものを還元できていないという積年の課題がありました。セサミンEXやVARONオールインワンセラムといったヒット商品が存在したり、サントリーウエルネスのお客様が無料でお使いいただける健康行動アプリ「Comado」を提供してはいますが、お客様への還元という意味で、ある種競合に劣位している部分がありました。Suntory Wellness CLUBとはSuntory Wellness CLUBの特徴は大きく2つです。サントリーウエルネス商品の購入やComadoアプリ上での健康行動でポイントが貯まる貯まったポイントはサントリーウエルネス商品を含めたサントリーグループの商品・グッズやサントリーならではの特別な体験に使える(※)※ ポイント利用は2024年1-3月の開始予定ですそのうち、「サントリーウエルネス商品の購入やComadoアプリ上での健康行動でポイントが貯まる」という仕組みを2023年9月に無事ローンチしました。ローンチまでの道のり構想私は入社後、このSuntory Wellness CLUBの開発プロジェクトにジョインし、現在プロジェクトリーダーを担っています。サービスとしてまずは健康行動アプリ「Comado」をリリースし、日々の健康行動をサポートする仕組みを提供しました。しかしながら、昨今DX人材の中途・新卒採用によって本サービスの実現に必要な各職種の採用が進んだため、本サービスの実現に挑戦する土壌が整い、2022年11月に本プロジェクトは立ち上がります。その結果、我々は「お客様の健康行動をより促進し、お客様により"ウエルネス"な体験をしていただくため」に必要なことを実現する、という目的を明確に定め、“健康行動を促進するためのポイントサービス"を提供することに決めました。実現に向けてとはいえ、道のりは平坦ではありませんでした。このフェーズで、ビジネスとシステム開発のお互いが、目指すべき北極星を共有できたこ
2年前
記事のアイキャッチ画像
2年目のお仕事紹介
Suntory Wellness TechBlog
サントリーウエルネス DX推進部 エンジニアリングGの河島です。 入社背景 学生時代は経営学部に所属し、デジタルマーケティングを勉強していました。デジタルを活用し、より日常生活を楽しくするようなサービス作りをしたいと漠然と考えて就活をしている時に、弊社の「デジタル採用」を知り、興味を持ちました。クラフトボスの「ちびだら飲み」やハイボール文化など、新しい飲用スタイルや生活の楽しみ方を提案し続けており、新たな体験をお客様に届ける経験ができるのではないかと思い、入社しました。入社後は、デジタル採用全体で約3ヶ月のシステム研修を受けました。その後に新人の希望と適正を相談した上で、企画やデータ活用グループに配属が決定されるのですが、私の場合は顧客体験を企画するだけでなく、企画をどう実現させていくかに関しても理解したいと思い、自らエンジニアグチームを希望して配属されました。現在のお仕事 私は現在、Comadoという健康行動アプリの開発を行なっています。このアプリでは、フィットネスレッスンの配信や健康行動の記録機能など、健康行動の習慣化をサポートするコンテンツを用意しています。アプリを通して、お客様が生活習慣を変えていただけるようにサポートすることで、サプリ提供だけでは解決できなかった「お客様の体や心の悩み」を解決しようとしています。また、各コンテンツの利用状況など、ユーザーの行動データを収集し、顧客解像度を向上させることで、お客様の多様性に合わせた商品・体験を提供する仕組みを構築しようとしています。 私は、サーバーサイド領域の開発チームに所属し、新規APIの開発や既存コードの改修(リファクタリング)などを行なっています。また、企画チームと開発チームの連携役として、企画内容の整理や開発の推進などを行っています。仕事の面白さ・やりがい開発したものを多くの人に使ってもらえること Comadoは2022年10月にリリースを行い、現在数十万人の方に利用されています。まだまだ規模は小さいですが、日々のアプリ利用率やユーザーさんからの嬉しいコメントを見ると、自分の仕事が誰かの役に立っていると個人的に感じています。また、アクセス数などの数字だけでなく、実際にオンラインフィットネスに参加し、カメラオンで参加しているユーザーさんを見ると、幅広い年齢層の方に使ってもらえていることを実感し、嬉しくなり
2年前
記事のアイキャッチ画像
Java17→Java21の追加機能紹介
Suntory Wellness TechBlog
はじめにこんにちは。DX推進部エンジニアリングGの今泉です。2023/9/19に最新のLTSであるJava21がリリースされました。弊社でもバックエンド開発では主にJavaを利用しています。Java21の詳細は以下にまとまっています。リリースノートJDK 21 Release NotesAPIドキュメントJava® Platform, Standard Edition & Java Development Kit Version 21 API SpecificationJava17からの変更点以下にJava17からJava21までに取り込まれたJEPがまとまっています。JEPs in JDK 21 integrated since JDK 17JEP400:UTF-8のデフォルト化(Java18)JEP 400: UTF-8 by Default互換オプション-Dfile.encoding=COMPATをJava実行時のオプションとして追加する必要があります。JEPよりIf an application that has been running for years with windows-31j as the default charset is upgraded to a JDK release that uses UTF-8 as the default charset then it will experience problems when reading files that are encoded in windows-31j. In this case, the application code could be changed to pass the windows-31j charset when opening such files. If the code cannot be changed, then starting the Java runtime with -Dfile.encoding=COMPAT will force the default charset to be windows-31j until the application is updated or the files are converted to UTF-8
2年前
記事のアイキャッチ画像
お客様との対話要約を全文検索出来る環境を構築する
Suntory Wellness TechBlog
サントリーウエルネス DX推進部 エンジニアリングGの武田です。弊社ではお客様とお話した内容を対話要約として保存しています。この記事では「テキストデータをElasticsearchに投入して全文検索出来るようにする方法」を紹介したいと思います。この記事から分かることテキストデータをElasticseachに投入してKibanaで可視化する方法キーワード全文検索というと転置インデックス、N-Gram、シノニム、ユーザー辞書、文字列正規化、頻出語句除去など様々な技術要素がありますが今回は触れません。キーワード概要Elasticsearch全文検索エンジンです。大量の文書に対して高速で全文検索することが出来るようになります。KibanaElasticserach用のデータ可視化ツールです。Dockerコンテナ型の仮想環境プラットフォームです。設定ファイルから同一のアプリケーション実行環境を立ち上げることが出来るようになります。形態素解析文章を意味を持つ最小の単位に分割・判別することです。例:「セサミンには抗酸化作用があります」->「セサミン(名刺)」「に(格助詞)」「は(係助詞)」「抗(接続詞)」「酸化(名刺)」「作用(名刺)」「が(格助詞)」「あり(動詞)」「ます(助動詞)」タグクラウド件数、出現頻度、重要度を加味してタグの一覧を可視化したものです。全文検索複数の文書の先頭から末尾までテキスト全てを対象に特定の文字列を検索することです。構成将来的には以下のようにデータをElasticsearchに連携し、全文検索出来る環境を作っていきたいと考えています。※弊社ではコールセンターにて従事していただいているオペレーターをエージェントと言います。前段階として今回はDockerでElastic Stack(Elasticsearch、Kibana、Logstash、Beats)を構築しました。MW概要Beatsデータシッパーです。今回はCSVをLogstashに転送します。Logstashデータ処理パイプラインです。今回はFilebeatから受信したデータをElasticsearchに流します。Elasticsearch全文検索エンジンです。テキストを形態素解析し全文検索出来るようにします。KibanaElasticserach用のデータ可視化ツールです。Elasticsear
2年前
記事のアイキャッチ画像
クロスアカウント連携でFireLensを使いたい
Suntory Wellness TechBlog
サントリーウエルネス DX推進部 エンジニアリングGの青木です。Comadoというアプリを開発しており、主にサーバーサイド領域でエンジニアをしています。現在Comadoではデータ活用を見据えてデータ整備を行っています。目的Comadoでは様々なコンテンツを提供しており、それに伴うログを取得できる状態です。それらの行動データをイベントログとして収集し、データを分析することでより良いサービスに繋げたい狙いがあり収集することとなりました。サントリーウエルネスではAWSにシステムごとのデータを集めて分析する環境としてデータ基盤を構築しており、そこに連携することになります。今回検討した連携方式ログの出し分けの必要性アプリケーションログとイベントログはそれぞれ利用目的が異なるため、目的にあった連携先に出し分ける必要があります。想定の構成図は下記です。FireLensを使った連携方式FireLens は、ECS ログドライバの1つである awsfirelens として提供されており、ECSタスク上のコンテナのログをFluentdまたはFluent Bitを通じてログルーティングができる仕組みのことを指します。簡潔にいうと、awslogsでは単一の送信先(CloudWatch)しか指定できないが、FireLensでは複数の送信先を指定でき、ログをFilterやParseして加工した上で送信することができる。Fluentd or Fluent Bit どちらかを指定可これらをECSに組み込みやすいようにカスタムしてくれているサービスであると理解して良い。ここでは、よりコンテナと相性が良いFluent Bitを採用して構成検討することにします。Fluent Bitを利用した場合のFireLens設定例FireLens導入にあたって、ECSタスク定義、追加定義、Dockerfile、の3つの定義が必要になります。ECSタスク定義FireLensはメインコンテナのサイドカーとして動作しますので、タスク定義にコンテナを1つ追加する必要があります。記事執筆現在時点でTCPでのヘルスチェックは非推奨となっているので注意{ "containerDefinitions": [ { "name": "firelens", "image": "${account}.dkr.ecr.${region}.a
2年前
記事のアイキャッチ画像
TechBlogを始めました!
Suntory Wellness TechBlog
TechBlog始めました!はじめまして業務を通じて得られた知識や知見を形にし、外部に公開するとともに自分たち自身の成長度合いを確認する、互いに成長する雰囲気を醸成する場にしていきたいと考えております。至らぬ点も多々あると思いますが、温かい目で見守っていただけると幸いです。よろしくお願いいたします!Recruitまた、サントリーウエルネスでは 一緒に働ける仲間を募集しています。https://www.suntory.co.jp/recruit/dx/
2年前