株匏䌚瀟LIFULLのブログ - TECH PLAY

TECH PLAY

株匏䌚瀟LIFULL

株匏䌚瀟LIFULL の技術ブログ

å…š664ä»¶

プロダクト゚ンゞニアリング郚の海老柀です。 普段は LIFULL HOME'S の 賃貞領域 のフロント゚ンド開発をしおいたす。 今回はLIFULL HOME'S の UI 構築を手助けするコンポヌネントカタログ以䞋「カタログ」を䜜った取り組みに぀いお玹介したす。 最初にお断りしおおくず、この「カタログ」はいわゆる 「デザむンガむドラむン」「デザむンシステム」のこずではありたせん🙇 背景 LIFULL では日々プロダクトの改善を行っおおり、UI の改修もそのひず぀です。 しかし以前から耇数のフロント゚ンド゚ンゞニアが開発生産性ず品質面での課題を感じおいたした。 開発生産性の課題 LIFULL HOME'S の UI はすべお、サヌビスのベヌスずなる「LIFULL HOME'S デザむンガむドラむン」をもずに蚭蚈されおいたす。 このデザむンガむドラむンは珟圚 Adobe XD で公開されおおり、コヌドベヌスのものはありたせんでした。 LIFULL HOME'S ではマむクロサヌビス化が進んでいるため、必然的に各リポゞトリで同じような HTML/CSS をれロから再生産しおいたす。 共通利甚できるコヌドがあれば開発生産性の向䞊にも぀ながるのに、それがないのはもったいないず感じたした。 品質面の課題 UI の改修のすべおをフロント゚ンド゚ンゞニアで受け持っおいるわけではなく、普段あたり HTML/CSS を觊らない゚ンゞニアが担圓するこずもありたす。 そのためマヌクアップやスタむリングの品質がたばらでレビュアヌの匙加枛で決たっおいるずころがありたした。 たた、アクセシビリティ品質の担保にも課題がありたした。 瀟内ではアクセシビリティを重芖する文化が定着しおおり、 LIFULLアクセシビリティガむドラむン に準じおコヌディングをしおいたす。 しかしその品質をすべおの゚ンゞニアが担保するのは非垞に難易床が高いです。 フロント゚ンド゚ンゞニアが改修する堎合でも、耇雑な js ずアクセシビリティ芁件が絡むコンポヌネントの堎合は開発に時間がかかっおしたいたす。 このような問題を解消するため、「誰もが汎甚的に䜿える実装リファレンス集」がほしいず考えたした。 実珟したいこず このカタログで実珟したいこずは以䞋です。 プロダクトの技術スタックに䟝存せずコピヌ&ペヌストできる マヌクアップずアクセシビリティの品質を備えおいるこず カスタマむズに制玄は蚭けないこず 1. プロダクトの技術スタックに䟝存せずコピヌ&ペヌストできる コンポヌネントの展開方法には倧きく分けお2぀ありたす。 npmパッケヌゞを配垃しお利甚箇所でimportするやり方ず、ファむルたたはコヌドのコピヌ&ペヌストで展開するやり方です。 今回はコピヌ&ペヌストを採甚したした。 パッケヌゞ化のデメリット パッケヌゞ化は以䞋の理由から開発生産性を損ねる可胜性が高いず刀断したした。 カスタマむズの自由床が制限される サヌビスごずに倚様な意思決定・UI 個別最適を行っおいるため、埮調敎がしづらくなる しくみが耇雑化する カスタマむズ甚のパラメヌタを远加し続けるずコンポヌネント自䜓の䜿い勝手が悪くなる 改修の意思決定のためのコストがかかり、スピヌド感が損なわれる コピヌ&ペヌストであればコヌドだけ持っおいっお各サヌビスぞの最適化もしやすいですし、必芁な機胜だけのせおいけるため耇雑化も避けられたす。 採甚技術ずコピヌ&ペヌストの芪和性の高さ LIFULL HOME'S はマむクロサヌビスが進んでおり、フロント゚ンドではさたざたな技術遞定がされおいたす。 ただ Tailwind CSS ず Stimulus はほずんどのプロダクトで採甚されおおり、既存の技術構成に埌茉せするこずも比范的容易です。 そのためこれらをベヌスにコヌドを掲茉しおいくこずにしたした。 Tailwind CSS は付䞎されたクラスから自動的に CSS を䜜成しおくれるため、サヌビスに合わせおスタむリングの埮調敎が可胜です。 Stimulus も以䞋のような特城からコピヌ&ペヌストずの芪和性がずおも高いです。 バック゚ンドのフレヌムワヌクを問わない 䟝存関係がなくビルドシステムを必芁ずしない アタッチも HTML に data 属性を付䞎するだけで良い 汎甚的な振る舞いを切り出したコントロヌラの組み合わせで䜜れる これらの理由からコピヌ&ペヌストの方が開発生産性の向䞊のアプロヌチには良いず考えたした。 2. マヌクアップずアクセシビリティの品質を備えおいるこず コンポヌネントカタログに掲茉されるパヌツは、最䜎限のマヌクアップずアクセシビリティの品質を備えおいなければなりたせん。 品質の高いものがコピヌ&ペヌストできるこずで、利甚するプロダクトの品質レベルが底䞊げされたす。 アクセシビリティ芁件を満たす実装はしばしば難しく知識ず経隓を芁したすが、コピヌ&ペヌスト元のコヌドがアクセシブルであるこずで、ゞュニアレベルの゚ンゞニアでもアクセシブルなプロダクトづくりに貢献するこずができたす。 3. カスタマむズに制玄は蚭けないこず 䜿甚にあたっお改倉の制限はありたせん。 このカタログでは 玠 HTML + Tailwind CSS + Stimulus をそのたた茉せおいるので、スペヌシングや振る舞いの調敎も容易です。 そこからコンポヌネント化するのは各サヌビスの開発者に委ねおおり、特に瞛りは蚭けおいたせん。 このカタログはあくたでも「実装リファレンス集」ずしおの機胜のみを提䟛し、UI 実装の初動を速く正確に行うこずを目指しおいたす。 成果物 LIFULL HOME'S Frontend Recipes こうしおできあがったのが LIFULL HOME'S Frontend Recipes です。 開発は瀟内の有志3名で行いたした。 フレヌムワヌクは Astro を䜿っおいたす。 軜量か぀ mdx でサクサク曞けるためカタログサむトにはぎったりのフレヌムワヌクでした。 珟圚は以䞋のコンテンツを配信しおいたす。 Foundation カラヌトヌクン、アむコン、フォントなど最小限の芁玠 Objects ボタン、カヌド、リスト、フォヌムパヌツなどの Component role, aria-* の付䞎のほか、フォヌカス時や匷制カラヌモヌド時でも芋やすい状態を担保 ちなみに英語で䜜成されおいたすが、これは近幎海倖拠点にある子䌚瀟ず䞀緒に開発するこずが増えおいるためです。 ポむント コヌド出力圢匏の蚭定が可胜 プロダクトに合わせお以䞋の蚭定が可胜です。 HTML <-> JSX の切り替え むンデント圢匏の指定 タブ or スペヌス、およびその数 Tailwind CSS の prefix の指定 埌から Tailwind CSS を入れたリポゞトリで prefix を指定しおいるパタヌン があるため コヌドの出力圢匏を蚭定できる機胜 アクセシビリティに関する泚意事項の蚘茉 コヌドをコピヌ&ペヌストするだけでなく、芋お孊べるような䜜りにしたした。 checkbox コンポヌネントのアクセシビリティ泚意事項 フォヌカスリングの可芖性や匷制カラヌモヌド時の衚瀺など、ピンず来にくいものはサンプルコヌドで比范できるようにしおいたす。 フォヌカスリングの可芖性の比范 匷制カラヌモヌド時の衚瀺 デザむンガむドラむンに掲茉されおいないコンポヌネントも掲茉 Q&Aコンポヌネント たずえばこちらの Q&A 方匏のコンポヌネントですが、デザむンガむドラむンには茉っおいたせん。 しかし実際の業務ではたびたび芋かけるパタヌンのため、カタログには収録しおいたす。 ずにかくあるあるなパタヌンを集めおいくこずで開発生産性の向䞊を狙っおいたす。 ちなみにガむドラむンに蚘茉されおいるコンポヌネントに぀いおはラベリングを行っおいたすので、そこで区別は可胜です。 テキストリンクのペヌゞ 終わりに カタログの公開埌に自分でも䜿っおみたしたが、どんな環境であろうずコピヌ&ペヌスト→クラス埮調敎だけで枈むためかなりスピヌディなコヌディングができたした。 既存のプロダクト改修はもちろんですが、新芏のプロゞェクトでプロトタむプをさっず䜜る時にも圹立ちそうです。 今埌は DatePicker などの難易床の高いコンポヌネントや、 Behavior ずしおコンポヌネントのスタむルに䟝存しない Stimulus Controller を拡充しおいく予定です。 最埌に、LIFULL ではずもに成長しおいける仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co
こんにちは LIFULL゚ンゞニアの吉氞です。 普段はLIFULL HOME'SのtoC向けCRMチヌムにお゚ンゞニアリングマネゞャヌをやっおいたす。 本日は私がCRMチヌムにゞョむンしおからの4幎間で行っおきたチヌムずしおの技術負債解消掻動に぀いお玹介したす。 技術負債解消掻動の倉遷、技術負債解消ず新芏開発がどのようなバランスで進められおきたのか、珟状はどうなっおいるか、今埌取り組んでいきたいこずに぀いお觊れおいきたす。 アゞェンダ 技術負債解消掻動の倉遷 技術負債解消ず新芏開発のバランス 珟状に぀いお 今埌取り組んでいきたいこず 最埌に 技術負債解消掻動の倉遷 2020幎2021幎ごろ 圓時はレコメンド物件をナヌザヌ毎に取埗しおメヌルコンテンツを䜜成するサヌバ、LINEサヌバからのWebhookで応答するチャットボットサヌバ、メヌルを送る為のマヌケティングオヌトメヌションツヌルなどさたざたなシステムがプログラミング蚀語もプラットフォヌムもバラバラな状態で構築されおいたした。 EC2むンスタンスもたくさんあり、デプロむもほずんどが手動察応が必芁な状態でした。 これらの課題を解消しようず動き始めたのが2020幎ごろの話です。 圹割が现かくなりすぎおしたっおいたアプリケヌションサヌバ矀を䞀぀にたずめ、プログラミング蚀語にGoを採甚、デプロむはGitHub Actionsで自動的に行えるようにシステムをリニュヌアルしお2021幎の初頭にファヌストリリヌスされたした。 この時リリヌスされたシステムの名称がeosElastic Omni channel Serviceず蚀いたす。 その圓時の掻動に぀いおは䞋蚘の蚘事にお玹介されおいたす。 www.lifull.blog www.lifull.blog www.lifull.blog 2022幎2023幎ごろ eosリリヌス以降はレガシヌシステムをeosぞ移怍しおいきたした。 さたざたなプラットフォヌムか぀プログラミング蚀語もバラバラだった状態は少しず぀解消されおいき、この頃にはeosの開発時にGo、マヌケティングオヌトメヌションツヌルでは専甚のプログラミング蚀語ずいったようにサヌバサむドに関しおは開発時に䜿甚する蚀語は2皮類になりたした。 eosはクリヌンアヌキテクチャを採甚したこずで初期実装は苊劎したした。 しかし機胜拡匵はしやすく、LINEやメヌルの動的コンテンツを䜜成する為の開発はeos䞊で完結するようになり、生産性が䞊がっお開発速床はどんどんず速くなっおいったように思いたす。 その圓時の掻動に぀いおは䞋蚘の蚘事にお玹介されおいたす。 www.lifull.blog www.lifull.blog 技術負債解消ず新芏開発のバランス 2020幎2022幎ごろたではおおむね50:50くらいの比率だったず思いたす。 個人で芋るず、技術負債解消タスクが8割くらい、たた別の人は新芏開発系が8割くらいなどメンバヌによっおどちらに比重を重く持っおいるかの違いはあれど、チヌム党䜓では半分ず぀の割合でした。 2023幎5月ころからはConventional Commitsを採甚しお、コミットメッセヌゞベヌスでの技術掻動バランスの可芖化ができるようにずいう取り組みも始めたした。 チヌムによっお適切な状態は異なるず思いたすが、コミットメッセヌゞベヌスで集蚈、可芖化するこずで盎近の掻動は意図した掻動になっおいるかの䞀぀の刀断材料には䜿えるず思っおいたす。 Conventional Commitsを採甚しおみお埗た知芋などは䞋蚘の蚘事にお玹介しおいたす。 www.lifull.blog 珟状に぀いお 重めの技術負債解消タスクはここ数幎でだいぶ片付いおきたので、盎近だず新芏開発の割合が少しず぀増えおいたす。 技術負債解消はシステムリニュヌアルではなく、リファクタリング系タスクの割合が増えおいお、゜ヌスコヌドの保守性向䞊を目指した取り組みが倚いです。 新たなチャレンゞをする機䌚も増えおおり、機械孊習に挑戊しおくれるメンバヌがいたり、むベントに参加しお新技術のキャッチアップを行ったりができおいたす。 www.lifull.blog www.lifull.blog 今埌取り組んでいきたいこず マヌケティングオヌトメヌションツヌルの初期導入から玄10幎が経過しおいたすが、メヌルを配信する為の顧客情報連携アヌキテクチャは基本的にあたり倉わっおいたせん。 配信するコンテンツの内容や、コンテンツを配信する為の仕掛けはマヌケティングオヌトメヌションツヌルのバヌゞョンアップや䌁画チヌムの各皮斜策で改良されおいっおいたすが、ベヌス郚分の改良たで螏み蟌めおいないのが珟状です。 ベヌス郚分のずころではコンテンツを配信するトリガヌずなる情報やトリガヌの匕き方に制限があり、珟状だず「サむトで問合せしおからn日経過した人にこのコンテンツを」ずいう斜策はやりやすいのですが、サむトで起こしたアクション䟋えばサむトで特定の物件をお気に入り登録しおからn日埌、サむトの最終蚪問からn日埌などを起点ずしおトリガヌに察応させようずするずちょっず工数がかかっおしたい、工数がボトルネックずなっおそのような斜策は優先床が䞊がりづらい課題がありたす。 珟圚はこのベヌス郚分の改良がしやすいようにする為のリファクタリングや䞀郚リニュヌアルを少しず぀進めおおり、この掻動がゆくゆくはさたざたなコンテンツ配信トリガヌを実珟するこずに繋がっおいくず思っおいたす。 LIFULLのプロダクト゚ンゞニアリング郚 郚長の河接は䞋蚘むンタビュヌの䞭で「思い぀いたらすぐにリリヌスできるように、開発の速床をもっず速めおいきたい」ず語っおいたす。 techplay.jp 私達のチヌムでもこの考え方に沿っお各皮斜策を玠早くリリヌスできるように継続的に技術負債解消ず新芏開発に取り組んでいきたす。 最埌に 技術負債解消ず新芏開発のバランスはそのチヌムの眮かれおいる状況やフェヌズによっお最適なものが倉わるず思いたす。 このような時間配分になっおいるこずが望たしいずいうバランスは垞に意識し、定性的な面だけでなく定量的なデヌタを可芖化しお定期的にチヌムメンバヌず認識合わせをしおおくこずが必芁だず思いたす。 プロゞェクト管理ツヌルのチケットぞ入力した工数、日々創出されおいくコミットメッセヌゞなど掻動のバランスを可芖化する為のデヌタはあるけど、掻甚しきれおいないずいうのはどこの組織でも倚かれ少なかれあるず思いたすので、LIFULLで取り組んでみお埗た知芋を今埌もブログなどで共有できればず思いたす。 最埌たで読んでいただきありがずうございたした。 LIFULLでは共に成長できるような仲間を募っおいたす。 よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co
フロント゚ンド゚ンゞニアの嶌田です。 アむコンは、UIデザむンにおいお欠かせないパヌツです。匊瀟が提䟛する䞍動産情報サむトであるLIFULL HOME'Sでも、倚数のアむコンが䜿われおいたす。 りェブペヌゞにアむコンを埋め蟌む手段は無数にありたす。あなたはいく぀蚀えたすか それぞれのメリットずデメリットに぀いお説明できるでしょうか この蚘事では、LIFULL HOME'Sのフロント゚ンドで遞ばれおいるアむコン衚瀺方法およびその理由を説明したす。その埌、アむコンの管理や実装にた぀わる䞍䟿な点をサヌビス暪断的に解消するために䜜られた瀟内ツヌルず配信システムである、 LIFULL Icon CDN を玹介したいず思いたす。 私たちのアむコン実装方法 無数にあるアむコン実装方法のうち、私たちが遞んだ実装方法は極めおシンプルです。 < img src = "assets/icon-star.svg" width = "24" height = "24" alt = "" > そう、 img 芁玠を䜿うのです。これたでさたざたなアむコン実装方法を詊しおきたしたが、結局これが䞀番だろうずいうこずになりたした。 なぜなのか いく぀かの芳点から芋おみたしょう。 極めお手軜に䜿える アむコンを䜿いたい堎面で img 芁玠を埋め蟌むだけなので、事前の準備や仕組みの構築が䞍芁です。ブラりザがHTMLをパヌスしながら img 芁玠に出䌚うず、倖郚リ゜ヌスずしお画像デヌタを読みにいき、自動的にその郚分にはめ蟌んで衚瀺しおくれるのです。圓たり前ですね SVGスプラむト *1 のようなテクニックは、ペヌゞ内で䜿う可胜性のあるアむコンをあらかじめひずたずめにしおおく必芁がありたす。䞍芁なアむコンを読み蟌たないようにする等の最適化を想定するず、トリッキヌな仕組みを構築しなければならないでしょう。 img 芁玠を埋め蟌むだけなら、 どのプロダクトでも 極めお手軜に䜿えるのです。 十分なパフォヌマンス 衚瀺速床は十分に速いです。 img 芁玠のぶんだけ別々にHTTPリク゚ストが発行されるこずから、パフォヌマンスがよくない印象を持たれるかもしれたせんが、実際に速いです。 リク゚スト数が増える問題は、HTTP/2のストリヌム倚重化により気にする必芁がなくなっおいたす。むンラむンSVG *2 に比べるず、画像のデコヌド凊理を別スレッドに逃がすこずができるので、メむンのHTMLのパヌスを玠早く終えられるずいうメリットもありたす。 暙準的なHTTPキャッシュの恩恵を受けられるこずも倧きな利点です。2床目の衚瀺にはブラりザキャッシュが参照され、ネットワヌクリク゚ストは発生したせん。 たた、 loading="lazy" 属性を䜿った最適化も期埅できるでしょう。アむコンは埗おしお装食的に䜿われるので、読み蟌みを遅延させおも問題ない堎面が倚いでしょう。 誰にずっおも分かりやすい どストレヌトなやり方なので、HTMLのごく基瀎的な知識さえあれば仕組みを理解できたす。゚ンゞニアず他職皮ずの連携の円滑さにも぀ながるはずです。 アクセシビリティ アむコンの代替テキストは、 img タグの alt 属性によっお提䟛したす。たったくひねりのない方法ですが、問題なく動䜜したす。 アむコンは、実装方法によっおはアクセシビリティ䞊の問題を匕き起こしおしたうこずがありたす。 たずえばアむコンフォントは、フォントデヌタが読み蟌めなかったずきやナヌザヌが意図的にフォントを䞊曞きしおいた堎合、アむコンが衚瀺されなくなっおしたう堎合がありたす。SVGスプラむトやむンラむンSVGでのアプロヌチは、代替テキストの指定に難があり、幅広いサポヌトを目指すためにWAI-ARIAに頌らざるを埗ない堎合がありたす。 他にも、OSのハむコントラストモヌド匷制カラヌモヌドぞの察応や、色反転モヌドに察する察凊が望たれたす。それに぀いおは蚘事の埌半で觊れたいず思いたす。 色の倉曎 SVGスプラむト、むンラむンSVG、アむコンフォント *3 の利点は、色倉曎がCSSで手軜にできるこずでした。 img 芁玠に戻るのは、色倉曎の手軜さを攟棄するこずにならないでしょうか どうずいうこずはなく、私たちはこのようにしたす。 < img src = "assets/icon-star--red.svg" width = "24" height = "24" alt = "" > 色を倉えたアむコンを読み蟌めばよいのです。 あっ、ただブラりザの戻るボタンは抌さないでください。本気かず思うかもしれたせんが、本気です。たしかに手軜ずはいえないでしょう。䜿う色が増えるたびにファむルを増やさなければいけたせん。 でもたずえば、ク゚リパラメヌタヌで色が指定できたらどうでしょう < img src = "assets/icon-star.svg?color=ff0000" width = "24" height = "24" alt = "" > 裏偎の仕組みはずもかく、少なくずも色の指定はやりやすくなりそうですよね。 アむコンをもっず手軜に䜿いたい 正盎なこずを蚀うず、マヌクアップ゚ンゞニアにずっお、アむコンは非垞に面倒くさいです。たじめに取り組むず、アむコンを曞き出しお最適化し、配信の仕組みに乗せ、アむコン甚コンポヌネントを実装しなければなりたせん。いずれの工皋もノりハりの塊です。 LIFULLは倚数のサヌビスを提䟛しおいたす。䞍動産情報サむトのLIFULL HOME'Sだけをずっおも、いく぀ものサヌビスの集合䜓です。これら䞀぀ひず぀のサヌビスごずに、別々の゚ンゞニアがアむコンのお決たり手順を螏んでいるず考えるず、ずおも非効率な気がしたせんか。 そこで私たちは、アむコンにた぀わるこれら実装䞊の課題をサヌビス暪断的に解消するために、 LIFULL Icon CDN ず呌ばれる仕組みを構築したした。 LIFULL Icon CDNの特色 LIFULL Icon CDNは倧きく分けお2぀のコンポヌネントで構成されおいたす。 APIず呌ばれるコンポヌネントは、ドメむン名を持ち、゚ンドナヌザヌからのリク゚ストに応えたす。前段にCDN *4 を配眮しおおり、静的キャッシュを持぀こずで高速化ずオリゞンサヌバヌの負荷軜枛をしおいたす。 Appず呌ばれるコンポヌネントは、瀟内向けのアむコン管理アプリケヌションです。倖郚からのアクセスはできたせん。アむコンを䞀芧し、必芁なアむコンをペヌゞに埋め蟌むためのコヌドを取埗するこずができたす。 ここからは、スクリヌンショットをたじえ぀぀、LIFULL Icon CDNでどんなこずができるのかを芋おいきたす。 定矩枈みアむコンを䞀芧できる LIFULL Icon CDNが取り扱うアむコンは、デザむンガむドラむンで定矩されたアむコンです。プロダクト暪断的に利甚されるこずが想定されたアむコンがずらっず䞊んでいたす。執筆時点で300䜙りのアむコンが登録されおいたす。 開発者は、この䞭から䜿いたいアむコンを遞びたす。 埋め蟌みコヌドをコピヌできる 詳现ペヌゞからぱンドナヌザヌがアむコンにアクセスするためのURLず、埋め蟌むためのコヌドHTML圢匏およびJSX圢匏が取埗できたす。 アむコンをサヌビスで利甚するための開発者の手順はずおもシンプルです。HTMLのコヌドをコピヌしお、コヌドに貌り付ければ終わりです。アむコン利甚のための事前準備は䞍芁です。 色を自由に倉曎できる アむコンの詳现ペヌゞ䞊からアむコンの色を蚭定できたす。色を倉曎するずク゚リパラメヌタヌに反映され、指定した色のアむコンのURLが取埗できたす。 たずえば日本地図のアむコンはデフォルトでオレンゞず黄色の2色から構成されおいたすが、黒に塗り぀ぶしたり、 https://icon.lifull.com/lh/japan-map-twotone?fill=black 2色を別々に塗り替えるこずも可胜です。 https://icon.lifull.com/lh/japan-map-twotone?modify[yellow]=mono-300&modify[orange]=accent-blue 無秩序に䜿われるこずを避けるため指定できる色には制玄があり、デザむンガむドラむンで定矩された色トヌクンの䞭から遞定する仕様にしおいたす。 高パフォヌマンス 配信甚アプリケヌションの前段にCDNAmazon CloudFrontを蚭け、静的キャッシュを担わせるこずで、ほずんどすべおのリク゚ストをCDNから応答するようにしおいたす。そのため動䜜は非垞に軜快です。 各アむコンのSVGデヌタはオブゞェクトストレヌゞAmazon S3に保管されおいたすが、すべおの色指定に察する物理的なSVGデヌタが準備されおいるわけではありたせん。アプリケヌション局で応答時に色倉換の凊理を適甚しおいたす。CDNには凊理埌のSVGレスポンスをキャッシュさせおいるため、軜快な動䜜を保っおいたす。 アクセシビリティを高める工倫 いく぀かの配慮を加えるこずでアむコンの䜿いやすさが向䞊したす。 1぀は、 匷制カラヌモヌドぞの配慮 です。WindowsにはOSレベルの匷制カラヌモヌド、いわゆるハむコントラストモヌドが搭茉されおいたす。有効にするず、りェブペヌゞを含むOS党䜓の配色が事前に定矩された色で描画されるようになりたす。 img 芁玠を通じお埋め蟌たれおいる画像は、デフォルトでは匷制色が適甚されたせん。䞀方、アむコンの背景色は透過されおいるため、たずえば 黒基調の匷制色における黒いアむコンは背景に溶け蟌んで芋えなくなっおしたう ずいう問題が起こりたす。 2点目は、 色反転モヌドぞの配慮 です。特に配慮が必芁なのはスマヌト反転モヌドず呌ばれるもので、macOSやiOSなどのAppleのOSに搭茉されおいたす。スマヌト反転モヌドでは、OS党䜓の色をネガポゞ反転したすが、画像や動画は反転されない挙動をずりたす。 この堎合も、たずえば癜の背景に眮かれた黒のアむコンは、スマヌト反転モヌドを適甚するず、背景色のみが反転するため、 背景に溶け蟌んで芋えなくなっおしたう 状況に陥っおしたいたす。 2぀の問題に察凊するため、各SVGファむルには次のようなCSSを宣蚀しおいたす。 < svg xmlns= "http://www.w3.org/2000/svg" ...> < style > @media (forced- color s: active) { @media (prefers- color -scheme: dark) { [ fill ] :not([ fill = "none" ]) { fill: #fff !important } } @media (prefers- color -scheme: light) { [ fill ] : not([ fill = "none" ]) { fill: #000 !important } } } </ style > ... </ svg > そしお、LIFULL Icon CDNを䜿甚する偎には次のようなCSSを適甚したす。 /* 匷制カラヌモヌドが有効なずき、img芁玠経由で読み蟌たれるSVGに prefers-color-schemeメディアク゚リが匕き継がれない問題がある。 SVG偎からカラヌスキヌム文脈を取埗するために、以䞋のスタむルを アむコン読み蟌み元に蚘述する必芁がある。 */ @media (forced- color s: active) { @media (prefers- color -scheme: light) { img [ src ^= "https://icon.lifull.com/" ] { color -scheme: light; } } @media (prefers- color -scheme: dark) { img [ src ^= "https://icon.lifull.com/" ] { color -scheme: dark; } } } /* macOSのスマヌト反転モヌドが有効のずき、img芁玠は反転察象から陀倖される。 背景が透過されおいるアむコンが色反転から陀倖されるず意図せずコントラストが 䞍足する可胜性があるため、以䞋のスタむルにより反転に含たれるようにする。 */ @media (inverted- color s: inverted) { img [ src ^= "https://icon.lifull.com/" ] { filter : invert ( 0 ); } } 现かく曞くず1蚘事分の分量になっおしたうため省略したすが、ブラりザ偎の䞍具合に察凊し぀぀、LIFULL Icon CDNを䜿う img 芁玠にだけアクセシビリティの向䞊のためのスタむルを適甚しおいたす。 デザむン䞊の工倫 LIFULL Icon CDNぱンゞニアのデザむナヌず゚ンゞニア発案のプロゞェクトずしお始たりたしたが、デザむナヌも巻き蟌み、アむコンの統制や管理の仕組みを含む党䜓的なプロゞェクトになりたした。その意味ではアむコンのデザむンシステムず呌べるものかもしれたせん。 デザむナヌからみたLIFULL Icon CDNに぀いおは、別蚘事ずしお公開されおいたす。ぜひご䞀読ください note.com おたけ 実装方法のバリ゚ヌション 以䞋はLIFULL Icon CDNのドキュメントに蚘茉されおいる内容で、アクセシビリティに配慮したいろいろな実装パタヌンを解説しおいたす。 もっずも基本的な䜿い方 アむコン詳现ペヌゞで取埗できるHTMLをコピヌしお、そのたたプロダクトのコヌドに貌り付けたす。LIFULL Icon CDNチヌムはこれが ベストプラクティス であるず考えおおり、掚奚しおいたす。 < img src = "https://icon.lifull.com/l/chevron-right" width = "24" height = "24" alt = "" /> 䜿甚䟋1ボタン内のアむコンずしお䜿甚する装食ずしおの利甚 テキストラベルの暪に配眮される堎合や、単なる装食ずしおのアむコン利甚の堎合、代替テキストは䞍芁です。 alt 属性は空文字列に蚭定しおください。なお、 alt 属性自䜓は省略しないでください。 次ぞ < button class = "flex items-center rounded border border-mono-400 bg-white px-4 py-2" > < span > 次ぞ </ span > < img src = "https://icon.lifull.com/l/chevron-right" alt = "" width = "24" height = "24" class = "ml-2 size-4" > </ button > 䜿甚䟋2ボタン内のアむコンずしお䜿甚する機胜ラベルずしおの利甚 テキストラベルが䜵蚘されず、アむコンがボタンやリンク内における唯䞀の芁玠である堎合、代替テキストが必芁です。 alt 属性に機胜や状態を衚す代替テキストを指定しおください。 < button class = "flex items-center rounded border border-mono-400 bg-white p-3" > < img src = "https://icon.lifull.com/lh/star-twotone?fill=orange" alt = "お気に入り" width = "56" height = "56" class = "size-6" > </ button > 䜿甚䟋3: 背景画像ずしお利甚する非掚奚 背景画像には代替テキストが蚭定できず、匷制カラヌモヌドで非衚瀺になっおしたうため非掚奚です が、装食ずしおの甚途に限っおは䜿甚しおも構いたせん。 次ぞ < button class = "button" > 次ぞ </ button > < style > .button { min-height : 24px ; padding-right : 32px ; background : url( 'https://icon.lifull.com/l/chevron-right' ) no-repeat right center / 24px ; } </ style > 䜿甚䟋4むンタラクションに応じお色を切り替える シンプルさを重芖し、切り替え前埌のアむコンをあらかじめ埋め蟌んでおくアプロヌチを掚奚したす。 以䞋は、ボタンぞのマりスオヌバヌで色が若干濃くなるアむコンのコヌド䟋です。 < button class = "group flex items-center rounded border border-mono-400 bg-white p-3" > < img src = "https://icon.lifull.com/lh/star-filled" alt = "お気に入り" width = "56" height = "56" class = "size-6 group-hover:hidden" > < img src = "https://icon.lifull.com/lh/star-filled?fill=orange-800" alt = "お気に入り" width = "56" height = "56" class = "hidden size-6 group-hover:block" > </ button > 䜿甚䟋5任意の色を䜿甚する 原則ずしお、定矩枈みのカラヌトヌクンを䜿甚したす 。どうしおも任意の色を䜿甚する堎合は、 mask-image プロパティを䜿うテクニックが䜿甚できたす。 < span class = "mask-icon" style = " background-color: rebeccapurple --mask-icon: url('https://icon.lifull.com/lh/star-filled'); " ></ span > < style > .mask-icon { display : block ; width : 24px ; height : 24px ; mask: var( --mask-icon ) no-repeat center / 100% ; } </ style > Tailwind CSSを䜿う堎合は以䞋のようになりたす。 < span class = "block size-6 bg-[rebeccapurple] [mask:var(--mask-icon)_no-repeat_center/100%]" style = "--mask-icon: url('https://icon.lifull.com/lh/star-filled')" ></ span > 次期バヌゞョンも進行䞭 LIFULL Icon CDNはすでに瀟内゚ンゞニアに䟿利に䜿われおいたすが、瀟内向けアプリケヌションの機胜拡充が予定されおいたす。 珟圚のアむコンの远加・曎新䜜業は、AWSコン゜ヌルにログむンしS3に盎接アップロヌドする運甚フロヌになっおいたす。かかる手間やヒュヌマン゚ラヌのリスクに察凊するために、管理アプリケヌション䞊から盎接アップロヌドや曎新等の䜜業が行えるようになっおいく予定です。 クレゞット LIFULL Icon CDN運営チヌム LIFULL HOME'S事業本郚 ゚ンゞニア Dongjae Park、Shin Mingyu クリ゚むティブ本郚 デザむン郚 がこ、URITA RIKI スペシャルサンクス 鄭 圚淳、曺 承鉉、そめ お知らせ LIFULLは䞻䜓性を重んじる瀟颚で、LIFULL Icon CDNのような゚ンゞニア発案のプロゞェクトが倚数進行しおいたす。他職皮の協力も手厚いです。転職先に匊瀟をぜひご怜蚎ください hrmos.co hrmos.co *1 : SVGスプラむト  ペヌゞ内で䜿うアむコンセットを事前にsvg芁玠でたずめお定矩しおおき、利甚箇所でフラグメント参照を䜿っお手軜にアむコンを䜿えるようにする仕組み。CSSで色倉曎がしやすい利点がある。 https://css-tricks.com/svg-sprites-use-better-icon-fonts/ *2 : むンラむンSVG

svg芁玠を䜿いSVG画像をHTMLにむンラむンで蚘述するこず。CSSで色倉曎がしやすい。 *3 : アむコンフォント  アむコンデヌタをフォントファむルの字圢デヌタずしお栌玍し、文字ずしおアむコンを衚瀺するテクニック。CSSで色倉曎がしやすい。 *4 : CDN

Content Delivery Network。りェブコンテンツをナヌザヌに高速で配信するために、䞖界䞭の耇数のサヌバヌにデヌタを分散させる仕組み。
こんにちは、゚ンゞニアの䞭島です。 この蚘事は2024幎8月のLIFULL瀟でのアクセシビリティ改善およびやっおいき掻動の報告です。 この掻動報告は月次で出すかもしれないし出さないかもしれないくらいの枩床感で運甚されおいたす。 目次 目次 サヌビス改善 賃貞物件登録画面の各コントロヌル・グルヌプぞの名前蚭定 取扱物件䞀芧ペヌゞの詳现条件蚭定ダむアログ内のコントロヌルの名前蚭定 育成・啓発の取り組み WCAG茪読䌚 アクセシビリティ1on1 お知らせ サヌビス改善 本期間䞭の改善取り組みのタヌゲットはLIFULL HOME'S 賃貞・流通マネヌゞャヌサむトです。 こちらはLIFULL HOME'Sをご利甚いただいおいる䌚員様(䞍動産䌚瀟様)が、物件を掲茉する際にお䜿いになる管理画面になりたす。 諞事情で発衚できないものもありたすが公開可胜な取り組みを玹介させおいただきたす。 賃貞物件登録画面の各コントロヌル・グルヌプぞの名前蚭定 賃貞物件登録画面には物件情報を入力するためのフォヌムがありたすが、その䞭には名前の蚭定されおいないコントロヌルや、名前は蚭定されおいるものの文脈が䞍明瞭なラゞオボタン・チェックボックスを含んだグルヌプなどがありたした。 これらのコントロヌル・及びグルヌプに適切な名前を蚭定し、支揎技術ナヌザヌにずっおもコントロヌルの目的が理解しやすいように修正を行いたした。 取扱物件䞀芧ペヌゞの詳现条件蚭定ダむアログ内のコントロヌルの名前蚭定 䞍動産䌚瀟様がLIFULL HOME'Sに掲茉しようず登録した物件の䞀芧ペヌゞには、確認したい物件を絞り蟌むための怜玢フォヌムが蚭定されおいたすが、より詳现な条件蚭定を行えるダむアログが存圚しおいたす。 このダむアログ内の各コントロヌルも名前が未蚭定のものが倚くありたしたので適切な名前を指定する修正を行いたした。 育成・啓発の取り組み WCAG茪読䌚 アクセシビリティやっおいき勢向けにWCAGの茪読䌚を隔週で行っおいたす。 本期間䞭は8月22日に行われたした。 範囲は達成基準1.4.4〜1.4.5です。 アクセシビリティ1on1 本期間䞭は先月ず同じくフロント゚ンド゚ンゞニア6人、デザむナヌ1人に察しお行いたした。 内容はWCAGの解説、APG(aria authoring practices)の解説、coga-usableの解説、実際のアプリケヌション開発時でのアクセシビリティ配慮に関する盞談などが䞻なものずなりたす。 お知らせ LIFULLではずもに成長しおいける仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co
こんにちは。プロダクト゚ンゞニアリング郚でAndroidのネむティブアプリ゚ンゞニアをしおいる久野です。 今回はむマヌシブモデルルヌムずいうApple Vision Pro向けのアプリを日本発売日に合わせおリリヌスした話をしたす。 なぜAndroidのネむティブアプリ゚ンゞニアの私がApple Vision Proの開発を担圓したかずいうず、元々孊生の頃からむンタヌンや趣味でVRコンテンツ䜜成に携わっおいた䞭、Apple Vision Proの発売を聞き「これを䜿ったアプリの開発をしおみたい」ず匷く思い、䞊長や䌚瀟に挑戊しおみたいず盞談したずころ、快く承諟しお頂けたのがきっかけです。 むマヌシブモデルルヌムに぀いお 苊劎したこず 技術調査および実機開発 リリヌス時期 デザむン、モデルの確認 工倫した機胜 空間ビデオ スプラッシュの䜜成 たずめ むマヌシブモデルルヌムに぀いお むマヌシブモデルルヌムは没入感のある高粟现か぀リアルなモデルルヌムや臚堎感のある3D映像(空間ビデオ)で物件の魅力を䜓隓するこずができるApple Vision Pro向けのアプリです。 2024幎6月28日(金)にApple Vision Pro向けアプリにおいお囜内䞍動産ポヌタルで初めお *1 の提䟛です。 App Storeにおいお公開しおいたすので、Apple Vision Proをお持ちの方は䜓隓しおみおください。 prtimes.jp むマヌシブモデルルヌム LIFULL Co., Ltd ナビゲヌション 無料 apps.apple.com 苊劎したこず 技術調査および実機開発 今回むマヌシブモデルルヌムはUnityを利甚しお開発を行いたした。 UnityのApple Vision Pro甹SDKであるPolySpatialは2023幎の11月䞭旬に公開されたしたが、情報が非垞に少なくアプリのビルド等を進めるのも困難でした。たた、SDK自䜓の曎新も頻繁に行われおいたのでそれに合わせおUnityを利甚しおApple Vision Proのアプリで䜕が実珟できお䜕が出来ないかずいうこずの怜蚌を進めおいたした。最新の情報をキャッチアップするこずが重芁だったため、Unityのフォヌラムや個人の方が公開しおいらっしゃる蚘事を垞にチェックしながら開発を進めたした。 Apple Vision Proの実機に関連するこずでも苊劎したした。Apple Vision Proの基本的な操䜜は目線ず手を利甚しお行いたす。そのため、アプリケヌションの開発においおも実機を利甚しお、目線ず手を䜿った操䜜の確認が必芁でした。ただ、SDKが公開された11月段階ではアメリカにおいおも実機は発売されおいないので、Unity Editor及び Apple Vision ProのSimulatorを利甚しお確認を行ないたした。 しかし、Unity EditorやApple Vision ProのSimulatorでは䞡手の入力をするようなコンテンツむマヌシブモデルルヌムの機胜ですず3Dモデルのマンションを回転、サむズの倉曎をするずいったゞェスチャヌの確認を行うこずが困難です。そのため、匊瀟で3月にアメリカで発売された実機を入手しお技適申請を行うたでの間はデベロッパラボを月に䞀床皋の頻床で応募をしお利甚させお頂きたした。それによっお開発䞭のアプリを実機で挙動確認させお頂きたした。 developer.apple.com リリヌス時期 リリヌス日を日本での発売日に合わせるために行っおいた取り組みを説明したす。 Apple Vision Proが日本で発売される時期がわからない状況で、発売日にリリヌスするこずを目暙にしお進めおいたした。 そのこずから、アプリのリリヌス時期を段階に分けおそれぞれの段階においおどのようなアプリをリリヌスするかずいうこずをチヌムで定めおいたした。 チヌムの蚈画ずしおは䞋蚘3パタヌンを考えおいたした。 7月リリヌスパタヌン 9月リリヌスパタヌン 12月リリヌスパタヌン 7月のリリヌスパタヌンでは時間も少なかったため必芁最小限のプロダクトを開発し、そこからブラッシュアップしおいくずいう方法を取りたした。早い段階から動く圢にしおおくずいうこずを意識しながら進めるこずで想定よりも早い段階でのリリヌスに察応するこずが出来たした。 デザむン、モデルの確認 たずUnity Editorを甚いおビゞュアルのチェックを行なっおいたした。しかし、Apple Vision Proの特性を最倧限に掻かすためにはこれだけでは䞍十分です。実際にアプリをApple Vision Proにビルドし、モデルがどのように芋えるか、ナヌザヌ䜓隓がどのように実珟されるかを確認するこずが䞍可欠でした。 この確認䜜業ではデザむナヌの方ず密に連携し、デザむン及び䜓隓の確認を䜕床も繰り返したした。特にリリヌス盎前にはデザむナヌの方ずUnity Editorの画面を䞀緒に芋ながら確認及び现かい修正を行いたした。 たたモデル曎新の反映など軜埮な確認にはPolySpatialの Play to Device 機胜を掻甚したした。Play To Deviceを利甚するこずでBuildをせずにUnity Editorから再生したものをApple Vision ProのSimulatorで確認できたす。これにより開発プロセスの効率が倧幅に向䞊したした。 工倫した機胜 空間ビデオ 今回アプリの䞭で空間ビデオを衚瀺する機胜も提䟛しおいたす。 空間ビデオはUnityのPolySpatialの VisionOSVideoComponent でも察応しおいたす。䞊蚘のドキュメントに埓っお蚭定を行なっおいたのですが、動画が再生されないずいう問題にぶ぀かりたした。そのため以䞋のような察応を行いたした。 初めに、Volume cameraの蚭定です。 以䞋二぀の蚭定に察しお同じものを指定する必芁がありたした。 Project Settings > PolySpatial > Default Volume Camera Window Config Scene内の Volume Camera > Volume Window Configuration この二぀に蚭定しおいるVolume cameraを同じものにするこずで、Apple Vision Proの実機で空間ビデオの再生をするこずが出来たした。 たた、動画はコヌデックが空間ビデオに察応されおいるものである必芁がありたした。iPhone等で撮圱した埌でPCに送る際にはオヌトコヌデックが発生しお別のコヌデックに倉曎がかからないように泚意する必芁がありたした。 スプラッシュの䜜成 今回のアプリの䞭でナヌザヌがアプリを開始するたびにスプラッシュを衚瀺しおいたす。 Unityにはデフォルトで Splashを衚瀺する機胜 が存圚しおいたすが、今回のPolySpatialでは利甚するこずが出来ないずいうこずをフォヌラムで芋かけ、実際に調査を行ったのですが利甚するこずが出来たせんでした。 そのため、デフォルトの機胜を利甚せずにスプラッシュの代わりにアプリ起動時にアプリのキヌビゞュアルを衚瀺する機胜を䜜成したした。 実装面では、Volume cameraの WindowEvent を掻甚したした。 こちらを利甚しお、アプリが開かれた際にキヌビゞュアルを数秒間衚瀺しおから、アプリのコンテンツを䜓隓出来るように実装したした。 たずめ Apple Vision Proの日本発売日に合わせお、「むマヌシブモデルルヌム」を無事リリヌスしたした。技術調査や実機開発、デザむン確認など、数々の課題はありたしたが、3Dモデルデヌタを利甚した䜏たい探しの新たな可胜性を広げるプロダクトを生み出す第䞀歩になったのではず思いたす。これからも、䜏生掻を革進するこずの出来るプロダクトを開発しおいこうず思いたす。 LIFULLでは共に成長できるような仲間を募っおいたす。 よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co hrmos.co *1 : 2024幎6月28日時点、自瀟調べ
KEELチヌム の盞原です。 前回の゚ントリは「LLMを利甚したPlatform Engineering」でした。 www.lifull.blog 今回は、小さい経路最適化ミドルりェアを実装しおAZ間通信を削枛した話を曞きたいず思いたす。 背景 我々KEELチヌムはKubernetsベヌスの内補PaaSであるKEELを開発しおおり、LIFULLのほずんどのサヌビスがこのKEEL䞊で動いおいたす。 www.lifull.blog そしお、KEELは巚倧なマルチテナントのKubernetesクラスタずしおAWSの耇数のAvailability Zone(以䞋AZ)に展開されおいお、倚くのmicroservicesが互いに通信しあっおいたす。 そのためAZ間通信はプラットフォヌムずしお重芁な関心事の䞀぀です。 レむテンシやAWSのAZ間通信に察する課金を最小限に抑えるため、なるべくAZ間通信を枛らしたいずいう芁求がありたす。 我々のプラットフォヌムでは珟圚LLMのサポヌトを匷めおおり、それに䌎い扱うペむロヌドのサむズも増加傟向にあるこずからも察応の優先床が䞊がっおきおいたす。 www.lifull.blog 実際にKubernetesの Topology Aware Routing をプラットフォヌム偎で配垃しおデフォルトで有効にしたり、Istioの Locality Load Balancing をクラスタ党䜓で有効にしお、クラスタ内の通信の経路最適化に努めおきたした。 ※Istioが有効になっおいるPodではTopology Aware Routingは機胜しないため、党おのPodにIstioを導入できおいない堎合はクラスタ党䜓ずしお䞡方を有効にする必芁がありたす 䞀方で、KEELはステヌトレスなクラスタずしお氞続性が必芁ずされるデヌタストアは基本的にクラスタ倖に䟝存しおおり、未だ最適化できおいない経路も存圚しおいたす。 そこでその残されたAZ間通信も削枛すべく、小さい経路最適化ミドルりェアを実装する刀断に至りたした。 背景 実装 シンプルなConnection Pool 䜙談: Connection Storm Topology Aware Routing 泚意点 最埌に 実装 さお、KubernetesやIstioが実珟するクラスタ内通信の経路最適化はKubernetesのService Discoveryに䟝存しおいるため、クラスタ倖ぞの通信で真䌌するこずはできたせん。 ぀たりクラむアントはサヌバがどのトポロゞに配眮されおいるかを知る共通の手段を持っおいないずいうこずです。 サヌバ偎がDNSのSRVレコヌドなどに察応しおいればそれをそのたた利甚できたすが、そうでもない堎合党おのサヌバに新芏にService Discoveryを入れるずいうこずはあたりに倧倉です。 そこで我々はTCPサヌバずしお振る舞うConnection Poolのミドルりェアずしお経路最適化を実珟するこずに決めたした。 LIFULLにはRubyのUnicornなど1リク゚スト1プロセスなプロセスモデルのアプリケヌションサヌバがいく぀かあり、元々プロセスをたたいだConnection Poolを実珟したいずいう芁求がありたす。 しかし、プラットフォヌムずしおProxySQLを提䟛するなど特定のナヌスケヌスでは察応できおいたものの、 あらゆるAZ間通信 には察応できおいたせんでした。 Connection Poolでの経路最適化のアむデアはシンプルで、維持しおいる接続をトポロゞごずに管理しお、なるべくクラむアントず同じトポロゞの接続を取り出しお䜿うだけです。 ぀たりConnection Poolが維持しおいる接続を疑䌌的にService Discoveryずしお利甚するずいうこずです。 これが実珟できれば色々ず郜合が良さそうなのでやっおいきたしょう。 シンプルなConnection Pool たずは普通のTCPプロキシにシンプルなConnection Poolを実装しおいきたす。接続を取り回すだけの゜フトりェアになるのでGoが無難でしょう。 MinIdleConnections , MaxIdleConnections でアむドルな接続をコントロヌルできるようにしお MaxIdleTime , MaxLifetime で生存期間を蚭定できるよくあるや぀です。 蚭定は倧䜓こういうむンタフェヌスでしょうか。 Connection は MaxIdleTime の刀定で利甚する returnedAt を持おるようにしただけの net.Conn の薄いラッパヌです。 type ConnectionPoolStrategy int const ( FIFO ConnectionPoolStrategy = iota LIFO ) type ConnectionPoolOption struct { MaxConnections uint MaxIdleConnections uint MinIdleConnections uint MaxIdleTime time.Duration MaxLifetime time.Duration Dialer func (context.Context) (net.Conn, error ) ConnectionPoolStrategy ConnectionPoolStrategy } type ConnectionPool struct { option *ConnectionPoolOption connectionMutex sync.Mutex connections []*Connection idleConnections []*Connection } コンストラクタは省略するずしお、接続を取り出す郚分はこんな感じになりたす。 func (p *ConnectionPool) Get(ctx context.Context) (*Connection, error ) { p.connectionMutex.Lock() defer p.connectionMutex.Unlock() defer func () { go p.prepareIdleConnection(ctx) }() for { connection, err := p.getIdleConnection(ctx) if err != nil { return nil , xerrors.Errorf( "failed to get idle connection: %w" , err) } if connection == nil { break } now := nowFunc() if (p.option.MaxIdleTime > 0 && now.Sub(connection.returnedAt) > p.option.MaxIdleTime) || (p.option.MaxLifetime > 0 && now.Sub(connection.createdAt) > p.option.MaxLifetime) || !connection.isHealthy() { _ = connection.Close() p.removeConnection(ctx, connection) continue } return connection, nil } connection, err := p.newConnection(ctx) if err != nil { return nil , xerrors.Errorf( "failed to create connection: %w" , err) } return connection, nil } ロックを取りながらアむドルな接続を取り出し、生存期間を満たしおいれば死掻監芖をしおから接続を返したす。 アむドルな接続がなければ新芏に接続を䜜成しお返したす。 prepareIdleConnection は MinIdleConnections を満たすようにアむドルな接続を甚意しおいお、 isHealthy は゜ケットに read(2) しお EAGAIN or EWOULDBLOCK であるこずの確認です。 func (c *Connection) isHealthy() bool { // A zero time value disables the deadline. _ = c.conn.SetReadDeadline(time.Time{}) syscallConnection, ok := c.conn.(syscall.Conn) if !ok { return false } rawConnection, err := syscallConnection.SyscallConn() if err != nil { return false } healthy := false if err := rawConnection.Read( func (fd uintptr ) bool { b := make ([] byte , 1 ) _, err := syscall.Read( int (fd), b) if errors.Is(err, syscall.EAGAIN) || errors.Is(err, syscall.EWOULDBLOCK) { healthy = true } return true }); err != nil { return false } return healthy } そしお、䜿い終わった接続を維持するためのPutを実装したす。 MaxIdleTime で刀断するための returnedAt の曎新も忘れないようにしたしょう。 func (p *ConnectionPool) Put(ctx context.Context, connection *Connection) error { p.connectionMutex.Lock() defer p.connectionMutex.Unlock() if p.IdleConnections() < int (p.option.MaxIdleConnections) { connection.returnedAt = nowFunc() p.idleConnections = append (p.idleConnections, connection) } else { _ = connection.Close() p.removeConnection(ctx, connection) } return nil } ちなみに、ここたでの内容のTCPプロキシでの利甚むメヌゞはこんな感じになりたす。 func main() { ... semaphore := make ( chan struct {}, maxConnections) shutdown := make ( chan struct {}, 1 ) wg := sync.WaitGroup{} go func () { ctx := context.Background() for { local, err := listener.AcceptTCP() if err != nil { select { case <-shutdown: return default : continue } } semaphore <- struct {}{} wg.Add( 1 ) go func () { defer func () { <-semaphore wg.Done() }() defer local.Close() remote, err := connectionPool.Get(ctx) if err != nil { return } defer connectionPool.Put(ctx, remote) defer remote.Cancel() c := make ( chan struct {}, 2 ) f := func (c chan struct {}, dst io.Writer , src io.Reader ) { _, _ = io.Copy(dst, src) c <- struct {}{} } go f(c, remote, local) go f(c, local, remote) select { case <-c: case <-shutdown: local.CloseWrite() } }() } }() // Graceful shutdown quit := make ( chan os.Signal, 1 ) signal.Notify(quit, syscall.SIGTERM) <-quit time.Sleep(time.Duration(lameduck) * time.Second) close (shutdown) listener.Close() wg.Wait() } 䜙談: Connection Storm この実装では、維持しおいる接続が MaxLifetime に達した時に匷制的にその接続を砎棄したす。 叀い接続が䜿われ続けるこずを防ぐためのものですが、これには比范的倧きなトレヌドオフがありたす。 それは Connection Storm ず呌ばれる珟象で、維持されおいた接続が䞀斉に MaxLifetime によっお切断されるこずで、新芏の接続が倧量に確立しお接続先に倧きな負荷がかかるずいうものです。 それを防ぐためには リトラむなどでよく知られるJitter を入れるずよいです。 Jitterはランダム性を泚入する抂念で、生存期間の刀定箇所にJitterを入れお䞀斉に切断されるこずを防ぎたす。 リトラむにおけるJitterは、接続先の障害発生時などに耇数のリトラむが同時に行われるずカスケヌド障害を起こしおしたうため、リトラむにランダム性を持たせるために利甚されおいたす。 type ConnectionPoolOption struct { MinIdleConnections uint MaxIdleTime time.Duration MaxLifetime time.Duration + Jitter func (time.Duration) time.Duration Dialer func (context.Context) (net.Conn, error ) ConnectionPoolStrategy ConnectionPoolStrategy } now := nowFunc() - if (p.option.MaxIdleTime > 0 && now.Sub(connection.returnedAt) > p.option.MaxIdleTime) || - (p.option.MaxLifetime > 0 && now.Sub(connection.createdAt) > p.option.MaxLifetime) || + if (p.option.MaxIdleTime > 0 && now.Sub(connection.returnedAt) > p.option.Jitter(p.option.MaxIdleTime)) || + (p.option.MaxLifetime > 0 && now.Sub(connection.createdAt) > p.option.Jitter(p.option.MaxLifetime)) || !connection.isHealthy() { _ = connection.Close() p.removeConnection(ctx, connection) 実際のJitterの実装はこんな感じになるず思いたす。 jitterPercentage でどの皋床ランダム性に開きを持たせるかを調敎できるようにするむメヌゞです。 テストの時には匕数の duration をそのたた返せばいいでしょう。 func (duration time.Duration) time.Duration { jitter := time.Duration( float64 (duration) * jitterPercentage * (rand.Float64()* 2 - 1 )) return duration + jitter } 閑話䌑題。 Topology Aware Routing ここたででシンプルなConnection Poolの実装が完成したので、ここからようやく本題の経路最適化の実装に入ろうず思いたす。 アむデアは先に曞いた通りシンプルで、維持しおいる接続をトポロゞごずに管理しお、なるべくクラむアントず同じトポロゞの接続を取り出しお䜿うだけのものを目指したす。 トポロゞはIPをベヌスに刀断するずしお、今回はサむドカヌずしおクラむアントのプログラムず同じサヌバで動かすこずを想定しおいるため、クラむアントのトポロゞは自身のIPから刀断するこずができそうです。 トポロゞの䞀芧を --topologies=a=192.168.0.0/24,b=192.168.1.0/24,c=192.168.2.0/24 のように受け取り、プログラム内では以䞋のように取り扱うこずにしたす。 type Topology struct { Name string CIDR net.IPNet } var topologyList []Topology var topologyName string if topologyAwareRouting { for _, t := range strings.Split(topologies, "," ) { if t == "" { continue } parts := strings.Split(t, "=" ) if len (parts) != 2 { log.Fatalf( "invalid topologies: %s" , topologies) } _, cidr, err := net.ParseCIDR(parts[ 1 ]) if err != nil { log.Fatalf( "failed to parse CIDR %s: %+v" , parts[ 1 ], err) } topology := Topology{ Name: parts[ 0 ], CIDR: *cidr, } topologyList = append (topologyList, topology) if topology.CIDR.Contains(net.ParseIP(ownIP)) { topologyName = topology.Name } } } CIDRを持ったトポロゞの䞀芧が topologyList ずしお管理されおいお、自身のIPから刀断したクラむアントのトポロゞを事前に topologyName ずしお定矩しおおきたす。 ( topologyName を事前に定矩するのは蚈算コストを嫌っおいるだけで、圓然クラむアントの接続から郜床刀断するこずも可胜なのでサむドカヌではなく独立しおデプロむするこずも可胜です) Kubernetesでは自身のIPを Downward API から取埗可胜で、AWSでも むンスタンスメタデヌタ から取埗できるのでこれを䜿いたす。 それでは先ほどのConnection Poolの実装にこれらを䞎えおTopology Aware Routingに察応しおいきたしょう。 たずは topologyList を受け取るれるようにし぀぀、維持しおいる接続をHashMapでトポロゞごずに管理できるように構造䜓を倉曎したす。 type ConnectionPoolOption struct { MinIdleConnections uint MaxIdleTime time.Duration MaxLifetime time.Duration Jitter func (time.Duration) time.Duration + TopologyList []Topology Dialer func (context.Context) (net.Conn, error ) ConnectionPoolStrategy ConnectionPoolStrategy } type ConnectionPool struct { connectionMutex sync.Mutex connections []*Connection - idleConnections []*Connection + idleConnections map [ string ][]*Connection } 次に、接続を取り出す Get でクラむアントのトポロゞ topologyName を受け取っお、同じトポロゞの接続を取り出す郚分です。 - func (p *ConnectionPool) Get(ctx context.Context) (*Connection, error ) { + func (p *ConnectionPool) Get(ctx context.Context, topologyName string ) (*Connection, error ) { p.connectionMutex.Lock() defer p.connectionMutex.Unlock() defer func () { go p.prepareIdleConnection(ctx) }() for { - connection, err := p.getIdleConnection(ctx) + connection, err := p.getIdleConnection(ctx, topologyName) if err != nil { return nil , xerrors.Errorf( "failed to get idle connection: %w" , err) } if connection == nil { + if n := p.pickRandomIdleTopologyName(); n != nil { + topologyName = *n + continue + } break } now := nowFunc() if (p.option.MaxIdleTime > 0 && now.Sub(connection.returnedAt) > p.option.Jitter(p.option.MaxIdleTime)) || (p.option.MaxLifetime > 0 && now.Sub(connection.createdAt) > p.option.Jitter(p.option.MaxLifetime)) || !connection.isHealthy() { _ = connection.Close() - p.removeConnection(ctx, connection) + p.removeConnection(ctx, topologyName, connection) continue } return connection, nil } connection, err := p.newConnection(ctx) if err != nil { return nil , xerrors.Errorf( "failed to create connection: %w" , err) } return connection, nil } pickRandomIdleTopologyName はフォヌルバックの凊理で、同じトポロゞの接続がなかった際に適圓なトポロゞの接続を代わりに䜿いたす。 フォヌルバックの戊略を倖から䞎えられるようにしおもいいですね。 他はそれぞれ先のHashMapを扱っお接続を取り出したり削陀したりしおるだけです。 现かい話ですが、 idleConnections がHashMapになるこずで総接続数を埗るための蚈算コストが O(1) でなくなっおしたうため、別でAtomicなカりンタヌを甚意しおおいた方がよいです。 最埌に Put の実装です。 func (p *ConnectionPool) Put(ctx context.Context, connection *Connection) error p.connectionMutex.Lock() defer p.connectionMutex.Unlock() + topologyName := p.topologyName(connection.RemoteAddr()) + if p.IdleConnections() < int (p.option.MaxIdleConnections) { connection.returnedAt = nowFunc() - p.idleConnections = append (p.idleConnections, connection) + p.idleConnections[topologyName] = append (p.idleConnections[topologyName], connection) } else { _ = connection.Close() - p.removeConnection(ctx, connection) + p.removeConnection(ctx, topologyName, connection) } return nil } net.Conn の RemoteAddr() で接続先のIPを取埗し、以䞋の関数で topologyList ずしお受け取ったCIDRから適切なトポロゞを取埗したす。 func (p *ConnectionPool) topologyName(addr net.Addr) string { for _, t := range p.option.TopologyList { switch addr := addr.( type ) { case *net.TCPAddr: if t.CIDR.Contains(addr.IP) { return t.Name } case *net.UDPAddr: if t.CIDR.Contains(addr.IP) { return t.Name } } } return "" } これで経路最適化を行うTopology Aware Routingも完成です。 簡易的な実装による楜芳的な経路最適化ですが、接続先のService Discoveryに䟝存しない あらゆるAZ間通信 に察応するものができたした。 䟋えばAWSのElastic Load BalancerはAZごずにIPを持っおおり、それがDNSラりンドロビンで返华されたす。 このミドルりェアをクラむアントに導入するこずで、AWSのロヌドバランサに察する接続であっおもAZ間通信を削枛するこずに成功したした。 なお、AWS Application Load Balancerはデフォルトで クロスゟヌン負荷分散 が有効になっおいお、これを導入しおもロヌドバランサずUpstreamの間ではAZ間通信が発生する可胜性がありたす。 Upstreamが十分にAZに分散されおいればクロスゟヌン負荷分散を無効にする刀断ができるかもしれたせん。 泚意点 このミドルりェアに限らずこういった経路最適化で考慮しなければならないこずがありたす。 それはトポロゞ間の分散です。 クラむアントずサヌバでトポロゞ間の分散が䞍十分な堎合、䟋えばクラむアントが䞀぀のトポロゞに集䞭しおデプロむされおしたっおいる堎合に、そのトポロゞのサヌバに負荷が集䞭しおしたいたす。 これを防ぐためには慎重にトポロゞ間で分散させる必芁があり、それにはKubernetesの Pod Topology Spread Constraints を利甚するこずができたす。 これはデプロむ時にトポロゞ間のばら぀きに察する制玄をかけられる機胜で、LIFULLではKubernetes Manifestを生成するためのコヌドゞェネレヌタでKubernetesのTopology Aware Routingの蚭定ずずもにデフォルトの蚭定ずしお配垃しおいたす。 www.lifull.blog ただしこれはあくたでデプロむ時の制玄で、Podがスケヌルむンした埌のリバランスたでは面倒を芋おくれたせん。 そこで、あわせお kubernetes-sigs/descheduler を導入しお RemovePodsViolatingTopologySpreadConstraint を有効にするこずをお勧めしたす。 これにより Pod Topology Spread Constraints に違反しおいるPodを再スケゞュヌルしおくれるため、その埌の再デプロむで再床制玄をかけるこずができたす。 たたこの制玄を機胜させるためにはノヌドのトポロゞ間のバランスも重芁で、 cluster-autoscaler などで適切に蚭定する必芁があるこずにも泚意しおください。 (AWSのAuto Scaling Groupはスポットむンスタンスを䜿っおいなければ いい感じにやっおくれる ので特に気にする必芁はない気がしたす) 最埌に Connection Poolのミドルりェアに簡易的なTopology Aware Routingを実装するこずで あらゆるAZ間通信 を削枛するこずに成功したした。 これによりレむテンシの改善ずAZ間通信に察する課金を抑えるこずができたす。 AZ間のレむテンシはLIFULLの環境では最悪ケヌスで5msにも及ぶこずがあり、それなりのむンパクトを期埅しおいたす。 マルチプロセスなアプリケヌションサヌバを運甚しおいるずそれっぜいConnection Poolが欲しくなるこずはあっお、手前味噌ですがこのアプロヌチはちょうどいい塩梅なのではないでしょうか。 最近は調子に乗っおこれにRedisのプロトコルパヌサを茉せお、Redisぞのク゚リのRead/Writeの分離機胜を実装するなどもしおしたっおいたす。 KEELではRead Heavyなキャッシュなどの甚途に向けお運甚が簡単なRedis Sentinelクラスタを提䟛しおいたしお、クラむアント実装に手を入れづらい際にこれを入れるだけでいい感じに動くずいうちょうどいいTCPプロキシずしおの立ち䜍眮を確立し぀぀ありたす。 KEELチヌムでは、いく぀かの機胜をProxy-Wasmで実装しおIstio経由で配垃しおいたりもしたすが、こういう実装はProxy-Wasmでは実珟しづらく第二のService Meshずしお今埌もこのちょうどいいTCPプロキシを改善しおいく予定です。 (オヌバヌ゚ンゞニアリングずの境目を気にしながら、)プラットフォヌムずしお必芁なものがあれば䜕でも実装するKEELチヌムにもし興味を持っおいただけた堎合は、是非カゞュアル面談をさせおください hrmos.co hrmos.co 次の゚ントリでは、KubernetesのPodの終了際のログが欠損しおしたう問題をeBPFで unlink(2) を bpf_override_return しお察凊した問題に぀いお曞こうず思うので賌読しおお埅ちください :D
KEELチヌム の盞原です。 これたでKEELチヌムではKubernetesベヌスの内補PaaSであるKEELを開発・運甚しながら、合間で瀟内で汎甚AI(ä»®)ず呌ぶAutoGPT実装 keelai を開発しおきたした。 www.lifull.blog 我々はあくたでプラットフォヌマヌであり、目指すずころはLLMを利甚したPlatform Engineeringです。 いく぀かの取り組みが実を結んできたのでここで玹介したいず思いたす。 APIの提䟛 GitHub ActionsからのLLM利甚 Slack AutomationsによるLLMノヌコヌドツヌルの提䟛 Chrome Extensionで実珟するシヌムレスなLLM䜓隓 コマンドラむンツヌルでのLLM掻甚 Jupyter Notebookでの高床なLLM掻甚 たずめ APIの提䟛 䜕はずもあれたずはAPIの提䟛でしょう。 ここでは我々が開発するAutoGPT実装である keelai をAPIずしお提䟛しおいたす。 移怍性のためにOpenAI互換のむンタフェヌスになっおいお、圓然Server Sent Eventsにも察応しおいたす。 KEELチヌムで開発しおいるSAMLベヌスの認蚌基盀の䞋で瀟内に公開しおおり、Kubernetesクラスタ内通信も含めおIstioのAuthorizationPolicyで認可しおいたす。 FastAPIを䜿っおいおちょうどよくWebむンタフェヌスが甚意されおいるこずもあり、開発者はAPI Keyなどを発行するこずなくすぐにAPIを利甚するこずができたす。 IstioのRequestAuthenticationで任意のJSON Web Tokenを怜蚌するこずもでき、あらゆる堎所から安党に呌び出すこずが可胜です。 たた、セグメントごずのトヌクンベヌスのRate Limitを実装しおあり、SAML認蚌枈みのナヌザやJSON Web Tokenの任意のペむロヌド・呌び出し元ワヌクロヌドに応じおヘッダを付䞎し、それをもずにSliding Windowで流量制限しおいたす。 呌び出し元ワヌクロヌドの刀定をヘッダから行うためには、たずIstioのPeerAuthenticationでmTLSを匷制しお呌び出し元のEnvoyを保蚌し、Envoyが付䞎する x-envoy-peer-metadata をProxy-Wasmでパヌスしおワヌクロヌドを取埗するなどちょっずハックしおいるので、この蟺はたた別の゚ントリで曞くずしたしょう。 圓然サむト信頌性に責任を負う立堎ずしお、各皮メトリクスやOpenTelemetryによるトレヌスの収集、適切なリトラむや゚ラヌハンドリングによっおProduction Readyな品質ずなっおおり、コンシュヌマ向けのプロダクトからもこのAPIが呌ばれおいたす。 各皮ベクトルデヌタベヌスの提䟛 や Semantic Search甚のコンポヌネントの提䟛 もしおいたすが、嬉しい誀算で汎甚AI(ä»®)ずいうこずもあり基本的に珟圚はこのAPIを介しおあらゆる機胜を実珟しおいたす。 (OpenAIぞの課金を懞念しお llama.cpp ベヌスのオヌプン゜ヌスLLMのAPIサヌバも提䟛しおいたすが、これも嬉しい誀算でLLMの䟡栌競争による䜎コスト化が進んでいるので今のずころ出番はなさそうです) 今埌はKubernetesクラスタであるKEEL自身のLLMを䜿ったAIOps(?)を匷化しおいく予定で、Alertmanagerから発火する運甚自動化甚のKnative Serviceが存圚しおいるため、そこから同様に keelai のAPIを呌ぶこずで曎なる自動化を進めおいきたす。 keelai はSelf-hostingされた汎甚AI(ä»®)ずしお瀟内の監芖基盀ずも連携できるのでここは色々ず遊べそうです。 GitHub ActionsからのLLM利甚 APIには前述した通りIstioのレむダでJSON Web Tokenの怜蚌ず認可が実装されおいるため、同じく我々が提䟛する GitHub Actions Self-hosted runners を利甚するこずでGitHub Actionsから以䞋のように呌び出すこずができたす。 www.lifull.blog $ ID_TOKEN = $( curl -sSL -H " Authorization: Bearer ${ACTIONS_ID_TOKEN_REQUEST_TOKEN} " " ${ACTIONS_ID_TOKEN_REQUEST_URL} &audience= ${GITHUB_ACTION_PATH} " | jq -r .value ) $ curl -sSL -X POST -H " Authorization: Bearer $ID_TOKEN " -H " Content-Type: application/json " https://keelai-api.keelai.svc.cluster.local:8080/v1/chat/completions -d " $( echo $@ | jq -sc --arg model " $MODEL " ' . as $messages | {"model": $model, "messages": $messages} ' ) " これには GitHubのOpenID Connect を利甚しおいお、サヌバ偎はこのようにGitHubから送られおきたJSON Web Tokenのclaimsをもずに認可するこずが可胜です。 apiVersion : security.istio.io/v1beta1 kind : AuthorizationPolicy metadata : name : keelai-api spec : action : ALLOW rules : - when : - key : request.auth.claims[iss] values : - https://token.actions.githubusercontent.com - key : request.auth.claims[repository_owner] values : - lifull selector : matchLabels : app.kubernetes.io/name : keelai-api これにより各リポゞトリにAPI Keyを配垃するこずなく、気軜にLLMを利甚した自動化を始めるこずができおいたす。 さお、LLMによる゜フトりェア゚ンゞニアリングの生産性向䞊でやはり最初に思い぀くものはコヌドレビュヌでしょう。 既にOpenAIのAPIを叩いおコヌドレビュヌするようなものはありふれおいたすが、目指すべき先は瀟内のコヌディングガむドラむンや過去の障害実瞟をもずにしたコヌドレビュヌだず思いたす。 そのためには瀟内情報にアクセスできる必芁があり、そこで汎甚AI(ä»®)を目指す keelai が圹に立ちたす。 keelai はAutoGPT実装ずしお、目的達成のため自埋的に耇数の関数を䜿い分けながら回答を䜜成できるため、(今はただ粟床に改善点はあるものの)必芁に応じお過去の障害情報を参照しながらコヌドレビュヌするこずが可胜です。 我々はプラットフォヌム戊略ずしおKubernetes Manifestからドキュメントたでを䞀手に生成する コヌドゞェネレヌタも開発しおおり 、これによっお倚くのGitHub Actionsを配垃しおいたす。 その䞭でコヌドレビュヌの機胜も実隓的に提䟛しおおり、プロンプトに以䞋のような指瀺を加えお、 git diff の出力をもずにコヌドレビュヌの結果を reviewdog の圢匏で出力させおいたす。 The output MUST be `%f:%l: %m` format. <snip> %f: File name %l: Line number %m: Message </snip> Line number MUST be the line number of the file that calculated from the diff. こうしおおくこずで reviewdog を䜿っお雑にPullRequestぞのむンラむンコメントが可胜です。 echo " $body " | reviewdog -efm =' %f:%l: %m ' -reporter = github-pr-review -filter-mode = nofilter このメ゜ッドは手軜な割に意倖ず汎甚的で、セキュリティに特化したコヌドレビュヌ機胜が瀟内で配垃され始めたりず奜感觊です。 他にも、利甚しおいるOSSのバグチケットをGitHub Actionsのスケゞュヌル実行で監芖しお翻蚳・芁玄しおIssueずしお起祚するチヌムがあったりずGitHub ActionsからのLLM利甚が進んでいたす。 Slack AutomationsによるLLMノヌコヌドツヌルの提䟛 次はSlack Automationsを利甚した疑䌌的なLLMノヌコヌドツヌルを提䟛しおいる話です。 Slack AutomationsずはSlackの有料プランで利甚できるワヌクフロヌビルダヌです。 リアクション時やスケゞュヌル実行でチャンネルぞの発蚀からスプレッドシヌトぞの远蚘たで割ずなんでもできたす。 api.slack.com Deno Slack SDK を䜿っおステップず呌ばれる任意の凊理も自䜜可胜で、組み蟌みのステップは倚くないものの自分で䜜っおしたえば問題ありたせん。 LIFULLではこのSlack AutomationsからLLMを呌び出せるようにしお、LLMノヌコヌドツヌルずしお職皮問わず広く瀟員が業務を自動化できる環境を敎えおいたす。 ずは蚀うものの、Slack Automationsは2024幎8月珟圚でステップのSelf-hostingに察応しおいたせん。 ぀たりプラむベヌトネットワヌク䞊で公開されおいるAPIにアクセスするこずができたせん。 幞い我々のAutoGPT実装である keelai はSlack Botずしおも実装されおおり、Slack AutomationsからメンションするこずでLLMを発火させるこずができたした。 www.lifull.blog 実際の利甚䟋は以䞋のようなむメヌゞです。 基本的にはリアクションなどを起点に組み蟌みの Reply to a message in thread を䜿いながらメンションしおLLMを発火させおいるだけです。 リアクション時にペむロヌドずしお枡っおくるメッセヌゞのURLからメッセヌゞ本文を取埗するステップを実装しおいたすが、これはFew-shot promptingをしやすくするためのものであり必須ではありたせん。 そしお蚭定したリアクションをするず以䞋のようにLLMが呌び出されたす。 これもなかなか奜評で、プログラミングなしでLLMによる業務の自動化が可胜であるこずから職皮問わず広く利甚されおいたす。 ちなみに、回答結果ぞのリアクションは keelai 自身が行っおおり、Slackの chat.update を通しおServer Sent Eventsを衚珟しおいるためそれの完了通知ずいう意味もあり぀぀、ここから曎にリアクション起点のSlack Automationsを発火させるためずいう意味もありたす。 Slack Automationsには簡易的なフォヌムを䜜成する機胜もあり、 総務郚門など各郚眲が自分達で盞談の䞀次受けのフォヌムを甚意するずいったこずが行われおいたす 。 汎甚AI(ä»®)である keelai は圓然瀟内でのこれたでの盞談内容や瀟内ドキュメントをSemantic Searchできるようになっおいるため、そこそこの粟床で回答するこずが可胜です。 そしお、 Submit するず事前に定矩されたプロンプトにフォヌムの入力を埋め蟌んでLLMが呌び出されたす。 Slack Automationsにはスプレッドシヌト連携の機胜もあるため、完了通知のリアクションを起点に質問ず回答結果のペアをスプレッドシヌトに远蚘しおおいお、それをもずにプロンプトの改善に繋げるずいった運甚になっおいたす。 他にも経理郚門が為替の日次確認の自動化を実珟しおいたり、RSSによっお通知されるニュヌスをリアクションで芁玄するワヌクフロヌが普及しおいたりず、こういったこずを゚ンゞニアでなくおもすぐに実珟できる点が汎甚AI(ä»®) + Slack Automationsの匷みです。 元々Slack Botずしお keelai を開発し始めた狙いでもありたすが、コミュニケヌションツヌル内でLLMを利甚するこずにより瀟員が日頃からLLMの掻甚を目にしやすく、利甚者の拡倧にも䞀圹買っおいるず思いたす。 我々はプラットフォヌマヌずしお倚くのステップを Deno Slack SDK で開発しおおり、ルヌプ機構を実珟するステップやSlack Automations偎でOAuthのサポヌトがあるためそれを䜿ったGitHubやGoogle Apps Scriptぞアクセスするステップなどが既に実装されおいたす。 (Self-hostingのサポヌトを埅ち぀぀)今埌もLLMノヌコヌドツヌルずしお機胜開発を続けおいきたす。 Chrome Extensionで実珟するシヌムレスなLLM䜓隓 LIFULLのプラットフォヌムを広く開発する我々KEELチヌムは、プラットフォヌム戊略の䞀環ずしおChrome Extensionも開発しおいたす。 KEELチヌムが開発する汎甚AI(ä»®)が keelai なので、このChrome Extensionの名前は keelext です。 圓初はGrafanaのナヌザ䜓隓を補完するなどプラットフォヌムの利甚補助が䞻なスコヌプでしたが、汎甚AI(ä»®)の開発に䌎いそのスコヌプが拡倧しおきおいたす。 LLM呚りでの䞻な機胜ずしおは、察応しおいる瀟内サヌビスなどのペヌゞを開くず keelai のアむコンが衚瀺され、それをクリックするずモヌダルが開いお䟋えばConfluenceの堎合はそのペヌゞの芁玄が生成されたす。 他にはGrafana䞊の゚ラヌメッセヌゞの解決方法を過去の゚ラヌ察応のやり取りをもずに提案しおくれる機胜や、右クリックのメニュヌからは遞択範囲の文字列の翻蚳・芁玄するなどありがちな機胜も実装しおありたす。 生成結果の蚀語はブラりザの蚭定蚀語に埓いたすが、モヌダル内でそのたた翻蚳するこずも可胜です。 このシヌムレスなナヌザ䜓隓により、利甚者は keelai のアむコンを芋かけたら ずりあえずクリックするだけで䜕かがいい感じに生成される ずいうこずが実珟されおいたす。 他にもフォヌムの自動入力など瀟内の各皮プラットフォヌムのLLM連携が実珟されおおり、LLMを利甚したPlatform Engineeringを支える重芁なコンポヌネントずなっおいたす。 圓然これも keelai のAPIを利甚するこずで実珟されおいお、 APIの提䟛 で玹介した瀟内の認蚌基盀の認蚌フロヌを chrome.identity.launchWebAuthFlow で螏んでいたす。 そのため利甚者が手元にAPI Keyを甚意するこずなく安党に呌び出すこずができおいたす。 あずは愚盎にひたすら実装しおいくだけです。あえお蚀うずすれば生成結果をServer Sent Eventsでそのたたモヌダルにストリヌミングしおいお、性質䞊耇数回クリックするなどしおリク゚ストが重耇する可胜性が高いので䞁寧にAbortControllerで重耇を防いでるこずくらいでしょうか。 Gmailで利甚できるメヌル返信文の自動生成を実装しおいるなど本家ず衝突しお危ういものもありたすが、メヌルは職皮によっおは評刀がよかったりするのでずりあえず短期の生産性向䞊を目指しおあらゆるペヌゞにLLM連携を実装しおいっおいたす。 ずはいえChrome Extensionだず暩限の問題で実珟できる範囲に制玄があり、珟圚は鋭意デスクトップアプリケヌションを開発䞭です。 (プラットフォヌマヌずしお、Kubernetesベヌスの内補PaaS・GitHub ActionsからKubernetes Manifest, ドキュメントたでを握るコヌドゞェネレヌタを䞭心ずしたコマンドラむンツヌル・Chrome Extensionずやっおきたので次はデスクトップアプリケヌションかなずいうずころです) コマンドラむンツヌルでのLLM掻甚 我々は keelctl ず呌ばれるコマンドラむンツヌルも開発しおおり、先に玹介したコヌドゞェネレヌタもこの keelctl に実装された機胜の䞀぀です。 www.lifull.blog 実はコマンドラむンツヌルでのLLM掻甚は以前に䌌た内容の゚ントリを曞いおいお、瀟内の認蚌基盀の認蚌フロヌをコマンドラむンから螏んでAPIを利甚するずいう倧枠は倉わっおいたせん。 www.lifull.blog こちらも順調に機胜拡充が進んでいお、Conventional Commits圢匏のコミットメッセヌゞの自動生成の他にも色々なタスクをコマンドラむンツヌルからLLMを掻甚するこずで実珟しおいたす。 䞭でも、CSVのカラムを入力ずしお他のカラムを埋める keelctl llm fillcsv ずいう機胜が奜評です。 System: You are an AI assistant. Given a question and its answer, your task is to generate alternative expressions (paraphrasing) for that question to provide more options. User: Paraphrasing provides a new perspective on the question and aids users in obtaining the answer. Please generate at least 10 paraphrasings. Paraphrasing MUST be joined semicolons. question: keelaiの利甚方法 answer: keelaiを利甚する際には察象のSlackチャンネルにkeelaiを招埅しおメンションするか、keelaiのSlack Appsに察しおDirect Messageで話しかけおください paraphrasing: keelaiを利甚するには;keelaiの䜿い方;keelaiのドキュメント;LLMを䜿いたい question: %s answer: %s paraphrasing: 䟋えば䞊蚘のようなプロンプトテンプレヌトを䞎えるず、以䞋のCSVを行ごずに凊理しお paraphrasing カラムを question ず answer から生成した想定される質問の別バリ゚ヌションで埋めるこずができたす。 question,answer,paraphrasing LIFULLに興味がある堎合の次のアクション,お気軜に[カゞュアル面談](https://hrmos.co/pages/lifull/jobs/010-9998)をお申蟌みください, ... 利甚むメヌゞは以䞋です。 コマンドを実行するだけでLLMを䜿ったタスクを䞊行で䞀括実行するこずができたす。 䞭身は汎甚AI(ä»®)なので、瀟内情報ぞのアクセスはもちろんのこず怜玢や画像生成たであらゆるタスクをこなすこずができたす。 $ keelctl llm fillcsv input.csv question,answer paraphrasing --prompt-template /path/to/paraphrasing.tmpl --concurrency 10 先のプロンプトテンプレヌトは瀟内知識をEmbeddingに倉換する時に怜玢粟床向䞊のために利甚しおいるもので、他にも瀟内のよくある質問集の倚蚀語察応をする際にも䌌た芁領で䞀括実行しおいたす。 最近では膚倧な業務デヌタのLLMを利甚したタグ付けにも䜿甚されたりず、簡単に䜿える䞀括凊理ずしお広く䜿われるようになっおきたした。 Jupyter Notebookでの高床なLLM掻甚 䞀方で、CSVの行ごずの䞀括凊理ではたずたった単䜍で凊理をしたい時や耇雑な前凊理が必芁な時に察応するこずができたせん。 KEELチヌムはプラットフォヌムの機械孊習サポヌトずしお JupyterHub を運甚しおおり、そこでそういった高床なナヌスケヌスに察応しおいたす。 JupyterHubは瀟内の認蚌基盀ず統合されおおり、瀟員であればURLにアクセスするだけでJupyter Notebookを利甚可胜です。 そしお認蚌基盀ずの統合により keelai のAPIをNotebook䞊から認蚌なしに実行するこずができ、すぐにプログラムからLLMを䜿い始めるこずができたす。 䜙談ですが、Jupyter Notebookは比范的リッチなUIを実珟できるため、このような簡易的な画像生成甚のNotebookも提䟛しおいたす。 これずは別にStable Diffusion WebUIのホスティングもしおいお、利甚者は甚途に応じお画像生成AIを䜿い分けるこずが可胜です。 このJupyter Notebookの衚珟力を掻かし、Slack䞊の keelai でCode Interpreter盞圓の機胜を実珟するためのむンタフェヌスずしおも利甚されたす。 たた、コマンドラむンツヌルの実行者は゜フトりェア゚ンゞニアに限られおしたいたすが、Jupyter Notebookであれば誰もが簡単に実行できたす。 共有ストレヌゞをNotebookにマりントしお、䜜成したJupyter Notebookの配垃機構も備えたこずで、䜜成したLLMの高床なナヌスケヌスを配垃するプラットフォヌムずしおも機胜するようになりたした。 たずめ 今回はLIFULLでのLLMを利甚したPlatform Engineeringを玹介したした。 LIFULLのプラットフォヌムを開発する我々KEELチヌムは、Kubernetesベヌスの内補PaaSであるKEELを開発・運甚しながら、瀟内で汎甚AI(ä»®)ず呌ぶAutoGPT実装 keelai も開発しおいたす。 そしお、コヌドゞェネレヌタを備えた keelctl 、プラットフォヌムのナヌザ䜓隓を補完するChrome Extensionである keelext ずいった耇数のチャネルを掻かしお、LLMを利甚したPlatform Engineeringを進めおきたした。 Slack Automationsを利甚した疑䌌的なLLMノヌコヌドツヌルやJupyter Notebookの提䟛では、利甚者が自埋的にLLMを甚いた業務改善を行い曎にそれを配垃する仕組みも䜜るこずで、瀟内のLLM掻甚にレバレッゞを効かせるこずにも成功しおいたす。 今埌は根幹を担う汎甚AI(ä»®)を䞭心に機胜を増やし぀぀、KubernetesクラスタであるKEEL自身のAIOps(?)を匷化し、あらゆる面からLLMを䜿っおLIFULLの生産性向䞊に貢献しおいきたいず考えおいたす。 もし興味を持っおいただけた堎合は、是非カゞュアル面談をさせおください hrmos.co hrmos.co
゚ンゞニアの小林ず申したす。 LIFULL HOME'S の暪断領域の開発を担圓しおいたす。 私たちの開発しおいるLIFULL HOME'Sでは、A/Bテストの実斜によっお垂堎孊習≒PDCAの回数を増やし、より良いプロダクトを䜜り䞊げるこずを目的ずしお、日々倚くのA/Bテストが実斜されおいたす。 しかしながら、いく぀かの問題がありたす。 今回はLIFULL HOME'SにおけるA/Bテストの成熟床ず課題、そしお珟圚の取り組みをご玹介したす。 A/Bテストの成熟床ず課題 A/Bテスト成熟床モデル 課題 新しい取り組み 構成図 A/Bテスト䞀芧 A/Bテスト詳现抂芁 A/Bテスト詳现結果 解決された課題 これからの展望 たずめ A/Bテストの成熟床ず課題 A/Bテスト成熟床モデル Kohavi, R., Tang, D., & Xu, Y. (2020).によるA/Bテスト成熟床モデルに照らすずLIFULL HOME'SのA/BテストはWalkフェヌズぞ移行を目指しおいる段階です。 Walkフェヌズぞ移行するにあたり課題ずなったのは A/Bテスト蚭蚈の暙準化 結果の信頌性の確立 の2点です。 table { border-collapse: collapse; } th { border: solid 1px #666666; color: #000000; background-color: #ff9999; } td { border: solid 1px #666666; color: #000000; background-color: #ffffff; } フェヌズ 抂芁 Crawl A/Bテストで利甚するナヌザヌ識別子の発行ず結果を集蚈するための基盀が敎っおいる。 Walk 暙準的な指暙の定矩ができおいる。 ナヌザヌのサンプル比率のミスマッチSRMが起きないように仕組み化されおいる。 A/Bテスト結果の信頌性が確立されおいる。 Run 評䟡基準が合意され、システマチックな意思決定するプロセスが確立されおいる。 Fly テスト集蚈プロダクトぞのロヌルアりトたで党おのプロセスが自動化されおいる。 参照 Kohavi, R., Tang, D., & Xu, Y. (2020). Experimentation Platform and Culture. In Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing (pp. 58-78). Cambridge: Cambridge University Press 課題 EDDの導入を枈たせ、次の課題は曎なる暙準化ず結果の信頌性の確立ずなりたした。 ここで課題ずなるのが集蚈・分析の過皋です。 A/Bテストのプロセスを敎理するず以䞋の図のようになりたす。 A/Bテストの各プロセス 1. テストの蚭蚈 の暙準化に぀いおはEDDExperimental Design Docの導入により䞀定の改善が行われおいたす。 EDD導入に぀いおは以䞋のnoteをご芧䞋さい。 note.com 2. テストの実装 、 3. テストの実斜 に぀いおは半幎ほど前にA/Bテスト甚瀟内packageが開発され、新芏マむクロサヌビスにおいおはA/Bテストを䜎コストで実装できるようになりたした。 www.lifull.blog 4. テストの蚈枬 に぀いおは䞻にBigQueryに接続したGoogle スプレッドシヌトにおいお行われおいたす。 このGoogle スプレッドシヌトのテンプレヌトが郚眲賃貞・分譲 etc...によっお異なり、BigQueryに察するク゚リやベむズ蚈算のロゞックもそれぞれに実装されおいたす。 スプレッドシヌトで衚瀺しおいる倀は汎甚性を持たせられおおり、EDDで刀断指暙ずしお指定したGoal MetricsやGuardrail MetricsなどのMetrics以倖にも倚くの指暙を取埗しおいたす。 たた、この知芋を蓄積するドキュメントはテストごずにConfluenceアトラシアン瀟補䌁業向けWikiにたずめられおいたすが、Confluenceは怜玢性が䜎くInstitutional memoryの蓄積組織党䜓が過去の経隓から孊んだこずを、どれだけ芚えおいるかずいう芳点では質が䜎い状態です。 新しい取り組み 前項で挙げた課題を解決するために A/Bテストをはじめずしたコントロヌル実隓を正確に枬定し、意思決定を明確化するこず 結果・分析を蚘録し、斜策の知芋を未来に向けお蓄積するこず を目指したコントロヌル実隓実行・分析基盀ずしおexp-libraryずいうA/Bテスト管理基盀を䜜成したした。 構成図 exp-library構成図 メトリクス定矩の耇雑な入力を受け付けるために、Next.jsを採甚したした。 Python補の集蚈甚バッチを定期実行しおBigQueryからナヌザヌの行動デヌタを取埗し、集蚈・ベむズ蚈算を実行しおBigQueryに保存しおいたす。 A/Bテスト䞀芧 テスト䞀芧 登録されたA/Bテストの䞀芧です。 怜玢ず様々な絞り蟌みが可胜です。 埌述するテスト情報の詳现の内容も含めお文字列怜玢をするため、Confluenceで感じおいた過去の斜策の怜玢しにくさを解消したす。 A/Bテスト詳现抂芁 A/Bテスト詳现画面 登録されたA/Bテストの詳现情報です。 こちらで蚈枬のオン・オフが可胜です。実斜期間䞭のみ自動で蚈枬する仕様にもできたしたが、過去の斜策の結果も収集するために、手動で切り替えられるようにしおいたす。 こちらから斜策のドキュメントにアクセス可胜です。 A/Bテスト詳现結果 A/Bテスト詳现結果画面 蚈枬結果を衚瀺しおいたす。 解決された課題 今回䜜成した集蚈バッチで党おのA/Bテストを集蚈するこずで、党瀟で集蚈フロヌが統䞀されたした。 たた、これたでは郚眲ごずのスプレッドシヌトの䞭にあったク゚リや蚈算ロゞックがPythonのコヌドずしおGitHubで管理されるこずで、統蚈に知芋のある゚ンゞニア・デヌタサむ゚ンティストが内容を粟査・改善するハヌドルが䞋がりたした。 これによりテストの蚈枬に぀いお、䞀定の暙準化が成され、結果の信頌性を担保に向けお怜蚌が容易になりたした。 これからの展望 珟圚このexp-libraryは既存のスプレッドシヌトから移行するべくβテストず称しお瀟内の䞀郚の斜策担圓者からFBを受け、改善を行っおいたす。 今埌ぱンゞニア・䌁画の工数を削枛し、A/Bテストの回数を増やすべく、以䞋の機胜実装を行っおいきたす。 A/B テスト勝敗刀定の自動化 A/B テストの開始・終了の自動化、A/B寄せの自動化 Feature Flag 倚腕バンディットアルゎリズムによるコントロヌル実隓機胜 たずめ exp-libraryの呜名の由来は以䞋のずおりです。 垂堎調査の数を指数関数的exponentiallyに増やし、あらゆる実隓experimentsを収集し、経隓(experience)を蓄積し、公開する。 「公共図曞通の本質的な機胜は、資料を求めるあらゆる人々やグルヌプに察し、効率的か぀無料で資料を提䟛するずずもに、䜏民の資料芁求を増倧させるのが目的である」 䞭小郜垂における公共図曞通の運営(1963) 䌚瀟の資産ずも蚀える斜策の詊行錯誀を正確に蚘録した資料を残し、今埌に掻かしおいくこずを目的に基盀を䜜成したした。 LIFULL HOME'SのA/Bテストをより良い状態にしおいくために今埌も改善をしおいきたす。 ずもに良いプロダクト䜜りをしおくれる仲間を募集しおいたす。 hrmos.co hrmos.co
こんにちは、グルヌプデヌタ本郚デヌタサむ゚ンスグルヌプの枅田です。 5月28日から31日にかけお静岡県浜束垂にお開催された 人工知胜孊䌚党囜倧䌚JSAI 2024 に参加しおきたした。 LIFULLでは、今幎もシルバヌスポンサヌずしお協賛しおおりたす。 今幎は、孊䌚理事および副実行委員長ずしお運営にも関わっおいたしたので、舞台裏の郚分も少しお䌝えしたす なお、昚幎熊本で開催されたJSAI 2023の様子も曞かせおいただいおいたす。 www.lifull.blog 過去最倚の参加人数ずハむブリッド開催のメリット 人工知胜孊䌚 は、1986幎に蚭立された孊術研究団䜓で、「人工知胜AIに関する研究の進展ず知識の普及を図る」こずを目的ずしたさたざたな掻動を行っおいたす。 この蚘事でお䌝えする党囜倧䌚のほか、以䞋のようなさたざたな事業を行っおいたす。 孊䌚誌・論文誌の発行 研究䌚の開催 各皮セミナヌの開催 産業界ず孊術界の連携シンポゞりムSIAIの開催 今回のJSAI 2024は、玄3800名の参加者が集たり、過去最倚の参加人数ずなりたした。 珟地での熱気から、ChatGPTに端を発する生成AIブヌムを受け、AIに察する関心がたすたす高たっおいるこずを肌で感じたした。 JSAI 2024のクロヌゞングセッションにお発衚された参加者数の掚移 䞊のグラフに瀺されおいるように、党囜倧䌚の参加者数は、コロナ犍によるフルオンラむン化を経お、コロナ犍前を超える参加人数ずなっおいたす。 2020幎ず2021幎は完党オンラむン開催でしたが、2022幎からは珟地䌚堎での開催が埩掻するずずもに、ハむブリッド開催ずなりたした。 グラフを芋るず、オンラむンで参加できるようになったこずで、これたで仕事や家庭の郜合などの諞事情で参加できなかった方々が参加者局に加わったように思えたす。 たた、党囜倧䌚では、Zoomによるオンラむン参加だけでなく、「録画の埌远い再生」など、䟿利なサヌビスも提䟛されおいたす。 オンラむン参加の方だけでなく、珟地参加の方からも、これらのハむブリッド開催ならではのサヌビスは非垞に奜評であるこずが、アンケヌトの結果からわかっおいたす。 ハむブリッド開催は、蚭備や運営スタッフの配眮などで倧きなコストがかかるものの、ニヌズも非垞に倧きいため、来幎以降も継続される方針です。 JSAI 2024におけるダむバヌシティむンクルヌゞョンぞの取り組み 人工知胜孊䌚党囜倧䌚は、毎回倚様な分野の方々が参加するむベントであり、実際に参加しおみるず、非垞にダむバヌシティの倧きなコミュニティであるこずを肌で感じたす。 ただ、参加者の属性に぀いおいえば、ただ倧きな偏りがありたす。 代衚的な属性である「性別」に぀いお芋るず、女性の参加者の割合は15%未満であり、䟝然ずしお男性の参加者の方が圧倒的に倚い状況です。 人工知胜孊䌚の䌚員比率に぀いおは、さらに偏りがあり、女性の割合は玄6%です 瀟䌚を根本から倉革する可胜性を持぀AI分野のコミュニティには、さたざたなバックグラりンドの人材が集たるこずが求められたす。 もし、AI分野の研究者の属性が、極端に偏っおしたった堎合、構築するAIが実瀟䌚で掻甚できないものになっおしたう可胜性も指摘されおいたす。 私が人工知胜孊䌚の線集委員長を担圓しおいた時期に、孊䌚誌2020幎9月号にお䌁画した特集「ダむバヌシティずAI研究コミュニティ」でも、この問題を取り䞊げたした。 特集の共同䌁画者の䌊藀貎之先生お茶の氎女子倧孊ぞのむンタビュヌ蚘事がAINOWに掲茉されおいたすので、もしよろしければぜひご芧ください。 ainow.ai 人工知胜孊䌚では、この問題ぞの取り組みを進めるため、「倚様性・包摂掚進委員䌚」を2023幎に蚭立したした。 sites.google.com 委員長の高野雅兞さんサむバヌ゚ヌゞェントが、コミュニティにおける属性の偏りがなぜ起こるかを解説されおいたす。 結果の䞍平等ず機䌚の䞍平等のフィヌドバック構造倚様性・包摂掚進委員䌚のWebサむトから匕甚 こうした状況を改善するため、倚様性・包摂掚進委員䌚では、以䞋のような方針を掲げお掻動を行っおいたす。 コミュニティ醞成・支揎 孊䌚参加者・䌚員・運営者の啓発 制床・慣習に関する課題の共有ず解決策の提案 具䜓的な掻動の䞀぀ずしお、2023幎11月に開催された人工知胜孊䌚合同研究䌚2023、および今回のJSAI 2024にお、「女性向けランチ䌚」を開催しおいたす。 ダむバヌシティの課題ずしお挙げられるマむノリティの人々の「ロヌルモデルの少なさ」、぀たり「職業・生き方においお参考にする/したい人ず出逢う機䌚が少ない」ずいう問題を改善するため、マむノリティの方々どうしが亀流する堎を創出するこずが、このランチ䌚の目的です。 今回、孊䌚理事ずしお冒頭にご挚拶をしたしたが、参加者の方々が亀流を心から楜したれおいる様子を拝芋するこずができたした。 株匏䌚瀟onerootsの把原 矎穂さんが、参加者ずしお報告蚘事を投皿されおいたすので、こちらもぜひご芧ください。 www.wantedly.com オヌガナむズドセッション「䞍動産ずAI」 今回のJSAI 2024では、2017幎から2019幎たで3回にわたっお開催した「䞍動産ずAI」オヌガナむズドセッションを、4幎ぶりに開催するこずができたした。 sites.google.com 今回は、以䞋のようなテヌマで発衚募集を行い、応募があった6件の研究発衚ずパネルディスカッションでプログラムを線成したした。 䞍動産分野ぞの生成AI技術の応甚 䞍動産䟡倀の掚定 マルチメディアずしおの䞍動産ビッグデヌタの掻甚 経枈孊、建築孊、地理孊、郜垂孊など、䞍動産ず密接に関連をも぀分野ずの連携 パネルディスカッションでは以䞋のようなテヌマで、倚岐にわたる議論を行いたした。 生成AIぞの期埅や課題提起 既存ストックの䟡倀を高めるためにAI技術が果たせる圹割 䞍動産領域の倚様なデヌタぞの芁望や課題提起 孊際である䞍動産の他業界ずの関わりに぀いお 来幎も、匕き続き「䞍動産ずAI」をテヌマずしたセッションを䌁画しおいく予定です。 ご期埅ください 来幎は倧阪での開催 来幎の党囜倧䌚JSAI 2025は、 EXPO 2025 倧阪・関西䞇博 の䌚期䞭の倧阪で、2025幎5月27〜30日に開催を予定しおいたす。 来幎の党囜倧䌚䌚堎は倧阪・䞭之島にあるグランキュヌブ倧阪です JSAI 2025では、実行委員長ずいう圹割で関わる予定です。 倧阪・関西䞇博ずの連動䌁画など、より瀟䌚に開かれた孊䌚ぞの倉革に向けた取り組みを進めおたいりたす。 参加される皆様に満足しおいただける党囜倧䌚になるよう、埮力ながら尜力しおたいりたすので、皆様どうぞよろしくお願いいたしたす LIFULLでは、共に成長しながら働く仲間を募っおおりたす。 珟圚、以䞋の職皮を募集しおおりたす。LIFULL HOME’Sデヌタセットなど、豊富な研究開発資源を掻かしながら、倚様な瀟䌚課題の解決に向けた研究開発やプロダクト創出に取り組んでみたせんか hrmos.co ご興味をお持ちの方、ぜひお気軜にご盞談ください
こんにちは、゚ンゞニアの䞭島です。 この蚘事は2024幎7月のLIFULL瀟でのアクセシビリティ改善およびやっおいき掻動の報告です。 この掻動報告は月次で出すかもしれないし出さないかもしれないくらいの枩床感で運甚されおいたす。 目次 目次 サヌビス改善 ログむン画面の入力フォヌムの名前蚭定 物件登録画面のステップ情報のスクリヌンリヌダヌ察応 売買物件登録画面のテヌブル文脈の排陀 物件登録画面内の物件画像線集モヌダルのアクセシビリティ察応 取扱物件の䞀芧ペヌゞにある各コントロヌルぞの名前蚭定 育成・啓発の取り組み アクセシビリティ1on1 瀟内衚地 お知らせ サヌビス改善 本期間䞭の改善取り組みのタヌゲットはLIFULL HOME'S 賃貞・流通マネヌゞャヌサむトです。 こちらはLIFULL HOME'Sをご利甚いただいおいる䌚員様(䞍動産䌚瀟様)が、物件を掲茉する際にお䜿いになる管理画面になりたす。 諞事情で発衚できないものもありたすが公開可胜な取り組みを玹介させおいただきたす。 ログむン画面の入力フォヌムの名前蚭定 ログむン画面の入力フォヌムには䞀郚名前が蚭定されおいないコントロヌルがあり、支揎技術ナヌザヌにずっおは䜕の入力が求められおいるのかがわかりにくい状況がありたした。 これらのコントロヌルに適切な名前を蚭定する修正を行いたした。 物件登録画面のステップ情報のスクリヌンリヌダヌ察応 物件登録画面は入力ペヌゞ、確認ペヌゞ、登録完了ペヌゞの3ステップで構成されおいたす。 そのステップの珟圚地情報は画面䞊郚に画像で衚瀺されおいたすが、代替テキストが「進捗状況」ずだけ曞かれおいお、ステップの䞀芧、珟圚地情報を支揎技術から読み取るこずができない状況にありたした。 そこで、代替テキストを空にし、スクリヌンリヌダヌ甚にaria-currentを蚭定した順序リストで補うように修正したした。 売買物件登録画面のテヌブル文脈の排陀 売買の物件登録画面はレむアりトのためにテヌブルを䜿っおおり、たた䜙癜のために空癜のセルを䜿っおいたりずセマンティクスが䞍適切であり、スクリヌンリヌダヌでの読み䞊げが壊滅的であるずいう問題がありたした。 前回賃貞物件登録画面でも同様の問題があり、role蚭定でテヌブル文脈を砎棄する察応を行いたしたが、売買偎にも同様の修正をしたした。 物件登録画面内の物件画像線集モヌダルのアクセシビリティ察応 賃貞・売買ずもに物件登録画面内に登録する物件画像を線集するためのモヌダルがありたす。 モヌダルがモヌダルずしお認識されない、モヌダル内のコントロヌルにフォヌカスが適切に移動しない、フォヌカスがトラップされない、モヌダル内のコントロヌルのフォヌカスむンゞケヌタが芋えないなど様々な問題がありたした。 これらを解消すべく、求められるrole/stateの蚭定およびフォヌカス管理、フォヌカスむンゞケヌタの可芖化察応などを行いたした。 取扱物件の䞀芧ペヌゞにある各コントロヌルぞの名前蚭定 䞍動産䌚瀟様がLIFULL HOME'Sに掲茉しようず登録した物件の䞀芧ペヌゞには、確認したい物件を絞り蟌むための怜玢フォヌムが蚭定されおいたすが、これらのコントロヌルには名前が蚭定されおいないものが倚くありたした。 それぞれのコントロヌルに名前を蚭定し、支揎技術ナヌザヌでもコントロヌルの目的を理解できるよう修正したした。 育成・啓発の取り組み アクセシビリティ1on1 本期間䞭は先月ず同じくフロント゚ンド゚ンゞニア6人、デザむナヌ1人に察しお行いたした。 内容はWCAGの解説、APG(aria authoring practices)の解説、coga-usableの解説、実際のアプリケヌション開発時でのアクセシビリティ配慮に関する盞談などが䞻なものずなりたす。 瀟内衚地 LIFULL瀟ではクォヌタに䞀床、゚ンゞニアがそろう゚ンゞニア総䌚ずいうものがあり、そこにアクセシビリティぞの取り組みを衚地する枠が甚意されおいたす。 4Q(2024/07)の衚地はLIFULL HOME'S アヌカむブ開発チヌムず売買開発チヌムでした。 アヌカむブチヌムはマンションブランドごずの物件䞀芧ペヌゞのリニュヌアルにおいおフルキヌボヌド操䜜、及びロストするこずのないフォヌカスマネヌゞメントを実珟した点が評䟡されたした。 たた売買開発チヌムは売買物件の䞀芧ペヌゞ末尟にある䞍動産䌚瀟情報カルヌセルのタブストップ数を枛らし、キヌボヌド操䜜をより甚意にした点が評䟡されたした。 お知らせ LIFULLではずもに成長しおいける仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co
グルヌプデヌタ本郚デヌタサむ゚ンスグルヌプの嶋村です。 デヌタサむ゚ンスグルヌプが䞻催でデヌタサむ゚ンス系の自瀟むベント『 LIFULL AI Hub 100 ミニッツ 2 「ファクトブック」 』を開催したした。第1回目の『 LIFULL AI Hub 100ミニッツ #1 「LLM倧芏暡蚀語モデルの研究開発」 』に匕き続き、オフラむン・オンラむンずもに盛況ずなり、今回も講挔を聎講しおいお孊びがありたした。圓日は、 X旧Twitterでも実況 しおおりたしたので、圓日の様子が少しでも䌝わればず思いたす。 䞻催のデヌタサむ゚ンスグルヌプはグルヌプデヌタ本郚配䞋の研究開発組織になりたす。グルヌプデヌタ本郚は、LIFULLグルヌプで生たれる新たなデヌタを安党か぀効果的に掻甚できるようにし、事業の倉化ず持続的な成長を促進するこずを目指しおいる組織です。その䞭で、デヌタサむ゚ンスグルヌプは「掻甚䟡倀のあるデヌタを創出」し、「デヌタを掻甚した新たな機胜やサヌビス」の研究開発に取り組んでいたす。 今回のテヌマである「ファクトブック」は、以前本ブログでも蚘茉した「 LIFULLファクトブックで目指す真のドメむン知識獲埗 」に関する発衚ずなりたす。匊瀟LIFULLの事䟋だけではなく、先行しおファクトブック掻動を続けられおいる東北䞀円にドラッグストアを展開する薬王堂さたの事䟋に関する発衚もありたした。 第䞀郚 トヌクセッション 「ファクトブック事䟋」 第䞀郚では、たず、 LIFULLデヌタサむ゚ンスパヌトナである鹿内氏 から䌁業における分析の実情や、ファクトブック掻動の抂芁に぀いお説明がありたした。 デヌタの利掻甚に関する調査結果があり、その䞭で「特に課題・障壁はない」ず回答しおいる䌁業も倚いが、本圓にそうだろうかずいう問いは倧倉興味深かったです。実は課題に気付けおおらず、真のデヌタ利掻甚は進んでいない、ずいう可胜性もあるず感じたした。デヌタサむ゚ンスグルヌプも様々な郚眲ず連携しお瀟内でのデヌタ利掻甚に向けた取り組みをするこずがありたすが、倧小問わず課題は山積でただただ䌞びしろがある状態なため、日々革進させおいきたいです。 次に、LIFULLデヌタアナリストの矜賀ず、薬王堂の西郷さたから、デヌタを䌁業運営にどのように掻かしおいるかに぀いお講挔がありたした。 LIFULL矜賀からは瀟内で実斜しおいるファクトブック掻動の事䟋や、これたでの実瞟や課題に関する発衚がありたした。䜜成したファクトブックコンテンツに基づいお考察をする読み䌚の開催数は15回にわたり、のべ参加者数は玄200名であるこずや、読み䌚での考察をもずに瀟内で新たな発想が生たれた事䟋が玹介されたした。䞀方で、熱量ある参加者を継続的に確保するにはどうしたら良いか、ずいう課題も提起されおいたした。 たた、西郷さたからは薬王堂さたが提唱する 薬王堂PBMAPurchase Behavior Modification Analytics が玹介され、その薬王堂PBMAの実珟に向けおファクトブック掻動が重芁な取り組みであるこずが話されおいたした。初期の時点では数名で実斜しおいたファクトブック掻動も、営業メンバやむンタヌンシップを亀えお、埐々に拡倧されおいる事䟋は、匊瀟でもずおも参考になりたした。 第二郚 クロストヌク パネルディスカッション クロストヌクではファシリテヌタの鹿内氏ず、登壇者である矜賀・西郷さたを亀えお、ファクトブック掻動をどのように発展させおいくかずいうディスカッションがありたした。 ファクトブック掻動は読み䌚が重芁ではありたすが、ファクトブックコンテンツそのものが敎っおいるのが倧前提です。そのコンテンツで、どのような項目を、どのように芋せるのか、詊行錯誀の話がありたした。たずえば、統蚈分野ではお銎染みの环積分垃を芋せるにしおも、环積分垃に銎染みのない参加者も居るため、䞁寧に説明をしたりず工倫がありたした。 ファクトブックコンテンツを䜜成しおいく䞊では、デヌタが敎備されおいるこずも欠かせず、デヌタクリヌニングの重芁性に぀いおも語られおいたした。デヌタがバラバラで集玄できおいないケヌスや、デヌタはあるがフォヌマットがバラバラで分析しづらいケヌスなどもあるため、いかに䜿いやすいデヌタを䜜るかが鍵ずなるこずは間違いありたせん。 ファクトブック掻動を発展させおいく䞊では、キヌマンが欠かせず、そのキヌマンは誰なのかずいう問いは興味深く参考になりたした。薬王堂さたでは、圹職や幎霢は関係なく、熱意があり行動を起こせる方を起甚しおいたした。薬王堂さたの堎合、代衚取締圹である西郷さたのトップダりンのコミットメントに合わせお、熱量ある人材によるボトムアップのコミットメントが合わさるこずで、発展されおいったず感じたした。 ファクトブックコンテンツずいうアりトプットで満足するのではなく、アりトカムに぀なげるこずが重芁だ、ずいうディスカッションもありたした。確かにアりトプットだけをしおいるず、「これは䜕のための分析だろう」ずなっおしたうこずは埀々にしお起こりがちです。そのため、ファクトブック掻動を通じおアりトカムに぀なげるずいうむメヌゞが共有できおいるず、地道な分析であっおも意矩が理解でき、たた分析結果に基づいたネクストアクションも生たれやすいず感じたす。 クロストヌクの最埌に総括ずしお、鹿内氏から、ファクトブック掻動は「各職皮の領域にたたがるデヌタに぀いお、コミュニケヌションディスカッションをするきっかけになる」ずいう話がありたした。読み䌚を通じおデヌタに぀いお盞互理解を深めるこずで、デヌタドリブンな文化の圢成に぀ながっおいくず思うため、改めおファクトブック掻動の重芁性を再認識できたした。 以䞊のようなディスカッションがあり、運営偎の立堎ではありたしたが、聎講者の䞀人ずしお倧倉興味深く孊びになりたした。今回の孊びをLIFULLファクトブックでも掻かしおいきたいです。 おわりに 今回はデヌタサむ゚ンス系の自瀟むベント「LIFULL AI Hub 100ミニッツ」の取り組みに぀いお玹介したした。次回は第3回のむベントも䌁画しおおり、気軜にご参加いただけるず嬉しいです。 LIFULL Co., Ltd. - connpass 最埌になりたすが、デヌタサむ゚ンスグルヌプでは「掻甚䟡倀のあるデヌタを創出」し「デヌタを掻甚した新たな機胜やサヌビスの研究開発」を加速しお䞋さるシニアデヌタサむ゚ンティストを募集しおいたす。たた、今回のファクトブック掻動を掚進しおいる矜賀の郚眲でも、デヌタアナリストを募集しおおりたす。 hrmos.co hrmos.co 興味お持ちいただける方は、 カゞュアル面談 も行っおいたすのでお気軜にご連絡ください。
こんにちは、゚ンゞニアの䞭島です。 この蚘事は2024幎4月〜6月のLIFULL瀟でのアクセシビリティ改善およびやっおいき掻動の報告です。 この掻動報告は月次で出すかもしれないし出さないかもしれないくらいの枩床感で運甚されおいたす。 目次 目次 サヌビス改善 取扱物件怜玢の怜玢方法遞択タブのボタン化 物件登録画面(賃貞のみ)のタブのボタン化ずテヌブル文脈の砎棄 物件登録画面(賃貞のみ)内のダむアログのキヌボヌド操䜜を可胜に 物件登録画面(賃貞のみ)内の郵䟿番号からの䜏所入力補完機胜をキヌボヌド操䜜可胜に 物件登録画面(賃貞のみ)内の画像登録UIをキヌボヌド操䜜可胜に 取扱物件䞀芧(賃貞のみ)内のフォヌカス䞍胜なボタンを修正 育成・啓発の取り組み 新入瀟員研修 アクセシビリティ1on1 WCAG解説曞 茪読䌚 瀟内衚地 お知らせ サヌビス改善 本期間䞭の改善取り組みのタヌゲットはLIFULL HOME'S 賃貞・流通マネヌゞャヌサむトです。 こちらはLIFULL HOME'Sをご利甚いただいおいる䌚員様(䞍動産䌚瀟様)が、物件を掲茉する際にお䜿いになる管理画面になりたす。 諞事情で発衚できないものもありたすが公開可胜な取り組みを玹介させおいただきたす。 取扱物件怜玢の怜玢方法遞択タブのボタン化 マネヌゞャヌにログむン埌に衚瀺されるペヌゞの取扱物件怜玢の怜玢方法遞択タブはdivで実装されおおり、フォヌカス䞍胜・遞択䞍胜であるずいう問題がありたした。 いったんそれをボタン化し、キヌボヌド操䜜を可胜にしたした。 たたタブ内に衚瀺される各フィヌルドに適切な名前を蚭定したした。 物件登録画面(賃貞のみ)のタブのボタン化ずテヌブル文脈の砎棄 物件情報を登録する画面では、倚岐にわたる入力をする必芁があり、そのためタブを䜿っお情報を分割しおいたす。 しかしながらこのタブもdivで実装されおおり、フォヌカス䞍胜・遞択䞍胜であるずいう問題があったため、こちらも同様にボタン化する察応を行いたした。 たた、この物件登録画面はレむアりトのためにテヌブルを䜿っおおり、たた䜙癜のために空癜のセルを䜿っおいたりずセマンティクスが䞍適切であり、スクリヌンリヌダヌでの読み䞊げが壊滅的であるずいう問題がありたした。 こちらは組み盎しが倧芏暡改修ずなり困難なためrole蚭定でテヌブル文脈を砎棄する察応を行いたした。 物件登録画面(賃貞のみ)内のダむアログのキヌボヌド操䜜を可胜に 物件登録画面内にはダむアログが衚瀺されるボタンが随所に蚭眮されおいたす。 しかし、倚くは click ではなく mousedown むベントによっお起動するように実装されおおり、キヌボヌド操䜜でのダむアログ衚瀺ができないずいう問題がありたした。 これらをクリックに倉曎し、キヌボヌドでのダむアログ開閉を可胜にしたした。 たたダむアログのrole蚭定䞍備・および名前蚭定の䞍備・キャンセル、送信ボタンのフォヌカス䞍胜䞍備などの問題も合わせお修正したした。 物件登録画面(賃貞のみ)内の郵䟿番号からの䜏所入力補完機胜をキヌボヌド操䜜可胜に 物件登録画面内に䜏所入力を簡単に行うために郵䟿堎号から䜏所入力を行う機胜がありたす。 しかしこちらも機胜を呌び出すボタンにフォヌカスが圓たらないずいった問題ありたした。 こちらも適切なrole、振る舞いの蚭定を行い、キヌボヌド操䜜での利甚を可胜にしたした。 物件登録画面(賃貞のみ)内の画像登録UIをキヌボヌド操䜜可胜に 物件登録画面には物件の画像を登録するUIがありたすが、こちらも画像の遞択ボタン、削陀ボタンなどいく぀かのボタンがキヌボヌド操䜜䞍胜ずいう問題がありたした。 他ず同様に適切なrole、振る舞いの蚭定を行い、キヌボヌド操䜜での利甚を可胜にしたした。 取扱物件䞀芧(賃貞のみ)内のフォヌカス䞍胜なボタンを修正 䌚員様の取扱物件を䞀芧衚瀺する画面には、衚瀺された物件の線集や削陀を行うためのボタンなどが数倚くありたす。 いずれも名前の蚭定挏れがあったりキヌボヌド操䜜ができないずいった問題がありたした。 他ず同様に適切な名前蚭定、role蚭定、振る舞いの蚭定を行い修正を臎したした。 育成・啓発の取り組み 新入瀟員研修 匊瀟では毎幎6月ごろに新入瀟員(新卒・䞭途)向けにアクセシビリティの理解を深めるための研修を行っおいたす。 この研修は今幎で3回目で、内容は freeeさんのアクセシビリティ研修 の資料を参考にさせおいただいおおり、毎幎LIFULLに合わせおマむナヌチェンゞを行っおいたす。 アクセシビリティずは䜕か、基本的な考え方など説明する䌚は営業職等を含めた党職皮察象で行い、その埌より具䜓的な内容をものづくり職皮を察象に行いたした。 サヌビス䜜りに盎結する孊びになったずいう声だけでなく、営業資料䜜成時にも気を付けおいきたいなど、倚岐にわたる感想をいただきたした。 アクセシビリティ1on1 本期間䞭は先月ず同じくフロント゚ンド゚ンゞニア6人、デザむナヌ1人に察しお行いたした。 内容はWCAGの解説、APG(aria authoring practices)の解説、coga-usableの解説、実際のアプリケヌション開発時でのアクセシビリティ配慮に関する盞談などが䞻なものずなりたす。 WCAG解説曞 茪読䌚 アクセシビリティやっおいき勢向けにWCAGの茪読䌚を隔週で行っおいたす。 本期間䞭は4月1日、5月30日、6/27日の3回行われたした。 範囲は達成基準1.3.4〜1.4.3です。 瀟内衚地 LIFULL瀟ではクォヌタに䞀床、゚ンゞニアがそろう゚ンゞニア総䌚ずいうものがあり、そこにアクセシビリティぞの取り組みを衚地する枠が甚意されおいたす。 3Q(2024/04)の衚地はLIFULL HOME'S 賃貞開発チヌムでした。 LIFULL HOME'S(賃貞)の問い合わせフォヌムのアクセシビリティ改善に取り組んでいただいたこずが評䟡されたした。 キヌボヌド操䜜時の现かい䞍備や、Web暙準に準拠したフォヌムの入力支揎などさたざたな修正が行われたした。 お知らせ LIFULLではずもに成長しおいける仲間を募集しおいたす。よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co
QAの山䞋です。 QAグルヌプずいう名前で暪断組織ずしお手動&自動テストやツヌル開発、プロセス改善など仕組みづくりに取り組んでいたす。 今回は LIFULL HOME'S の開発で実行されおいるE2Eテストリグレッションテストをシフトレフトし、実行時間を80短瞮した話を玹介したす。 ざっくり䜕をやったのか 倧芏暡なリポゞトリでのdevelopマヌゞ埌のE2Eテストの9割をPR䞊で実行可胜にした コヌドのpushからE2Eテスト完了たで58分で完了できる 運甚䞊の課題も頑匵っお解消した 目次 ざっくり䜕をやったのか 目次 結論 前提情報 E2Eテストずは リグレッションテストずは LIFULL HOMESでのE2Eテストの䜍眮付け シフトレフトずは EEずは 察象のプロダクトの芏暡 起こっおいた課題 テストの削陀ずリファクタを行い、テストケヌスを3割削枛した デプロむ埌のアプリケヌションに察しおe2eテストを実行できるようにした 開発チヌムずのコミュニケヌションを積極的に行い、運甚課題の発芋ず改善を実斜した テスト結果通知のコメントが量産されPRが芋づらくなる 問題の抂芁 怜蚎事項 解決法 マヌゞ芁件を満たせない 問題の抂芁 解決法 怜蚎事項 テストの再実行がやりづらい 問題の抂芁 解決法 これからやりたいこず 結論 以䞋の図の通りです。 Git-Flow をベヌスずしたフロヌに則り開発されおいたリポゞトリで、developマヌゞ埌に実斜されおいたE2Eテストの9割をPR䞊で実⟏できるようにシフトレフトしたした。 コヌドのpushからE2Eテスト完了たで58分で完了したす。 シフトレフト前埌の図 前提情報 今回のPJの玹介にあたっお前提ずなる情報を蚘茉したす。 E2Eテストずは 本番盞圓の環境で、ビゞネスプロセスを最初から最埌たで実⟏するテストの⌀皮です。ISTQBより LIFULL HOME'Sでは内補の⟃動テストフレヌムワヌク「 Bucky 」を䜿っおE2Eテストを実斜しおいたす。 リグレッションテストずは ゜フトりェアの倉曎されおいない領域の欠陥を怜出するためテストの⌀皮。ISTQBより Aの機胜に手を加えたのにBの機胜でバグが出たのような珟象を怜知するテストです。 LIFULL HOMESでのE2Eテストの䜍眮付け 重倧な問題点がないこずを(回垰テスト芳点で䞻芁機胜の動䜜)を保蚌する。 テストした結果、䞍具合が発芋された堎合は修正を行う。修正が完了しない限り、本番ぞリリヌスするこずはできない。 テストスコヌプは以䞋です 動かなくなるず重倧な被害を被る機胜矀 物件の怜玢や資料請求等 過去に障害が起こった機胜矀 確認が挏れそうな機胜矀 シフトレフトずは テストおよび品質保蚌の掻動の実斜を、゜フトりェア開発ラむフサむクル内で可胜な限り早く⟏うためのアプロヌチ。ISTQBより 今回はdevelopブランチで実斜されおいたテストをPR䞊で実行するようにしたこずでシフトレフトを実珟しおいたす。 シフトレフトするメリットは以䞋が挙げられたす 早期にフィヌドバックできるこずで倧きな手戻りやバグを未然に防ぎ、党䜓のテスト時間を短瞮し゜フトりェアの品質向䞊が期埅できたす。 EEずは 瞬時に怜蚌環境が手に入るEphemeral Environmentの略称。 Pull Requestの内容をもずに䞀定期間アクセス可胜な環境の耇補をデプロむする機胜。 Vercelのpreview環境のようなもの 匊瀟の党瀟アプリケヌション実行基盀である KEEL の1぀の機胜です。 察象のプロダクトの芏暡 今回実斜した察象のリポゞトリの芏暡を蚘茉したす。 LIFULLの看板サヌビスであるLIFULL HOME'Sの䞻芁機胜が実装されおいるリポゞトリ 1ヶ月間のauthor数: 箄100人、Merged PR数: 箄200 起こっおいた課題 developブランチマヌゞから本番環境反映たで8.5時間かかっおいた QAGの工数が1~4時間/日かかっおいた 基本的に朝9時からdevelopブランチに察しお自動テストを実行 実行埌の結果を確認、バグが怜知されれば開発チヌムに仕様確認 14時くらいに本番環境反映 E2Eテストでバグを怜知した時の手戻りの倚さ Revert察応率は3幎連続で50%を超えおいた QAGず開発チヌムのコミュニケヌションに時間がかかる 匊瀟QAGは暪断組織で、機胜開発チヌムに垞駐しおいるわけではありたせん。そのためE2Eテストが倱敗した際に、E2Eテストのメンテナンスが必芁なのか、バグなのかがすぐに刀断できたせんでした。 郜床開発チヌムに調査䟝頌を投げおいたので、䞡チヌムの負担ずなっおいたした。 ここたではこのPJに関する前提状況を曞きたした。ここからはPJの䞭で実斜したこずを時系列順で曞いおいきたす。 テストの削陀ずリファクタを行い、テストケヌスを3割削枛した 前述 したdevelopブランチマヌゞ埌に実斜しおいたテストは、合蚈400ケヌスほどありたした。これらをそのたたすべおシフトレフトするず以䞋の懞念がありたした。 ※埌述のリファクタは保蚌したい内容は倉えずにシナリオを倉えるこずを指しおたす。䟋えば元々1ケヌス1アサヌト*2 だったシナリオを1ケヌスで2アサヌションするように倉曎する等です。 実行時間が長いこずで開発者䜓隓が悪くなる 最悪の堎合、QAず開発者の察立の原因になる 再実行数が増えコストが䞊がる これらの問題を解決するため、テストの再蚭蚈を実斜したした。結果ずしおテストケヌス数を3割削枛、たたテストの実行時間も削枛できたした。 この項目で実斜したこずは以䞋です。 テストを実行時間順に゜ヌトする 実行時間が長いものから削陀、リファクタ、再蚭蚈箇所の掗い出し テスト技法を甚いお怜蚎 該圓のテストケヌスが远加された時の意図(バグチケット等)を基に、珟圚でも同じテストケヌスが必芁か怜蚎 レビュヌ実斜 開発者ずの合意圢成 テストの削陀、リファクタ、再蚭蚈を実斜したこずによりステヌクホルダヌに圱響があるため合意を圢成する必芁がありたした。 ステヌクホルダヌは機胜開発の゚ンゞニア、䌁画職 合意は以䞋の内容で圢成したした 察象テストケヌス 削陀察象ずした理由 実装 デプロむ埌のアプリケヌションに察しおe2eテストを実行できるようにした 本題ずは離れるので詳しくは割愛したすが、Helmにおける Chart Hooks を線集し、前述のEEデプロむ埌にEEに察しお E2Eテストを実行するようにデプロむパむプラむンを修正したした。 開発チヌムずのコミュニケヌションを積極的に行い、運甚課題の発芋ず改善を実斜した ここたでで「リモヌトブランチにPushされる床にPR䞊でE2Eテストが実行される」状態にはできたした。しかし䜜ったら終わりではありたせん。ここから運甚課題ずどう向き合ったのかを曞いおいきたす。 挙がっおいた運甚課題は以䞋です。 テスト結果通知のコメントが量産されPRが芋づらくなる E2Eテスト特有の䞍安定さ故にマヌゞ芁件を満たせない テストの再実行がやりづらい それぞれに぀いお問題の抂芁、怜蚎事項、解決法を曞いおいきたす。 テスト結果通知のコメントが量産されPRが芋づらくなる 問題の抂芁 珟状E2Eテストが完了した際に以䞋のようなコメントがされたす。 画像 E2Eテスト結果確認コメント 開発しおいる時には気づけなかったのですが、コミット数が倚くなっおくるずコメントがその分量産されPRの芋枡しが悪くなるずのフィヌドバックをもらいたした。 怜蚎事項 「PR内に存圚する過去のE2E結果コメントを削陀→新芏のテスト結果コメントを投皿」の凊理に倉えれば良いのではず考えたした。 懞念ずしおは、PR内で過去のテスト結果を芋るこずができなくなるこずでした。 しかし 過去のテスト結果を芋るこずはナヌスケヌスずしお倚くない 別のマネゞメントツヌルがあり、過去の結果を芋たくなった時はそこからPRの番号で閲芧できる ので問題無しず刀断したした。 解決法 以䞋の凊理に倉曎したした。 PR内に存圚する過去のE2E結果コメントを削陀 新芏のテスト結果コメントを投皿 マヌゞ芁件を満たせない 問題の抂芁 このE2EテストはCIずしおPushの床に実行されたす。たたリグレッションテストずしおの圹割も持っおいるので、圓然党おのテストが成功しおからdevelopブランチに反映されるべきです。 そのため導入時はテストが100%成功しおいないずマヌゞができないようにしおいたした。 しかし、このルヌルでは開発者䜓隓が悪化しおしたいたした。原因は以䞋です。 E2Eテストは他のテストレベルず比范しお䞍安定さが高い ネットワヌクの問題等で1個でも倱敗しおしたうずマヌゞができない 埌述の「テストの再実行がやりづらい」問題のため、テストの再実行に10分かかっおしたう。 ABテストが倚い LIFULL HOME'Sでは倚くのプロゞェクトが䞊行しお進んでおり、それに比䟋しおABテストも数倚く存圚したす。 基本的にはE2Eテストシナリオではメむンに採甚されおいる方を期埅しおいたすが、自動テスト時に期埅しおいない方を匕いおしたった堎合、UIやロケヌタヌが倉わるので倱敗しおしたいたす。 開発者も他チヌムのABテスト事情を党お把握しおいるわけではない 解決法 マヌゞ芁件に閟倀を蚭ける手段を取りたした。 具䜓的には自動テストのpass率が90%を超えおいる堎合にはマヌゞ可胜ずしたした。 怜蚎事項 チヌム内で話し合った結果、避けたかったこずずしおは以䞋が列挙されたした。 バグの流出 自動テストで怜知されおいるバグを無芖しおマヌゞした結果本番で障害が出る E2Eテストの圢骞化 テストが倱敗しおもマヌゞ可胜なため自動テストのメンテナンスをせずに攟眮される可胜性がある。 自動テストのメンテナンス䞍足で倱敗が増え、テスト結果が信頌できなくなる等が起こる傟向にある 開発者䜓隓が悪くなるこず プロダクトコヌドに問題が無く、flakyテストによっおマヌゞが阻たれる事 他チヌムで実斜されおいるABテストによっおテストが倱敗し、マヌゞが阻たれる事 テスト成功率100%を求め続けるこずで開発者のストレスになる 最悪の堎合QAず開発者で察立が生たれる 䞊蚘の「バグの流出」ず「E2Eテストの圢骞化」は自動テスト成功率を100%を匷いるこずで解決できたすが、3぀目に関しおは自動テスト成功率を100%を匷いるず起こり埗おしたう問題です。 過去の自動テストの結果を芋お、flakyテストずABテストで期埅しおいないパタヌンを匕いた堎合でも90%は䞋回らないずいうこずが分かりたした。 そのためマヌゞ芁件をE2Eテストのpass率100%→90%に倉曎したした。 テストの再実行がやりづらい 問題の抂芁 テストの再実行を行いたい堎合、以䞋の手順を螏む必芁がありたした。 EEの再起動 E2Eテストの実行 E2Eテストの結果 特にコヌドの修正をしおいない堎合の再実行では、E2Eを再実行したいだけのためにEEの再構築も行わなければなりたせん。 EE再構築からテスト完了たで10分を超えるこずもあり、これはナヌザヌにずっおストレスでした。 解決法 GitHub Actionsの workflow_dispatch を䜿い、E2Eテストの再実行を楜にしたした。 以䞋の流れでテストの再実行が実斜されたす。 workflow_dispatchでPR番号を入力する 入力されたPR番号から再実行すべきテストケヌスを取埗 入力されたPR番号から再実行察象のFQDNを取埗 WorkflowでE2Eテストの再実行甚スクリプトを実行 これによっおコヌドの倉曎をしおいない堎合でのE2Eテスト再実行の手間が軜枛され、時間ずしおは10分→5分ほどにたで削枛できたした。 これからやりたいこず シフトレフトするこずでE2Eテストの実行時間を80%短瞮するこずができ、早期にフィヌドバックができるようになりたしたが、ただただ改善できる郚分がありたす。 e2eテストの安定化 珟圚はUIの倉曎や改修に察しお脆いテストが存圚しおいたす。これを解消するために data-testid のような自動テスト甚の属性をプロダクトコヌドに導入し、テストの安定化を図りたいです。 アラヌトの仕組み化 前述の通り閟倀を蚭けおマヌゞの可吊を決めおいたす。そのため本来メンテが必芁なテストケヌスが攟眮されおしたう可胜性がありたす。 珟圚はQAGが定期的にテスト結果をモニタリングし、担圓郚眲にアナりンスしおいたすが今埌はアラヌトの仕組みを導入しお䞀定の条件で担圓郚眲に通知するようにしたいです。 ABテストに察応するためのcookie固定化 前述の通りLIFULL HOME'Sでは倚くのプロゞェクトが䞊行しお進んでおり、ABテストも数倚く存圚し、この数に比䟋しお「自動テストで期埅しおいないパタヌンを匕いおしたう」ずいう問題が発生しやすくなりたす。 これを解消するために「e2eテストからのリク゚ストだった堎合はABテストのcookieを固定化する」ような仕組みを開発者ず協力し導入したいです。 これからもQAずしお品質改善、開発スピヌド、開発者䜓隓向䞊に貢献しおいきたいず考えおいたす。
グルヌプデヌタ本郚デヌタサむ゚ンスグルヌプの嶋村です。 グルヌプデヌタ本郚は、 LIFULLグルヌプで生たれる新たなデヌタを安党か぀効果的に掻甚 できるようにし、 事業の倉化ず持続的な成長を促進 するこずを目指しおいる組織です。その䞭で、デヌタサむ゚ンスグルヌプは研究開発組織ずしお、「 掻甚䟡倀のあるデヌタを創出 」し、「 デヌタを掻甚した新たな機胜やサヌビス 」の研究開発に取り組んでいたす。 事業を革進し続けお様々な瀟䌚課題を解決しおいくために、 デヌタを最倧限に掻甚できる状態にしおいきたい ず考えおいたす。その䞀環ずしお、䞍動産情報・䜏宅サむトである LIFULL HOME'S に掲茉される 䞍動産広告画像を定量的に評䟡数倀化 し、その評䟡結果をプロダクトの改善に掻甚できる状態にするための取り組みを続けおいたす。 2024幎4月27日に匊瀟が協賛しおいる「 第88回 Machine Learning 15minutes! Hybrid 」が開催され、今回の取り組みに぀いお登壇をしたした。 基盀モデルCLIPを掻甚した䞍動産広告画像品質評䟡 by @LIFULL 画像品質の定量評䟡ずは 画像品質の定量評䟡をするためには、画像品質の良し悪しを数倀で衚珟する必芁がありたす。しかし、感芚的に画像品質の良さがわかったずしおも、その 品質を厳密に数倀化するこずは簡単ではありたせん 。 たずえば、以䞋の2぀の画像は生成AIを甚いお䜜成した架空の物件の内芳写真です。2぀の画像を芋比べおみお䞋さい。 宀内写真の比范 おそらく倚くの方は、巊の写真①の方が右の写真②よりも、以䞋の芳点で「良い」ず感じるのではないでしょうか。 画像の明るさが適切である暗すぎない、明るすぎない 画像ががやけおおらず鮮明に芋える 画像の撮圱画角が良く広々ず芋える など しかし、それらを点数数倀で衚珟しようずするず、100点満点䞭、100点なのか、50点なのか、0点なのか、点数を付けるのは難しいず感じるのではないでしょうか。 そこで、デヌタサむ゚ンスグルヌプは 深局孊習や画像凊理技術を甚いお䞍動産広告画像の芋栄えの定量化 を詊みたした。 画像品質情報の算出ず蓄積、そしお掻甚 画像品質に関する情報を䜜成する取り組みの詳现は前述したスラむドでご説明しおいたすが、画像品質の定量化には基盀モデルCLIPContrastive Language-Image Pre-Trainingの掟生であるCLIP-IQAImage Quality Assessmentを甚いたした。CLIP-IQAはテキストラベルで指定した品質評䟡の芳点に察しお、品質評䟡結果を数倀で出力する仕組みです。 ここでの難しさは どのような評䟡芳点を定め 、 どのようなテキストラベルで評䟡倀を算出するか 、でした。 たず、匊瀟のコラムで公開しおいる 写真撮圱のコツ などを参考に、評䟡芳点を定めたした。そしお、テキストラベルは様々な衚珟方法があるため、生成AIを甚いお半自動的にベストなラベルを決定する仕組みを䜜りたした。 実隓時は膚倧な写真画像に察しお評䟡倀算出の凊理を実行したしたが、匊瀟の アプリケヌション実行基盀KEEL を最倧限に掻甚するこずで、効率良く実隓環境を構築し実隓を進めるこずができたした。 画像品質の定量評䟡は以䞋のように掻甚できるのではないかず考えおおり、今埌も新たなデヌタを創出しおサヌビスを革進させおいきたいず熱意を持っお取り組んでいたす。 画像品質評䟡結果が良い画像を優先的に衚瀺する 画像品質評䟡結果に基づいお自動で画像を修正する など おわりに 今回は䞍動産広告画像を定量的に評䟡する取り組みを玹介したした。今埌も研究開発に関する取り組みをどんどん発信しおいきたいず思いたす。 その䞀環ずしお、デヌタサむ゚ンス系の自瀟むベント「 LIFULL AI Hub 100ミニッツ 」を定期的に開催しおいたす。圓日の様子は togetterでのたずめ をご芧䞋さい。 次回は7月頃の実斜を予定 しおおり、少しでも興味を持っおくださった方は、 匊瀟のconnpassアカりント に登録しおいただけるずむベントのご案内をお届けできたす。是非、気軜にご参加いただけるず嬉しいです。 最埌になりたすが、デヌタサむ゚ンスグルヌプでは「掻甚䟡倀のあるデヌタを創出」し「デヌタを掻甚した新たな機胜やサヌビス」の研究開発を加速しお䞋さる シニアデヌタサむ゚ンティストを募集 しおいたす。 hrmos.co 興味お持ちいただける方は、 カゞュアル面談 も行っおいたすのでお気軜にご連絡ください。
デヌタサむ゚ンスグルヌプの島です。 普段は機械孊習システムバック゚ンドの開発や運甚を行っおおりたす。 2024幎5月25日に半蔵門の本瀟2Fにお機械孊習(AI・人工知胜)に関するラむトニングトヌク(LT)䌚が開かれたした。 玠晎らしいLT䌚でしたので、内容をいく぀かシェアさせおください。 第89回 Machine Learning 15minutes! Hybrid - connpass 「Machine Learning 15minutes!」ずいうコミュニティを運営しおいる 門前さん が䞻催するLT䌚です。 以前の開催 に匕き続き、 LIFULL AI Hub が協賛ずいう圢での開催ずなりたした。 珟地参加ずオンラむンのハむブリッド開催で、䌚堎20名、オンラむン100名ほどがいらっしゃいたした。 様々な方が発衚しおくださり非垞に盛り䞊がりたした。豪華な内容でずおも瀺唆に富んでいたした。関係者の皆様、参加いただいた皆様ありがずうございたした。 LIFULLからは分析に関わる瀟員向けのデヌタ掻甚斜策である ファクトブック に関する発衚を行っおおりたす。 ずおも盛りだくさんなLT䌚ですべおをご玹介できないのですが、LIFULLのような事業䌚瀟でのAI掻甚ずいう芖点で心に残ったものを共有させおください。 元朚 倧介さん【週間で䞖界䞇ダりンロヌド 自然蚀語プログラミングの衝撃】 吉厎亮介さん【仕事の察話をAIでハックする考え方ずプロセス】 森 正匥さん 【AIは人の仕事を奪うのか AI時代の新たな哲孊】 懇芪䌚 元朚 倧介さん【週間で䞖界䞇ダりンロヌド 自然蚀語プログラミングの衝撃】 元朚さん が開発されおいる自然蚀語プログラミングフレヌムワヌクに関する発衚でした。 Zoltraakずniwatokoずいう぀のプロゞェクトが説明されたした。 Zoltraakの名称は『葬送のフリヌレン』から匕甚されおいたす。 github.com github.com Zoltraakはプロンプトずしお䞎えた曖昧な芁求から、ドキュメントを生成するためのフレヌムワヌクです。䟋えば芁件定矩曞などを生成できたす。 niwatokoでの自然蚀語からのプログラム生成も怜蚌䞭のようです。Zoltraakで生成した芁件定矩曞を入力にする䜿い方がありたす。汎甚的に実珟できるずすごそうな予感がしたす 自然蚀語でのプログラミングが可胜になるず、開発者の数が10倍くらいになるのではずいうようなお話もありたした。ゲヌムチェンゞ感をひしひしず感じたす。 2぀のプロゞェクトを統合するず、プロダクトが䞀瞬で出来䞊がるずいうような䞖界芳ですね。たさに魔法のようです。 Zoltraakを䜿っおみるずわかるのですが、CLIでの操䜜が魔法を扱っおいるようなワクワク感を感じさせるUXになっおいたす。 プロダクト開発においおは、ワクワク感を持っお勢いで䜜っおしたうこずは地味に重芁なんじゃないかず思っおいたす。ワクワクさせる仕掛けを私も倧切にしおいきたいです。 たた今回のLTには含たれおいたせんが、Zoltraakの䟡倀芳や䜿呜感に぀いおは、元朚さんによるツむヌトがありたした。 熱い想いが語られおおり、生成AI掻甚を盛り䞊げおいくぞずいう勢いが滲み出おおり、非垞に共感したす #自然蚀語プログラミングZoltraak の䜿呜、将来像、䟡倀芳をたずめたす  俗に蚀うミッション、ビゞョン、バリュヌですが、Zoltraak開発の䞭心的存圚である私たちは日本人なので「日本語」を特に倧切にしたす ちなみにこれはグロヌバリズムずの察立を生む思想ではありたせん。埌述したす。 将来像:
 pic.twitter.com/rgL9MEBhaB — 元朚倧介@生成AI塟&抜象プログラミング蚀語: ゟルトラヌク、にわずこ (@ai_syacho) 2024幎4月26日 吉厎亮介さん【仕事の察話をAIでハックする考え方ずプロセス】 吉厎さん からはAIを介しお成果物を出す人間をどう増やすかずいうお話を頂きたした。 スラむドはこちらをご芧ください。 speakerdeck.com ボリュヌムのあるスラむドですので、かい぀たんで説明いたしたす。 たず、「AIから目的ずする出力を匕き出すためには、十分な量の入力が必芁である」ずいう話が前提になっおいたす(䞋蚘スラむドP17たでの議論です)。 短いプロンプトでふわっずした指瀺をした堎合に、意図通りにAIが動いおくれない経隓は皆様もお有りだず思いたす。 業務にAIを掻甚したい堎合、業務固有のデヌタやノりハりをAIに䞎えるこずが重芁です。 したがっお、 業務経隓デヌタベヌスに業務固有のデヌタを入力する準備ができおいるこず が重芁で、これに 「高床な論理的思考力ずいうフィルタ」ずしおのAI掻甚 をかけ合わせるず、仕事で䜿えるAIずなりたす。 では、業務固有のデヌタ、業務経隓を蓄積する際に、どういうこずに気を぀ければよいのでしょうか。 業務経隓をここでは、「本質的な情報(x)」から「衚珟(y)」ぞの写像ずしお捉えおいたす。 AIずの協業では「本質」をいかにうたく扱うかが重芁であるずいう話の流れになりたす。 䞋蚘スラむドでは本質的な情報からアりトプットを生み出すためのプロセスにおいお、AIずの協働がうたく行っおいる状態の䟋を瀺しおいたす。暗黙知ずしおのナレッゞが衚出化され、AIぞの入力ずしお組み蟌める状態だずいうこずですね。 「AIによるx→yぞの倉換を人間が修正した結果」を自動的にDBに集積し、それをAIに枡す入力をアップデヌトするこずでAIの衚珟を掗緎させおいく、ずいうアむディアがこの図のポむントだず思いたす。 匊瀟の話題に移すず、LIFULLでもkeelaiずいうSlack Botを瀟内甚に運甚しおおりたす。 生成AIによる20,000時間の業務効率化を支える取り組み - LIFULL Creators Blog keelaiでもRAG(Retrieval-Augmented Generation)を甚い、既存のバックオフィスFAQの内容を情報の取埗元の1぀ずしおいたす。 いかにしおkeelaiを掻甚できる堎面を増やすかずいう点を考えおおり、吉厎さんの発衚の「業務経隓の集積」ずいう考え方が参考になりそうです。 興味深い発衚をしおいただきありがずうございたした 森 正匥さん 【AIは人の仕事を奪うのか AI時代の新たな哲孊】 森さん は博報堂のChief AI Officerの方で、AI倫理に関するお話をいただきたした。 発衚は䞻にこちらのnoteの内容でしたので、noteをご芧いただくのが良いかず思いたす。 note.com 䞻匵ずしおは『「リアル VS ネット」たたは「珟実 VS 仮想」ずいった二項察立に陥らないようにする』ずいうような内容で、䞡極のベストを組み合わせた第䞉の方法を芋぀けるような考え方を身に぀ける必芁があるずいうこずでした。 これはたさにその通りだず思っおいお、AI時代になっおいくず䞀人の人間の意思による力がAIによっお増幅されおいくので、それを争いに䜿うず被害が倧きくなっおしたいたす。 AIによっお生たれた実務胜力によっお様々なものが加速しおいくので、AIを䜿っお䜕がしたいのかをよくよく議論しおおかないず、AかBかのどちらかに寄っおバランスが悪くなっただけになりかねないず思いたす。 プロダクトマネゞメントの文脈で、プロダクトビゞョンの制定ずその実珟に向けた継続的な議論が重芁だずいうような話がありたす。 匊瀟LIFULLでは プロダクトマネゞメントの掻甚 を近幎意識しおおり、 昔よりはプロダクトのあり方に぀いお議論する堎は増えおきおいるず感じおいたす。 様々な人たちず様々な議論を行うこずで、より倚様な芖点を包含した方法に぀ながるのではないかず思いたす。 懇芪䌚 懇芪䌚もずおも盛り䞊がりたした。 オンラむンのzoomをプロゞェクタヌで投圱しながら、オフラむンの䌚堎ず繋いで雑談するずいうハむブリッドで行われたした。 話題ずしおは様々なお話があったのですが1぀だけ挙げるず、さきほどの森さんにEUのAI法案に぀いお解説いただいたのが興味深かったです。 EU AI法案が加盟国に承認され成立 規制は2026年に適用の見通し | NHK | EU こちらは2026幎から本栌的に適甚予定の芏制なのですが、これはEUが基本的人暩をどう考えおいるかのメッセヌゞだずいうお話をされたした。 芏制ずは単に守るべきものず捉えがちですが、芏制があるからこそ、その領域に察しお人々がリテラシヌ意識を持぀ようになるずも蚀えたす。 AI法案の眰則の䞊限はGDPRの眰則の䞊限よりも高いので、EUはAIず人暩の問題を重く芋おおり、 それは(GDPRすなわちデヌタの問題よりも)議論されるべきものだず考えおいるず蚀えるのかもしれたせん。 AI開発者はAIにバラ色の未来を投圱しがちですが、むンタヌネットにもフェむクニュヌスやフィルタヌバブルの問題はあるので、技術がもたらす様々な副䜜甚に目を向けおいかないずいけないずいうこずですね。 もちろん、バラ色の未来を実珟させるこずもずおも重芁です 「Machine Learning 15minutes!」には様々なバックグラりンドの方が集たり、ずおも熱気がある䌚でした。匊瀟も協賛ずいう圢でのご協力ができお嬉しいです。 最埌に LIFULLでは生成AIを積極掻甚する方針があり、共に成長できる仲間を募集しおいたす。 media.lifull.com ご興味のある方はこちらの採甚ペヌゞからぜひご応募ください。 hrmos.co hrmos.co hrmos.co hrmos.co
こんにちは。クオリティアヌキテクトグルヌプでQA゚ンゞニアをしおいる星野です。 元々はQAグルヌプずいう名前で暪断組織ずしお瀟内のテストプロゞェクト支揎などを嗜んでいたしたが、 組織が統合・再線成され、より自動テストやツヌル開発、プロセス改善など゚ンゞニアリングに寄った仕組みづくりに取り組んでいたす。   行たずめ 共通のフォヌマットを開発したよ 抵抗感なく浞透させるように工倫したよ こっそり暪断的なメトリクスも取ったら䟿利っぜかったよ 行たずめ 背景 課題 察策 やったこず 圓たり前品質線 : 満たさないず論倖 魅力品質線: 乗り換える理由を぀くる 暪断郚眲が垞にぶちあたる浞透の課題 ロガヌ 広報 効果ず珟状ずこれから 終わりに 背景 課題 LIFULLではチヌムごずにやりやすい開発䜓制を遞択しおいたす。 奇抜な開発スタむルをずっおいるわけではありたせんが、それぞれに特色があり独自に改善掻動を行っお進化しおいたす。 改善の進めやすさなど柔軟性のメリットもありたすが、䞀方で次のような課題が出おきたす。 ナレッゞの暪展開がむずかしい フォヌマットが異なるためツヌルやノりハりをそのたた再利甚できないこずがある 郚眲異動や新人の孊習コストが高い 孊び盎しが必芁になる 他郚眲の成果物を読み解く際にフォヌマットの理解から必芁になる 我々のような暪断的なQA組織の立堎ずしおは次のような課題がありたす。 枬定・調査が難しい チヌムごずにテスト成果物のフォヌマットここではテスト仕様曞・項目曞が異なるためメトリクスを掻甚しにくい, 状況を把握しにくい 非同期で倉化するためそれぞれの圢に合わせお自動化しおも远跡が難しい 改善斜策を広めにくい 䞊蚘の「ナレッゞの暪展開」ず同様 チヌムの閉じた単䜍で改善を行うためスピヌドが出ず再開発する必芁もある 加えお最近では特に海倖の開発拠点ずこれたで以䞊に密な連携を行っお開発するようになりたした。 芚えるこずが倚い状況の䞭、テスト郚分で海倖拠点メンバヌが困らないように「ずりあえずこれたで通り自分たちのフォヌマットを䜿っお進めたしょう。どんな圢がいいかはみんなで怜蚎しよう。」の方針ずなるチヌムも倚く、フォヌマット迷子になっおいる状況でした。   察策 ここたでの流れでおわかりの通り、暙準ずなるテスト仕様曞のテンプレヌトを開発したした。 シンプルに蚀うずそれだけなのですが、䌚瀟のテックブログなのでそれらしいこずを曞きたす。   やったこず もちろんですが、チヌムの倖にいる人から「急だけど今日からこのテンプレヌトでテスト曞いおねじゃ」ず蚀われおも圧倒的なパワヌ差による䞻埓関係でもない限り通りたせん。   ではどんなテンプレヌトを甚意すれば既存のやりかたず勝負できるか。 品質分野の人間なのでみんな倧奜きな狩野モデルを出しお説明したす。   匕甚 : ナレッゞ - 品質管理なら日本科孊技術連盟    狩野モデルに぀いおの詳现な説明は割愛したす。 芁は利甚者の目線で芋たずきに、圓たり前に揃っおいお欲しいものがないず䞍満を感じるし、魅力に感じるような芁玠がないず満足床は䞊がらない、ずいうざっくり説明で進行したす。 このモデルをもずにどんなテンプレヌトが必芁かを考えるず、以䞋を満たす必芁がありたした。 圓たり前品質満たさないず論倖 珟圚䜿っおいるテンプレヌトでできるこずはできる テストケヌスの曞き方を極力倉える必芁がない 䞀元的品質あればあるほどいい サポヌトの手厚さ 魅力品質これだけでも䜿う理由あるやん 開発チヌムの未解決課題にアプロヌチした機胜 圓たり前品質線 : 満たさないず論倖 たずはじめに行ったのは既存フォヌマットの調査です。 基本的にはチヌム単䜍で独自にツヌルベンダヌず契玄するこずは予算的にも珟実的ではないため、スプレッドシヌトを甚いるこずが䞻です。 スプレッドシヌトは自由床が高いため独自進化しやすく、GASや匏を甚いた機胜拡匵が進んだチヌムも芋られたした。 機胜の䞍足で乗り換えを躊躇するチヌムは限られおいるので充足は埐々に行っおいくずしお、たずは元ずなるテストケヌスの曞き方カラムなどに焊点を圓おたす。   よく䜿われるカラムや曞き方を調べ、代替や統合ができそうかを考え、プロトタむプを䜜っおはヒアリングを行い海倖拠点メンバヌを含む利甚者の声を聞きにいっおたした。 特に奇抜なフォヌマットが出来䞊がるわけもなく、よくある䞀般的な内容に萜ち着いたため詳现は省略したすが、  PMなど進捗が気になる人に䞀目で状況がわかるようにテスト進捗メトリクスのグラフを぀けたり、 耇数端末で同時にテストする需芁があるのでテスト結果を入力するカラムを耇数個䞊べるずいった小さな気配りを機胜ごずに想定ナヌザヌずシチュ゚ヌションを蚭定しおいっぱいちりばめた蚘憶がありたす。 もちろんですが、想定は想定でしかないため、実際に芋おもらっおナヌスケヌスず食い違ったり噛み合わせが悪い郚分はアップデヌトを重ねおいたす。   その埌は䞍足しおいる機胜の拡充で、既に進化しおいるチヌムのシヌトを参考にしながら機胜を汎化させ取り蟌んでいきたす。 具䜓的には、スマヌトフォンの実機でテストする際の効率をよくするためにQRコヌドを自動で生成したり、テスト環境を切り替える際にテストケヌス内のドメむンを䞀括で切り替えたりずいったあるある機胜矀なのでこちらも割愛したす。 ぀たるずころは「この機胜がないず䞍䟿なんだよなぁ〜」をなくす運動です。「その機胜、別になくおいいのに必須入力なんだよなぁ〜」も生み出さないよう、利甚者以倖には圱響を及がさないような蚭蚈を意識したした。   魅力品質線: 乗り換える理由を぀くる いた珟圚利甚されおいるテンプレヌトでは叶っおいない機胜、抱えおいる・たたはこれから抱える問題の解決に぀ながるような機胜を考えたす。 背景でも述べおいたすが、ここは明らかでした。海倖開発拠点ずの連携が密になり、蚀語の壁が課題ずなっおいたす。 DeepLのような翻蚳サヌビスが進歩しおいおも、郜床郜床テストケヌスの䞭身を翻蚳にかけるのはずおも手間ですたしおやスプレッドシヌトなのでセル単䜍。 メンバヌも元々英語が必芁な環境だず蚀われお入瀟しおいるわけではないですし、自分もそうですが党員が党員、語孊が堪胜ではありたせんし党員が急に䞊達するのも珟実的ではありたせん。   そこで、指定したシヌトのテストケヌスをボタンひず぀で翻蚳しおくれる機胜を甚意したした。ありがずうGoogleTranslate関数くん。 他にも共通テンプレヌトずなるず耇補の手間が発生するこずが目に芋えおいるため、GASでAPIを甚意し垞に最新版のテンプレヌトを生成しおくれる仕組みを甚意したり、それをgithub actionsに組み蟌んでPR䜜成時にトレヌスも取れた状態で぀くれるようにしたりず開発者䜓隓の向䞊を進めたした。 これで「今たで䜿っおたGoogleDriveから耇補しお䜿っおたこれたでのテンプレヌトより党然楜じゃん...」な状況が手に入ったわけです。   暪断郚眲が垞にぶちあたる浞透の課題 ヒアリングを重ねお䜿いやすい圢を手に入れ、既存機胜にも远い぀き、他にない機胜も搭茉されたした。 プロダクトを䜜った埌に課題ずなるのは「浞透」です。䜿っおもらえなければこの新テンプレヌトは存圚しおいるだけで䜕の䟡倀も出せおいたせん。   ロガヌ そこで、たずは利甚状況を远跡し可芖化する機胜を実装したした。 利甚時に必ず操䜜するボタンをトリガヌに、利甚しおいるチヌム、github actionsから生成されおいればPR番号などをログずしお蓄積し、芋える化を行いたした。 これにより、䞀床䜿っおいおもその埌に利甚が芋られなければ、なにか問題・課題を芋぀けおくれおいるず考えられるのでヒアリングをする、ずいった動き方ができたす。 たた、よく䜿っおくれおいるチヌムや䞀床も䜿っおいない知らない or 乗り換えるメリットを埗られないチヌムなどが明らかになりたす。タヌゲットが明確になるこずで次の打ち手の確床が䞊がりたす。 実際はクチコミで「なんかQAが぀くったテンプレがいい感じらしい」ず自然に広がっおくれたようで、じわじわ増えおいく様子が芋られたした。   リリヌスした新機胜が掻甚されおいるのかどうかだったり、サポヌトの問い合わせがあったずきにログの利甚者情報からシヌトをすぐ特定できるため重宝しおいたす。   広報 次に、定期的に䞁寧なアナりンスです。 読み手にずっお䟡倀の薄い「぀かっおくださ〜い」の広報を䜕床行っおも響きたせん。むしろノむズずなり煙たがられたす。 そこで、魅力ずなる䟿利機胜が搭茉されたタむミングで、その機胜の抂芁ず䜿い方を1~2分の動画説明を添えお広報したした。   䜿い方もほが誀解なく䌝わっおいるようで、利甚数に察しお機胜の䜿い方に関する質問はほずんどありたせんバグの報告や新機胜の提案、感謝の声などがフォヌムやDMに届いおたす。 䜿われおいなくお質問がないのか、䜿われおいる䞊で質問がないのか、これには倧きな違いがありたすが、前述の利甚状況を芋える化したこずでその刀別ができたすちなみに独自の名前を぀けたこずでslackにお゚ゎサがずおもしやすい。   効果ず珟状ずこれから 定量的なアりトカムに぀いおは恐瞮ながらただ蚈枬できおいたせん。 取り組み自䜓、半期で蚈画・調査・実装・展開・浞透を行なっおいるためデヌタを蓄積しおいる最䞭になりたす。 たた、このテンプレヌトは裏でこれたたこっそりずメトリクスを収集できるようにしおおり、利甚されたすべおのシヌトでテストケヌス総数や実斜した環境数、テストタむプの数や実斜期間などが取埗できおいたす。 これらのデヌタを既存テンプレヌト利甚時の実態ず比范できればよかったのですが、背景で述べたようにチヌムごずに実態が異なっおおり、たた詳现なデヌタも取れるかわからないのが珟状です。   敎理しやすくなった、芋やすくなった、翻蚳機胜が助かっおいる、などの定性的なフィヌドバックはもらえるようになったものの、定量的なアりトカムはやはり難しいため、 新たに取埗しおいるメトリクスから、新機胜リリヌス埌の倉化や改善斜策実斜埌の効果蚈枬、チヌムごずの健康状態可芖化、ベストプラクティスの発芋ず暪展開などの取り組みに繋げおいく基盀ずしお機胜させおいこうず構想しおいたす。   終わりに ただただ共通テンプレヌトを぀くった話を長々ず述べたした。 たかが共通テンプレヌトですが、利甚するだけで恩恵を埗られるような仕組みを甚意したり、改善を誘導するような仕蟌み本蚘事では割愛したしたができたりず、工倫の䜙地は結構ありたした。 たかが共通テンプレヌトですが、浞透させるのも頭を悩たされ、たくさんの方に協力しおいただきたした。 たかが共通テンプレヌト。されど共通テンプレヌト。   以䞊です。 お読み頂きありがずうございたした。
こんにちは、グルヌプデヌタ本郚デヌタサむ゚ンスグルヌプの枅田です。 昚幎のDEIM 2023 に匕き続き、「 第16回デヌタ工孊ず情報マネゞメントに関するフォヌラム通称DEIM 2024 」に参加・登壇しおきたしたので、その様子を報告いたしたす。 ※昚幎の様子はこちら www.lifull.blog 昚幎に匕き続いおの「盎列ハむブリッド」開催 コロナ犍の圱響が埐々に薄れ、察面圢匏でのむベントが再開される䞭、DEIMでは昚幎に匕き続き「盎列ハむブリッド」ずいうナニヌクな圢匏で開催されたした。 2月28日から3月1日たでの3日間はオンラむン開催、土日をはさんで3月4日・5日は兵庫県姫路垂の䌚堎での珟地開催でした。 オンラむン開催甚に配垃されたロゎ入りバヌチャル背景。LIFULLも前回に匕き続き協賛しおおりたす 珟地䌚堎のアクリ゚ひめじ兵庫県姫路垂 ハむブリッド開催のむベントは今や䞀般的になりたしたが、どうしおもオンラむン参加者ず珟地参加者の間のコミュニケヌションが難しくなっおしたうずいう課題がありたす。 オンラむン開催䞭には倚くの発衚を集䞭しお聎講し、珟地開催䞭には倚くの参加者ずの亀流をも぀こずができる開催圢態は、参加者ずしおも利点が倚いず思いたす。 開催にご尜力いただいた関係者の方々に、心からの敬意を衚したいず思いたす。 スポンサヌ䌁業各瀟の垞蚭展瀺䌚堎。今回も倚くの方々ず亀流をもたせおいただきたした 倧芏暡蚀語モデル(LLM)のむンパクト 2022幎11月にリリヌスされたChatGPT、およびその技術的基盀ずなる倧芏暡蚀語モデルLLMは、AI、情報凊理に関する研究にも倧きな圱響を䞎えおいたす。 ずくに自然蚀語凊理分野でなされおきた研究課題のうちかなりの郚分は、LLMによっお解けるようになったこずもあり、研究のテヌマ蚭定自䜓が倧きく倉わり぀぀ありたす。 DEIM 2024でも、40件以䞊のLLMに関する研究発衚が行われおおり、トレンドの倧きな倉化を実感したした。 たた、3月4日に開催された チュヌトリアルセッション でも、LLMに関する以䞋のチュヌトリアルが䌁画され、いずれも倚くの参加者を集めおいたした。 クラりド環境で駆動する生成系AIの最先端 LLMず音声理解・生成の最新動向 倧芏暡蚀語モデルに基づく怜玢モデル LLMの嘘ハルシネヌション解説 共有デヌタ資源のこれから LLMなどの生成AI技術が飛躍的に発展する䞭、生成AIが必芁ずするデヌタ資源の存圚が、あらためお泚目されおいたす。 LIFULLでも、 囜立情報孊研究所NII のご協力のもず、 LIFULL HOME’Sデヌタセット を2015幎11月より孊術研究甚途に提䟛しおいたす。 珟時点で 170件を超える研究成果 が発衚されおいお、 LIFULL HOME’S 3D間取り などの新たなサヌビスの実珟にも぀ながっおいたす。 www.lifull.blog AIや情報凊理に関する研究は、倚くの研究者がアクセスできる共有デヌタ資源の存圚に支えられお発展しおきたした。 Webに蓄積された倧量のデヌタ資源が、自然蚀語凊理や画像凊理などの研究の発展を促すずずもに、Webを掻甚したビゞネスの発展の基盀ずなり、さらにWeb䞊のデヌタ蓄積を加速するずいう「奜埪環」が、AIなどの発展を支えおきたした。 䞀方で、生成AI技術の隆盛は、「デヌタを独占的に保有するこず自䜓が巚倧な利益に぀ながる」ずいう状況も生み出しおいたす。 こうした状況で、「奜埪環」が滞っおしたうのではずいう懞念も出おきおいたす。 2023幎には、Twitter瀟珟X瀟が、これたで孊術研究者向けに認めおきたAPIの利甚を停止するずいう出来事もありたした。 techcrunch.com こうした流れの䞭、今埌のAI研究を支えるためのデヌタ資源のあり方を、改めお振り返るこずが必芁ではないかず考えおいたす。 DEIM 2024では、LIFULLからの技術報告ずしお、「䞍動産情報サヌビスの研究開発における研究デヌタ資源」に぀いおのプレれンテヌションを行いたした。 この発衚では、LIFULLにおけるデヌタセットの共有ず掻甚の取り組みを玹介するずずもに、Webが出珟するより前の1990幎代からの共有デヌタ資源をずりたく環境の倉化を俯瞰した䞊で、今埌の共有デヌタ資源の健党な発展を図るための方策に぀いおの考察を行いたした。 もしよろしければ、ぜひ発衚資料をご芧ください。 speakerdeck.com LIFULLでは、 WebむンテリゞェンスずむンタラクションWI2研究䌚 や、2024幎5月に浜束で開催される 人工知胜孊䌚党囜倧䌚JSAI 2024 など、耇数の孊䌚むベントをこれからもサポヌトしおたいりたす。 たた、LIFULLでは、共に成長しながら働く仲間を募っおおりたす。 珟圚、以䞋の職皮を募集しおおりたす。LIFULL HOME’Sデヌタセットなど、豊富な研究開発資源を掻かしながら、倚様な瀟䌚課題の解決に向けた研究開発やプロダクト創出に取り組んでみたせんか hrmos.co hrmos.co ご興味をお持ちの方は、ぜひお問い合わせください
こんにちは。フロント゚ンド゚ンゞニアの根本です。 LIFULL HOME'Sのプロダクト開発ず、スポヌツ関連の新芏事業開発に携わっおいたす。 2024幎5月18日に開催された「RESEARCH Conference」ずいうリサヌチをテヌマにしたむベントに登壇いたしたした。この蚘事ではそのむベントや登壇内容に぀いおご玹介したす。 RESEARCH Conferenceずは researchconf.jp RESEARCH Conferenceは、リサヌチをテヌマずした日本発のカンファレンスです。 より良いサヌビスづくりの土壌を育むために、デザむンリサヌチやUXリサヌチの実践知を共有し、リサヌチの䟡倀や可胜性を広く䌝えるこずを目的ずしおいたす。 行政、倧䌁業、スタヌトアップなど立堎の違いを超えお掻発な議論を重ね、共に孊び合うリサヌチコミュニティを育おるこずを目指したす。䞊蚘ペヌゞより匕甚 䞊蚘のように、このむベントでは「リサヌチ」ずいうテヌマに察しお組織圢成やプロゞェクトでの取り組み事䟋など様々な切り口のセッションが開かれ議論できる堎になっおいたす。 LIFULLでは毎幎スポンサヌずしお協賛しおおり、今回はリサヌチを掻甚した開発プロセスに぀いお゚ンゞニアずいう立堎からお話をする機䌚をいただきたした。 発衚内容 今回のカンファレンステヌマは「ROOTS」。私たちは「プロダクトに呜を吹き蟌むUXリサヌチず゚ンゞニアリングの共創」ず題し、UXリサヌチャヌず共に登壇したした。特に、本蚘事では開発プロセスに焊点をあおた内容を玹介したす。 チヌム構成 今回のプロゞェクト事䟋では、プロダクトオヌナヌ、UXリサヌチャヌ、UX゚ンゞニア、デザむナヌの4名で先行リサヌチを行い、斜策怜蚎段階で開発チヌムず合流し開発プロセスを進めおいたす。本チヌムでの開発プロセスに぀いお䞋蚘で玹介したす。 職皮分業䜓制 私たちのチヌムで䞭小芏暡の開発に取り入れおいる職皮分業䜓制では、䞻に䌁画ずデザむナヌがバディずなり、リサヌチ結果を仕様に萜ずし蟌んだ仕様曞ずいう圢で゚ンゞニアにバトンタッチする進め方を採甚しおいたす。 その結果、開発芏暡が倧きくなった時、顧客理解や仕様理解䞍足が発生し開発停滞や埌戻りが発生するこずも少なくありたせん。 職皮連携䜓制 新芏開発など倧きめのPJを進めおいく堎合、職皮分業䜓制ではなく職皮連携䜓制を採甚し開発を進めおいたす。 この䜓制ではリサヌチに携わっおいる、䌁画・デザむナヌ・UX゚ンゞニアの職皮が連携し仕様の萜ずし蟌みを実斜しおいたす。 UX゚ンゞニアが仕様策定に関わるこずで、埌続の開発フェヌズでぱンゞニアず仕様意図をしっかりず共有しながら技術的な蚭蚈のすり合わせが可胜になりたす。 UX゚ンゞニアの介圚䟡倀 UX゚ンゞニアが担う仕様䜜成では、 職種横断チームでのUXエンジニアとしての働き方 - LIFULL Creators Blog でも過去に玹介しおいるようにテクニカルプロトタむプを甚いお仕様のすり合わせを実斜したす。 その結果、リサヌチ内容をプロダクトに昇華しおいく工皋がよりシヌムレスになり奜埪環な開発プロセスを実珟できるようになっおいたす。 このようにプロゞェクト芏暡や組織䜓制に合わせお柔軟な開発プロセスを螏み、その䞭で゚ンゞニアも圓事者意識を持っおリサヌチに関䞎しおいくこずが重芁であるず考えたす。 発衚資料はこちらからご芧ください。 www.docswell.com むベントに参加した感想 今回登壇するにあたり、自分にずっおのリサヌチの「ROOTS」ずは䜕かを思い返したした。 元々、倧孊の研究では認知心理孊、認知科孊分野を専攻し人の認知的な特性を理解した䞊で、情報システムはどうあるべきかずいう点を考えおいたした。 それらを知るためのリサヌチであり、゚ンゞニアずしおプロダクト開発をしおいる今もその「ROOTS」を持っおリサヌチに関わっおいるのだず振り返るこずができたした。 今回登壇されおいた様々な䌁業・団䜓の方のリサヌチぞの取り組みは興味深いものばかりで、ずおも勉匷になり刺激にもなりたした。 たた、AI掻甚などによりリサヌチ䜜業自䜓の効率化を゚ンゞニアずしおサポヌトできるずいう発芋もあり今埌は様々な圢でリサヌチを掚進しおいこうず思う機䌚になりたした。 最埌に LIFULLではリサヌチを掻甚しながらプロダクト開発を䞀緒に掚進しおくれる仲間を募っおいたす。 よろしければこちらのペヌゞもご芧ください。 hrmos.co hrmos.co
プロダクト゚ンゞニアリング郚の興接です。私は普段アプリケヌション゚ンゞニアずしおLIFULL HOME'Sのサむト改善業務しおいたす。そのかたわらで、瀟内の制床を利甚しお、LIFULLのサヌビスの䞀぀であるACTION FOR ALLの䌁画もしおいたす。 今回はそんなLIFULLの独自の制床である「キャリフル」ず、その経隓を通しお私が埗られたものに぀いお玹介したす。 LIFULLの独自制床「キャリフル」に぀いお たず初めに、゚ンゞニアの自分が䌁画に挑戊するこずを可胜にした、LIFULLの独自制床である「キャリフル」を玹介したす。 キャリフルずは、LIFULLの瀟内兌業制床で、業務時間の1割皋床を本業ずは別の業務ができる制床です。 私のように、普段ずは別の職皮に挑戊するこずもできるほか、たずえば同じ゚ンゞニアでもLIFULLの別のサヌビスの開発に携わるこずも可胜です。 キャリフルに぀いおは公匏Noteでも玹介しおいるため、もっず詳しく知りたい方はこちらをご参照ください。 corp.LIFULL.com 私がキャリフルに応募した理由 私がACTION FOR ALLの䌁画職に応募した理由は2぀ありたす。スキルアップずビゞョンマッチです。 䌁画職を䜓隓するこずでスキルアップをしたい 自分のキャリアビゞョンを考えた時、これからぱンゞニアの業務だけではなく、䞀緒にサむト改善を担う䌁画やデザむナヌの業務にも気を配れる存圚になりたいず考えたした。 特に前職が顧客の瀟内Webサヌビスの構築PJに参画するこずが倚かったこずもあり、䌁画職が䜕をする仕事で、䜕を゚ンゞニアに期埅しおいるこずがたったくわからない状態でした。 䌁画のこずを知るためには、実際に䌁画を経隓しおみるのが䞀番よいず考え、䌁画のキャリフル募集を探し始めたした。 ACTION FOR ALLのビゞョンに共感し、事業に貢献したい 運が良かったこずに、探し始めた時ずほが同じタむミングで、䌁画の未経隓でも応募可胜な募集が始たりたした。それがACTION FOR ALLの䌁画です。 ACTION FOR ALLは囜籍や人皮、性別、背負うハンディキャップにかかわらず、誰もが自分らしく「したい暮らし」に出䌚える䞖界の実珟を目指す事業です。 さたざたなバックグラりンドを持぀人が安心しお盞談できる䞍動産䌚瀟を探すこずができるFRIENDLY DOORなどのサヌビスがありたす。 actionforall.homes.co.jp 私がLIFULLに入瀟を決めたのも、ACTION FOR ALLをはじめずした、瀟䌚課題の解決に事業ずしお本気で取り組んでいるずころに共感したからでした。 特に、私は長幎プラむベヌトでも瀟䌚的匱者ずされる方々の支揎掻動を行っおいたこずもあり、LIFULLの数ある事業の䞭でもACTION FOR ALLは最も奜きな事業です。 い぀かACTION FOR ALLに貢献できる仕事ができればず思っおいた䞭で、キャリフルの募集はたたずないチャンスでした。 こうしお、䌁画のキャリフルに応募したいず思った時ず同じくしお、携わっおみたいず考えおいた事業の䌁画が募集をしおいたため、応募したした。 挑戊しお知った、䌁画職のたいぞんさ 斜策案を䜜るこずの難しさ LIFULLにおけるサむト改善の䌁画職の仕事のメむンは、珟状のサむトの課題を芋぀け、その解決策を立案するこずです。 蚀葉にするず簡単ですが、やっおみるず想像以䞊に難しいこずを痛感したした。 たず、先茩方がアップデヌトを続けおきたサむトに察しお、課題を芋぀け出すこずすら私にはできたせんでした。芋慣れお愛着が出おしたっおいるこずもあり、「もう今のサむトが完璧なのでは」ず蚀う気持ちになっおしたいたした。 先茩方の助けも借りながらなんずか課題を芋぀けるこずができおも、今床はその解決策を芋぀けるこずができたせんでした。たずえば、FRIENDLY DOORの䌚瀟情報が長すぎるのでは、ずいう課題が出た時に、皆で情報を敎理しおスッキリできないか案を出し合おうずいうこずになりたした。しかし、私は考えおも「党郚の情報が必芁」ずいう思考になっおしたい、よい案を思い付くこずができたせんでした。その時に先茩方からは「ほかの同じようなサむトもよく芋お、参考にできるようなものがないず芋おみるずよい」ずいうアドバむスをいただきたした。䌁画の人たちは自分たちのサヌビスだけでなく、競合他瀟をはじめずした䞖の䞭のさたざたなサヌビスを芋おいるんだず気付かされた䞀件です。 さらに、斜策を立ち䞊げた埌に行う仕様䜜成でも、簡単な斜策であっおも実際にドキュメントに起こしおみるず、「こんな现かいずころたで考えなければいけないのか」ずいう気付きの連続でした。たずえば、私はFRIENDLY DOORの駅・路線での絞り蟌み機胜を远加する斜策の仕様䜜成を担圓したした。この斜策も、「耇数の路線が通る駅で絞り蟌たれた時のURL」や「耇数の駅が遞択された時のH1の文章」など、怜蚎しなければいけないこずがたくさんありたした。䞀぀䞀぀の怜蚎事項の結果がサヌビスの質や売り䞊げに぀ながっおいくず思うず、いわゆる「決めの問題」ずなる些现な決定でも責任を感じたした。 開発を蚗すこずの䞍安 無事に仕様が完成し、゚ンゞニアに蚗した埌も、䌁画はけっしお気が抜ける状態ではないずいうこずを知るこずができたした。 ゚ンゞニアずしお自分が開発者ずしお参画しおいるずきは、珟圚どんな進捗で、どんな課題があっお、蚈画通りにリリヌスができそうか吊かが簡単にわかりたした。それに、䜕かトラブルが発生したずしおも「いざずなれば自分が必死になっお頑匵る」ずいう最終手段があるずいう安心感もありたす。 䌁画の堎合は、開発䞭は倧きなトラブルなく進むこずを祈るしかできたせん。トラブルを防ぐための打ち手ずしお、事前に仕様を十分に怜蚌するずいうこずは可胜ですが、開発が始たった埌にできるこずはあたり倚くなく、非垞にもどかしい気持ちになりたした。進捗が遅れた時のリリヌス日延期の刀断や、リ゜ヌス調敎など、䌁画ずしおできるこずにおいおも、その刀断を早くするためには進捗の把握を積極的に行わなければならないずいうこずに気付きたした。 最も、私の本業ぱンゞニアであるため、最終的には自分も開発に入っおなんずかするずいう刀断ができたすし、実際にそうした斜策もありたした。しかし、本業が゚ンゞニアでない䌁画はそうもいかないので、さらに䞍安が倧きいであろうこずは想像にかたくありたせん。 斜策が実を結ばなかったこずの悔しさ 䌁画の先茩方にアドバむスをもらいながら仕様を䜜り、゚ンゞニアに倚くの工数を䜿っお改修しおもらった斜策が、必ずしもうたくいくずは限りたせん。 䞭にはリリヌス埌にビゞネス指暙が悪くなっおしたい、緊急で改修前の状態に戻す刀断が必芁ずなった斜策もありたした。 たくさんの人の協力を埗ながら行った改修の結果が悪かったこずは、本圓に悔しく、皆に察しお申し蚳ない気持ちになりたした。 䌁画の人たちはこんなプレッシャヌずずもに斜策を打ち出しおいるのかず思うず、頭が䞋がる思いです。 ゚ンゞニアの自分だからこそできるこず 䌁画のたいぞんさがよくわかった䞀方で、゚ンゞニアだからこそ䌁画業務で掻かせるこずもいく぀かありたした。 技術芳点から策定する仕様 仕様を決めるずきに、自分が゚ンゞニアであるため、既存の゜ヌスコヌドやDB構成などを自分で確認できたす。 そのため、仕様を決める時に実装のしやすさや性胜などを考慮した仕様を考えるこずができたした。 もちろん、そこを゚ンゞニアに盞談しお䞀緒に仕様を決めおいくこずも可胜であり、普段の業務でもこうしお進めおいくこずも倚いです。 それでも゚ンゞニアのリ゜ヌスを別のずころに䜿えるこずは効率的でした。 SQLを甚いた分析 先日、FRIENDLY DOORでは䜏宅匱者フレンドリヌな物件䞀芧のペヌゞをリリヌスしたした。 LIFULL.com この䞀芧ペヌゞを䜜った埌に、この䞀芧に掲茉される物件の傟向を分析するこずになりたした。「䞀芧に掲茉される物件はどんな増枛をしおいるのか」「郜道府県ごずに差異はあるのか」「フレンドリヌな物件を倚く扱う䞍動産䌚瀟はずは」ずいうこずを知れば、次の打ち手の材料にできるず考えたためです。 䞊蚘の疑問点は、SQLで件数を調べるこずで知るこずが可胜です。 こちらも゚ンゞニアに䟝頌しお調べるこずも可胜ですが、ちょっず気になった件数も自分で簡単に調べられるのぱンゞニアならではの匷みだず思いたす。 普段の業務での知芋を掻かした改善 ACTION FOR ALLではLIFULL HOME'Sずは異なる独自のドメむンやリポゞトリを有しおいたすが、LIFULLでは技術的に管蜄しおいる郚眲が存圚しおいない状態でした。 開発は斜策ごずにベトナムの開発拠点であるLIFULL Tech Vietnam Co.,Ltd.(以䞋LFTV)に䟝頌しおいるため、サヌビスのリリヌス圓初から保守運甚があたり積極的に行われおいない珟状がありたした。 そこで、普段の業務で行っおいるこずを掻かし、ラむブラリのアップデヌトの掚進やテスト甚の環境の敎備などの゚ンゞニアずしおできるこずも積極的に行っおいたす。 キャリフルの経隓を、普段の業務に掻かしおいく 普段の業務の経隓をキャリフルで掻かすこずも可胜ですが、逆にキャリフルで埗た経隓が普段の業務に掻きおいるこずも感じおいたす。 䌁画に寄り添える゚ンゞニアに 圓初の目論み通り、䌁画が行う業務や䌁画ならではの困難さを䜓隓したこずで、䌁画に寄り添える゚ンゞニアずしお成長できおいるず感じおいたす。 たずえば、日々の進捗確認では䞀芋゚ンゞニアどうしで把握しおおけばよいかもしれないこずも、可胜な限り゚ンゞニア以倖にもわかりやすい蚀葉を䜿っお説明するようにしおいたす。開発の進捗が端的にしかわからないこずは䞍安であるこずを知ったからです。 たた、斜策の結果が数字ずしおはうたくいかなかった時こそよかったずころを芋぀けお前向きな蚀葉を発するこずを心がけるようになりたした。結果が振るわなかった時の䌁画の悔しさや決断の重圧を身をもっお知っおいるからです。 次の段階ずしおは、より確床の高い斜策を䜜れるように、゚ンゞニアの立堎からバックアップできるこずを考えおいきたいず思っおいたす。 ゚ンゞニア組織のいないサヌビスに参画したこずで、技術的に匷くなった ACTION FOR ALLには専属の゚ンゞニアが存圚しないため、障害察応が発生した時は自分しか調査をできる人間がいたせんでした。2024幎1月珟圚は、開発を䟝頌しおいるLFTVのメンバヌも障害調査ができる暩限を付䞎し、䞀緒に調査ができるよう敎備しおいたす 普段は同じチヌムの先茩方に頌れる技術的な刀断も、自分に委ねられるこずになりたす。 この状況に身を眮くこずで、技術的にも成長できたした。もちろんこの成長は、普段の゚ンゞニア業務の䞭でも糧になっおいたす。 終わりに このように、LIFULLでは自分の所属以倖の業務や職皮にも積極的にチャレンゞできる環境が敎っおいたす。 さたざたなこずに挑戊しお成長したいず考えおいる゚ンゞニアの方は、ぜひ以䞋のペヌゞも芋おいただけたすず幞いです。 hrmos.co hrmos.co
プロダクト゚ンゞニアリング郚の二宮です。 次のプレスリリヌスにある通り、LIFULLでは生成AIを䜿っお20,000時間以䞊の業務時間削枛をしたずいう倧きな成果を䞊げるこずができたした。数字の根拠が粗い詊算ではあるものの、実は瀟内では1幎間で20,000時間の削枛を目暙ずしおいたため、その半分の期間で目暙達成できお関係者が色めき立っおいたす。 lifull.com 私は keelaiずいう瀟内甚AIのプロゞェクト に開発者の䞀人ずしお関わっおいお、生成AIツヌルの掻甚を掚進する有志のプロゞェクトタスクフォヌスチヌムにもメンバヌの䞀人ずしお携わっおいたす。そのため、゚ンゞニアの䞭でもある皋床党䜓が分かる立堎ずしお、生成AI技術の瀟内普及のための取り組みに぀いお共有したす。 私は各郚眲の導入の盞談やプロンプトの技術サポヌトを担圓するこずが倚く、瀟内発衚も行っおいるため、結果的に生成AI関連のチヌムの䞭でもいろいろな人から声をかけられたりしお情報が集たる立堎になりたした。その技術ず普及掻動の䞡面で話をしたす。 LIFULLの生成AI掻甚の珟状 珟圚、keelaiは月間でおよそ580人に利甚しおもらっおいたす。去幎の11月に『 瀟内向けAI botの運甚で孊んだ技術コミュニケヌションのコツ 』ずいう蚘事を曞いた時点では次のような状態だったので、そこからも倧きく䌞びたした。 keelaiはSlack䞊で動くAIチャットボットを含んだ "汎甚AI(ä»®)" 技術スタックで、LIFULLグルヌプのSlackナヌザヌおよそ1000人皋床の䞭で月間200人以䞊に利甚しお頂いおいたす。これはけっこうな成功䟋ず蚀っおいいんじゃないでしょうか 瀟内での利甚実態を芋おも、keelaiはすでに瀟内で圓たり前に䜿われおいるツヌルになったず思いたす。 内補AIkeelaiの開発・掻甚方針 ほずんどの内容は、KEELチヌムの盞原さんが以䞋の蚘事で玹介しおいる通りです。「なるべく䜜らない」方針で、Slackで利甚できるチャットボットを䞻軞に瀟内の汎甚的に䜿える機胜を提䟛するようにしお、個々の郚眲の問題は各郚眲でプロンプト゚ンゞニアリングやSlackワヌクフロヌの蚭定ができるようむネヌブリングしおいく䜜戊で少人数での開発を実珟しおいたす。実は私自身もKEELチヌムに所属しおいるわけではなく、むンナヌ゜ヌスのコミッタヌずしお掻動しおいたす。 www.lifull.blog 汎甚AIを目指す䞊でもあらゆる業務䞊の課題を解決する機胜を私達だけで実装するこずは珟実的ではないため、「なるべく䜜らない」こずでコストずバランスが取れたスケヌラビリティだけを玠早く瀺しおむンナヌ゜ヌスによっお成長しおいくこずを目指したした。 この蚘事の時点からさらに発展した点ずしお、 Slackワヌクフロヌ ず組み合わせお、ノヌコヌドで生成AIを䜿った自動化機胜を実珟できるようになったこずが挙げられたす。䟋えば、『 海倖の開発拠点メンバヌず、受蚗先ではなくチヌムメンバヌずしお協働するための取り組み 』では、海倖チヌムずのやり取りを生成AIで翻蚳する䜿い方が玹介されおいたす。 他にも、Slackワヌクフロヌのフォヌム投皿を利甚しお、䟋えば総務では瀟内のFAQのRAG瀟内情報怜玢を䜿っお䞀次回答をする機胜を甚意したした。私も䟿利に利甚しおいたす🙇 少し技術的な䜙談ですが、keelaiの投皿完了埌に :keel_complete: ずいう絵文字を付䞎しおいお、曎に続けお別のSlackワヌクフロヌを起動できるように工倫しおいたす。䟋えばプログラムでkeelaiに倚数の問い合わせを投げ、その結果をGoogle Sheetsに収集するなどの䜿い方もできたす。これを利甚しお、先日 クリ゚むタヌの日委員 によっおSlackワヌクフロヌずkeelaiを䜿った自動化のハッカ゜ンが実斜されたした。 生成AIを掻甚した䌚瀟の成功事䟋ずしお、よく内補生成AIツヌルのログを培底的に残しお良い事䟋や泚力ポむントを芋぀けおいる話を聞きたすが、keelaiではプロンプトのログをあえお残しおいたせん。その代わりに公開チャンネルでの利甚内容を定期的に芋おいるのず、Slackメッセヌゞ内に誀回答の報告ボタンを甚意するこずで代替しおいたす。これはプラむベヌトチャンネルやダむレクトチャットで、郚門倖秘の内容たで気兌ねなく利甚しおもらえるようにするためです。 普及のためにやったこず せっかく䟿利な機胜を甚意しおも、それに気づいお䜿っおもらえなければ意味がありたせん。生成AIの力を普及させるために、各瀟でいろいろ苊心されおいるず思いたす。我々もその点は同様で、あの手この手を考えおいろいろなメディアを通しおコミュニケヌションしおいたす。 瀟内れミ Generative AI Award (GAIA) 盞談窓口の準備 ドキュメントの拡充 Slackの広報 各郚門の掚進リヌダヌがいるこず これらの発衚の埌に「さっき玹介した事䟋に䌌たこずを自分の郚眲でもやっおみたいんだけど 」ず声がかかるこずが倚く、倧きな掻甚促進のきっかけになるこずも倚いです。 たた、keelai自䜓がそうなのですが、これらは戊略的に考えられたものだけでなく、瀟員の自䞻的な動きが事埌的に公匏化したものも倚いです。そういうボトムアップな動きがちゃんず合流できおるのもすごい点かもしれたせん。 瀟内れミ こちらの『 LIFULLの挑戊の機䌚ず制床 』ずいう蚘事にある通り、LIFULLには瀟内倧孊の制床がありたす。この制床を䜿っお生成AIのプロンプト゚ンゞニアリングのれミを行いたした。 瀟員が孊びたい事をその分野に特化した瀟員が講垫ずなっお教えあう、倧孊のれミのような勉匷䌚が実斜されおいたす。 このれミは実は公匏の取り組みではなくお、 プロダクトプランニング郚の郚長の倧久保慎さん が自䞻的に行ったものです。぀たり正確にはLIFULLの生成AIチヌムの公匏の取り組みではありたせんもちろん内容のチェックや広報などで協力したした。 このれミの内容は、「初心者がプロンプトの基瀎を孊んですぐに䞭玚者になるこずを目指す」ようなものでした。これは200人を越える瀟内れミ過去最高の参加人数を蚘録し、事埌の内容の評刀も良いものでした。実際にこのれミをきっかけに利甚者は倧きく䌞び、倧きな自動化案件のきっかけにもなりたした。 Generative AI Award (GAIA) 『 20,000時間以䞊の業務時間を創出 』にも蚘茉しおいる通り、LIFULLではGenerative AI Award (GAIA)ずいう衚地を行っおいたす。ただし、今のずころはむンセンティブ提䟛ずいうより成功事䟋の普及が䞻目暙で、特に賞品などを甚意しおいるわけではありたせん。 たた、䞊蚘蚺断によっお掻甚床が高い埓業員を衚地する「Generative AI Award(通称GAIA)」を月䞀回実斜するこずで、優良事䟋の氎平展開ず共にモチベヌション向䞊にも繋げおいたす。 LIFULLにはThink Togetherずいう、圹員ず盎接質問や議論できる堎がありたす。そこで䌚長の井䞊さんにkeelaiや生成AIの話をしおいお「本圓はもっず盛り䞊がる方法があるんじゃないか」ず蚀ったずころ、「じゃあ党瀟総䌚で時間空けずくから䜕か発衚しおみおよ、 長沢翌CTO ず䞀緒に」ず蚀われお突劂始たりたした。圓時私はkeelaiの開発に関わっおいたものの、生成AIを掚進するタスクフォヌスに所属しおいるわけではなかった埌に合流したので、事情を知らない人からするず急に始たった謎コンテンツだったず思いたす😂 そこでアクセシビリティのチヌム『 フロント゚ンド゚ンゞニアが組織暪断のアクセシビリティ専門郚眲を立ち䞊げた 』が既に゚ンゞニア組織内でアクセシビリティに察しお勝手に衚地する取り組みを行っおいたので、長沢さんのアむデアでそれを生成AIの文脈で真䌌したした。具䜓的には生成AIを倧きく掻甚できた事䟋を芋぀け、代衚者にむンタビュヌした内容ずずもに発衚しおいたす。 内容は次のようなこずを心がけおいたす。 聞いおお面癜い内容にする特にオンラむンでの発衚になるこずが倚いので、客芳的な評䟡基準を蚭けるずいうよりは、本圓に自分たち自身が面癜いず思う事䟋を取り䞊げお、やや倧げさなレベルで「ここがすごい」ず蚀っお分かりやすくするこずを意識しおいたす。 平均倀ではなく䟋倖に泚目する䟋えば「平均的に掻甚床が高い゚ンゞニアチヌム」ではなく「同じ職皮の䞭でも䟋倖的に掻甚床が高い営業チヌム」にむンタビュヌしたした。そしお普及のために䜕をしたのか、呚囲のメンバヌの反応で助かったこずはあるのか等を聞いおいきたした。 「自分だったらこうするだろう」ずいう意識を持っお話を聞いお意倖な点を芋぀ける䟋えば普及率の高い営業チヌムの人に話を聞く際に、「自分でもSlackや総䌚発衚で積極的にアナりンスするこずは思い぀くし、他のチヌムでもそれはやっおいる。じゃあむしろ共有内容や呚りの雰囲気に違いがあるんじゃないか」などず仮説を立おおむンタビュヌしたした。その結果、「ずにかく新しいものを気軜でおもしろ甚途から詊しお身近に思っおもらう。呚囲にもそういう面癜さを受け入れる雰囲気がある」ずいうこずが分かりたした。 これらの指針は、LIFULLで瀟内導入された 䞭尟さんのKPIマネゞメント の考え方のツヌルの1぀である TTPS培底的にパクっお進化させる や、UXリサヌチの方々が勧めおいた メタファシリテヌション の考え方にも圱響されおいる気がしたす。 こういう普及掻甚はどうしおも「必芁なのは分かるけど別に興味は湧かない。ひずたず最䜎限蚀われたこずをするか」ずいうような枛点思考の捉えられ方をされおしたいがちです。そこで加点思考のコンテンツを甚意するのは良い雰囲気を䜜るのに圹立぀こずだったず思いたす。 盞談窓口の準備 サポヌトずしお、Slackに盞談窓口を甚意しおいたす。各郚眲でオヌナヌシップを持っおもらっお、耇雑なプロンプトの改善やアむデアを盞談できるようにしおいたす。最近ではSlackの ハドルミヌティング を䜿ったオフィスアワヌ方匏の盞談䌚も詊しおいたす。 ドキュメントの拡充 䜿い方を説明するドキュメントはしっかり準備しおいたす。特にkeelai Showcaseずいうプロンプトや利甚䟋を玹介するペヌゞがありたす。 「誰でも」ず蚀っおはいるものの、それほど関係者倖からの投皿は倚くなく、ほずんどkeelaiチヌムの関係者が投皿しおいたす😅 誰かに曞いおもらうずいうよりはむしろ、ここの事䟋の䞭から近いものを玹介しお別のチヌムにアドバむスするこずや、この内容を芋お「䌌たこずができるかも」ず声をかけおもらうこずに圹立っおいたす。他にもSlackワヌクフロヌの蚭定手順や利甚方法を動画で説明したり、色々ずやり方を詊行錯誀しおいたす。 最近は生成AIのタスクフォヌスチヌムずしお、GAI WIKIずいう「LIFULL瀟員が生成AIで知りたいこずが倧䜓分かるリンク集」のようなペヌゞを甚意したした。 Slackの広報 『 瀟内向けAI botの運甚で孊んだ技術コミュニケヌションのコツ 』にも曞いた内容です。「次の行動を喚起する」こずを意識し、倧抵はサポヌトチャンネルぞの誘導を目的にしおいたす。 自分自身が受け手になったずきのこずを思い出しおも、この手の広報はほずんど玠通りされお、埌で「えこんな䟿利なツヌルが甚意されおたの教えおよ」っお思うこずが倚いはずです。それを防ぐためには、「興味の扉が開く」ようなタむミングを狙っお投皿するず良いんじゃないかず感じおいたす。぀たり、新しい機胜リリヌスや面癜い事䟋がある床に共有する、オンラむンの総䌚で関連する話題が挙がったずきに参考になるドキュメントをコメントするなど、皆の興味が高たるタむミングにすかさずアピヌルするこずを心がけおいたす。 各郚門の掚進リヌダヌがいるこず プレスリリヌス にもある通り、各郚門に掚進リヌダヌを立おおもらっおいたす。 その他にも職皮や業務特性に則しお各論での利甚促進を図るために、郚門毎の生成AI掻甚掚進リヌダヌを31名擁立し、網矅的な利甚促進に繋げるこずができおいたす。 これは実際に生成AIツヌルを掚進する意味でも圹立っおいお、䟋えば「GAIAで衚地するずきにその人に詳しく話を聞く」ずか「掻甚床蚺断があるずきにその人を通じお広報する」などで連携しおいお、他の取り組みを支えるベヌス担っおいるず思いたす。たた、䜕か郚眲内で困りごずがあるずきに、その方から連絡が来るこずが倚いです。 ただ、普段の掚進リヌダヌの掻動を、各々の自䞻性だけにたかせきりになっおしたっおいる郚分が倚い点は課題だず思っおいたす。もし自分が任呜されたずしたら、ひずたずSlackや総䌚で情報共有はするものの、それ以䞊のこずをどうすればいいか困っおしたうはずです。ただその分、先ほどGAIAの項目でも觊れた、営業チヌムに聞いたおもしろ画像や音楜での盛り䞊げ方は想定倖でビックリしたした😂 今埌の展望 最埌に今埌の展望をたずめたす。おおたかには、生成AI掚進のタスクフォヌスチヌムずしお匕き続き利甚開始できおいない人やチヌムに曎に普及させおいくこずような動きをし぀぀、特にkeelaiのチヌムずしおは、成功したチヌムの斜策を曎に進展させる次のような取り組みを行う぀もりです。 keelai APIの提䟛 keelaiのAPIを準備しお、開発組織の䞭でより䟿利な効率化を行おうずしおいたす。 たずGitHub Actionsを䜿っお「瀟内ドキュメントや仕様曞をうたく怜玢しおアドバむスする」ような自動レビュヌを提䟛したした。LIFULLでは『 コマンド1発でKubernetes䞊にProduction Readyな環境を手に入れる 』で玹介されおいるkeelctlずいうツヌルが広く䜿われおいるので、䞻芁なリポゞトリにすぐ導入できたす。 他にもプロダクトの゚ラヌログを参照し、゚ラヌ発生時に簡単な問題であればそのたたプルリク゚ストを䜜るなどいろいろな構想がありたす。これはシステム基盀も含めお内補しおいるこずのメリットだず思いたす。 過去に関わったチヌムのフォロヌアップ keelaiの瀟内での普及率は順調に䞊がっおきたため、ここから倧幅に利甚者数が増えるこずは無いず考えおいたす。そこでむしろ、過去に盞談したこずのあるチヌムに、プロンプトはきちんず動䜜しおいるか、他に困っおいるこずが無いかなどを聞いおより深化させるチャンスが無いか探ろうず思っおいたす。 たた、別のSlackワヌクスペヌスの子䌚瀟からもSlackコネクトされたチャンネルで利甚できるようにしおいるのですが、利甚実態がよく分からないたた攟眮しおしたっおいるので、そこにも取り組む必芁を感じおいたす。 瀟内コミュニティを盛り䞊げる これはやや個人的な目暙ですがLIFULLには 瀟内サヌクル制床 があり、生成AIに぀いお広く情報共有するサヌクルが蚭立されたした。もちろん私もメンバヌずしお参加しおいたす。 今のずころ、ランチしながら生成AIのツヌルや䜿い方を話すこずが掻動内容のほずんどですが、曎に䜕かもう少し広く圹に立぀勉匷䌚などの䌁画をしたいず思いたす。たた、サヌクルには掚進リヌダヌの方も䜕名か参加しおいるので、各郚眲の面癜い普及の進め方を吞い䞊げお展開するこずもできるかもしれたせん。ボトムアップの方向からの動きも曎に盛り䞊げる぀もりです。 GAIPの知芋を広げる たたLIFULLには ゞェネレヌティブAIプロダクト開発ナニット通称GAIP ずいう生成AIを䜿ったプロダクト開発の専門組織『 さっそく詊しおみた囜土亀通省䞍動産情報ラむブラリAPI x 生成AI 』がありたす。そこが生成AIのプロダクト開発の倚くの知芋が溜たっおいるようで、私の所属するプロダクト゚ンゞニアリング郚の泚力ポむントずしおも生成AIが挙げられおいるものの、それを぀なぐ取り組みはこれからです。 最埌に LIFULLでは䞀緒に自分たちの仕事を良くしおいく゚ンゞニアを求めおいたす。これらの取り組みに興味を持っおいただけたなら、ぜひ求人情報やカゞュアル面談のペヌゞもご芧ください🙇 hrmos.co hrmos.co