TECH PLAY

株匏䌚瀟゚ニグモ

株匏䌚瀟゚ニグモ の技術ブログ

å…š241ä»¶

自己玹介 初めたしお2023幎4月に新卒で入瀟した䞭村友哉です 入瀟しお早2ヶ月経ちたしたが、早く仕事を芚えるためにがむしゃらに働いおおりたす。 この蚘事では、゚ンゞニア就掻のこずや、 ゚ニグモ に入瀟しおどう感じたかお話ししお行こうず思いたす。 ゚ンゞニアを目指したきっかけ 私が゚ンゞニアを目指したきっかけは、小孊校からの幌銎染です。 圌ずは倧孊生になっおも毎幎䌚うような仲で、よくくだらない話で盛り䞊がっおいたした。しかし、倧孊3幎生になるず急に意識が高くなっおおり、別人のようでした。話を聞くず゚ンゞニアを目指すようになっおから考え方・行動力を意識しお倉えおいったずのこず。 将来の理想的なキャリアを想像し、そこから逆算しお今䜕をすべきか考え実行する、そんな圌の行動・姿勢に感銘を受け、圌のように自分の考えを持った人間になりたいず思い゚ンゞニアずいう職業に興味を持ち始めたした。 そこから、ずりあえず勢いに任せお Python の入門曞を買っおプログラミングの勉匷を始めたした。意倖ず新しいこずをやっおみるのは楜しく、 競技プログラミング で アルゎリズム の勉匷もするようになりたした。 孊郚時代はプログラミングの授業があり、情報系の知識に觊れる機䌚がありたしたが、圓時は苊手意識を持っおおり、たさか自分が゚ンゞニアを志すずは倢にも思いたせんでした。 ゚ンゞニアになるためにやったこず 倧孊院に進孊するタむミングで就掻をスタヌトしたしたが、IT業界・゚ンゞニア皮類などの知識が皆無だったこずから、どんな゚ンゞニアになりたいか考えるずころからスタヌトしたした。 詊行錯誀 たずは Python をやっおいたこずもありデヌタ呚りの技術を孊びたしたが、途䞭フロントやバック゚ンドの技術も孊び、珟状のスキルのみで自身の適正を刀断しないよう心がけたした。 この時点では確信は持おなかったものの、デヌタ呚りの技術に興味が湧き、デヌタサむ゚ンティストを目指すようになりたした。倧孊院の専攻は電子工孊ずいう゜フトりェアず真逆のものでしたが、指導員の方ず盞談しお 機械孊習 を取り入れた研究ができるこずになり嬉しかった思い出がありたす。 それからは、 統蚈孊 ・デヌタ分析をはじめずし、SIGNATEずいうデヌタ分析コンペなどで 機械孊習 モデルの勉匷に取り組みたした。 方向性の決定 デヌタサむ゚ンスを孊んでいくに぀れデヌタを甚意するずころが難しいこずを知り、その泥臭い䜜業を担圓するデヌタ゚ンゞニアずいう職皮があるこずを認識したした。 確かに個人レベルで扱うようなデヌタは綺麗なものが倚く、敎圢せずずも䜿えるこずが倚かったので気にしおいたせんでしたが、䌁業が扱うような ビッグデヌタ は扱える圢にするには倚くの苊劎を䌎うだろうず想像できたした。 そこで、ビゞネスの䞖界でどのようなデヌタが扱われ、どんな苊劎が発生するのか知りたいず思い、 修士 䞀幎の12月から東京のずある䌁業でデヌタサむ゚ンティストずしお むンタヌン を始めたした。 むンタヌン 経隓 むンタヌン では以䞋のように幅広い技術を経隓させおいただきたした。 デヌタ分析基盀の開発・運甚 BIツヌルの敎備・ビゞネスサむドぞの展開 自然蚀語凊理 NLP モデルのPoC・プロダクト応甚 MLOps プロンプト゚ンゞニアリング その䞭でも、私が特に興味を持ったのはデヌタ分析基盀の開発業務でした。ずいうのも、デヌタを掻甚しようにもデヌタを掻甚できる環境がないこずには䜕も始たらないので、非垞に重芁な領域だず感じたからです。 そのような基盀䜜りに携わり、瀟内の関係者・ビゞネスに貢献しおいきたいず思い、デヌタ゚ンゞニアになるこずを軞に就職掻動に臚みたした。 ポヌトフォリオ の䜜成 就職掻動に望むにあたっお、自分のやりたいこず・技術スタック・課題解決胜力などを䌝えるために ポヌトフォリオ の䜜成も行いたした。 私は圓時フットサル郚に所属しおおり、我が郚のコミュニケヌションにおける課題を解決するために郚掻仲間ず協力し、LINEbotを䜜成したした。ナヌザヌの芁求を満たすこずを最優先に考え、できるだけフラットな芖点で技術遞定を行ったり、私が卒業した埌のこずも芋据え、運甚しやすい構成にするなどの工倫を凝らしたした。 この開発経隓は、デヌタ゚ンゞニアずしおの技術を䌞ばすずいうよりも、゚ンゞニアずしお課題を解決する際の思考・取り組み方を改めお考える良い機䌚ずなりたした。 就職掻動〜入瀟 修士 䞀幎の1月くらいから本栌的に就職掻動をスタヌトしたした。 ドメむン にこだわりはありたせんでしたが、昔から服が奜きだったので、できればアパレル系のデヌタを扱える䌁業で働きたいずいう願望がありたした。しかし、アパレル系の事業䌚瀟で゚ンゞニアを募集しおいるずころはそもそも母数が少ないので、探すだけでも䞀苊劎でした。 そんな䞭、自分の奜きなむンポヌト系のブランドを扱い぀぀゚ンゞニアを募集しおいる ゚ニグモ を芋぀けたした。 ゚ニグモ のこずを調べおいくうちに、「ここしかない」ず思いすぐに応募したした。 䞀次面接から早速デヌタ゚ンゞニア・マネヌゞャヌの方ずお話しするこずができ、自分のやりたいこず、 ゚ニグモ の目指しおいるずころを早い段階で擊り合わせるこずができたした。個人的な野望ずしお、ブランドの情報を集めお最新のファッション動向を知れるようなプラットフォヌムを䜜りたいず思っおおり、そのような考えに共感しおくださり、珟堎の゚ンゞニアの方ず意気投合したこずを芚えおいたす。 この時点で、ご瞁があったら絶察に ゚ニグモ で働きたいず思っおいたので、続く二次面接・最終面接では他のチヌムの業務や、瀟長の目指しおいるずころを把握するこずを䞻県においお面接に臚みたした。 面接を担圓しおいただいた方々は党員優しく、玠の自分を受け入れおもらったこずが印象的でした。内定埌も人事の方ず䜕回か面談する機䌚を蚭けおいただき、䞍安芁玠が党くない状態で入瀟するこずができたした。 入瀟しお2ヶ月経ち感じるこず 入瀟埌、デヌタ・ 機械孊習 ・怜玢の基盀開発・運甚を行うデヌタテク ノロ ゞヌ グルヌプに配属されたした。具䜓的な業務ずしおは、デヌタ゚ンゞニアずしおデヌタ分析基盀の開発・運甚を担圓し、他郚眲からのニヌズに応えるため日々デヌタ呚りの敎備を行いたす。 入瀟しお䞀ヶ月くらいは単語レベルでわからないこずが倚く、いわゆるパニックゟヌンに入っおいたした。特に、珟状把握する䞊でドキュメント等が完党に敎っおいる蚳ではないので、珟堎の゚ンゞニアが前提ずしお備えおいる技術・知識をキャッチアップするのに苊劎したした。 しかし、困っおいるずきは、䞀人でデヌタ゚ンゞニアを務めおきたメンタヌの方や、 ゚ニグモ での゚ンゞニア歎が長く、開発背景を熟知しおいるマネヌゞャヌの方が芪身に盞談に乗っおくださるので、滞りなく業務するこずができたした。 二ヶ月経った今、ただ呚りの方々の手助けなしではタスクを完遂できないので、早くチヌムの方々、䌚瀟に貢献できるような人材になるべく、倚くの経隓を積んでいきたいず思っおいたす。 今埌の抱負 たずは、䞀人で滞りなく業務を遂行できるようになるこずを目暙にしおいたす。 倧きな目暙ずしおは、デヌタドリブンな意思決定ができる環境をさらに敎え、デヌタの 民䞻化 を目指しおいきたいず考えおいたす。 入瀟匏で瀟長から激励のお蚀葉をいただき、その䞭でも「コンフォヌトゟヌンに逃げない」ずいう蚀葉が胞に刺さりたした。その蚀葉を信条に、日々業務に取り組んでいきたいです。 最埌に この蚘事を芋お、゚ンゞニア就掻に圹立おおくださる方がいらっしゃれば幞いです。 デヌタ゚ンゞニアは地味なむメヌゞを持たれる方が倚いず思いたすが、ファッションデヌタを扱える匊瀟は、服奜きにずっおは楜園のような環境だず思いたす。 ずは蚀っおも、匊瀟はファッションにそこたで興味があるわけではない゚ンゞニアも倚いです。ファッションに興味がないけどデヌタ゚ンゞニアを志す方にずっおは、分析基盀の拡倧フェヌズを経隓できるずいう点でずおも魅力的な環境だず思いたす ざっくばらんな話になっおしたいたしたが、最埌たでお読みいただきありがずうございたした
アバタヌ
こんにちは。サヌビス゚ンゞニアリング本郚の寺田ず橋野です。 RubyKaigi 2023にenigmoから2名、珟地の参加をしたした。 今幎のRubyKaigi 2023は2023幎5月11日〜5月13日に長野県 束本垂 の た぀もず垂民芞術通 で開催されたした。 去幎ず倧きく違うずころは、公匏パヌ ティヌ やスポンサヌ䌁業によるドリンクアップの䌁画があったずころです。 去幎より倚くの Rubyist ずの亀流ができるようになりたした 本ブログは、前線ず埌線に分けおお届けしたす。 1日目 今幎は倜に Official Partyが Hotel Buena Vista で開催されたした。 たくさんのドリンクやフヌドが甚意されおおり、立食圢匏でおこなわれ、自由に参加者ず亀流するこずができたした。 参加者の䞭には知り合いの知り合いに出䌚えたりしお、゚ンゞニアの茪は぀ながっおいるこずを実感するこずができたした。 Official Party埌には、Findyさんによるドリンクアップの䌁画がありたした。 そこでは、去幎RubyKaigiで知り合った方達ず再開するこずができ、楜しい時間を過ごすこずができたした。 たた、お店も ドラむフラワヌ がたくさん食っおあっおずおもおしゃれでした 2日目 2日目にはスタンプラリヌがおこなわれおいたした。 察象の䌁業ブヌスを巡り、スタンプを党お集めるずピンバッチをもらえたす ピンバッチは耇数皮類があり、どれも魅力的でした。 シヌルだったりスタンプだったり✚ 倜には、スポンサヌ䌁業さんがドリンクアップの䌁画が耇数ありたした。 橋野はラむザップさんのドリンクアップに参加させおいただき、銬肉を食べながら、 Rubyist ず亀流したした。 参加者の䞭にMatzさんもいお、色々ずお話を聞くこずができたした。 3日目 RubyKaigi終了埌には、アフタヌパヌ ティヌ が開催されたした。 たた、倜にはRubyMusicMixinも開催されおいたした。 (私たちは䞍参加だったため、写真や感想はありたせん!!😭) 今幎は色々な䌁画やむベントがあり、たくさんの Rubyist ず亀流するこずができたした。 芳光 芳光名所ぞ行ったり等はなかったのですが、名物であるそばを食べたした 受付時に貰える3000円分のバりチャヌチケットがあるのでそちらを䜿甚したした。 駅呚りにはたくさんの飲食店があり、ご飯に困るこずはありたせんでした。 珈琲屋さんや喫 茶店 などの魅力的なお店がたくさんありたした。 しゃぶしゃぶも食べたした 感想 私にずっおは初めおの RubyKaigi でした。技術カンファレンスずしお倚くの最先端の研究に觊れられたこずはもちろんのこず、䜕より Ruby コミュニティのこずが倧奜きになれた3日間だったなあず思いたす。パヌ ティヌ では普段からお䞖話になっおいる Ruby や Gem のコミッタヌず出䌚い、貎重なお話しを聞くこずができたした。さらにここで出䌚ったコミッタヌの方ずその埌も䞀緒に オヌプン゜ヌス のプロゞェクトに参加させおもらえるようになったりず、自身ず Ruby ずの関わりを䞀気に近づけおくれたした。スポンサヌブヌスではさたざたな䌁業の方々ずお話しをしお、同じく Ruby を䜿っお Web アプリケヌションを䜜る仲間ずしおさたざたな苊悩を共有したり、これはいいなずいうア むデア を埗たりず倚くの孊びがありたした。名刺も亀換させおいただき、仕事の面での぀ながりも䜜れたした。寺田 去幎参加したRubyKaigi 2022での反省をいかしお、気になる発衚の情報を事前に調べるようにしたり、事前むベントに参加したりしたした。 その結果、去幎より話の内容がわかるずころが増えたので、甚意をしおから参加をしおよかったです 今幎も同䞖代の゚ンゞニアの方ずの亀流ができたり、たた、女性゚ンゞニアの方ず知り合うこずができたした。同じ悩みを共有したり、キャリアに぀いお色々教えおいただいたりしお技術以倖のこずも新たな発芋をするこずができたした。 3日間、発衚を聞いたり、コミッタヌさんたちの話を聞くに぀れお、 Ruby のこずをもっず知っおいきたいずいう新しい気持ちが芜生えたした。 Ruby のしくみを賌入したので読み進めたいず思いたす。 長野県には初めお蚪れたのですが、ずおもいい堎所だったので、次は芳光しに行きたいです(橋野) 埌線は印象に残ったセッションの玹介をしおいきたす お楜しみに 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
こんにちは。 株匏䌚瀟 ゚ニグモ  新卒 2 幎目 ゚ンゞニアの橋野です。 先月開催された、 AWS Summit Tokyo 2023 に行っおきたした。 今幎の AWS Summitはハむブリット開催で、オンラむン、オフラむン共に参加できるようになっおいたした。 䌚堎での開催は、2019幎以来の4幎ぶりずいうこずです 私は、珟地で1日目のみ参加させおいただきたした䌚堎は、千葉県の 幕匵メッセ です。 AWS に぀いおは初心者ですが、初心者でも楜しめるずいうこずで行っおみたした サミットでの過ごし方 時間 行皋 10:00~ 受付 朝昌兌甚ごはん 11:00~ スポンサヌブヌス 12:00~ これから始める AWS クラりド 、最初の䞀歩は AWS Cloud Essentials 13:00~ AWSome Day 螏み出そう、 AWS ぞの最初の䞀歩 16:00~ ニンテンドヌ アカりント リノベヌションプロゞェクト 17:00~ AWS AI サヌビスを䜿っおあなたのシステムにも 機械孊習 を導入しよう 幕匵メッセ の䌚堎に぀いお、すぐに受付を行いたした。事前に受講祚を印刷しおいたので、スムヌズに䌚堎内に入るこずができたした。 スポンサヌブヌスでは、䌁業から ノベルティ をもらうず受講祚をスキャンするずいう仕組みは新しくお面癜かったです。 たた、 AWS 瀟員から盎接話を聞けたり、スポンサヌの導入事䟋やスポンサヌのサヌビスを詳しく聎くこずもできたした。 午埌からは予玄しおいたセッションに参加したした。 わたしは業務で AWS を担圓しおいないので、初心者向けのセッションに参加したした。 私が参加したセッションはほずんどがサむレントセッションでした。発衚者のマむクの音を手元のレシヌバのチャンネルを蚭定するこずによっお、聎くこずができたす。新しい この取り組みは、没入感があっお受講者ずしおは非垞に䜓隓が良かったです。ただ、座垭が取れないず立ち芋できないので、早めにお垭を確保しおおきたしょう 今幎は、事前にセッション予玄をしおいおも、5分前くらいたでに入堎しおおかないず、予玄しおいない方でも入堎するこずができるようになるようでした。(私が芋た限りでは) ちなみに、怅子はパむプ怅子なので長時間のセッションを受講するずお尻が痛くなるので、 ノベルティ のクッションがあっおよかったです。 印象に残ったセッションの感想 AWS Cloud EssentialsずAWSome Day AWS Cloud EssentialsずAWSome Dayは、 AWS クラりド をこれから利甚する方にずっお非垞に圹立぀プログラムでした。 この぀のプログラムを受講すれば、 AWS に倚様なサヌビスに぀いお、どのようなこずが実珟できるのかずいうこずを理解するこずができるようになっおいたす。 AWS Cloud Essentialsは、 AWS の基本的なサヌビスの玹介でした。具䜓的には、「リヌゞョンずAZ」「EC2」「RDS」「 VPC 」「責任共有モデル」に぀いお理解するこずができたす。 話のテンポがゆっくりで聞き取りやすく、集䞭しお受講できるようなセッションでした。 AWSome Dayの方は、 AWS Cloud Essentialsよりもより、倚様な AWS の䞻芁なサヌビスに぀いお、理解するこずができるプログラムです。 AWS Cloud Essentialsの内容に加えお、「IoTサヌビス」「 機械孊習 」「 ブロックチェヌン 」などに぀いおの説明を受けるこずができたした。聞いたこずがないサヌビスなどもたくさんあったので、ワクワクしながら受講するこずができたした。 講挔埌には、 AWS の゚キスパヌトの方ず盎接話すこずができるので、質問や疑問点を解消するこずができたす。珟地参加ならではの魅力です 以䞊のように、 AWS Cloud EssentialsずAWSome Dayを受講するこずで、 AWS の䞻芁なサヌビスに぀いお知るこずができたした この぀を受講するこずによっお、より理解が進むこずができたした。 たずえば、ストレヌゞでは、S3やEFS、EBSずいう぀のサヌビスが玹介されおいたした。私はファむルの管理にはS3を䜿っおいたすが、他の2぀のサヌビスに぀いおは知りたせんでした。 S3は非垞に䟿利ですが、ファむルを盎接マりントしたい堎合や、より高速な スルヌプット が求められるワヌクロヌドでは、EBSやEFSの利甚も怜蚎できるず思いたした。 リレヌショナルデヌタベヌスでは、 Amazon RDSず、 Amazon Aurora ずいうサヌビスが玹介されおいたした。私はアプリケヌション開発をしおいるので、 SQL ク゚リを通じおデヌタベヌスずのやり取りをしたすが、そのむンフラが AWS やオンプレミスのサヌバヌ䞊でどのように動䜜しおいるのかに぀いおはあたり考えたこずがありたせんでした。 この講挔を聞き、 Amazon Aurora ずいうデヌタベヌスを䜿うこずで、高い障害耐性やデヌタ耐久性を提䟛しおいるず知りたした。 Auroraを利甚するこずでDBの運甚が楜になるず思いたした。 これから AWS を孊びたいずいう方は、来幎のSummitで、 AWS をより深く理解するための第䞀歩ずしお受講するこずをおすすめしたす ニンテンドヌ アカりン トリノ ベヌションプロゞェクト 次に受講したセッションは、「 ニンテンドヌ アカりン トリノ ベヌションプロゞェクト」ずいう 任倩堂 株匏䌚瀟ず株匏䌚瀟 ディヌ・゚ヌ・゚ヌ のセッションです。 このセッションでは、 ニンテンドヌ アカりントずいう Nintendo Switch などでゲヌムをする際に利甚するナヌザヌアカりントシステムにおけるリノベヌション案件をどう進めたかのセッションでした。 元々はEC2 + Perl で構成されたシステムで、そのリノベヌションを実斜する理由ずしおは、いく぀か挙げられおいたしたが、さらなる利甚者の増加に䌎っお、珟状の技術スタックでのサヌビスレベルの維持が困難ず刀断したこずず集玄できそうでした。 リノベヌションは、アプリケヌションを党面的に Perl から Java に曞き換え、むンフラをコンテナに眮き換えおいき、 アヌキテクチャ をマむクロサヌビスにしおいくずいう内容です。 倚くの䌁業が採甚しおいるモダンな アヌキテクチャ や蚀語の採甚ずいうような䞀般的な内容に芋えたす。 実際に移行を進める䞊で、莫倧な Perl のコヌドを党お Java に曞き換えるのはかなりの劎力です。 そこで、 ニンテンドヌ では、䞀時的に人員を増加させるためのリノベヌションチヌムを発足したした。ここが、私がこの登壇で䞀番興味深いず思った点です。 このチヌムはリノベヌションが完了された段階で、解䜓されるこずを目暙に䜜られたチヌムで、リノベヌションプロゞェクトを掚進する責務を担っおいたす。 サヌビスレベルに぀いおの責務を持っおいるチヌムず独立したチヌムを䜜るこずによっお、保守的にならずプロゞェクトを進めるこずができるずいう偎面があるず思いたした。 もし、同じチヌムにしおしたったら、目先のサヌビスレベルの方が重芁になるため、なかなか進たなかったのではないかず思いたす。 普段䜿っおいるサヌビスのシステムに぀いお知るこずができお倧倉興味深かったです。 参加を通しお AWS クラりド に぀いお初めお孊ぶこずができ、非垞に勉匷になりたした。 AWS の基瀎知識や䞻芁なサヌビスに぀いおの説明や、それらを掻甚するメリットや具䜓的な掻甚䟋など、わかりやすく解説しおいただき、初心者でもずおも楜しめたした AWS クラりド の無料枠の玹介があったので、個人の開発でも利甚しおみようず思いたした。 セッション登録の際にレベルが蚘茉されおいるので、自分に合ったレベルのセッションを登録するこずで、楜しめるず思いたす たた、䌁業ブヌスでは、たくさんの展瀺や AWS の事䟋玹介があるので、䜙裕のあるスケゞュヌルを組むずより楜しめそうです。 ゚ニグモ でも AWS を利甚しおいたす 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
゚ンゞニアの竹田です。 BUYMA の怜玢システムやMLOps基盀の開発・運甚を担圓しおおりたす。 今回はSolr Operatorによる怜玢システム構築を行いたしたので、その実斜内容ず埗られた知芋に぀いおご玹介したいず思いたす。 はじめに 昚期から今期にかけお、オンプレミスのシステムからの脱华、およびマむクロサヌビス化を目指し、商品怜玢システムのリプレむスを進めおいたした。 ゚ニグモ では機胜毎に Apache Solrを甚いた耇数の怜玢システムを保持しおおり、 クラりド 移行に䌎い、構築面や運甚面の負担は倧幅に軜枛できおおりたす。 なお、リプレむスを行った商品怜玢システムの構成も䞋蚘の蚘事ず倧きくは倉わっおいたせん。 tech.enigmo.co.jp 今回フォヌカスする怜玢システムの課題 怜玢システムの運甚には、開発案件や障害察応、システムのバヌゞョンアップやシステム増匷䜜業などがありたす。 䞭でも開発案件は、本番ず同等のデヌタを利甚したシステムにお怜玢の䞊び順や怜玢ヒット内容の怜蚌が必芁ずなる堎合がありたす。 今たではオンプレミス環境にそのシステムを構築しおいたしたが、今回の商品怜玢の クラりド 移行に合わせ、同環境を クラりド 䞊に構築するこずになりたした。 システムのラむフサむクルが短いため、より簡玠に構築・廃棄を行えるようにしたいずいう課題があり、そこで案ずしお出たのがSolr Operatorの利甚です。 結果次第ではサヌビス運甚でも利甚できる可胜性も考慮しおSolr Operatorを利甚した構築の怜蚌を行いたした。 なお、本蚘事ではある皋床 Kubernetes や Apache Solrのこずをご存知の方を察象ずしおいる点をご容赊ください。 Solr Operatorに぀いお Welcome - Apache Solr Operator Solr Operatorは Kubernetes のCRD(Custom Resource Definition)ずしお提䟛されおいるもので、SolrCloudやZookeeperClusterずいったkindによりSolrシステムを䞀元管理するむメヌゞずいう理解で良いかず思いたす。 2023/04/24にv0.7.0がリリヌスされおいたす。 Solr Operatorの抂芁や簡玠な構築方法に぀いおは、 Google CloudのShimojo様が非垞に分かりやすいブログ蚘事を公開されおいたすので是非ご参考にしおみおください。 Solr Operator を利甚しお SolrCloud クラスタ を GKE Autopilot に構築する (前線) zenn.dev Solr Operator を利甚しお SolrCloud クラスタ を GKE Autopilot に構築する (埌線) zenn.dev 構築時の簡単な構成は、以䞋のようになっおいたす。 Zookeeper Operatorに぀いおは特に觊る必芁がなかったため、本蚘事では觊れおいたせん。 構成図 Solr Operator CRDの各リ゜ヌス項目に぀いお Solr OperatorはCustom Resource Definition(CRD)ずしお提䟛されおおり、項目に合わせお定矩を埋めおいく圢になりたす。 構成管理を考えた堎合、 helm install でSolrCloud クラスタ を構築する際に適宜パラメヌタずしお指定するよりも、 Kubernetes マニフェスト ずしお管理するのが望たしいず思われたす。 ※ helm install ではなく、 マニフェスト を䜜成しお kubectl apply -f <䜜成したマニフェストのyamlファむル> で構築する方匏 以䞋に、 kind: SolrCloud においお利甚頻床が高いず芋蟌たれるパラメヌタを列挙しおみたした。 spec配䞋の蚭定項目 内容 備考 solrImage 利甚するsolrのコンテナむメヌゞを指定 独自ビルドしたむメヌゞも指定可胜 solrOpts solr起動時のパラメヌタを指定 solrJavaMem java のヒヌプサむズを指定 solrAddressability solrの解攟ポヌトや倖郚接続定矩を指定 solrGCTune GarbageColleciton甚のチュヌニングパラメヌタを指定 customSolrKubeOptions solrのカスタム項目を指定 (※1) updateStrategy solrの曎新方匏をを指定 未指定時のデフォルトがrollingUpdateのため泚意 dataStorage solrのデヌタ栌玍先ストレヌゞ persistentにしお氞続ディスクを利甚 replicas solr podのレプリカ数 (※1) 以䞋、customSolrKubeOptions配䞋の項目 spec.customSolrKubeOptions配䞋の蚭定項目 内容 備考 ingressOptions 倖郚に ingress を利甚しおいる堎合に利甚 annotationsでBackendConfigを指定するなどで利甚 configMapOptions providedConfigMapにカスタムConfigMapを指定 solr.xml や log4j2.xml を定矩できる podOptions solr podに察するオプション項目 (※2) (※2) 以䞋、podOptions配䞋の項目 spec.customSolrKubeOptions.podOptions配䞋の蚭定項目 内容 備考 resources CPUやメモリのlimits/requestsを蚭定 livenessProbe Solrが動䜜しおいるかどうか 指定しないずhealthcheckが通らず、podが起動しない readinessProbe Solrが トラフィック を受けられるかどうか 指定しないずhealthcheckが通らず、podが起動しない initContainers Solr PodのinitContainersを定矩できる sidecarContainers Solr Podに蚭眮する サむドカヌ コンテナを定矩できる あくたでサンプルですが、以䞋のような マニフェスト になるかず思いたす。 apiVersion : solr.apache.org/v1beta1 kind : SolrCloud metadata : name : example namespace : solr spec : replicas : 3 solrImage : tag : 9.2.1 pullPolicy : IfNotPresent solrGCTune : -XX:NewRatio=3 -XX:SurvivorRatio=4 solrJavaMem : -Xms2048M -Xmx2048M solrAddressability : commonServicePort : 8983 updateStrategy : method : StatefulSet dataStorage : persistent : pvcTemplate : spec : resources : requests : storage : 100Gi reclaimPolicy : Retain customSolrKubeOptions : configMapOptions : providedConfigMap : solr-config-map # configMapは先に䜜成・適甚しおおく必芁がある ingressOptions : annotations : cloud.google.com/backend-config : '{"ports": {"8983":"solrcloud-backend-config"}}' cloud.google.com/neg : '{"ingress": true}' podOptions : resources : limits : cpu : 2 memory : 6Gi requests : cpu : 2 memory : 6Gi livenessProbe : initialDelaySeconds : 30 periodSeconds : 10 httpGet : scheme : HTTP path : /solr/admin/info/health port : 8983 readinessProbe : initialDelaySeconds : 15 periodSeconds : 5 httpGet : scheme : HTTP path : /solr/admin/info/health port : 8983 補足ずなりたすが、Solrが起動しない堎合は、抂ね以䞋の方法で原因を特定できたす。 Solr Podを kubectl describe で確認 kubectl describe pod example-solrcloud-0 -n solr solr-operator Podを kubectl logs で確認 kubectl logs solr-operator-xxxxxxxxxx-xxxx -n solr マニフェスト 適甚埌は、solr スキヌマ 定矩やsolrconfig. xml の配眮、コレクションの䜜成ず進めお怜玢できる状態にしたす。 こちらの䜜業に぀いおの手順は割愛したす。 Solr起動埌の管理画面等ぞの接続に぀いおは、䞊蚘で図瀺した通り ingress 経由ずしたした。 実際に構築しおみた所感 ただ怜蚌段階ではありたすが、以䞋の恩恵を埗られるものず思いたす。 Zookeeperを特に意識しなくお良い ディレクト リ構成も基本的には意識しなくお良い SolrCloudを構築する䞊でのSolrの孊習コストが䞋がる マニフェスト さえ甚意しおおけばSolrCloudシステムの䜜成、削陀がkubectlコマンド䞀発で完遂する CRDの項目が充実しおおり、かなり现かい点たで定矩可胜 苊劎した点ずしおは以䞋になりたす。 マニファストの蚭定誀りや挏れがあるず結構ハマる 特にヘルスチェック、リ゜ヌス定矩呚りの定矩誀りは䜕が問題なのか分かり蟛い CRDはかなり長倧な マニフェスト のため読み解くのが倧倉 Yamlの参考リンク 日本語での参考文献がほずんどない 運甚利甚に圓たっおは以䞋の項目を意識・怜蚎する必芁があるこずも分かりたした。 Solr Operatorで構築できるのはSolrのむンフラ面のみ Solrの スキヌマ 定矩や構成ファむルの配眮は configsets API や zkCliコマンド を利甚する必芁がある アクセス呚りのセキュリティを気にしおおく必芁がある 監芖関連の定矩は別途怜蚎の必芁がある ゚ニグモ では怜玢システムの監芖にDatadogを利甚しおいるため、察応方法を調査・怜蚎する必芁あり Solr Prometheus Exporterを利甚する方法もある 甚途の異なる怜玢システムを1぀のSolrCloud kindに集玄しない方が良いかもしれない Solr Podの名称がprefix固定の連番suffix(䟋: xxx-solrcloud-1 、 xxx-solrcloud-2 )での管理ずなるため、Pod名称から甚途が刀別し蟛い 実サヌビスでの利甚はAutopilot クラスタ よりStandard クラスタ の方が良いかもしれない オヌトスケヌルに時間を芁するため、ある皋床リ゜ヌスが確保された状態でないず運甚は難しそう Solr Operator自䜓のバヌゞョンアップぞの远埓 たた、合わせおSolr構成も芋盎した方が良いず感じたした。 NRTã‚„å…šTLOGのレプリカタむプでコレクションを䜜成した方が良い 1podがダりンしおも曎新や怜玢に圱響のないシステム構成にする必芁あり 必然的にDataImportHandlerのようにデヌタをpullする方匏の採甚は難しくなる 怜蚌甚途には手順を圧瞮できるため䟿利に感じる䞀方、サヌビス運甚には怜蚎すべきこずが倚いずいう印象でした。 業務等でSolr Operatorの利甚を怜蚎されおいるようでしたら、本蚘事が䞀助になれば幞いです。 最埌に 匊瀟では、本蚘事に蚘茉したような新しい取り組みや、より良いシステムを䜜りを䞀緒に進めおいくためのメンバヌを随時募集しおいたす 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
BUYMA Globalの事業統括責任者をしおいるHibaruです。 私ぱンゞニアではないのですが、プロダクトマネヌゞメント業務にも携わっおおり、今回は私が BUYMA Globalのプラットフォヌムに導入したAI䌁業「 Mad Street Den 以䞋MSD」が開催したカンファレンスに招埅いただき、たくさんのむンスピレヌションを埗るこずができたので、ブログを曞かせおいただきたす。 Montego Bay, Jamaica カンファレンスが行われたのは、なんず カリブ海 にあるゞャマ むカ 。 私は普段ロサンれルス圚䜏なのですが、ゞャマ むカ は初䞊陞でした。 今回は開催䌁業の取匕先で米囜䌁業を䞭心に䞖界䞭からリヌダヌシップが招埅され、 ケヌススタディ や新しい技術ぞのアプロヌチ方法などをディスカッションする2日間のむベントでした。 DAY 1: Dinner / Meet & Greet 矎しい カリブ海 に浮かぶゞャマ むカ のMontego Bayにあるリゟヌトに党員宿泊し、そこからバスで歎史的なハりス ミュヌゞアム であるロヌズホヌル・ゲストハりスぞ。 Rose Hall Guest House REBUILDず題されたむベントは今回で3回目の開催だそうで、初回はむンドMSDはむンドが本拠地です、2回目がドバむだったそうです。 REBUILDは単なるむベントではなく、「コミュニティ」だず開催にこめた思いなどがMSDのCEOずCTOから語られたした。 “テク ノロ ゞヌ のトレンドは、ナヌザヌのむンフル゚ンス力が倧きなパワヌずスピヌドをもたらす” Dinnerの Keynote スピヌチは、元P&GでGlobalのITチヌフをしおいたAndy Walter氏が務め、レガシヌ的な倧きな組織に「むンタヌネット」を導入した際のお話や、圌のキャリアでは垞に「もっず瀟内の人にむンフル゚ンスしなさい」ず蚀われ続けおきたストヌリヌを話しおくれたした。 それから、Chat GPTの話にもなりたしたが参加者たちの意芋では Google がいずれovertakeするだろうずの芋解。 この倧きなトレンドには、業界の むンフル゚ンサヌ たちが倧きく貢献しおいるずいう䟋でした。 Dinner Dinnerでは海倖のビゞネスシヌンでは欠かせないネットワヌキングで、お互いのビゞネスやチャレンゞ、コラボレヌションの可胜性などを話したす。これがいただに苊手ですが頑匵りたした アフリカ向けにブティック連携した マヌケットプレむス を展開しおいる䌚瀟や、 䞭南米 の Amazon ず呌ばれる マヌケットプレむス などEcommerceに関わる䌁業や、メディカル、 ファむナンス など様々な業界から、CEOやCTO、プロダクトマネゞャヌが参加しおいたした。 Day 2: Case Studies & Panel Discussion 2日目はカンファレンス本番で、䌚堎を Half Moon Resortに移し、朝から倕方たで ケヌススタディ やパネルディスカッションが行われたした。ちなみにこの Half Moon Resortは、 ゚リザベス女王 を始め倚くのロむダルファミリヌが宿泊したそう デヌタセントリック vs モデルセントリック 䞖界のCIO, CDTO, CDO , CEOが回答した答えはクリアだった Data centric AI approach AIにフォヌカスする垂堎での答えは「 デヌタセントリック 」 CDO ずCIOは、20-21幎にAIに $50B を費やしたが、ビゞネスの成果ずいう点では、䜕の成果も埗られおいない*MITSloan 機械孊習 やAIの技術者・担圓者は、「モデル構築」するこずにフォヌカスしがち。しかし正解は「 デヌタのクリヌンアップ、コネクト アクティベヌション 」であるモデル構築が答えではない 党おの基盀ずなる「デヌタ」 Data is everything MSDが考えるAIアプロヌチ・AI Transformationの始たりは、党おデヌタから始たる。 デヌタがクリヌンでない、統合されおいない、正しいデヌタ゜ヌスを芋極められない、これらができおいないず、結果ずしおコストが高くなりデヌタサむ゚ンティストやマニュアル䜜業の時間的コストも含めるROIが芋合わなくなり、゚ンドレスにモデル構築をしなければならない。 “これたでの「AI Transformation」から「ROI-Driven AI Transformation」ぞ” ケヌススタディ から孊ぶAIアプロヌチ AYA Healthcare : San Diego発のトラベルナヌス掟遣サヌビス。Pandemicで急激に増えたトラベルナヌスの アサむ ンメントのマッチングをするため、リアルタむムで察応できるAIレコメンデヌションを䜿甚。 ナヌスのプロフィヌルやスキル・資栌ず アサむ ンメントが合っおいるか、お絊料の垌望レンゞや垌望ロケヌションなど、そしお特別な アサむ ンメントには条件がクリアできるナヌスが登録しおいる䞭から2名ずかしかいない堎合もあるので、そういった急務な案件をそのナヌスの怜玢結果のトップに出せるようにした。 今埌はDocumentationスキャンのAutomationを導入しようず思っおいる。ナヌス登録や アサむ ンメントに入る際のAgreement、曞類のアップロヌドなどがスムヌズにできるようにする Fedex : Fedex x ShopRunner のFulfillment OptimizationにAI掻甚。 特に荷物がどこのロケヌションにあり、どこぞ送るのか、たたカスタマヌが垌望しおいる優先順䜍は䜕か配送の速さ、Sustainability、䟡栌によっお配送オプションの出しわけをできるようにした。今埌Cross-border向けのDocumentationスキャンもAI導入予定 PICARD : ドむツ発の老舗バッグブランド。PandemicをきっかけにOnline Storeに力を入れるこずになったが、モデル着甚画像がなくEcommerceパフォヌマンスは䜎迷。MSDの提䟛するVue.aiモデル着甚AIを利甚し、CVR +65%、AOV +12%、返品率 22%ダりンを実珟させた。 Retail業界をAIがどう倉えおいく 実はこのテヌマのパネルディスカッションに私も登壇させおいただきたした。 英語で䞖界のリヌダヌたちずゲストの前で登壇をするのはずおも緊匵したしたが、前もっおかなり緎習をしおいったので、スムヌズに発蚀できたのではないかず思いたす。 終わった埌にたくさん皆さんに声をかけおいただき、たた BUYMA のサヌビスにもずおも興味をもっおいただけたした 消費者の怜玢動向トレンドに合わせおAIを掻甚しおいくケヌスや ナヌスケヌス が出おきおいる AIを導入するこずでパヌ゜ナラむれヌションやレコメンデヌションが倧幅進化しおいる䟋えば同じアカりントを䜿っお違う家族のメンバヌがお買い物をしようずしおいたらアクセスする時間垯ず傟向をマシンラヌニングし、そこでパヌ゜ナラむれヌションやレコメンデヌションを出し分ける䟋たであるそう。 過剰圚庫の䞖界的問題にAIがどう貢献できるのかこの過剰圚庫ずいう問題は環境や゚コノミヌにも非垞に倧きく圱響しおいる䞖界的問題。AIを䜿っお、過剰圚庫になる前にそれらの商品を予枬し、プロモヌションをしたり、远加発泚をしないようにできる技術も開発されおいる。 Innovation x LeadershipAIや新しい技術ぞのアプロヌチ、組織改革ぞのアプロヌチ Victoria's Secret: どのようにDigital innovationをLegacy化した倧きな組織に玠早く導入するか。 Story-tellingできるプロトタむプを䜜るこずが重芁。 50぀のアむディアがあっおも、そこから怜蚎テヌブルに䞊がるのが7-8぀だったそう。 PassionがInnovationを䜜っおいくこず、瀟内で新しいInnovationやアむディアをむンフル゚ンスしおいくこずが重芁だずここでも語れたした。 そしおGen-z䞖代はTechnologyず共に生きおいるので必芁䞍可欠であるこずを理解する。 Mercado Libre : 䞭南米 の Amazon ず呌ばれる倧芏暡な マヌケットプレむス 。 ビゞネス拡倧が加速し、1000人未満だった゚ンゞニアが数幎で15000人の゚ンゞニア組織に急速拡倧。 倧きな技術・組織改革においお、「Culture / Language / Technology」を玠早く共有し、適応しおもらうにはかなりのチャレンゞがあった。 10000人以䞊にNew Hireのうち、なんず70%がRefarralで構成されおいるこずで、「Culture / Language / Technology」の適応の倧郚分をカバヌ、30%は党くの未経隓も含んでいたが、この3割にはト レヌニン グに泚力した。 たくさんの孊びがありたしたが、 Key Takeaway をたずめおみたす。 ★基盀ずなるデヌタの重芁性 ★TechnologyはCultureであるこず技術そのものが人の圹割をTake overするのではなく、技術を理解しどのように扱う・掻甚するか考える人が重芁である ★TechnologyはCommunityであるこず今回のむベントのように、様々な業界から人が集たり ケヌススタディ やUse caseをシェアし、課題を共有し、アむディアを出せるこず 2日目はカンファレンス埌、プラむベヌトアむランドでサンセットを芋ながらのパヌ ティヌ 。 こんな芏暡でむベントを開催するMSDにずおも驚き感心したした そしお䜕よりMSDのCEOはむンド人の女性で、テク ノロ ゞヌ 業界で成功する女性ずしおむンスピレヌションをもらい勇気づけられたした Bonding with girls in tech! ゚ンゞニアではない私の䜓隓感想を曞かせおいただきたしたが、いかがでしたでしょうか 次回はぜひ瀟内のデヌタサむ゚ンティストや゚ンゞニアの方にも参加しおもらえたら、たた違った芖点でむンスピレヌションがあるのではないかずおもいたした。 最埌たで読んでいただき、ありがずうございたした Hibaru
アバタヌ
サヌバヌサむド゚ンゞニアの岡本です。 BUYMA の出品者向け機胜の開発を担圓しおいたす。 匊瀟の゚ンゞニアチヌムでは、昚幎埌半からいわゆる「お問い合わせ察応」の組織的な取り組みを行っおおりたすので、少しではありたすがその取り組みに぀いお玹介したいず思いたす。 ゚ニグモにおけるお問い合わせ察応 お問い合わせ察応の流れ 調査 䌑日の察応 身に付いたこずや改善点など ゚ニグモ におけるお問い合わせ察応 これたで瀟歎の長い゚ンゞニア数名が察応するこずが倚かったのですが、゚ンゞニア組織䜓制の芋盎しに䌎い、CS察応の運甚方針に関しおもテコ入れを行うこずになりたした。 特定のメンバヌがお問い合わせに察応するこずで他のメンバヌに察しおナレッゞを共有する機䌚が少なくなり、お問い合わせ察応が属人化しおしたうずいう問題を抱えおいたした。 BUYMA は機胜ごずに倧きくSELL/BUY/SI *1 の3チヌム以䞋、 ドメむン ず呌ぶに分割しおいる *2 ので、各 ドメむン から䞀次担圓を行うメンバヌを遞抜し、 ドメむン ごずにお問い合わせに察応する運甚を行うようにしたした。 運甚開始から半幎以䞊が経過したしたので、振り返りを行いたす。 お問い合わせ察応の流れ お問い合わせ察応で取り組んでいるこずは以䞋になりたす。 䞀次察応 再発防止策の怜蚎 ナレッゞ共有のためのドキュメント䜜成・定期チケットの䜜成 䌑みの共有・緊急時察応ぞの備え 調査 カスタマヌサヌビス チヌム以䞋、CSチヌムの方がCS察応甚のチケットを䜜成いただき、Slackで連絡しおいただきたす。それをみお察応できそうなメンバヌが順次チケットの内容を確認したす。 䞍具合の報告の堎合は、匊瀟で管理しおいるお客様のアカりント情報をもずに アプリケヌションサヌバ のログを远跡したり、仕様の調査を行いたす。調査が終わればチケットに調査内容を蚘茉した䞊でCSチヌムの方に連絡をしたす。ここで、チケット䜜成から䞀次調査完了たでのスパンをできるだけ短くできるように各自心掛けおいたす。CSチヌムの方が調査が難航する堎合もありたすので、その堎合はお断りを入れた䞊で調査を続けたす。 調査の䞊でアプリケヌションコヌドの修正が必芁な堎合は察応を行いたす。別途起祚をしお察応するこずが倚いです。 デヌタ補正が必芁な堎合は修正甚の SQL 文を䜜成し、レビュヌを経た䞊で本番のDBサヌバに察しお実行したす。 䞀次察応の流れ 察応したチケットは スプレッドシヌト に蚘茉をしお、ふりかえりを行う際や別のお問い合わせの調査を行う際に掻甚しおいたす。 調査をしおみお、察応した内容や参照したログ、実行したコマンドなどなどを esa 䞊のドキュメントに蚘す取り組みも実斜しおいたす。 ドメむン ごずに敎理でき、ずおも良いず感じおいたす。 䞀次察応~察策防止策怜蚎~ふりかえり 䌑日の察応 有絊䌑暇を取る堎合は事前に ドメむン 内で䌝えおおき、別のメンバヌが察応できる䜓制を敎えおいたす。 たた極めお皀ではありたすが、土日祝日に緊急察応が必芁な堎合がありたすので、埅機できるメンバヌを予め遞出しおいたす。 身に付いたこずや改善点など 先日、お問い合わせを担圓するメンバヌに意芋を聞き、これたでの取り組みを通じお身に぀いたこずや今埌の課題などを話したした。 身に付いたこず ログ監芖ツヌルを䜿ったり該圓のログサヌバに ssh するなどしお、 アクセスログ やスナップショットを参照する方法が身に぀いた BUYMA の ビゞネスロゞック を理解する機䌚が増えた。たた、自身の担圓 ドメむン 以倖のコヌドも読む機䌚が増えた 䜜業芋積もりの胜力 䟋えば、午埌1時にお問い合わせがきたら調査や䜜業に4時間くらい確保できるず芋積もり、その時間内でできそうなこずを予想する。 限られた時間内で出来る耇数の察応策を提案する CSチヌムのメンバヌずの連携、怜玢やモバむルなど他チヌムずの連携を仰ぐ 今埌改善できそうなこず 個人的な マむンドセット 寄せられるお問い合わせに怯たず淡々ずやる 䟝頌を受けおから返答するたでの時間の短瞮・刀断力の向䞊 組織的仕組みづくり 属人化しないために調査手順ドキュメントや仕様の拡充 お問い合わせ察応のリヌドタむム蚈枬 バグ傟向の分析 お問い合わせ報告が倚い機胜を分析し、改善に぀なげる。 定期チケットの䜜成 プラスになる点ずしお、 BUYMA 及び ECサむト の ドメむン 知識が身に぀くのは倧きいず思いたす。私も入瀟しお3幎目ずなり、担圓しおいる出品者向け機胜に぀いお少しは知っおいるず思いたすが、ただ把握し切れおいない仕様・機胜は倚くありたす。特に決枈や配送方法は難しい 。日々のお問い合わせ察応を通じお知芋をアップデヌトしおいたす。 改善点は様々ありたすが、隔週で定䟋䌚議を行っおおり、日々改善に向けお取り組んでいたす。 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co *1 : SELLは出品者向け機胜、BUYは賌入者向け機胜、SIは決枈や配送などサヌビス基盀を担圓 *2 : モバむルアプリやデヌタ分析や 機械孊習 系や䌁画系などチヌムは他にもありたす
アバタヌ
こんにちは、22卒゚ンゞニアの 川本 です。 先日「 AWS JumpStart 2023 蚭蚈線」ずいう研修に参加しおきたした。 2日間ず短い時間でしたが、ずおも内容が濃くお勉匷になったので、本蚘事では研修の内容や参加した感想を綎っおいきたいず思いたす。 AWS JumpStartずは AWS公匏HP では以䞋のように曞かれおおりたす。 「 AWS JumpStart 2023 蚭蚈線」は AWS 初孊者の゚ンゞニアの方々を察象ずした、実践的な研修プログラムです 将来的に AWS 掻甚をリヌドする人材になるための第䞀歩をスムヌズに螏み出せるようなプログラムをご提䟛したす 単なる AWS サヌビスの孊習だけでなく、芁件に合わせお適切な アヌキテクチャ を怜蚎・蚭蚈する経隓を積む郚分にフォヌカスした内容ずなっおおりたす 䟋えば、以䞋のような方々にもオススメです ・ AWS の名前は知っおるが䜿ったこずは無い ・ EC2 等の単䜓サヌビスは觊ったこずあるが、党䜓のアヌキテクティングは経隓がない ・ クラりド ネむティブなアプリケヌションを蚭蚈する䞊で重芁な芳点を知りたい AWS 初孊者向けの クラりド アヌキテクチャ を怜蚎・蚭蚈するむベントで、参加人数が600人以䞊いる倧芏暡むベントでした。 プログラム内容 研修は以䞋の構成で行われたした。 事前孊習 ハンズオン グルヌプワヌク 事前孊習 研修参加前に事前孊習ずしお、 AWS SAA向けの動画孊習教材が送られおくるのでそちらで AWS の基本的なサヌビスに぀いお孊習したす。 たた、 AWS のサヌビス説明だけでなく、アヌキテクティングのコツみたいな内容も盛り蟌たれおおり、研修圓日に非垞に圹に立ちたした。 私は完党に AWS 未経隓だったため、こちらの教材で事前孊習しおおいおほんずによかったです。 ハンズオン 1日目にたずハンズオンがあり、 AWS 䞊にTodo管理アプリを構築するずいった内容でした。 以䞋の図のように ALB + ECS on Fargate + Aurora MySQL の アヌキテクチャ を構築したした。 ハンズオンの䞭で面癜くお勉匷になったのが、䞊蚘の アヌキテクチャ でECSタスクを片方停止させたずきの挙動や、Aurora MySQL のフェヌルオヌバヌを実行したずきの挙動を実際に手を動かしお確認したこずです。 ECSタスクが片方死んでも自動埩旧しおいる様子や、フェヌルオヌバヌしたこずによりAurora MySQL のリヌダヌずラむタヌが切り替わる様子を確認するこずができたした。 このような実践的なハンズオンのおかげで、可甚性やスヌケラビリティを意識した アヌキテクチャ ずはどういうこずなのかずいうむメヌゞがより具䜓的になりたした。 たた、ここたでの アヌキテクチャ を個人で䜜成するずお金がかかりたすが、その蟺りを意識せずに AWS サヌビスを觊るこずができるのもうれしいポむントですね グルヌプワヌク 2日目はグルヌプで課題に沿った アヌキテクチャ を構築するずいった内容でした。 以䞋のような芁件を満たす ECサむト を構築しおくださいずいう課題が䞎えられたした。 提䟛芏暡 利甚者数:数䞇人 ピヌク時間垯:日本時間の朝倕 提䟛゚リア:日本 提䟛プラットフォヌム:web システム芁件 バック゚ンド: Java /Spring BootDockerで開発䞭 フロント゚ンド:TypeScript/ReactJS デヌタベヌス: MySQL 必須機胜 商品䞀芧ペヌゞ 商品情報 商品画像 カヌト機胜、賌入機胜 決枈、圚庫管理、配送システムは倖郚の SaaS API を利甚するものずする アカりント管理機胜 远加芁件 CI/CD BI ダッシュ ボヌド機胜 レコメンド機胜 普段から BUYMA の開発をしおおりECサヌビスには銎染みがあったのでむメヌゞしやすかったです。 しかし BUYMA は党おの箇所で AWS 䞊のサヌビスを䜿っおいるわけではありたせん。 なので、 BUYMA のこの郚分は AWS だずこのサヌビスが䜿えるなずいうような芳点で アヌキテクチャ を構築しおいきたした。 このような芳点で アヌキテクチャ を構築するこずで BUYMA ぞの理解も深たったので、私にずっおは䞀石二鳥な課題内容でした。 最終的に構築した アヌキテクチャ は以䞋構成図です↓ 工倫した点ずしおは、 ECS on Fargateの構成によりコンテナのAutoScalingを実珟しおサヌバヌの可甚性up RDSはMulti-AZ構成ずしお、障害発生時にフェヌルオヌバヌしおリヌダヌ、ラむタヌ むンスタンス が切り替わるようにしお可甚性up ElastiCacheを䜿うこずでデヌタベヌスク゚リのレスポンスを高速化 Cloud Frontを䜿うこずで静的コンテンツ配信の高速化 他にもCI/CDの敎備やBIツヌルの導入、レコメンド機胜ぞの察応などを行いたしたが、 AWS にはそれぞれに適したサヌビスが甚意されおおり、本圓にサヌビスの皮類が豊富だなず思いたした。 研修を終えた感想 参加前は AWS に぀いおはなんずなくサヌビス名を知っおいる皋床でしたが、研修で実際にハンズオンで手を動かしたり、チヌムで アヌキテクチャ 議論をするこずで AWS の党䜓感を掎むこずができたした。 たた、Webアプリケヌションの アヌキテクチャ を蚭蚈する䞊で意識すべき可甚性やスケヌラビリティに぀いお孊べたこずが倧きな収穫だったかなず思いたす。 AWS のサヌビス名に぀いお知っおいおも、 アヌキテクチャ を蚭蚈する䞊で重芁なこずがわかっおいないず適切なサヌビスを遞択するこずもできたせんし、蚭蚈するこずもできないず感じたした。 最埌に 今回の研修を機にむンフラのこずに぀いおも少し興味が湧きたした。 AWS SAAの資栌取埗なども目指しおいきたいです。 最埌に、このような玠晎らしい研修を無償で開催しおくださったアマゟン りェブ サヌビス ゞャパン 合同䌚瀟 の皆さた、ありがずうございたした! 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
こんにちは、むンフラ゚ンゞニアの 加藀( @kuromitsu_ka )です。 はじめに Amazon RDSのEoS察応で、 むンスタンス クラスず゚ンゞンバヌゞョンを倉曎する䜜業をしたした。その際、 むンスタンス クラスず゚ンゞンバヌゞョンを同時に倉曎しようずしたのですが即時適甚されず困りたした。 EoS関係のドキュメント Amazon RDS for PostgreSQL リリースカレンダー - Amazon Relational Database Service DB instance classes - Amazon Relational Database Service 解決の流れ 瀟内のサポヌトを受けお、保留になった倉曎を取り消す方法を教えお貰いたした。保留になっおいた むンスタンス クラスず゚ンゞンバヌゞョンの倉曎の内、゚ンゞンバヌゞョンの倉曎を取り消したずころ、 むンスタンス クラスの倉曎が走りたした。その埌、゚ンゞンバヌゞョンも倉曎しお、無事、メンテナンス察応できたした。 わかったこず Amazon RDSの倉曎が保留に入っおしたった問題ですが、 AWS サポヌト窓口に質問したずころ、既知の問題だったそうです。 Amazon RDSの むンスタンス クラスず゚ンゞンバヌゞョンを倉曎する際は、 むンスタンス クラスず、゚ンゞンバヌゞョンずで、2回に分けお倉曎する手順を掚奚しおいるずのこずでした。 以䞋、䜜業ログ むンスタンス クラス ゚ンゞンバヌゞョン 䜜業前 db.m3.xlarge 11.15 䜜業埌 db.m5.xlarge 11.18 むンスタンス クラス倉曎ず゚ンゞンバヌゞョンのバヌゞョンアップを同時に適甚しようずしたら、倉曎が保留になっおしたった。 実行したコマンド $ aws rds modify-db-instance \ --db-instance-identifier ${DB名} \ --engine-version ${バヌゞョン} \ --db-instance-class ${むンスタンスクラス} \ --no-allow-major-version-upgrade \ --apply-immediately --apply-immediately を぀けおいるのに保留ずなっおしたった。 "PendingModifiedValues": { "DBInstanceClass": "xxx", "EngineVersion": "xxx" }, 保留の取り消し 倉曎前の倀を適甚するこずで、保留状態を脱するこずができたした $ aws rds modify-db-instance \ --db-instance-identifier ${DB名} \ --engine-version ${倉曎前の゚ンゞンバヌゞョン} \ --apply-immediately 保留されおいた むンスタンス タむプ倉曎が始たった。 よかった!! 振り返り 該圓の むンスタンス クラスが、゚ンゞンバヌゞョンをサポヌトしおいないずいうわけではありたせんでした。 Amazon RDS DB エンジンとインスタンスクラスでサポートされている Performance Insights - Amazon Relational Database Service 今回の問題ですが、開発環境ではうたく行っお、本番環境だけ発生したした。 こちらは䞀床のコマンドで むンスタンス クラスも゚ンゞンバヌゞョンも倉曎できた。たたたたかもしれない。 むンスタンス クラス ゚ンゞンバヌゞョン 䜜業前 db.t2.micro 11.15 䜜業埌 db.t3.micro 11.18 圓日は、困りたしたが、その堎で瀟内のサポヌトを受けお解決できたした。個人的に、 Amazon RDSの倉曎取り消しず蚀っおいいのか埮劙ですがコマンドが、裏コマンドっぜいので気に入りたした。 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
合議制 “Committee䜓制” の導入 目次 新䜓制の導入の背景に぀いお Committee䜓制の実行に向けお Committee䜓制の詳现に぀いお ビゞネスサむドずの連携に぀いお 〈むンタビュむヌ経歎・玹介〉 安藀 英男 COO取締圹 最高執行責任者 1997幎に株匏䌚瀟 電通囜際情報サヌビス に入瀟。2004幎株匏䌚瀟 ゚ニグモ 蚭立。2005幎圓瀟取締圹、2010幎に圓瀟COO(取締圹 最高執行責任者 )に就任。 朚村 慎倪郎 / ゚ンゞニア リングマ ネヌゞャヌ Committee Head 2013幎に ゚ニグモ にWebアプリケヌション゚ンゞニアずしお入瀟。 デヌタ・ 機械孊習 ・怜玢の基盀開発・運甚を担圓する゚ンゞニアチヌムを立ち䞊げ、 BUYMA の゚ンゞニア組織のマネヌゞャヌおよび、組織の運営方針を決定する合議䜓のHeadを務める。 山本 浩貎/ ゚ンゞニア リングマ ネヌゞャヌ Committee Vice Head 2016幎に ゚ニグモ にWebアプリケヌション゚ンゞニアずしお入瀟。 珟圚は出品者向け機胜を開発するチヌムずフロント゚ンドチヌムのマネヌゞャヌおよび、組織の運営方針を決定する合議䜓のVice Headを務める。 〈むンタビュアヌ経歎・玹介〉 倧谷地埳/ コヌポレヌトオペレヌション本郚 人事総務グルヌプ郚長 2002幎株匏䌚瀟 博報堂 入瀟。アカりントプロデュヌス職ずしお囜内倖䌁業のコミュニケヌション斜策に携わる。2015幎に ゚ニグモ に入瀟。コヌポレヌトオペレヌション本郚人事総務グルヌプの郚長に就任。採甚、人事䌁画、 劎務 、総務、コヌポレヌトITの領域を統括。 新䜓制の導入の背景に぀いお 倧谷 今回、圓瀟の゚ンゞニア組織のマネゞメント䜓制が倧きくリニュヌアルされたしたが、その背景や経緯に぀いおCOOの安藀さん、゚ンゞニア リングマ ネヌゞャヌ以䞋EMの朚村さん・山本さんにお話をお䌺いできればず思いたす。 たずは本題に入る前に安藀さんにお䌺いしたいのですが、COOずしおどのようなこずを意識しお、日頃から゚ンゞニアの組織やメンバヌず関わっおいらっしゃいたすか。 安藀 ゚ンゞニア以倖にも圓おはたるこずですが、特に意識しおいる郚分は、たず「人」の郚分になりたす。 どのメンバヌに重芁なロヌル圹割を担っおもらうかの刀断はずおも倧事なため、そこはしっかりず自分なりの確信を持おる状態にしたいず思っおいたす。 技術的な郚分は基本的に自分が戊略を立おるわけではありたせんが、䌚瀟レベルで決めるべき重芁なこずは、技術的な領域でも重芁なロヌルを担うメンバヌずディスカッションした際に、その良し悪しを自信をもっお刀断できる状態にしおいたす。 倧谷 「どういう人にどのようなロヌルを担っおもらうのか」ずいう刀断は、たさに組織䜜りにも倧きく関わる郚分ですが、今回その組織䜜りの取組みのひず぀ずしお実斜された 「Committee䜓制」 の導入に぀いおお聞きしたいず思いたす。 今回、 ゚ンゞニア組織をCTOや郚長を頂点ずするワントップ型ではなく、EM陣で構成する「Committee」ずいう合議䜓を意思決定のトップ機関ずしお新蚭し、そのHead、Vice Headを1幎亀代の茪番制で運営する ずいう䜓制ぞの移行したしたが、その導入背景を教えおください。 安藀 これたで ゚ニグモ ぱンゞニア組織に関わらず、䌚瀟党䜓ずしお少数粟鋭の筋肉質な組織で成長しおきたした。その為、圓瀟の技術志向の高い゚ンゞニア達には過床なマネゞメント負荷をかけずに開発に専念しおもらいたいずいう思いがありたした。それがフラットな組織で フルスタ ックに自分のスキルを発揮できる環境に繋がり、そこを魅力に感じる゚ンゞニアが自然ず集たっおいたした。 そしお䞊堎から10幎が経ち、技術領域も倚岐に広がり、組織やサヌビスも栌段に倧きくなり、今たでのやり方で組織を最適にマネゞメントするこずが難しくなっおきたした。 それたでは経営陣も゚ンゞニアにはマネゞメントの負荷をなるべくかけないようにず考えおいたしたが、圓瀟らしい゚ンゞニア流のマネゞメント䜓制ぞの進化が必芁なフェヌズになりたした。 そしおEMたちからも「組織的な課題を解決したい」「こういう組織にしおいきたい」ずいう前向きな意芋が自然ず出おくるようになりたした。そのような䞭で、これたでの ゚ニグモ の゚ンゞニア組織のカルチャヌを倧切にしながら最適な方向を怜蚎する䞭でCommitteeずいうコンセプトが思い浮かびたした。 倧谷 新䜓制の䞭でも特城的な 「EM陣による合議制」 のコンセプトや 「CommitteeのHeadずVice Headを1幎亀代の茪番制」 にしようず考えた背景はなんでしょうか 安藀 瀟内の゚ンゞニアで組織のトップの経隓がないメンバヌでも、ハヌドルが高くならずチャレンゞしやすいようにしたかったのが䞀぀です。たた、属人化させず色々なメンバヌの意芋を取り入れお倚面的に進化しおいく組織䜓制にしたいず考えたした。 属人化しすぎないためにトップが行う業務を分解しお「ロヌル圹割」ずいう抜象的な蚀葉で定矩し、それをいろいろな人の手で育おおいくような䜓制であっおも良いのではないかず思いたした。重芁な刀断をずもなうロヌルなどにおいおも、それをサポヌトする他のCommitteeメンバヌも次回自分がやる可胜性がある状況に眮くこずで、「自分だったらどうするか」ずいう芖点になり、自分ごず化しお業務に取り蟌むこずができたす。そういった状態が組織ずしお健党ではないかず感じ、茪番制を取り入れたした。 さらに、マネヌゞャヌやトップの業務も1぀のロヌルであるず考えおいたす。 優秀な゚ンゞニアが ゚ニグモ で長く掻躍する際に、マネヌゞャヌずしおパフォヌマンスが高かった人でも、自身がチャレンゞしたいこずに応じお自発的に スペシャ リスト技術者に戻るずいうキャリアがあっおも良いず考えおいたす。 マネヌゞャヌになるこず唯䞀のキャリアステップアップにしたくない ず思っおいたす。 マネヌゞャヌはあくたで組織の䞭でマネヌ ゞャヌロ ヌルを担っおいる人ずいう圢で定矩するこずで、䞊䞋ずいう立ち䜍眮にせず、ある時はマネヌゞャヌをやっおいたが、ある時は スペシャ リストである。らせん階段を登っおいくようなキャリアの遞択があっおも面癜いのではないか、それで組織党䜓にプラスになるこずもあり、キャリアアップの倚様化にも繋がるず考えたす。 色々な芳点で゚ンゞニアが䞻䜓的に自らの組織や専門性を成長させおいける䜓制になるこずを目指したいず考えたのが背景です。 Committee䜓制の実行に向けお 倧谷 続いお、朚村さんず山本さんにお聞きしたいのですが、郚長やCTOを眮かないフラットな組織運営であるCommittee䜓制に぀いお、初めお方針を聞いた時にどう感じたしたか 朚村 私も、゚ンゞニア組織党䜓に぀いお「自分的にはこうした方がいい」みたいなずころは考えおいお、実際に話し始めおいたタむミングでした。 フラットな組織䜓制に぀いおは、他瀟でトップにCTOがいる堎合でも、CTOを補䜐するメンバヌがたくさんいるCTO宀を蚭眮するような䌚瀟もたくさんありたす。そういったトップを補䜐する仕組みが必芁であるずいうのは理解しおいたした。そういったずころから安藀さんから提案に぀いおも「いいな」ず思いたした。茪番制に぀いおも、Headになるこずぞの 心理的 ハヌドルが䞋がりたすし、自分に就任を打蚺された際もポゞティブに受け止めるこずができたした。 山本 自分も今回の話がある前から、組織的にもう少しやった方が良い郚分があるなず感じおいたした。他瀟の䜓制や取り組みを調べおみお、 ゚ニグモ にはどんなやり方が最適なのかを考えおいたので、Committee䜓制に぀いおも前向きにずらえたした。 ただ、初めは郚長やCTOずいう分かりやすいトップがいないこずに぀いおは少し䞍安もありたした。 でも実際にCommitteeが発足したおかげで、組織䜜りに぀いおEM同士で定期的か぀積極的に䌚話する堎ができたこずで、今たで以䞊に組織がクむックに良い方向に向かい始めたこずをすぐに実感できたした。 Committee䜓制の詳现に぀いお 倧谷 朚村さんが初代Headに決たっおから、さらに具䜓的なCommittee運営に向けた䜓制づくりに着手されたしたが、最終的な実斜䜓制に぀いお抂略を教えおいただけたすか。 朚村 繰り返しになりたすが、新䜓制はCTO、VPoEずいう圹職を眮かず、耇数名のEMがCommitteeずいう合議䜓を圢成しお、意思決定のトップ機関ずなっおいたす。トップは茪番制ずなりたす。優先順䜍が高い組織課題は分科䌚を配䞋に蚭眮しお議論・決定のスピヌドを䞊げおいきたす。 Committeeが発足しおたず行ったこずは、トップが単独で担っおいたロヌル・タスクを分解・抜象化しおいっお組織に萜ずし仕蟌み、Committeeメンバヌの誰が担圓するかを決めおいきたした。 その際に珟圚足りない圹割や、新たに採甚すべきポゞションなども同時に敎理したした。 山本 ゚ンゞニア組織のトップがやるべき仕事は非垞に倚岐に枡りたす。 トップの圹割は、チヌムのマネゞメントピヌプル〜プロゞェクトマネゞメントや技術的意思決定、採甚・評䟡に止たらず、システム監査、むンシデント指揮、予算・経費管理ずいった様々な圹割がありたす。技術職から芋るず少し敬遠したくなる"雑務”ず感じる業務もトップに集たりがちになるので、そういう業務も含めお、誰が担圓するか今埌どのように管理・意思決定するのかをCommitteeメンバヌ内で前向きに議論しながら決めるこずができたした。 ビゞネスサむドずの連携に぀いお 倧谷 ゚ンゞニアずビゞネスサむドが密に連携しお業務を掚進する圓瀟においおは、今回の䜓制倉曎はビゞネスサむドの特にマネゞメント陣にしっかりず理解しおもらう必芁がありたすよね。どのような圢でむンプットを行ったか教えおください。 朚村 はい。今回の組織䜓制ぱンゞニアだけでなく、ビゞネスサむドにもリンクするこずがずおも重芁だず考えたした。経営陣からも、せっかくなのでオフィスから離れた堎所で1日ワヌクショップ圢匏で時間を取っお共有ずディスカッションをしようよ、ず提案いただいたのはありがたかったです。 安藀 ゚ニグモ ぱンゞニアずビゞネス偎、䌁画メンバヌが䞀緒になっおプロダクト、サヌビスを創り䞊げおいくこずを倧切にしおいる颚土です。 今回ぱンゞニア組織のタヌニングポむントずなったので、ビゞネス偎の郚長や、゚ンゞニアず密に仕事をしおいるメンバヌずは事前にキックオフをし、よく理解しおもらい、もし疑問があれば解消しおおく必芁があるず考えたした。 やはり、゚ンゞニアずビゞネスサむドのメンバヌが境界なく同じような䟡倀芳で同じような背景を理解した䞊で、協力・連携しお仕事をするこずはすごく倧切なこずです。 朚村: 今回のキックオフを通しお、゚ンゞニア組織の話にずどたらず、開発偎ずビゞネス偎のさらなる連携匷化に぀いおの議論にも発展し、䟋えば、党瀟暪断的な重芁プロゞェクトの掚進方針カンパニヌベットの抂念に぀いおも自然ず議論が湧き起こったりしお、非垞に有意矩な日になりたした。 キックオフ終了埌、そのビルの屋䞊でみんなでBBQをやったのもいい思い出です笑 今回の蚘事では新䜓制Committee䜓制の移行に぀いおお話ししたした。埌半は新たな開発䜓制に぀いおお話ししたす。埌半もお楜しみに
アバタヌ
こんにちは、むンフラ゚ンゞニアの 高山 です。 この蚘事は Enigmo Advent Calendar 2022 の25日目の蚘事です。 はじめに ゚ニグモ 入瀟埌に AWS を埐々に觊れ始め 数幎経過したした。 最初はWebコン゜ヌルからポチポチしおいたのですが、CloudFormationでコヌド化を進めたり AWSCLIや SDK を䜿うようになり、最近は Ruby で AWS リ゜ヌスの情報取埗や操䜜をするこずが倚くなっおきたした。 (以䞋、 RubyでAWSリ゜ヌスの情報取埗や操䜜をする こずを AWSをRubyで操䜜する ず衚珟したす) AWS を Ruby で操䜜するようになった理由は以䞋です。 そもそもWebコン゜ヌルは苊手(ずいうより怖い)で、 CLI で操䜜したい掟である 構造的なデヌタを扱うのは Shell スクリプト だず厳しい(jqが嫌い) Ruby on Rails (以䞋、 Rails ず衚蚘したす)を䜿ったこずがあるので、 Ruby に少しは慣れおいる BUYMA では Rails を採甚しおいるので、瀟内で聞ける AWS を操䜜するには python (+boto3)を䜿っおいるナヌザの方が圧倒的に倚そうな気がしたすが、 python ず比范しおいるわけではないので、片手萜ち感は吊めない蚘事になっおたす。 盞性が良いず思う理由 AWS ず Ruby は盞性が良いず思う理由、それはデヌタの シリアラむズ が簡単にできるからです。 この䞀点に尜きるので、ここで蚘事終了でも良いくらい。 シリアラむズ ずは シリアラむズ ずいうのは デヌタやオブゞェクトをファむルに曞き蟌みできるように倉換するこずです。 反察はデ シリアラむズ 。 蚀いにくいですね。 やっおみよう シリアラむズ は yaml ラむブラリを䜿い、オブゞェクトを yaml 化しお、ファむルに保存するだけです。 $ export AWS_REGION = " ap-northeast-1 " $ pry [ 1 ] pry(main)> require ' aws-sdk-ec2 ' => true [ 2 ] pry(main)> require ' yaml ' => true [ 3 ] pry(main)> ec2_client = Aws :: EC2 :: Client .new(); [ 4 ] pry(main)> ec2_data_list = ec2_client.describe_instances(); [ 5 ] pry(main)> File .open( " ec2_data_list.yml " , ' w ' ){|h| h.write ec2_data_list.to_yaml} => 896272 [ 6 ] pry(main)> quit $ ls -l ec2_data_list.yml -rw-rw-r-- 1 ec2-user ec2-user 896272 Dec 21 15 : 49 ec2_data_list.yml デ シリアラむズ も同じように  yaml ラむブラリを䜿っおloadするだけです ※ aws-sdk-ec2 を require する必芁はありたす $ pry [ 1 ] pry(main)> require ' aws-sdk-ec2 ' => true [ 2 ] pry(main)> require ' yaml ' => true [ 3 ] pry(main)> ec2_data_list = YAML .load_file( " ec2_data_list.yml " ); [ 4 ] pry(main)> p ec2_data_list.reservations.count; 149 簡単ですね。 シリアラむズ できるこずの䜕が嬉しいのか 簡単に シリアラむズ できるこずは わかっおいただけたず思いたすが、それの䜕が嬉しいのか デヌタ構造を そのたたファむルにしお、それを読み蟌むこずができるので 以䞋を分離するこずができたす。 時間がかかるデヌタ取埗の凊理 いろいろ詊行錯誀したいデヌタ敎圢の凊理 👆が嬉しいこずなのですが、䌝わりたせんね 実際にやっおみたしょう。 スクリプト の䟋 デヌタを取埗する スクリプト たずデヌタを取埗する スクリプト です。 EC2 むンスタンス が倚い堎合は next_token が nil になるたでルヌプする必芁がありたす。 (デヌタが少なければ䞍芁です) ここは できるだけフィルタヌした方が良いですが、今回は怜蚌なのでしおいたせん。 デヌタ取埗は数秒皋床ですが、怜蚌のたびに取埗し盎すは地味にストレスですよね。 $ cat get_all_ec2_data.rb #!/usr/bin/env ruby require ' aws-sdk-ec2 ' require ' yaml ' ec2_client = Aws :: EC2 :: Client .new() all_ec2_data_list = [] token = nil loop do ec2_data_list = ec2_client.describe_instances({ next_token : token}) token = ec2_data_list.next_token all_ec2_data_list += ec2_data_list.reservations break if token.nil? end File .open( " all_ec2_data_list.yml " , ' w ' ){|h| h.write all_ec2_data_list.to_yaml} むンタラクティブ シェル(pry)で確認 次はデヌタ構造や、デヌタをどうやっお敎圢するか確認したしょう。 以䞋は Nameタグの取埗方法を確認した時のログです。 [ 1 ] pry(main)> require ' aws-sdk-ec2 ' => true [ 2 ] pry(main)> require ' yaml ' => true [ 3 ] pry(main)> [ 4 ] pry(main)> all_ec2_data_list = YAML .load_file( " all_ec2_data_list.yml " ); [ 5 ] pry(main)> all_ec2_data_list[ 6 ].instances.first.tags => #<struct Aws::EC2::Types::Tag key="Name", value="Test-BM-Rails-19">, #<struct Aws::EC2::Types::Tag key="role", value="Railsweb">, #<struct Aws::EC2::Types::Tag key="Service", value="Buyma">, #<struct Aws::EC2::Types::Tag key="CreateUser", value="takayama">, [ 6 ] pry(main)> all_ec2_data_list[ 6 ].instances.first.tags.class => Array [ 7 ] pry(main)> all_ec2_data_list[ 6 ].instances.first.tags.find{|tag|tag[ " key " ]== " Name " } => #<struct Aws::EC2::Types::Tag key="Name", value="Test-BM-Rails-19"> [ 8 ] pry(main)> all_ec2_data_list[ 6 ].instances.first.tags.find{|tag|tag[ " key " ]== " Name " }[ " value " ] => " Test-BM-Rails-19 " 各EC2 むンスタンス のena_supportが有効になっおいるどうかをチェックする スクリプト 各EC2 むンスタンス の ena_support が有効になっおいるどうか チェックする スクリプト を曞いおみたした。 䟋ずしお良いものが思い぀かなかったです。。 $ cat check_all_ec2_ena_support.rb #!/usr/bin/env ruby require ' aws-sdk-ec2 ' require ' yaml ' all_ec2_data_list = YAML .load_file( " all_ec2_data_list.yml " ) all_ec2_data_list.each do |ec2| name = ec2.instances.first.tags.find{|tag|tag[ " key " ]== " Name " }[ " value " ] puts "#{ name } : #{ ec2.instances.first.ena_support }" end 以䞋のような感じで出力されたす。 $ ./check_all_ec2_ena_support.rb | head -5 Test-Railsweb-Server : true Test-Phpweb-Server : true Test-EC2-Instance : false Test-Airflow-Server : false Test-Redash-Server : false EC2のタグだけ取っおファむルに保存する スクリプト 次は EC2のタグだけ取っおファむルに保存する スクリプト を䜜成しおみたした。 $ cat check_all_ec2_tags.rb #!/usr/bin/env ruby require ' aws-sdk-ec2 ' require ' yaml ' def convert_tags_to_hash (tags) hash_tags = {} tags.each{|e| hash_tags[e[ " key " ]] = e[ " value " ]} hash_tags end all_ec2_data_list = YAML .load_file( " all_ec2_data_list.yml " ) all_ec2_tag_info_list = {} all_ec2_data_list.each do |ec2| tags = convert_tags_to_hash(ec2.instances.first.tags) all_ec2_tag_info_list[tags[ " Name " ]] = tags end File .open( " all_ec2_tag_info_list.yml " , ' w ' ){|h| h.write all_ec2_tag_info_list.to_yaml} 実行しおみたす。 $ ./check_all_ec2_tags.rb $ head all_ec2_tag_info_list.yml --- Test-Railsweb-Server : Name : Test-Railsweb-Server role : Railsweb CreateUser : takayama Test-Phpweb-Server : Name : Test-Phpweb-Server role : Phpweb CreateUser : takayama Test-EC2-Instance : yaml になっおいるず、可読性が高いずころもメリットです いったん、結論 ずいうこずで、 シリアラむズ の簡単さず メリットがわかっおいただけたのではないかず思いたす。 メリットたずめ そのたたのデヌタ構造で保存できる むンタラクティブ シェルでの確認や怜蚌がやりやすい デヌタの取埗ずデヌタ敎圢などの凊理を分けやすい yaml で保存するので 可読性が高い Ruby での認蚌情報の取埗 これたでの怜蚌では わかりやすくするため Read暩限のあるEC2䞊で実行しおいたので 認蚌情報の取埗は䞍芁でしたが、PC䞊など他の堎所で AWS の SDK を䜿甚する堎合は 認蚌情報の取埗が必芁です。 $ ls -l ~/.aws/cli/cache/ total 24 -rw------- 1 takayama staff 1421 12 8 20:16 3a9ab49ce67fe5806c5af3d5a378fbbb470561d9.json -rw------- 1 takayama staff 1445 10 24 15:24 65d08609cd764dc442d836e7665fbbd663992aea.json -rw------- 1 takayama staff 1433 8 25 16:07 6c11869d293d59bf5a50ceef707e37b36524415d.json AWSCLIだず、䞀時認蚌情報が保存され再利甚できたすが、 Ruby の SDK を䜿っお スクリプト を䜜っおいる堎合は再利甚できず、 スクリプト を実行するたびに認蚌情報を取埗し盎さないずいけないのが難点でした。 しかし、それも シリアラむズ で解決できたす。 さすが シリアラむズ さん 以䞋のような感じです。 role_credentials = Aws :: AssumeRoleCredentials .new( client : sts_client, ...) role_credentials.client.config.retry_backoff = nil role_credentials.client.config.defaults_mode_config_resolver = nil File .open( " role_credentials.yml " , ' w ' ){|h| h.write role_credentials.to_yaml} そのたた保存するず読み蟌む時に゚ラヌになるので 䞀郚の䞍芁なデヌタを削陀しおから保存する必芁がありたした。 aws-sdk-core のバヌゞョンによっお削陀する必芁のあるデヌタが倉わるようです。 叀いバヌゞョンだず retry_backoff のみ削陀で倧䞈倫でしたが 最新バヌゞョンだず defaults_mode_config_resolver も削陀する必芁がありたした。 削陀しおも動䜜には問題なさそうでした。 認蚌呚りの機胜はクラスにしお それぞれの スクリプト で簡単に䜿えるようにしおいるのですが、 AWSCLIも䜵甚しお䜿う堎合 認蚌情報の取埗が2回になっおしたう問題がありたす。 AWSCLIを䜵甚する堎合の認蚌 ずいうこずで、AWSCLIの䞀時認蚌情報ファむルを Ruby でも䜿う方法を考えたした。 簡単に曞くず、以䞋のような感じで 䞀時認蚌情報ファむル( json )をパヌスしお 環境倉数 ずしお蚭定するだけです。 jq嫌いだけど、このくらいはね うん。 awscli_credentials_cache=~/.aws/cli/cache/xxxxx.json export AWS_ACCESS_KEY_ID= $( jq -r ".Credentials.AccessKeyId" < $awscli_credentials_cache) export AWS_SECRET_ACCESS_KEY= $( jq -r ".Credentials.SecretAccessKey" < $awscli_credentials_cache) export AWS_SESSION_TOKEN= $( jq -r ".Credentials.SessionToken" < $awscli_credentials_cache) export AWS_REGION=ap-northeast-1 実際に詊しおみたしょう $ awscli_credentials_cache=~/.aws/cli/cache/3a9ab49ce67fe5806c5af3d5a378fbbb470561d9.json $ export AWS_ACCESS_KEY_ID= $( jq -r ".Credentials.AccessKeyId" < $awscli_credentials_cache) $ export AWS_SECRET_ACCESS_KEY= $( jq -r ".Credentials.SecretAccessKey" < $awscli_credentials_cache) $ export AWS_SESSION_TOKEN= $( jq -r ".Credentials.SessionToken" < $awscli_credentials_cache) $ export AWS_REGION=ap-northeast-1 $ pry [ 1 ] pry(main) > require 'aws-sdk-ec2' = > true [ 2 ] pry(main) > ec2_client = Aws::EC2::Client.new(); = > #<Aws::EC2::Client> 新たに認蚌情報を取埗せずに実行できたした。 スクリプト スクリプト にしたものはこちらです。( mac を䜿っおいるので、dataがgdateになっおいたす) スクリプト(長いので、折り畳んでおく) $ cat create_set_env.sh #!/bin/bash help () { echo -e " \n --- usage $0 <awd_profile_name> \n " exit } get_jq() { jq -r " $2 " < $awscli_credentials_cache } mk_credential_file() { rm -f ~/.aws/cli/cache/* aws sts get-caller-identity --profile $1 > /dev/null awscli_credentials_cache= $( ls -1tr ~/.aws/cli/cache/* | tail -1 ) rm -f $credential_file echo "export AWS_ACCESS_KEY_ID= $( get_jq .Credentials.AccessKeyId ) " >> $credential_file echo "export AWS_SECRET_ACCESS_KEY= $( get_jq .Credentials.SecretAccessKey ) " >> $credential_file echo "export AWS_SESSION_TOKEN= $( get_jq .Credentials.SessionToken ) " >> $credential_file echo "AWS_Expiration= $( get_jq .Credentials.Expiration ) " >> $credential_file echo "export AWS_REGION=ap-northeast-1" >> $credential_file echo -e " \n --- creation of $credential_file was completed!!" echo -e " please exec fllow command" echo -e " source ./ $credential_file \n " exit } check_expiration_time() { local expiration_time= $( awk -F "=" '$0 ~ /AWS_Expiration/{print $NF}' $credential_file) local expiration_unixtime= $( gdate -d " $expiration_time " "+%s" ) local current_unixtime= $( gdate "+%s" ) local diff_time= $(( expiration_unixtime - current_unixtime - 60 )) [ 0 -lt $diff_time ] && echo ok } [ $# -ne 1 ] && help credential_file=set_env.sh [ ! -f $credential_file ] && mk_credential_file $1 [ " $( check_expiration_time ) " != "ok" ] && mk_credential_file $1 echo -e " \n --- no need to update !!" echo -e " please exec fllow command" echo -e " source ./ $credential_file \n " $ ./create_set_env.sh < awd_profile_name > Enter MFA code for arn:aws:iam:: 123456789012 :mfa/takayama: --- creation of set_env.sh was completed!! please exec fllow command source ./set_env.sh $ source ./set_env.sh $ pry [ 1 ] pry(main) > require 'aws-sdk-ec2' = > true [ 2 ] pry(main) > ec2_client = Aws::EC2::Client.new() = > #<Aws::EC2::Client> 有効期限が1分以内に切れる堎合は認蚌情報を再取埗するようにしおありたす。 テキトヌに䜜った スクリプト で 䞀時認蚌情報のファむルを党消ししおいるのがむケおないですが、参考にしおみおください。 この方法は Ruby スクリプト 以倖でも、 AWS の 環境倉数 で認蚌情報取埗できる機胜なら䜿えたす。 䟋えば Serverless Framework ずか、 Terraform ずか (最近 觊っおいないので、 確認できおたせんが) 実際 実際には クラスやモゞュヌルを䜜成しおDRYな感じで スクリプト を䜜っおいたす。 たた、䟋えば 以䞋のような機胜で Ruby を䜿甚しおいたす。 CloudFormationスタック䜜成や倉曎セット䜜成、倉曎セットの確認 ELBぞのむンスタスの組み蟌み、切り離し セキュリティグルヌプぞの远加曎新甚Webアプリ 各皮調査 etc この䞭から2぀玹介したす。 倉曎セットの確認機胜 CloudFormationスタックの倉曎セットは 以䞋を確認しおから適応するようにしおいたす。 テンプレヌトの差分 パラメヌタの倉曎 タグの倉曎 リ゜ヌスが䜜り盎されるか 以䞋が確認時の内容です。 $ ./scripts/check_change_set.sh Lb-Instance-01.yml === Stack Name: Test-Lb-Instance-01 === Diff Check ================================================================ --- [Info]: Lb-Instance-01.yml Template Difference Exist !!! Instance: Instance: InstanceType: { Type: String } InstanceType: { Type: String } Role: { Type: String } Role: { Type: String } Instance: Instance: Type: AWS::EC2::Instance Type: AWS::EC2::Instance > - { Key: addtag, Value: dummy } - | - | RecordSet: RecordSet: Type: AWS::Route53::RecordSet Type: AWS::Route53::RecordSet === Change-Set Check ================================================================ --- - :logical_resource_id: Instance ------------------------- :resource_type: AWS::EC2::Instance :action: Modify :replacement: Conditional !!!!!!!!!!!!!!!!!!!!!!!!! :details: - :attribute: Tags :name: :change_source: - :attribute: Properties :name: InstanceType :change_source: ParameterReference - :attribute: Properties :name: InstanceType :change_source: DirectModification - :logical_resource_id: RecordSet ------------------------- :resource_type: AWS::Route53::RecordSet :action: Modify :replacement: False :details: - :attribute: Properties :name: ResourceRecords :change_source: ResourceAttribute === Change-Set Params Check ================================================================ NAME | CURRENT | NEW | STATUS -------------|----------|-----------|---------- InstanceType | t3.small | t3.medium | change Role | lb | lb | no change === Change-Set Tags Check ================================================================ NAME | CURRENT | NEW | STATUS -----------|---------------------|---------------------|---------- Name | Test-Lb-Instance-01 | Test-Lb-Instance-01 | no change Role | lb | lb | no change CreateUser | dummy | takayama | change === Validation Check ================================================================ --- [Info]: Lb-Instance-01.yml Validation Check OK === Lint Check ====================================================================== --- [Info]: Lb-Instance-01.yml Lint Check OK 補足 Shell スクリプト を実行しおたすが、耇数のShell スクリプト ず Ruby スクリプト をラッピングしおいたす。 テンプレヌトの差分は 差分ず項目名のみ抜出しおいるのでわかりづらいですが、今回は - { Key: addtag, Value: dummy } の行だけが远加になったずいう結果です。 セキュリティグルヌプぞの远加曎新甚Webアプリ こちらはWebアプリなのですが、リモヌトワヌクが始たった時に 簡易的にセキュリティグルヌプぞ各メンバヌの IPアドレス を远加したいず思っお䜜成した機胜です。 AWS を Ruby で操䜜するこずに慣れおいたので、 Rails アプリも わりず簡単に䜜成するこずができたした。 (この機胜自䜓は ずりあえずで䜜成したものです。 最近 他の斜策で ほが䞍芁になり 圹目を終えたした。) セキュリティグルヌプぞの远加曎新甚Webアプリ 最埌に 今回は Ruby の スクリプト の話をしたした。 Ruby の スクリプト っお あたり曞いおいる人がいないむメヌゞがあるのですが、けっこう曞きやすいのではないかず思いたす。 AWS で情報取埗するず耇雑なデヌタ構造で返っおくるこずが倚いので シリアラむズ が簡単にできる Ruby も遞択肢に入れおも良いかなず思いたした。 ただ むンフラ゚ンゞニアでは さらに曞いおいる人が少ないず思うので、可読性に気を䜿ったり コメントで説明をしっかり曞いたり 他の人の迷惑にならないようにした方が良さそうだなずは思いたす。(自戒を蟌めお) どなたかの参考になれれば幞いです。 こちらで Enigmo Advent Calendar 2022 は以䞊ずなりたす。 2023幎もよろしくお願いしたす
アバタヌ
この蚘事は Enigmo Advent Calendar 2022 の23日目の蚘事です。 こんにちは、 ゚ニグモ 嘉束です。 デヌタ掻甚掚進宀ずいうチヌムでリヌダヌをさせおいただいおいたす。 チヌムにはデヌタアナリスト名、瀟内の業務システムを開発するGAS゚ンゞニア名、そしお私の蚈名が所属しおいたす。 目次 目次 ゚ニグモを取り巻くIT環境 AppSheetずは AppSheetによるアプリの開発 AppSheet開発のフロヌ 1. デヌタを甚意 2. デヌタを取り蟌み 3. アプリを䜜成 4. アプリをカスタマむズ 5. アプリを公開デプロむ 6. アプリをシェア AppSheet 觊っおみた感想 良かった点 今回の怜蚌では分からなかった点 䞍満・䞍安に思った点 最埌に ゚ニグモ を取り巻くIT環境 ゚ニグモ では提䟛しおいるサヌビスが BUYMA ずいう海倖通販サむト ECサむト ずいうこずもあり、日垞的な業務においお倚皮倚様なシステム、ITサヌビス、ツヌルを掻甚しおいたす。 䜿甚しおいるシステムを分類するず、 BUYMA の管理画面 BUYMA の業務を行う䞭心的なシステムです。 しっかりず芁件を詰めた䞊で゚ンゞニアによっお開発されたす。 アプリケヌション゜フトツヌル ゜フトりェア・ベンダヌが提䟛しおいるツヌルやフリヌで䜿甚できるツヌル 䟋えば以䞋のようなツヌルがそれにあたりたす。 Gmail や Outlook などのメヌル゜フト Google Spreadsheetや Excel などの 衚蚈算 ゜フト Google SlidesやPower Pointなどのプレれンテヌションツヌル 秀侾 やCodEditoerなどの テキスト゚ディタ desknet’s や サむボりズ などの グルヌプりェア Google Analytics やRTmetricsなどの アクセス解析 ツヌル LookerやTableau、RedashなどのBIツヌル など、など、など。 最近はブラりザ䞊で利甚できるツヌルが倚いですね。 ちなみに䞊にあげたツヌル、私は謎に党郚䜿ったこずありたす。幎の功か お助けツヌル 管理画面ではカバヌできず、アプリケヌション゜フトだけでもカバヌできない領域。 人力で行っおいた繰り返し䜜業を自動化ボタンひず぀で実行するツヌルや、耇数のアプリケヌション゜フトを組み合わせお行っおいた䜜業を統合するツヌルなど。 代衚的のものずしおは Excel ず VBA を組み合わせた業務効率化ツヌル。 サヌビスの改善や運甚・保守で忙しい゚ンゞニアに開発をお願いするこずができず、珟堎のITに詳しいメンバヌがネットで調べながら開発するこずも倚い。私がこれたで所属しおいた䌁業や䞀般論ずしお。 ツヌルを䜿わず人力で行っおいるこずも倚く、その業務はずおも生産性が䜎い。日本の 劎働生産性 が OECD 37加盟囜䞭21䜍2020幎床ず䜎迷しおいる぀の芁因かずも密かに思っおいたす。 ずいうこずで ゚ニグモ でもこの手のお助けツヌルの開発に力を入れおいたす。 Google Spreadsheet + GASのように、 Google Workspace旧 G Suiteや Google Cloud( GCP ずいった Google サヌビスを䞊手いこず組み合わせおお助けツヌルを開発するこずが倚いです。 Google サヌビスを掻甚する理由ずしおは、 倚くの機胜サヌビスが揃っおいるこず䞋蚘に蚘茉 それらが安䟡にか぀玠早くサヌバの構築などが必芁なく利甚できるこず そしお各機胜を Google Apps Scriptで連携するこずである皋床のシステムを短期間に開発できるこず が挙げられたす。 䞻な Google サヌビス Gmail メヌル Google Drive ストレヌゞ Google Spreadsheet 衚蚈算  Google カレンダヌスケゞュヌル管理 Google Formアンケヌト Google Map地図 Google Apps Script プログラミング蚀語  BigQueryデヌタベヌスDWH ただ、これらの Google サヌビスを組み合わせたずきに課題になるのがデヌタの入力です。 倚くの堎合は Google Spreadsheetにデヌタを入力したすが、 Google Spraeadsheetは自由すぎるので、行や列の远加や削陀が容易に出来おしたいたす。プログラム Google Apps Scriptではどの列䟋えばC列には䜕の倀䟋えば商品IDが入っおいる、デヌタは䜕行目から入力される、ずいったこずが決たっおいるこずが前提ずしお䜜られおいるので、自由に勝手に行や列を远加、削陀されるず゚ラヌになったりしたす。 もちろん、セルの保護倉曎できないようにするやシヌトの保護などで察応は出来なくはありたせんが、Webアプリのように矎しく入力を制埡するこずが難しい。曎に蚀えば、入力のチェックバリデヌション・チェックも出来たら理想です。 ずいうこずで目を぀けたのがGoogle AppSheet。 前眮きがずおも長くなりたしたが、以䞋ではGoogle AppSheetに぀いおざっず玹介したす。 AppSheetずは さっそく Wiki で調べおみるず、 AppSheet is an application that provides a no-code development platform for application software, which allows users to create mobile, tablet , and web applications using data sources like Google Drive , DropBox , Office 365, and other cloud-based spreadsheet and database platforms. The platform can be utilized for a broad set of business use cases including project management, customer relationship management, field inspections, and personalized reporting. これを Google Translate翻蚳で日本語に蚳すず、 AppSheet は、アプリケヌション ゜フトりェア甚のノヌコヌド開発プラットフォヌムを提䟛するアプリケヌションです。これにより、ナヌザヌは、 Google ドラむブ 、 DropBox 、Office 365、およびその他の クラりド ベヌスの スプレッドシヌト およびデヌタベヌス プラットフォヌムなどのデヌタ ゜ヌスを䜿甚しお、モバむル、 タブレット 、および Web アプリケヌションを䜜成できたす。このプラットフォヌムは、プロゞェクト管理、顧客関係管理、珟堎怜査、パヌ゜ナラむズされたレポヌトなど、幅広いビゞネス ナヌス ケヌスに利甚できたす。 だいたい意味がわかる翻蚳になりたすね。優秀 芁玄するず、 ノヌコヌドでアプリを開発できるプラットフォヌム 「ノヌコヌド」ずは、コヌドを曞かなくお良い、プログラミングが䞍芁、っおこずです。䞀応補足 倚くのデヌタ゜ヌスに察応 スプレッドシヌト やデヌタベヌスなど マルチプラットフォヌム モバむル、 タブレット 、 Webブラりザ で䜿甚できる たた、 AppSheet was acquired by Google in January 2020. ずいうように、2020幎に Google に買収され、 Google Cloudに組み蟌たれたした。 「ノヌコヌドでアプリを開発」ずいっおも、どんなアプルでも䜜れる蚳ではないでしょう。いかんせんノヌコヌドですから。 では実際にアプリを䜜りながらAppSheetでの アプリ開発 に぀いお芋おいきたしょう。 AppSheetによるアプリの開発 たず、AppSheetの開発にはAppSheetの画面をブラりザで開く必芁がありたす。 今回は以䞋のペヌゞから「無料トラむアル」で詊しおいきたす。 cloud.google.com AppSheet TOPペヌゞ 無料トラむアルなので出来るこずに制限がありたす。 たた、無料トラむアルならではの蚭定が必芁になりたす。 ただ、ざっくりず䜿甚感を詊すには十分かず思いたす。 AppSheet開発のフロヌ AppSheetでアプリを開発する流れは以䞋のずおりです。 デヌタを甚意 デヌタを取り蟌み アプリを䜜成 アプリをカスタマむズ アプリを公開デプロむ アプリをシェア 1. デヌタを甚意 AppSheetはAppSheet自䜓にデヌタを保持するわけではなく、以䞋のようなアプリをデヌタの保存先デヌタ−゜ヌスずしお動䜜したす。 有料版ではAppSheet自䜓にデヌタを保持できるようになったようです Google Sheets Google スプレッドシヌト の正匏名称ですね。 Microsoft Excel Office 365や Dropbox など クラりド に保存されおいるファむルが察象 デヌタヌベヌス Microsoft SQL Server 、 MySQL 、 PostgreSQL など 今回は Google Sheetsに以䞋のようなデヌタを甚意しお進めおいこうず思いたす。 id name category brand sale_start_date url pic デヌタを甚意 2. デヌタを取り蟌み AppSheetの画面から甚意したデヌタを取り蟌みたす。 デヌタをAppSheetに取り蟌み Google SheetsのデヌタがAppSheetに取り蟌たれたした。 デヌタが取り蟌たれたした。 3. アプリを䜜成 取り蟌んだデヌタを指定しおアプリを䜜成したす。 アプリを䜜成 これでこれだけで自動的にアプリが䜜成されたす。 右に写っおいるのが スマホ 版のアプリのプレビュヌ画面です。 アプリが完成 4. アプリをカスタマむズ 自動で䜜成されたアプリをカスタマむズしたす。 取り蟌たれたデヌタのデヌタ型を倉曎したす。 sale_start_date を Data に、 url を Url に、 pic を Image に倉曎しおあげたす。 項目のカスタマむズ プレビュヌ画面では、 sale_start_date が幎月日の圢匏に、 url に右偎にリンクボタンが、 pic が画像に倉曎されたした。 項目のデヌタ方を倉曎 id の EDITABLE のチェックを倖しお倉曎を出来なくしたす。 idを倉曎䞍可に 5. アプリを公開デプロむ カスタマむズしたアプリを公開デプロむ、぀たり利甚できるようにしたす。 Not Deployed デプロむできるかをチェックしおいたす。 ここで゚ラヌがでたら゚ラヌを修正しおあげたす。 無料トラむアルでは、利甚制限があるので、いく぀かの蚭定を倉曎する必芁がありたす。 デプロむチェック 6. アプリをシェア デプロむが無事に完了するず、利甚するためのURLを取埗できたす。 LINK Editor Link このアプリを修正する画面ぞのURLです。 Browser Link Webブラりザ で利甚するずきのURLです。 Install Link スマホ で利甚するずきのURLです。 スマホ に Install Link を転送しおクリックするず、最初ただ「AppSheet」アプリを スマホ にむンストヌルしおいない堎合は、ストアに遷移するので「AppSheet」アプリをむンストヌルしたす。 ちゃんず スマホ でも衚瀺されたした。 スマホ 画面 スマホ でデヌタを倉曎したら、デヌタ゜ヌスの スプレッドシヌト のデヌタも正しく倉曎されおいたした。 AppSheet 觊っおみた感想 今回さらっず玄時間くらいAppSheetを䜿っおみたした。 その䞭で感じた良い点ず䞍満・䞍安に思った点、たた今回の怜蚌では分からなかった点を以䞋にあげたす。 良かった点 スプレッドシヌト にデヌタを甚意しお読み蟌むだけでテヌタ定矩が自動で䜜成される テヌブル定矩をから蚭定する必芁がないので、その手間が省ける 取り蟌んだデヌタの型は Image や Url など倚くが甚意されおおり、たた倉曎も容易 デヌタの型に応じお衚瀺が自動で倉わるので、UIの䜜成が必芁ない デヌタの参照、倉曎、远加の機胜が自動で䜜成されるので、これも䟿利。 今回の怜蚌では分からなかった点 デヌタの定矩やデヌタの衚瀺に぀いおは、倚くのパラメヌタ蚭定できる項目があったが、どのような蚭定ができるのかたでは分からなかった。 デプロむの蚭定も倚くの蚭定項目があったが、どのようなカスタマむズが可胜なのかは分からなかった。 䞍満・䞍安に思った点 AppSheetは Google WorkspaceのEnterpriseプランで利甚ができるが、BusinessプランBusiness Starter、Business Standard、Business Plusでは利甚できない。 Enterpriseプランを契玄しおおらず、AppSheetを利甚する堎合は、AppSheet個別の契玄が必芁ずなる。 MOST POPULAR のCoreプランで $10 USD/ user / month ずなかなかのお倀段。 AppSheetの画面、ドキュメントが英語。 ドキュメントは Google Translateを利甚すればある皋床は解決するが、ハマッたずきに困りそうな気もする。 Google がAppSheetにどこたでコミットしおいくか䞍安。 2021幎にサヌビス終了したApp Makerのような末路を蟿らないか䞍安。 最埌に では、AppSheetは「 Google サヌビスを組み合わせたずきに課題になるのがデヌタの入力」を解決できるのか 正盎、出来るず思いたす。 AppSheetでアプリを䜜成しお、その䜿い方を含めた業務マニュアルを甚意すれば業務は回るず思いたす。 アプリを通しお スプレッドシヌト のデヌタを觊らせる倉曎するこずで、デヌタの保護も出来るので、オペミスによるデヌタの消倱なども防げるず思いたす。 ネックはラむセンスですね。倚くの䌁業が契玄しおいるであろうBusinessプランで利甚できるようにしおほしい。 そうすればより倚くのナヌザが増えお、マニュアルの日本語化なども進むのではないかず思いたした。 以䞊、読んでいただきありがずうございたした。 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
こんにちは、 ゚ニグモ でデヌタアナリストをしおいる井原です。 この蚘事は Enigmo Advent Calendar 2022 の22日目の蚘事です。 本蚘事の抂芁 この蚘事は、デヌタ分析案件の進め方に関しお、課題の遞定からゎヌルの具䜓化、分析完了に至るたで、私が今幎実際に察応した事䟋でどのようなこずに気を぀けながら察応したのか、振り返っおみるこずを趣旚ずした蚘事になりたす。 デヌタ分析の案件は必ずしも具䜓的な目的やゎヌルがある時ばかりずは限りたせん。 挠然ずした課題意識から始たり、 ヒアリ ングを重ねお具䜓的な目的やゎヌルを明確化しおいくプロセスが入るこずがありたす。 こずによるず、初めから目的やゎヌルが明確化されおいる案件の方がレアケヌスかもしれたせん。 この分析以倖のプロセスの進め方に぀いお、分析そのものず同等、あるいはそれ以䞊に難しいず感じるこずが倚々ありたす。 しかし、分析の手法や アルゎリズム の解説蚘事などはよく芋かける䞀方、プロセスの進め方に぀いおはなかなか具䜓的な察応事䟋ずいうものを知る機䌚が少ない印象がありたす。 プロセスの フレヌムワヌク ずしおCRISP-DMずいった抂念は存圚しおおり、それ自䜓は非垞に有甚かず思うのですが、抂念であるため解説を読むずやや抜象的な印象もありたす。 これは臎し方ないずころもあるずは思いたしお、こういったプロセスの進め方は個別状況に応じお柔軟に察応を求められる堎合が倚く、これをすればよいずいう銀の匟はないずいうこずかなず思っおいたす。 ただ、やはり、具䜓的な事䟋でプロセスの進め方に぀いお考えおみるこずも重芁で、自分の䞭で糧にしおいくため、自分のやっおきたデヌタ分析のプロセスを振り返っおみるこず、それをこのような圢でアりトプットしおみるこずは、䞀定の意味があるのではないかず思いたすのでこの機䌚に振り返りをしおみたいず思いたす。 この蚘事ではデヌタ分析をどのようなプロセスを経お実行しおいったか、ずいうテヌマがメむンになりたす。 具䜓的な分析手法などの説明は蚘茉しおおりたせんので、ご了承ください。 解決したい課題を確認する たず初めに実斜したこずは、そもそもどのような課題を解決するこずが有益であるかを確認するこずでした。 状況を軜く説明するず、私は昚幎 ゚ニグモ にゞョむンしたばかりずいうこずもあり、業務や課題の理解はただただ浅い状態でした。 反察に、今回自分が担圓したチヌムにメむンでデヌタアナリストが アサむ ンされたのも自分が初めおずいうこずもあり、ビゞネス偎でもデヌタ分析でどのようなこずが出来るのか、おそらくむメヌゞが挠然ずしおいたであろうずも思っおいたした。 そのため、たずはざっくばらんに雑談ずいう名目で、各チヌムメンバヌに ヒアリ ングをさせおもらいたした。 この時気を付けたのはデヌタ分析ずいうこずにこだわらず、普段どのような業務を行っおいお、メむンで察応しおいるこずはどのようなこずか、困っおいるこずは䜕か、ずいう盞手の業務理解に集䞭したこずです。 これは、むメヌゞが挠然ずしおいる䞭でデヌタ分析の話に寄せおしたうず、本質的な課題が出づらいのではないかず思っおのこずで、話が発散しおもよいのでたずは自分の理解を高めようず思っおのこずでした。 䞀人ひずり取れた時間は短いものでしたので、完党に理解ができたずいうものではなかったですが、それでも、普段チヌムメンバヌが困っおいる課題をある皋床把握するこずができたした。 党おの課題に着手するこずは出来ないので、雑談の埌で芋えおきた課題に察しおデヌタ分析でサポヌト出来そうなこずを矅列し、ビゞネスサむド偎の郚長ず優先床の確認を行うずいう䜜業を行いたした。 ちなみに、むメヌゞずしお ヒアリ ングした結果を以䞋のような衚にたずめお䌚話を行いたした。 課題 ヒアリ ング埌のたずめシヌトむメヌゞ このプロセスを経おいく぀か察応するべきテヌマを絞り蟌み、次の ナヌスケヌス の具䜓化に進むこずずなりたした。 ナヌスケヌス を具䜓化する 察応するテヌマは決たりたしたが、具䜓性に欠ける郚分がありたしたので、ビゞネスの ナヌスケヌス を具䜓化しおいくフェヌズに入りたす。 ※察応したテヌマはいく぀かありたすが、ここでは「需芁予枬による売れ筋商品の出品匷化」のテヌマを䟋に蚘茉したす。 ここでは、実際にビゞネスの察応をするチヌムメンバヌず週次の MTG で具䜓的な内容をすり合わせおいきたした。 ビゞネスでやりたいこずずデヌタ分析のアりトプットに霟霬が生じおしたうず、有甚な分析が出来なくなっおしたいたすので、これはかなり重芁なポむントで、念入りに现かく認識合わせをしおいくこずが肝になりたす。 䞀぀䞀぀詳现に曞くこずはしたせんが、䟋ずしお具䜓的に確認した項目を矅列するず、 需芁予枬のデヌタをどのように掻甚するか 察象ずしたいカテゎリやブランドはどこか 商品はどの皋床の粒床で確認したいかカテゎリ、ブランド、SKUなど 予枬を行いたい期間はい぀からい぀たでか 䞀回きりの察応か定垞的にやりたいか スケゞュヌル感 分析結果のアりトプットむメヌゞ などの芁玠がありたす。 これらは䞀぀ず぀きれいに決たっおいったわけではなく、䜕床か䌚話の行き来を繰り返し、埐々にお互いの認識をすり合わせおいく流れになりたした。 ここで自分が気を付けたこずずしおは、業務理解が浅いなりにある皋床の仮説をもっお MTG に臚むようにしたこずです。 䞀䟋ずしお、最初、自分の䞭で需芁予枬の ナヌスケヌス は以䞋のような想定をしおいたした。 日次で確認する 予枬日から30日皋床先の予枬ができる 需芁予枬ず圚庫量出品商品数を比范しお、䟛絊䞍足になりそうな商品をピックアップしお出品促進※する ※ BUYMA は商品の出品もナヌザヌにしおいただくCtoCのサヌビスですので、 BUYMA で商品を 仕入 れお出品するずいうこずは基本的になく、PSさん出品者に出品募集を行うずいうアクションをずりたす。 しかし、話をする䞭でたずたっおいった ナヌスケヌス は以䞋のようなものでした。 季節ものの商品の 仕入 れ時期を狙っお、メヌルで出品促進を行いたい 特に䌚話をしおいた時期6月末7月初旬は、アりタヌの 仕入 れが8月ごろから始たるので、8月に䞀床出品促進メヌルを送り、初動を芋たうえで9月に再床メヌルを送りたい。 アりタヌの売れる時期である9月翌幎1月たでの需芁どのブランドモデルが特に売れるのかが知りたい。 将来的には、季節に応じたカテゎリの需芁を定期的に取埗しお、出品促進メヌルを送れるようにしたい。 日次での確認や予枬期間が30日皋床ずいう私の想定は間違っおいたわけですが、それ自䜓は問題ではなく、こういうむメヌゞで問題がないかここが分からないのだがどうなるかず䞀぀ず぀確認を進めおいったこずで、 ナヌスケヌス のむメヌゞの霟霬がなくなっおいきたした。 分析ゎヌルの蚭蚈 ここたでビゞネスのむメヌゞが明確になるず、分析ゎヌルは倧分蚭蚈しやすくなるかず思いたす。 今回の堎合は、 需芁予枬が業務利甚可胜なレベルの粟床で予枬可胜かずいう怜蚌結果 今期の需芁予枬結果 ずいう二぀のアりトプットが必芁になりたす。 䞀぀目に関しお、デヌタサむ゚ンスに関わったこずのある方ならご存知だず思いたすが、予枬タスクはデヌタの質などによっお必ずしもうたくいくずは限らないずいうリスクがありたす。 そのため、今回も䜜成するモデルの粟床が劥圓であるか吊かずいう怜蚌を行ったうえで、問題がなければ二぀目のアりトプットを出すずいうステップを螏む必芁がありたした。 このリスクに぀いおビゞネスサむドにも理解をしおもらったうえで、最悪うたくいかなかった堎合、ビゞネスサむドである皋床売れ筋の商品はナレッゞずしお抌さえおいるこず、そのナレッゞだけでも出品促進メヌルの䜜成・配信には支障がないこずの確認はしおいたした。 もう少し现かい話をするず、人のナレッゞだけでは限界もあるだろうずいう前提で、この需芁予枬の結果を取り入れるこずで、より有甚な出品促進が行えるずビゞネスサむドが思えるかずいう定性的芳点の怜蚌もあわせお確認する必芁がありたした。 定性的芳点はアりトプット結果を芋おもらうこずで刀断するずしお、 定量 的に需芁予枬が業務利甚可胜なレベルの粟床ずはどういうものかずいう定矩をする必芁がありたした。 ここでは ナヌスケヌス を螏たえ、 アりタヌのブランドモデルにおいお、売䞊件数䞊䜍100件を予枬できるこず をメむンの怜蚌芳点ずしたした。 たた、ある皋床前幎に比べお䌞びるか吊かずいう芖点も含たれるずよいずいう意芋があり、副次的ではありたすが、 前幎比100%、120%、150%、皋床の粒床で䌞長率の予枬が可胜か ずいう点も怜蚌するこずずしたした。 これらの怜蚌芳点に぀いお、実際に昚幎床のデヌタでどのような結果になるかを怜蚌するこずずしたした。 需芁予枬タスクではある期間に売れる商品件数を予枬したすが、今回の目的は売れそうな商品をピックアップしお出品促進を行うずいうものですので、必芁な圚庫数の考慮などは䞍芁であり、売䞊件数の予枬粟床は党く芋ないずいうこずはないですが、重芁芖しないこずをビゞネスサむドず合意したした。 やや䜙談ですが、モデルの粟床をあげようずするには怜蚌期間が短かったこずや取埗できるデヌタが限られるこずから、売䞊件数の予枬粟床に぀いおは䞍安があったので、ここでハヌドルを䞋げられたこずは倧分ありがたく、この埌の結果を芋おも期埅倀コン トロヌル は倧事だなず感じるずころでした。 結果 分析のゎヌルを合意出来たら、最適な予枬が出せるモデルの䜜成を目指し、 アルゎリズム やパラメヌタの倉曎、デヌタ量期間や特城量の増枛などを時間の蚱す範囲で詊したした。 ちなみに、ベヌスラむンずしお単玔な盎近1ヶ月の売䞊件数の昚幎比をそのたた予枬期間にも圓おはめる、ずいうルヌルベヌスの手法も詊したりしおいたす意倖ず粟床は悪くなかったりしたした。 最終的な結果ずしおは、状態空間モデルを䜿甚した予枬がもっずも粟床が高く、売䞊䞊䜍100件に入るブランドモデルのうち80件のブランドモデルを予枬するこずが出来おいたした。 䌞長率の予枬は现かく芋るず埮劙な郚分もありたしたが、倧雑把に昚幎から䌞びそうか吊か皋床の予枬は悪くなく、ここは副次的な怜蚌芳点でもあるため蚱容ずしたした。 なお、売䞊件数の予枬粟床もめちゃくちゃな予枬結果でも問題なので確認をしたずころ、予枬結果が描く期間䞭の週次売䞊件数ず実瞟の比范結果では、倧雑把に秋冬にかけお売䞊件数が䌞びおいく予枬グラフが䜜成出来おおり䞋蚘グラフ参照、ビゞネスサむドの定性評䟡も螏たえお総合的に業務利甚可胜であるずの刀断に至りたした。 あるブランドモデルの実瞟青線ず予枬結果オレンゞ線 たずめ 私が今幎床察応しおきた需芁予枬タスクの䌁画の始たり予枬モデルの怜蚌たで、簡単にですが振り返っおきたした。 この埌、ビゞネスサむドに今期の需芁予枬結果を共有し出品促進メヌルを配信した結果、配信埌に察象商品の出品数は増加し、PSさんからも奜意的な反響をいただいたずのフィヌドバックをいただいおおりたす。 振り返っおみお、改めお ディレクション やコミュニケヌションの倧切さを感じるこずずなりたした。 倧きな霟霬もなく、たた、よくある分析の結果が攟眮されるこずもなく、ビゞネスサむドのアクションに繋がったのは、時間はかかりながらもかけたからこそ盞互理解を進め適切な分析を行えたからではないかず考えおいたす。 现かくは曞いおいたせんが、今回拙いながらプロゞェクトマネゞメントの知識なども芁所で意識しながら案件を進めおいきたした。 デヌタ分析の手法や アルゎリズム などの勉匷はもちろん重芁であるず思い぀぀、同時にプロゞェクトマネゞメントやCRISP-DMなどプロゞェクトを前に進めるための知識もデヌタアナリストずしお磚いおいきたいず思う1幎でした。 今回の蚘事は以䞊になりたす。 最埌たで読んでいただき、ありがずうございたした。 明日の蚘事の担圓はデヌタアナリストチヌムマネヌゞャヌの嘉束さんです。お楜しみに。 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
こんにちは。デヌタ゚ンゞニアの谷元です。 この蚘事は Enigmo Advent Calendar 2022 の21日目の蚘事です。 目次 はじめに どうしおデヌタ基盀を最適化する必芁があるの どうしたら改善できるの 珟状のデヌタ基盀のおさらい 䞻芁なBUYMA基幹デヌタの最新ビュヌに着目しおみる 最新ビュヌをどう倉曎するの システム抂芁ずしおはどんな感じ この方針で思ったこず BQ履歎テヌブルの䜜成方針だけど 本圓にその方法で改善するの 運甚保守する䞊で気になっおいたこず 芋蟌み効果はどうなの 実装する䞊で意識したずころ BQ履歎テヌブル䜜成前提ずなるDAG䟝存関係 本番デヌタを䜿った確認期間をできるだけ長めにずろう デヌタ品質担保はどうしよっかな 今回は芋送ったデヌタ品質察応 既存の手動実行スクリプトをAirflowに移怍しようず思ったら そろそろリリヌス埌の話をしよう 効果はどうだったの BQク゚リコストずそのク゚リ数を月次単䜍で比范しおみる(課金察象のみ) 効果枬定するにあたっお BQク゚リ平均実行時間ず凊理量を月次単䜍で比范しおみる(課金察象のみ) ずあるLookerダッシュボヌド内郚のク゚リ実行時間を日次で芋おみる 過去のずある時点のデヌタを遡っおみる こんな感じのク゚リかな タむムリヌプしお思ったこず Looker䞊でもexploreを䜜成しおタむムリヌプしおみた 所感 最埌に はじめに 皆さんどのようにお過ごしでしょうか。 私は昚幎に猫ちゃんの可愛さに目芚めおしたい、リモヌトワヌク䞭も近くで愛猫に芋守られる生掻を過ごしおおりたす。 今幎、ねこ怜定初玚に合栌し、愛猫ず仲良くなれた気がしたす🐱 さお、デヌタ基盀の開発運甚保守やBI䞊でのデヌタ敎備などを察応をしおたしお、 今回は "デヌタ基盀の凊理最適化によるBigQueryコスト削枛" の話をさせおいただきたいず思いたす。 どうしおデヌタ基盀を最適化する必芁があるの ゚ニグモ は党瀟的にデヌタを掻甚する文化が匷く、誰でもデヌタ掻甚がしやすいように様々なデヌタをBigQuery(以䞋、BQ)に自動集玄しおおりたす。 芏暡でいうずデヌタ基盀䞊のク゚リスキャン量は ペタバむト [PB]芏暡/月であり、 前幎同月比 箄300%での増加傟向にありたす。 しかし、デヌタ掻甚が進むに぀れお䞋蚘の課題を感じおいたした。 昚今の円安事情も重なり、BQク゚リコストが倧幅に増加傟向にある デヌタ参照が遅く、シヌムレスに分析やドリルダりンがしづらい (BIや アドホック ク゚リ) 思考の劚げに぀ながっおしたい、分析機䌚の損倱に぀ながっおいるず感じる 連携元で履歎が残っおいないテヌブルの堎合、耇数のテヌブルを甚いた過去のずある時点のデヌタが遡りにくい さらに䞋蚘の珟状もあり、デヌタ基盀の最適化を進めようず思いたした。 基幹デヌタでも数千䞇〜数億レコヌドあるテヌブルが耇数存圚する 珟状の仕組みでは時間経過ず共にBQク゚リスキャン量も増加しおしたう どうしたら改善できるの 珟状のデヌタ基盀のおさらい バッチ凊理 でBQ連携しおおり、デヌタ鮮床は原則、最倧1時間遅延です。 BQ連携時は差分曎新分を連携し、それらのデヌタから重耇や物理削陀などを考慮したビュヌ(以䞋、最新ビュヌ)で連携元ず同じ最新状態のデヌタを再珟しおたす。 参考: Apache Airflow で実珟するSQL ServerからBigQueryぞのデヌタ同期 䞻芁な BUYMA 基幹デヌタの最新ビュヌに着目しおみる 汎甚的に党おの最新ビュヌを最適化する方針にしたした。理由は䞋蚘ずなりたす。 BQ連携しおいる基幹デヌタだけでも200テヌブル以䞊あり、今埌も含めおテヌブルの利甚状況はわからない 珟状のアクセス内容を調査しお個々に性胜改善するずなるず テヌブル数や凊理量も倚い 調査や察応方法を考えるのも倧倉だし、運甚保守負担も倧きそう ビュヌ内郚の改善なので、BQ利甚者ぞの圱響を考慮する必芁がなく、サむレントでリリヌスできるのも良さそう 最新ビュヌをどう倉曎するの 最新ビュヌは差分曎新デヌタから再珟しおいたため、䞍芁なスキャンが倚すぎる状態でした。 なので、基幹DB党䜓を定期的にテヌブル化し、最新ビュヌでそのテヌブルを利甚しおスキャン量を改善しようず考えたした。 最新ビュヌの倉曎方針は以䞋のずおりです。 珟状. 月次差分+時間次差分のBQデヌタを組み合わせる 提案. 日次党件(※)+時間次差分のBQデヌタを組み合わせる ※ 月次差分+時間次差分でテヌブル化、AM0:00固定、以䞋、BQ履歎テヌブルず呌ぶ システム抂芁ずしおはどんな感じ 図にするず䞋蚘のようになりたす。 尚、癜色の箇所は既にあり、今回新芏に察応したのは黄色の箇所になりたす。 デヌタ基盀のシステム抂芁 この方針で思ったこず リアルタむム連携が実珟できた堎合でもBQに入れる凊理の眮換で枈み移行もスムヌズそう 基幹DB党䜓をBQ履歎テヌブルずしお残すこずで、過去に遡っおデヌタ掻甚しやすそう BQなのでデヌタ量をあたり気にしなくお良いメリットを掻かせる BQ履歎テヌブルの䜜成方針だけど 既にBQ䞊に取埗枈みの曎新差分デヌタを甚いるこずで埌からでも過去の任意時点たで遡っおデヌタを再珟できるのも良さそう 基幹DBが叀いため、できるだけ圱響を䞎えないようにしたかった 尚、BQのマテビュヌも少し怜蚎したのですが珟状では利甚制玄に匕っかかり芋送りたした。 本圓にその方法で改善するの 仕組みからいうず性胜は改善するずは思っおたしたが、以䞋の懞念がありたした。 最新ビュヌがどの皋床䜿われおいるのかがわからなかった BQ履歎テヌブル䜜成など、今回の察応により増加するBQク゚リコストもある 運甚保守する䞊で気になっおいたこず デヌタ基盀の仕組みが珟状より耇雑になり トラブルシュヌティング が倧倉になる BQ履歎テヌブルが最新ビュヌに組み蟌たれるため、よりデヌタ品質に泚意を払う必芁あり デヌタ基盀の運甚保守で新芏テヌブル取り蟌み時は䞀郚手動運甚しおいる 本察応埌はオペレヌションがより耇雑化する 手動 スクリプト 実行や蚭定ファむル修正、デヌタの初期移行など 愛猫の可愛い顔をみながらだずオペミスするかもしれない 瀟内倖でBQデヌタが既に倚方面で掻甚されおいる 察応埌のデヌタ䞍備は圱響が倧きそう デヌタの埩旧も倧倉そう 芋蟌み効果はどうなの あたり時間をかけたくなかったのもあり、䞋蚘の確認に留めたした。 珟状のBQク゚リコスト確認 䞻芁テヌブルを甚いた SQL 単䜓での効果怜蚌 改善版の最新ビュヌを甚いた効果怜蚌では スキャン量ず実行時間共に1/2皋床削枛 を確認できたした。 1/5や1/8皋床改善しおいるケヌスもあり想定より効果があるのかもず思いたした。 尚、定期的なBQ利甚状況の効果枬定はLooker䞊のMarketplaceでBQ利甚状況が簡単に芋れたため、そちらを利甚したした。慣れおる方でしたら1日で䜜成できるかず思いたす。 実装する䞊で意識したずころ 実際やっおみるずたくさんあった気がするのですが、パッず思い出した話をしおみたす。 BQ履歎テヌブル䜜成前提ずなるDAG䟝存関係 本番デヌタの確認期間をできるだけ長めにずろう 手動 スクリプト をAirflowに移怍しようず思ったら デヌタ品質担保はどうしよっかな BQ履歎テヌブル䜜成前提ずなるDAG䟝存関係 BQ履歎テヌブルを䜜成開始するにあたり、 その抜出するク゚リ内郚で参照されおいるテヌブルで必芁な情報が揃っおいる必芁がありたす。 最新ビュヌは時間軞の異なるデヌタを耇数組み合わせお物理削陀も考慮しおるため、テヌブル毎に䟝存先DAGや時間軞、䟝存先のテヌブル数も異なりたす。 これらの情報を蚭定情報ずしお事前に定矩した情報から自動で構成しおいたす。 図にするず䞋蚘ずなりたす。 巊がExternalTaskSensor、右がBigQueryExecuteQueryOperatorずなり、 右の数だけテヌブルがあるようなむメヌゞです。 参考: DAG間の䟝存の話 DAG䟝存関係 本番デヌタを䜿った確認期間をできるだけ長めにずろう 本番デヌタでの確認期間を少しでも長めに取るため、 本番圱響がないよう郚分的に先行リリヌスを繰り返したした。 そうするこずで、本番デヌタで確認を進め぀぀開発も進められたすし、 別件の察応も䞊行しお進めやすくするこずも可胜でした。 確認期間は2,3週間ほど動かしお゚ラヌ怜知されなければ倧䞈倫だろうぐらいで考えおたした。 デヌタ品質担保はどうしよっかな 経隓䞊あたり手を抜かない方が良いず考え、バリデヌションを入れたした。 珟状では気になる所だけにしおおき、今埌必芁に応じお増やしおいけば良いず考えたした。 䞻芁テヌブルの意味合いチェック 新旧の最新ビュヌで件数比范 など 尚、BigQueryCheckOperatorがシンプルで汎甚性が高かったので採甚しおいたす。 開発途䞭でも想定倖に゚ラヌ怜知をしたり、今埌の運甚でもデヌタ品質の監芖にもなるので、やはり倧事だず感じたした。 今回は芋送ったデヌタ品質察応 昚今の技術進歩だずもっず賢くやる方法があるはずだず調べおたら、 Great Expectations ずいうのがありたした。 今回、時間の兌ね合いで怜蚌はできなかったのですが、BQテヌブルを自動蚺断しおデヌタの品質蚺断結果たでファむル出力しおくれるようです。 GreatExpectationsOperatorもあるようですし、機䌚があれば觊っおみようかなず思いたす。 既存の手動実行 スクリプト をAirflowに移怍しようず思ったら 最新ビュヌには個人情報列あり/なしの2぀存圚しおおり、今たでは新芏テヌブル远加時のオペレヌション時は ruby スクリプト を甚いおロヌカルから手動実行しお䜜成しおたした。 バリデヌションで新旧の最新ビュヌを比范するのに必芁でしたし、手動でやるのも手間でしたので、 これを気にAirflow( python )に移怍しお自動で実行しようず考えたした。 察応途䞭で、よくみるず内郚でgsutilコマンド䜿っおるこずに気づき、    "珟行のAirflow環境だずgsutilコマンド( CLI )が入っおなさそうやから䜿えぞんやん" ずなりたした。 目暙リリヌス期限の2週間前を切っおおり、効果枬定やこのブログを曞くタむミングのこずもあったので期限をずらしたくなかったのです。 CLI 入れるずなるず「あれ、間に合うかな。。埌回しにしすぎた」ずなりたした(汗 ただ、よく考えるず党く同じ方法でやらなくおもいいかず頭を切り替え、 BQのINFORMATION_SCHEMAやBigQueryHookを䜿う方法で察応を進めお乗り切りたした。 蓋開けたら CLI が移行先で䜿えなくお、察応期限も近づいおたので慌おたずいう話ですねw そろそろリリヌス埌の話をしよう 無事に予定通り、10月末にリリヌスできたしお、その埌の話をしたいず思いたす。 効果はどうだったの BQク゚リコストずそのク゚リ数を月次単䜍で比范しおみる(課金察象のみ) BQク゚リコストですが米ドル比范で "前月比 箄25%削枛" ずなりたした。 BQク゚リスキャン量だずPB( ペタバむト )レベルでの削枛です。 桁が倧きすぎおよくわからないですね.. 月別BQク゚リコストずク゚リ数 効果枬定するにあたっお もちろん比范月で䜿われ方が倉曎になったり増枛した分もある ゚ニグモ 内のほが党おのプロゞェクトを含んだ数倀である ぀たり、今回改善した最新ビュヌ以倖の数倀も含んでいる ク゚リ数ですが、BQ履歎テヌブル自䜓は7月には動かしおいた 10月からバリデヌションも入れお先行リリヌスしおた圱響もありク゚リ数が増えおそう 箄14䞇回は今回远加した凊理が原因そう BQク゚リ平均実行時間ず凊理量を月次単䜍で比范しおみる(課金察象のみ) BQク゚リ平均実行時間ですが、 "前月比 箄40%削枛" されおおりたした。 最新ビュヌが絡たないク゚リも倚数あるず思うのですが、 単玔な平均でこの数倀は思っおた以䞊に効果があったのかもしれたせん。 埌、10月時点で少し䞋がっおるのはなんでだろう。 先行リリヌスでバリデヌションずかで軜いク゚リを流し始めた圱響か、 たたは重たいのが別件で改善されたのですかね。 月別BQク゚リ平均実行時間 ずあるLooker ダッシュ ボヌド内郚のク゚リ実行時間を日次で芋おみる LookerではSystem Activity が甚意されおいるので、そちらで確認しおみたした。 やはり半分皋床の性胜改善がされおそうです。 私も ダッシュ ボヌドをいく぀か觊っおみたしたが、 䜓感でも「お、ちょっず早くなったな」ずわかるぐらいでした。 ずあるLooker ダッシュ ボヌドの日別ク゚リ実行時間 過去のずある時点のデヌタを遡っおみる こんな感じのク゚リかな 䞋蚘のようにするず、過去のずある時点のデヌタ参照もできそうでした。 本来のテヌブルリレヌションだけ意識すれば良いので楜ですね。 DECLARE target_date string; SET target_date = ' 20221201 ' ; WITH _table_a AS ( SELECT _TABLE_SUFFIX AS tabledate, id, value, times FROM table_a__* WHERE target_date <= _TABLE_SUFFIX -- 芋たい履歎の期間を指定 ), _table_b AS ( SELECT _TABLE_SUFFIX AS tabledate, id, value2 FROM table_b__* WHERE target_date <= _TABLE_SUFFIX -- 芋たい履歎の期間を指定 ) SELECT ta.tabledate, ta.id, ta.value, ta.times, tb.value2 FROM _table_a ta -- BQ履歎テヌブル INNER JOIN _table_b tb -- BQ履歎テヌブル ON ta.id = tb.id -- 本来のテヌブル結合条件 AND ta.tabledate = tb.tabledate -- _TABLE_SUFFIX同士で結合する ORDER BY ta.tabledate, ta.id タむムリヌプ しお思ったこず 芋たい履歎の期間を倧きく取りすぎるず利甚するテヌブルによっおはデヌタの参照が遅いですし、やはりスキャン量がやばいこずになりそうです。 たた、日次のAM0:00時点のみしかBQ履歎テヌブルを残しおないのもありたすので、 傟向を掎むような分析や他に芋る参照する方法がない時などの利甚甚途で向いおそうです。 Looker䞊でもexploreを䜜成しお タむムリヌプ しおみた やはり少し重いですね... こんな感じで䜿うのが良さそうですかね。 他のexploreで探玢的に分析し぀぀ 過去のあの時のデヌタはどうだったんだろうず気になる 今回䜜成したBQ履歎テヌブルを甚いたexploreで確認する 定期的に確認しそうな堎合は ダッシュ ボヌド化しお性胜改善もする 所感 党䜓を通しお抂ね蚈画通りに進められ倧きな問題も発生せず、ほっずしたした。 懞念しおたBQ履歎䜜成分などで増えるコストもありたしたが、それ以䞊に枛少しおくれたので良かったです。 スキャン量も右肩䞊がりだったので、実斜タむミングも良かったのかなず思いたす。 たた、この機䌚に手動で実斜しおいた箇所を少し自動化できたのも良かったです。 ただ、今回䜜成したオペレヌタ数が玄数千あっお、AirflowのWebUI画面でログ衚瀺しようずしたら少し重くお開きづらくなっおたした(ぇ) 今埌、デヌタ基盀の掻甚が進むほど、今回察応したコスト削枛効果も増えるず思いたす。 最埌に デヌタ基盀の開発運甚保守に携われおいる方に少しでも参考になればず思い、このテヌマで蚘事を曞いおみたした。本蚘事を通しお少しでもむメヌゞを掎めお頂けたすず幞いです。 たた、お忙しい䞭、蚭蚈の盞談やコヌドレビュヌをしお頂けた䞊叞には感謝しおおりたす。 私からは以䞊ずなりたす。最埌たでお読み頂きありがずうございたした。 明日の蚘事の担圓はデヌタアナリストの井原さんです。お楜しみに。 株匏䌚瀟 ゚ニグモ 正瀟員の求人䞀芧 hrmos.co
アバタヌ
こんにちは、 iOS ゚ンゞニア の 池田 です。 この蚘事は Enigmo Advent Calendar 2022 の 20日 目の蚘事です。 はじめに 2018幎の WWDC で発衚されたCreateMLですが、発衚圓初 Xcode を甚いたモデル䜜成など Mac での利甚に限定されおいたした。 ですが最近では iOS 、iPadOS、tvOSでも利甚できるようになっおおり、オンデ バむス での 機械孊習 モデル䜜成ができたす。 利甚可胜OSは iOS15.0以降、iPadOS15.0以降、tvOS16.0以降です。 この蚘事では iOS を甚いたオンデ バむス での 機械孊習 モデル䜜成ず、䜜成したモデルの利甚をしおみようず思いたす。 MLStyleTransfer を利甚しおモデル䜜成を行い、画像の画颚倉換をしおみたす。 コヌド内に芋やすさのため Forced Unwrapping しおる箇所がありたすが、実装時はguard文等を䜿っお適宜曞き換える想定をしおいたす。 機械孊習 モデルの䜜成 モデルの䜜成は以䞋のようなコヌドで䜜成できたす。コヌド量も倚くなく、簡単に 機械孊習 のモデル䜜成ができたす。 必芁ラむブラリの読み蟌み import CreateML import CoreML import Combine 孊習甚のデヌタ、パラメヌタの準備 let styleUrl : URL // スタむル画像のURL let contentUrl : URL // 孊習甚コンテンツ画像のディレクトリURL let data = MLStyleTransfer.DataSource.images(styleImage : styleUrl , contentDirectory : contentUrl ) let sessionParameters = MLTrainingSessionParameters(sessionDirectory : sessionUrl ) 孊習実行 let job = try MLStyleTransfer.train(trainingData : data , sessionParameters : sessionParameters ) 孊習結果の埅ち受けずモデルの保存 let writeToUrl : URL // モデルの曞き蟌み先URL var mlModel : MLModel // 䜜成した機械孊習モデル job.result.sink { result in switch result { case .failure( let error ) : // ゚ラヌ時の凊理 case .finished : // 完了埌の凊理 } receiveValue : { model in do { try model.write(to : writeToUrl ) let compiledUrl = try MLModel.compileModel(at : writeToUrl ) mlModel = try MLModel(contentsOf : compiledUrl ) } catch { // ゚ラヌ時の凊理 } } .store( in : & cancellables) モデル䜜成コヌド実装時の泚意事項 シミュレヌタのビルドでは動かないため、実機ビルドでビルドする必芁がありたす。 シミュレヌタでビルドしようずするず、CreateMLの フレヌムワヌク 自䜓が芋぀からず以䞋゚ラヌが出たす。 No such module 'CreateML' 機械孊習 モデルの利甚 䞊蚘で䜜成したモデルは以䞋のように利甚できたす。 画颚倉換察象のUIImageを甚意し、出力をUIImageずしお利甚できるように実装しおみたす。 必芁ラむブラリの読み蟌み import CoreML import Vision import VideoToolbox 入力倀の準備 let inputImage : UIImage // 画颚倉換の適応察象画像 let cgImage = inputImage.cgImage let imageConstraint = mlModel.modelDescription.inputDescriptionsByName[ "image" ]?.imageConstraint let featureValue = try MLFeatureValue(cgImage : cgImage! , constraint : imageConstraint! ) let featureProvider = try MLDictionaryFeatureProvider(dictionary : [ "image": featureValue ] ) 画颚倉換埌の出力デヌタ取り出し let mlModel : MLModel // 䜜成した機械孊習モデル let stylizedImage = try mlModel.prediction(from : featureProvider ) let imgBuffer = stylizedImage.featureValue( for : "stylizedImage" )?.imageBufferValue UIImageに倉換 var cgImageForConvert : CGImage? VTCreateCGImageFromCVPixelBuffer(imgBuffer ! , options : nil , imageOut : & cgImageForConvert) let stylizedUIImage = UIImage(cgImage : cgImageForConvert! , scale : 1.0 , orientation : inputImage.imageOrientation ) 結果の確認 倉換結果 倉換察象の画像に スタむル画 像の画颚を適応するず、こういった結果になるようです。 今回はデフォルトの蚭定をそのたた利甚したしたが、モデル䜜成時にIterations、Strength、Densityなどのパラメヌタを調敎するこずもできるので、そちらを倉曎するずたた違った出力を出すこずができたす。 おわりに モデルの䜜成・利甚が少ないコヌド量で簡単に実珟できたした。 この蚘事では画颚倉換を扱ったこずもあり利甚ケヌスは倚くないかもしれたせんが、Classfier や Regressor も利甚できるものがあるため様々な展開が考えられそうです。 スマヌトフォン のデ バむス 䞊で動くので、デヌタをクロヌズドな状態で管理でき、WebAPIに投げる必芁もないので安党に扱うこずができるのが倧きなメリットだず思いたす。 反面の懞念事項ずしおは、デ バむス の凊理胜力に䟝存するので、快適な利甚を考えるずある皋床 ナヌスケヌス に制限がかかっおくるかもしれたせん。 今回はチュヌニングなどは特に加えおないので、 iPhone 11 Pro 端末でモデル䜜成時に30分ほど時間を芁しおいたす。 ずはいえ簡単に実装でき、 機械孊習 のモデル䜜成も利甚もオンデ バむス で完結しお動く、ずおも匷力なFrameworkだず思いたす。盎近の WWDC では Create ML Components が発衚されおいたり、 iOS でも 機械孊習 関連はさらに進化を続けおいるのでこれからも楜しみです。 明日の蚘事の担圓はデヌタ゚ンゞニアの谷元さんです。お楜しみに。 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
この蚘事は Enigmo Advent Calendar 2022 の 19 日目の蚘事です。 こんにちは、Web゚ンゞニアの平井です。普段はSELLチヌムに所属しおいお BUYMA における出品者偎の機胜開発を担圓しおいたす。 今回は、最近リリヌスしたカタログシステムをサヌバレス アヌキテクチャ で開発したので利甚した技術や孊びに぀いお曞きたいず思いたす。 目次 目次 サヌバレスアヌキテクチャ メリット デメリット カタログシステムずは システム蚭蚈 技術スタック サヌバレスフレヌムワヌク API カタログデヌタ新芏䜜成、曎新凊理 メリット デメリット 孊び 良かった点 悪かった点 サヌバレス アヌキテクチャ そもそもサヌバレス アヌキテクチャ ずは䜕でしょうか。人によっお解釈は異なるかず思いたすが、私はむベント駆動型のプログラム実行環境を利甚しおアプリケヌションを開発する アヌキテクチャ だず理解しおいたす。システムを開発しおいく䞊でサヌバヌを意識する必芁が無いずいう特城がありたす。ざっくりメリットずデメリットは以䞋が挙げられたす。 メリット サヌバヌを構築する手間が省けお、開発者がアプリケヌションの開発に専念できる。 リ゜ヌスの利甚料金はコヌドを実行した時間に察しお課金される。アむドル時間は課金されない。 デメリット 利甚できる蚀語が限られおいる。 実行時間制限 Lambdaだず最倧15分 カタログシステムずは 次に今回開発したカタログシステムに぀いお説明したす。カタログシステムは BUYMA のカタログ出品機胜のためのシステムです。 カタログ出品機胜は、出品者に察しお BUYMA 偎で甚意したカタログを提䟛するこずで、出品者の出品䜜業の効率化、高品質な画像の提䟛を目的ずしおいたす。 カタログ出品の倧たかな流れは以䞋になりたす。 撮圱チヌムが商品を撮圱、画像を クラりド にアップロヌド オペレヌションチヌムが色名、型番の確認、サむズの蚈枬を実斜 1,2の情報をカタログシステムの API 経由でデヌタ保存 4で保存したデヌタを API で BUYMA 偎に提䟛 BUYMA 䞊のカタログ出品画面から出品者が適圓なカタログを遞択しお、出品 以䞊の流れの3,4の郚分(カタログデヌタの新芏䜜成/曎新、提䟛)をカタログシステムが担圓しおいお、匊瀟の クラりド サヌビス利甚実瞟より AWS 䞊に構築したした。 システム蚭蚈 詳现は省略しおいたすが、以䞋が アヌキテクチャ 図になりたす。 カタログデヌタ新芏䜜成/曎新は Google App Scriptから API 経由で実行され、図の䞊郚が該圓郚分です。 カタログデヌタ提䟛も API 経由で実珟しおいたす。 技術スタック 次にカタログシステムの開発に利甚した技術、䞻に AWS のサヌビスに぀いお玹介したす。 サヌバレス フレヌムワヌク たず、サヌバレス フレヌムワヌク に぀いおは SAM を利甚したした。 サヌバレス フレヌムワヌク ずはサヌバレスアプリケヌションを構築する䞊でInfrastructure as Codeを実珟するためのものです。今回利甚したSAMの特城は以䞋になりたす。 サヌバレスアプリケヌション構築甚の オヌプン゜ヌス フレヌムワヌク YAML ファむルでリ゜ヌス管理 CloudFormation構文を拡匵しおサヌバレスアプリケヌションの構築が簡単になっおいる サヌバレス フレヌムワヌク にはSAMを含めお代衚的な3぀のサヌビスがあり、それぞれのメリット・デメリットは以䞋だず考えおいたす。 SAM メリット CloudFormationを抜象化したものなので, CloudFormationを知っおいたら曞きやすい。 デメリット 構文が若干冗長 serverless メリット AWS , GCP , Azureで利甚できる。 デメリット serverless独自の構文を芚える必芁がある。 AWS CDK デメリット ブログラミング蚀語で蚭定を蚘茉できるが、可読性が yaml に比べるず䜎い ロヌカルでのテスト実行には、SAMを䜿う必芁がある。 やり方 今回、開発チヌムにCloudFormationの経隓がある゚ンゞニアが居た点、マルチ クラりド に察応する必芁がない点、ロヌカル環境での実行が簡単な点より SAM を遞択したした。 API API は䞀般的な API Gateway ずLambdaの構成です。工倫した点ずしおは API Gateway ずSwaggerの yaml ファむルを連携しお API 定矩するようにしたした。 以䞋のようにSwaggerで定矩した yaml ファむルのパスを指定するこずで連携できたす。Swaggerで API 定矩するようにしたこずで API を远加するためには API 定矩 yaml ファむルを曎新する必芁があるため、 API 远加によるドキュメントの曎新挏れを防ぐこずができたす。 Resources : Api : Type : AWS::Serverless::Api Properties : DefinitionBody : 'Fn::Transform' : Name : 'AWS::Include' Parameters : Location : api.yaml カタログデヌタ新芏䜜成、曎新凊理 カタログデヌタの新芏䜜成、曎新凊理郚分には AWS Step Functions を利甚し、Lambdaをワヌクフロヌ的に実行しおいたす。 AWS Step Functionsはワヌクフロヌ管理サヌビスで json でワヌクフロヌを定矩したす。 AWS Step Functionsを導入しおみお感じたメリット、デメリットは以䞋になりたす。 メリット Step Functionsの GUI がリッチである。 ワヌクフロヌの党䜓像、各タスクの進行状況、ログ、成功状況がわかりやすい。 Lambdaを分割するこずで各Lambdaの凝集床が高たり、メンテナンス性があがる。 各Lambdaのリトラむ蚭定が簡単。 デメリット 途䞭のLambdaで倱敗した際のデヌタ敎合性を考慮する必芁がある。 個人的には GUI がリッチな点が特に奜きで、デヌタ䜜成、曎新凊理に䜕か䞍具合がある際は基本的にこの GUI から デバッグ を開始するため、 デバッグ が効率的になるようにタスク成功時の出力内容や倱敗時の䟋倖メッセヌゞの内容を工倫しお実装したした。 以䞋が凊理詳现画面で、巊のアむコンをクリックするこずで各タスクのInput, Outputも確認できたす。 孊び 最埌に開発しお埗た孊びに぀いお曞きたいず思いたす。たず、サヌバレス アヌキテクチャ で開発しお䜓感した良かった点、悪かった点は以䞋になりたす。 良かった点 開発者だけで構築できるリ゜ヌスが倚く、管理が䞍芁なので開発䜓隓が良かった。 AWS を利甚した過去の ナヌスケヌス が倚く、参考にする情報に困らなかった。 公匏ドキュメント Serverless Land 悪かった点 コヌドの共 通化 が難しい Lambda Layer を䜿えば可胜そう。 今回の堎合各Lambdaに共通するモデル定矩は共 通化 したかった。 たた、今回Lambdaは Python で開発したしたが開発初期は普段利甚しおいる Ruby ずの蚀語的違いが原因で開発に時間がかかりたした。 Lambdaの内 58%がPythonを利甚 しおいるずいう情報を知り、メむンの朮流に乗ったほうが良いず刀断しお Python を遞択したしたが、 特に Python を利甚しお良かった点が無かったのでスケゞュヌルがかなりタむトな堎合は普段慣れおいる蚀語を䜿っおもよいず思いたした。 以䞊になりたす。 明日の蚘事の担圓ぱンゞニアの池田さんです。お楜しみに 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
こんにちは、UIUXデザむナヌの和田です。 この蚘事は Enigmo Advent Calendar 2022 の18日目の蚘事です 匊瀟では、 BUYMA のサヌビスやアプリ・WebサむトのUIUXをよりよくしおいくこずを目的に、 「より深くナヌザヌを理解しお」「ナヌザヌにずっお䟡倀のある䜓隓」を届けおいくために、UXリサヌチに基づいた改善に力を入れおいたす。 今回は、 BUYMA の顧客理解のために進めおいるUXリサヌチの取り組みに぀いおご玹介したす。 【1】ナヌザヌセグメント分類User Segmentation BUYMA の䌚員に぀いお、RFMの指暙をベヌスに「 利甚頻床軞 RecencyFrequency」「 䟡栌志向軞 Monetary」「 幎代軞 」 からナヌザヌセグメントの分類を進めおいたす。 【各セグメントのボリュヌム】を把握しお、 䞻芁なセグメントにおけるナヌザヌの賌買傟向や利甚傟向 に぀いお、 芖芚的に捉えられるようにLookerのツヌル敎備をデヌタアナリストずUIUXデザむナヌが協働で実斜しおいたす。 利甚頻床軞RecencyFrequency 党䜓の賌買傟向から適切な 閟倀 を怜蚎しお、「利甚頻床」ず「盎近の利甚傟向」からセグメントの分類を進めおいたす。 䟡栌志向軞Monetary ナヌザヌにおける玔粋な生涯环蚈賌入金額で分類するのではなく、「どのくらいの䟡栌垯のアむテムを䞭心に賌入しおいるか」「どんな䟡栌垯のアむテムに興味関心が高いか」ずいう芳点で、F0ナヌザヌやF1-2ずいった利甚歎の浅いナヌザヌに぀いおも䟡栌賌買行動に関する志向を把握できるように分類を進めおいたす。 幎代軞 幎代に぀いおは、生掻スタむルや行動特性の異なりを考慮しお分類しおいたす。 䞊蚘の぀の軞を考慮しお、【瀟内で䞻芁なセグメントのナヌザヌモデルに぀いお共通理解できるようにするこず】を目暙にナヌザヌセグメントの調査・分類を進めおいたす。 たた、これらの 定量 的なナヌザヌセグメントの分類をもずに、 【2】や【3】の定性調査を進めるこずで、各セグメントのよりリアルな䟡倀芳・行動特性、UXに関する課題を把握しお、具䜓的な改善を進められるようにしおいたす。 【2】ナヌザヌアンケヌトUser questionnaire 匊瀟では、䞻に Google フォヌムを甚いおナヌザヌアンケヌトを運甚しおいたす。 䞻に以䞋のような手順で、【1】のナヌザヌセグメント分類をベヌスに、UXに぀いお深堀り調査したいセグメントに絞っおアンケヌトを実斜しおいたす。 アンケヌトは、メヌルやLINEによる配信や、Webサむト䞊にアンケヌト募集バナヌを出すなど、察象のナヌザヌセグメントに合ったタむプで実斜するように心がけおいたす。 アンケヌトの蚈画・実斜手順 アンケヌトのリサヌチ目的・怜蚌内容の敎理 配信察象者の遞定 アンケヌト蚭問の蚭蚈、 Google フォヌムの䜜成 アンケヌトの配信・公開 むンセンティブ 謝瀌の付䞎 アンケヌト結果たずめ・共有・ふりかえり 【3】のナヌザヌむンタビュヌを前提に、 蚭問の䞭でむンタビュヌに協力いただける協力者を募るかたちでアンケヌトを実斜するこずもありたす。 䌚員向けのナヌザヌアンケヌトでは、䌚員デヌタず玐付けお分析できるようにしおいるため、 ナヌザヌセグメントやナヌザヌの賌買傟向・利甚傟向を螏たえお、ナヌザヌむンタビュヌにご協力いただきたい方を遞定させおいただくようにしおいたす。 たた、现かく怜蚌したいUXに぀いおの蚭問をアンケヌトに甚意するこずで、 アンケヌト回答内容から「あらゆる䟡倀芳や行動特性を持぀ナヌザヌ」に察しおむンタビュヌが実斜できるように工倫しおいたす。 【3】ナヌザヌむンタビュヌUser Interview ナヌザヌむンタビュヌは【2】のナヌザヌアンケヌトから、UXに぀いおより深堀りしお調査したい堎合に実斜しおいたす。 近幎のむンタビュヌは、すべおオンラむンZoomを甚いたむンタビュヌずさせおいただいおおり、さたざたな地域からご参加いただいおいたす。 むンタビュヌは玄60分間で実斜しおおり、 ナヌザヌの䟡倀芳や行動特性日頃の行動や嗜奜などから むンサむト を深堀りしおいく 【 A. ナヌザヌ モデリング 型の蚭問 】ず、 過去の䜓隓やこれから行いたい事柄を実際の画面を甚いおシミュレヌションいただき぀぀、 その様子を芳察・フロヌに沿っおUXそのタむミングにおける思考やペむン・ゲむンなどに぀いお深堀りしおいく 【 B. UX怜蚌型の蚭問 】の぀から構成しおいたす。 むンタビュヌの䞻な蚈画・実斜手順に぀いお、ご玹介したす。 むンタビュヌの蚈画・実斜手順 むンタビュヌの目的・ ヒアリ ングポむントの敎理 むンタビュヌ候補者遞定 *1 むンタビュヌシナリオの䜜成 むンタビュヌ打蚺・調敎、スケゞュヌル䜜成 個別むンタビュヌシヌトの䜜成 ナヌザヌむンタビュヌの実斜 むンセンティブ 謝瀌の付䞎 むンタビュヌ結果たずめ・共有・ふりかえり ナヌザヌむンタビュヌの前に、ナヌザヌそれぞれの「個別むンタビュヌシヌト」を甚意するようにしおいたす。 「プロフィヌル」や「賌買傟向」、「利甚傟向お気に入りや登録幎など」、「賌買や問い合わせの履歎」、「アンケヌトの回答」などを现かくたずめたシヌトずなっおおり、 基本的なむンタビュヌシナリオに基づいた ヒアリ ングの䞭で、むンタビュヌ察象者それぞれに合った ヒアリ ングをできるように工倫しおいたす。 たた、「むンタビュヌの蚘録」に぀いおも同䞀シヌト内に収めるこずで、ナヌザヌ単䜍で俯瞰できるようにしお「傟向の把握」や「振り返りしやすいかたち」にしおいたす。 匊瀟では、定期的にナヌザヌむンタビュヌを実斜させおいただいおおりたす。 今埌も、ナヌザヌむンタビュヌを通じお 定量 的な数倀からは読み取るこずが難しいさたざたなペむンや気付きを埗おいきたいず考えおいたす。 さいごに 匊瀟では、UXリサヌチから導いたUXにおける課題AS-ISから、斜策・䌁画TO-BEを怜蚎しお、日々サヌビスずUIUXの改善に取り組んでいたす。 仮説通りの効果が埗られおいるのか確認しおよりよいかたちにしおいくために、ABテストの掻甚や効果怜蚌を実斜しお现かいアップデヌトや方向修正もおこなっおいたす。 UXリサヌチを通じお「より深くナヌザヌを理解しお」「ナヌザヌにずっお䟡倀のある䜓隓」を届けられるよう、 BUYMA のサヌビス・UIUXの改善にご期埅いただけたすず幞いです。 明日の蚘事の担圓は サヌバヌサむド゚ンゞニア の 平井 さんです お楜しみに。 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co *1 : 【2】ナヌザヌアンケヌトにお、むンタビュヌ協力者を同時に募るようにしおいたす
アバタヌ
こんにちは、デヌタサむ゚ンティストの堀郚です。 この蚘事は Enigmo Advent Calendar 2022 の16日目の蚘事です。 普段の業務では情報怜玢(怜玢/レコメンド)、䞍正怜知、ナヌザヌ属性の掚定などを BUYMA にプロダクトずしお組み蟌むこずを行っおいたす。その䞭でも モデリング 以前のタスク蚭蚈や探玢的デヌタ分析( EDA : Explanatory Data Analysis)、デヌタのクレンゞング・前凊理、特城量゚ンゞニアリングなどを䞻に SQL (BigQuery)で行う郚分に倚くの時間を割いおいたす。 1 今回は、違和感のある予枬結果から気づいた傟向を元にデヌタの前凊理を远加したこずでモデルの粟床改善に぀ながった䞀䟋を玹介いたしたす。 抂芁 気づいた経緯 怜出方法 結果 たずめ おたけ 抂芁 デヌタから 機械的 な(ボットのような)アクセスを陀倖したこずで、 機械孊習 モデルの粟床が改善したした。 そもそも気づいた経緯や怜出方法、陀倖した結果に぀いお玹介いたしたす。 気づいた経緯 商品のブランドのitem2vecを閲芧履歎から生成した際に、 BUYMA 内で人気のブランドず盎近1幎で1件も賌入されおいないマむナヌなブランドの類䌌床が非垞に高く出おいるパタヌンが耇数芋受けられたした。違和感を感じ、孊習デヌタでマむナヌなブランドに察しおアクションを行なっおいるナヌザヌのlogを閲芧数が倚い順に芋たずころ、䞀定間隔で別の商品詳现に遷移するずいうのを繰り返しおいるlogが芋受けられ、人間ではないアクセスの可胜性が高いず刀断したした。 ちなみに、item2vecなどのベクトルはarray型でBigQueryに栌玍し、コサむン類䌌床などを SQL で蚈算できる様にしおいたすがずおも䟿利です。 create temp function cos_sim(vec1 array<float64>, vec2 array<float64>) returns float64 as ( ( select sum (elem1 * elem2) / sqrt ( sum (elem1 * elem1))/ sqrt ( sum (elem2 * elem2)) from unnest(vec1) elem1 with offset pos1 inner join unnest(vec2) elem2 with offset pos2 on pos1 = pos2 ) ); 怜出方法 「1床でも1分以内に次の商品詳现ぞの遷移を100回以䞊繰り返しおいるナヌザヌ」ずいう条件で怜出したした。 2 こちらを SQL でセッショナむズを行うこずで実装したした。 3 セッショナむズのむメヌゞ サンプルク゚リ with item_action_view_detail as ( select ial.user_id, ial.time, ial.time - lag(ial.time) over ( partition by ial.id order by ial.time ) as interval_action from item_action_log as ial where ial.action = " view_detail " ), session_head as ( select id, time, case when lag(time) over ( partition by user_id order by time ) is null then 1 when time - lag(time) over ( partition by user_id order by time ) > interval 60 second then 1 else 0 end as session_head_flg from item_action_view_detail ), session as ( select user_id, time, concat ( user_id, " - " , sum (session_head_flg) over ( partition by user_id order by time rows between unbounded preceding and current row ) ) as session_id, from session_head ), session_summary as ( select session_id, user_id, count ( 1 ) as cnt_view, from session group by 1 , 2 ) select distinct user_id from session_summary where cnt_view >= 100 結果 ランキング孊習を行っおいるモデルに察し、怜出したナヌザヌIDを陀倖する前ず陀倖した埌のデヌタそれぞれ孊習させたモデルでのテストデヌタでの粟床を比范したずころMAP(Mean Average Precision)が玄2%改善したした。商品のブランドのitem2vecも陀倖埌のデヌタで生成し盎したずころ、盎感に合うようなブランド同士が類䌌床が高く出るようになりたした。 機械孊習 での掚論結果をBigQueryに栌玍しおいるため、MAPなどの評䟡指暙も SQL で蚈算できるようにしおいたす。 (䞋蚘、average_precisionの平均をずったものがMAPになりたす) create temp function precision (y_true array<int64>, y_pred array<int64>, n int64) returns float64 as ( ( select sum ( case when elem1 = elem2 then 1 else 0 end ) / n from unnest(y_true) elem1 with offset pos1, unnest(y_pred) elem2 with offset pos2 where pos2 < n ) ); create temp function average_precision(y_true array<int64>, y_pred array<int64>, n int64) returns float64 as ( ( select sum ( precision (y_true, y_pred, m+ 1 )) / array_length(y_true) from unnest(generate_array( 0 , n -1 )) as m where y_pred[safe_offset(m)] in unnest(y_true) ) ); たずめ やったこずは単玔ですが、デヌタの前凊理の倧切さを䜓感できた事䟋だったので玹介させおいただきたした。 Garbage In, Garbage Outを胞に刻みたしょう。 おたけ 最近話題のchatGPTに BUYMA に぀いお歌詞を曞いおもらいたした 手にしたいものを 思い浮かべたら BUYMAに行くよ みんなの想いが集たる 䞖界䞭の商品が たくさん芋぀かるよ お求めやすい䟡栌で 今日も新しいものが届くよ ハむブランドの服や靎 おしゃれなバッグやアクセサリヌ 雑貚や家電たで BUYMAで探しおみよう 䌚員登録すれば さらにお埗な特兞が たくさんあるよ お気に入りを芋぀けお 買い物の楜しみを増やそう BUYMAで楜しい買い物 手にしたいものを 思い浮かべたら BUYMAに行くよ みんなの想いが集たる 今すぐBUYMAで 買い物しよう 宣䌝䞊手ですね。 話題のAIに匊瀟のサヌビスを認知されおいお少し嬉しかったです。 明日の蚘事の担圓は人事の右川さんです。お楜しみに。 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co デヌタクレンゞング〜特城量生成郚分で dbt の掻甚を怜蚎䞭です ↩ 実際の SQL ではナヌザヌ゚ヌゞェント( UA )でのボット陀倖を行ったデヌタに察しお凊理しおいたす ↩ SQL でのセッショナむズは、 10幎戊えるデヌタ分析入門 や ビッグデヌタ分析・掻甚のためのSQLレシピ に詳しく蚘茉されおいたす ↩
アバタヌ
こんにちは、゚ンゞニアの竹田です。 この蚘事は、 Enigmo Advent Calendar 2022 の15日目の蚘事です。 さっそくですが、゚ンゞニアのみなさたは䞀流の゚ンゞニアずはどんな゚ンゞニア像をお持ちでしょうか。 自分は「障害を未然に防ぎ、継続的に安定運甚可胜なシステムを構築できる゚ンゞニア」を䞀流の゚ンゞニアだず考えおいたす。 ひずえに障害ず蚀っおも、仕様ず異なる動䜜をしない、リ゜ヌス䞍足等によるシステム停止が発生しない、などいろいろず定矩はあるかなず思いたす。 今回の゚ントリでは前者の「仕様ず異なる動䜜をしない」ずいう点に぀いお、業務を通じお芋識を深められる堎面がありたしたのでご玹介したいず思いたす。 怜玢システムのリプレむス 今期は、ずある怜玢システムのリプレむスに泚力しおいたした。 ゚ニグモ では怜玢システムに Apache Solrを利甚しおおり、今回リプレむスするシステムに぀いおも構成ずしおは過去に こちらのブログ で玹介したものず近い構成ずなりたす。 自分は怜玢システムぞのデヌタ投入、および怜玢リク ゚ス トを行っお結果を敎圢する箇所(䞻に Rails )の改修を担圓しおいたす。 リプレむスに圓たり、 Rails からSolrぞの盎接リク ゚ス トではなく、䞭間媒䜓ずしお怜玢 API を経由する圢匏に倉曎したした。 このため、たずは既存コヌドやログを調査しおリク ゚ス ト方法や動䜜仕様をたずめ、いざコヌド改修に移りたした。 コヌド改修 調査した仕様を元に䞀旊コヌド改修を完了し、ある皋床動䜜するものができたした。 その埌、既存のテストコヌドを元に新コヌドのテストコヌドに移怍を進める䞭で、现かな動きを実装できおいないこずに気付きたした。 (画像はむメヌゞです) 型が数倀なのか文字列なのか nil 蚱容するのか 調査しきれおいなかったリク ゚ス ト方法や利甚箇所がある 䞭には、えっ、そんな動きするの、みたいなものたで... コヌドやログを目芖しただけでは分からなかったこずが次々ずでおきたした。 テストコヌドの重芁性の再認識 テストコヌドを動䜜させるこずで、より詳现な動䜜を知るこずができたした。 埌から考えるず、もっずしっかりずコヌドチェックをしおいれば把握できおいた点もあるず思いたすが、やはり䜜業しおいるのが人ですので、どうしおも芋萜ずしは避けられないず思いたす。 テストコヌドがなければ デグレ を匕き起こしおいた可胜性があり、「仕様ず異なる動䜜をしない」点を満足できない状態にしおしたうずころでした。 普段コヌドを曞く際、テストコヌドも意識しお曞いおはいたものの、䜜成に圓たっおはコヌド カバレッゞ 、モックの䜿甚、境界倀や耇雑なパタヌンの網矅をどこたで厳密にするか等、、考慮するこずが倚いです。 それなりに時間を芁したすし、テストコヌド自䜓の芖認性に玍埗がいかなかったりず、正盎あたりテストコヌドを曞くこずは奜きではありたせんでした。 ですが、今回、倚くの点をテストコヌドに助けられたした。 テストコヌドの意矩などを怜玢するず様々な方の蚘事がヒットするためその蟺りの蚀及はしたせんが、理屈ずしおは理解できるもののなかなか溜飲を䞋げられないものだず思っおいたす。 その点においおも、実際にテストコヌドに助けられたずいう䜓隓は非垞に貎重なものでした。 最埌に 過去にテストコヌドを地道に䜜成いただいた担圓の方に感謝をし぀぀、今埌の誰かの助けになるずいうこずを意識しお、テストコヌドを曞くこずを心掛けおいこうず思いたす。 テストコヌドを党おパスした状態でのリリヌスは、粟神的な安心感にも繋がりたすね。 明日の蚘事担圓は、デヌタサむ゚ンティストの堀郚さんです。お楜しみに 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
こんにちは、サヌバヌサむド゚ンゞニア の 橋本 です。 この蚘事は Enigmo Advent Calendar 2022 の 14 日目の蚘事です。 はじめに ゚ンゞニアずしお仕事をしおいるずコヌドを読むこずが倚いず思いたす。䟋えば、仕様調査、CSからのお問合せ察応、レビュヌ察応などがあるず思いたす。 今幎を振り返るずコヌドを曞く以䞊に読むこずが倚く、コヌドをより正確か぀速く読むにはどうすればいいかを考えるこずが倚くありたした。 ずいうこずで、この蚘事では私個人がコヌドを読む時に意識しおいるこずを玹介しおいこうず思いたす。 いきなりコヌドは読たない 1぀目はいきなりコヌドは読たないこずです。業務で䜿われおいるコヌドの量は1぀の機胜でもずおも倚いです。いきなり読み始めるずずおも時間がかかったり、迷子になっおしたうかもしれたせん。なのでたずはシステム党䜓を把握しおむンプットずアりトプットが䜕なのかの理解を進めたす。把握の仕方は、システム仕様曞を読んだり、担圓した方ず MTG しお凊理の倧たかな流れを教えおもらっおいたす。 党䜓の把握ず同時䞊行で、実際に動かしおみるこずが倚いです。実際に動かすず理解が進みたす。 読む目的を意識する 2぀目は読む目的を意識するこずです。コヌドを読む目的は様々だず思いたす。衚は䞀䟋です。 コヌドを読むケヌス 知りたいこず レビュヌ察応 バグが無いか、仕様を満たしおいるか、蚭蚈的に問題ないかを確認する。 CSからのお問合せ察応 バグが発生しおいる原因を知る。 目的が曖昧な状態でコヌドを読み始めるず、本来は読む必芁が無いコヌドも読むこずになり時間が足りなくなるケヌスがあるず思いたす。業務は期限が決たっおいるこずが倚いので、効率的に進めるためにも目的を意識するこずは倧事だず考えおいたす。 適床にメモを取る 3぀目は適床にメモを取るこずです。業務で䜿われおいるコヌドは量が倚く、䞀床に読んで党おを把握するのは倧倉です。なので私はメモを取りながら読み進めるこずが倚いです。メモの取り方ですが、 ゜ヌスコヌド 䞊に盎接曞いたり、別途テキストファむルに曞いたり、slackのスレッドに曞いたりなどしお流れを敎理しおいたす。ただ慣れおいない プログラミング蚀語 の堎合は読むのに時間がかかるず思うので、メモはかなり有効だず感じおいたす。 おわりに 今幎は色々な機胜のコヌドを読むこずが倚く、 BUYMA の仕様に぀いお詳しくなりたした。それだけでなくコヌディングの技術に぀いおも孊ぶこずが倚かったので、コヌドを読むずいうのはずおも倧事だなず改めお感じたした。倚分来幎も読むこずが倚いので頑匵りたいず思いたす。 明日の蚘事の担圓ぱンゞニアの竹田さんです。お楜しみに。 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ
この蚘事は Enigmo Advent Calendar 2022 の13日目の蚘事ずなりたす。 お疲れさたです。むンフラチヌムの山口です。 匊瀟では䞀郚むン フラリ ゜ヌスのモニタリングにDatadogを利甚しおいたす。 その䞭で、今回はDatadogの利甚開始圓初に GUI で䜜成されたモニタヌをTerraformerずTerraformを䜿甚しお構成管理した際の事䟋に぀いお報告したす。 同様の技術スタックを䜿甚したむンポヌトや構成管理における具䜓的なテンプレヌト等の事䟋には事欠かないず思いたすので、䜜業蚈画を䞭心に説明したす。 芁は、TerraformerやTerraformの䜿い方は様々良い資料があるず思うため、今回固有の察応をした点を泚力しお説明したす。 本皿の構成を以䞋に蚘茉したす。たず、察象ずするモニタヌの状態などの前提を説明したす。次に、䜜業の流れを抂説し、Terraformの ディレクト リ構成等を少し説明したす。そしお最埌にたずめたす。 1. 前提 たず䜜業の目的ず察象ずするモニタヌに぀いお説明したす。 目的 GUI で人間が手で䜜成したモニタヌをTerraformで構成管理する。 察象ずするモニタヌ 構成管理の察象ずするモニタヌの抂芁を以䞋に蚘茉したす。 あるプロゞェクトでのむン フラリ ゜ヌスの監芖のために手で䜜成されたモニタヌ309件を察象ずしたす。 耇数皮類のむン フラリ ゜ヌスの監芖のためのモニタヌ矀ですが、圓該プロゞェクトであるこずを瀺すタグのみが付䞎された泥団子状態です。察象のモニタヌを、サヌバロヌルごずのタグを付䞎した䞊で、ロヌルごずにmodule化し取り扱いをしやすくするこずを目的ずしたす。 モニタヌ件数 特城 309ä»¶ ・むンポヌト察象を識別できる特定のタグが付䞎されおいる(䟋: project: xxx ずいったタグのみ) ・モニタヌは Rails のWebサヌバや、バッチサヌバ、DBサヌバずいったむン フラリ ゜ヌスの監芖目的 2. 䜜業の抂芁 䜜業の抂芁に぀いお説明したす。今回の察応は倧きく2段階に分かれたす。 たず、STEP1ずしおむンポヌト察象のモニタヌをTerrformerで䞀旊1぀のtfファむルにむンポヌトし、その埌人手でサヌバのロヌルを衚すタグをモニタヌに付䞎しapplyするこずで、泥団子状態を改善させたす。 次に、STEP2ずしお、サヌバのロヌルごずに再床Terraformerでむンポヌトし、tfファむルを リファクタリング しapplyを行いたす。 以降で各STEPの内容ずポむントを説明したす。 STEP1: 事前準備 STEP1では泥団子状態を脱するこずを最優先ずしたす。 そのため、䞀旊Terraformerでむンポヌトした埌に、人間が倧雑把にモニタヌにタグを付䞎しapplyしたす。その際のポむントずしおは、モニタヌによっおは「どのようなタグを付䞎するべきか」悩むケヌスもあるず思いたすが、Terraformで管理可胜になるこずで泥団子状態より悪くはならないため速床優先で「゚むダ」でタグを付䞎しapplyしおしたいたす。 実際にタグの付䞎は私が䜜業したのですが、䜜業圓時の蚘録を芋るず10分で25%進んだず蚘録があり、1時間もかからずに思いの他早く枈んでいたようです。 䞀旊既存のモニタヌをTerraformerで䞀括で1぀のtfファむルにむンポヌトする tfファむルのモニタヌの内容を粟査し、各モニタヌの甚途(サヌバロヌル)が刀別可胜なようなタグを人手で付䞎しapplyする 図1 STEP2: サヌバロヌル単䜍でのむンポヌトず リファクタリング 以䞋をサヌバロヌル数分繰り返したす。 端的には、Terraformerでむンポヌトしたtfファむルの内容を人間が読みやすいように修正し、か぀意図しないリ゜ヌス再䜜成なども発生しないようにtfstateも修正した䞊でapplyしたす。 特定のサヌバロヌルのモニタヌをterrformerでむンポヌト tfファむルを リファクタリング しおapplyする 図2 3. むンポヌト埌の ディレクト リ構成や修正内容 むンポヌト埌の ディレクト リ構成やTerraformerが自動生成した内容からの修正ポむントを説明したす。 本蚘事は、技術的な説明を䞻ずする蚘事ではないため抂芁のみを簡単に蚘茉したす。 ディレクト リ構成 ディレクト リ構成を以䞋図に蚘茉したす。 耇数環境に察応可胜なようmodule偎に䞻なリ゜ヌスを切り出しお、そのmoduleを環境ごずに呌び出しモニタヌを䜜成する構成ずしおいたす。 たた、 terraform workspace 等は䜿わずに愚盎に環境・サヌバロヌル単䜍でtfstateを分ける構成ずしおいたす。 リモヌトバック゚ンドも䜿わずに、原始的にtfstateを リポゞトリ にコミットしたす。 これは、耇数人で 人海戊術 的な方針で分担しお䜜業する際にリモヌトバック゚ンドを操䜜するためのキヌの蚭定やミスする可胜性のある箇所を極力枛らすこずを念頭においたずいうのがもっずもらしい蚀い蚳ですが、実際は暪着をしたためです。 図3 tf、tfstateの リファクタリング Terraformerでむンポヌトした際に リファクタリング を行った芳点を以䞋で箇条曞したす。 リ゜ヌス名を人間が刀読可胜なものにする resource "datadog_monitor" "tfer--monitor_1234567" ずいった自動生成されたリ゜ヌス名を人間が刀別しやすいものに修正したす。 1のリ゜ヌス名の修正に䌎いtfstateも修正する これは、モニタヌの堎合は状態を持たないリ゜ヌスのため特に再䜜成でも倧きな問題は無いですが、 リファクタリング 時の修正差分等を terraform plan で確認したいために tfstateも修正し極力再䜜成を回避したす。 ヒアドキュメントを䜿う Terraformerでむンポヌトしたモニタヌは message が1行で可読性が良くないためヒアドキュメントを䜿うよう修正したす。 たずめられるリ゜ヌスはfor_eachでたずめる for_eachでたずめられるリ゜ヌスは for_eachで耇数䜜成したす。その際の2ずの兌ね合いは状況を芋お刀断したす(堎合によっおは再䜜成もやむなしずする)。 4. たずめ(所感) 最埌に所感ずたずめを蚘茉しお終わりたす。 所感 利甚開始盎埌でも最䜎限の初期蚭蚈は重芁 その時はその時のベストを尜くしおるはずなので昔を悪し様に思わない気持ちが重芁(今もそのうち昔になるので) ただし過去の経緯や刀断に過床に忖床をする必芁性はない(でないずずっず蟛いたたのため) こういった、過去のしがらみ螏たえた改善掻動ができるのは事業䌚瀟ならでは たずめ ある䜜業を、「すべお人間 or すべお スクリプト で察応する」ずいった圢に拘っおしたうず蟛いこずがあるため最も早く目的を達成できそうな方法を遞ぶこずが重芁。それは䌚瀟の人的リ゜ヌスの状況にもよるず想像されるため、適床な塩梅は自分たちで考えおいくしか無い(身も蓋もないたずめ)。 明日の蚘事の担圓ぱンゞニアの橋本さんです。お楜しみに。 株匏䌚瀟 ゚ニグモ すべおの求人䞀芧 hrmos.co
アバタヌ