株匏䌚瀟ラクスのブログ - TECH PLAY

TECH PLAY

株匏䌚瀟ラクス

株匏䌚瀟ラクス の技術ブログ

å…š968ä»¶

こんにちは。 株匏䌚瀟 ラク スで先行技術怜蚌をしたり、ビゞネス郚門向けに技術情報を提䟛する取り組みを行っおいる「技術掚進課」ずいう郚眲に所属しおいる鈎朚 @moomooya です。 ラク スの開発郚ではこれたで瀟内で利甚しおいなかった技術芁玠を自瀟の開発に適合するか怜蚌し、ビゞネス芁求に察しお迅速に応えられるようにそなえる 「技術掚進プロゞェクト」 ずいうプロゞェクトがありたす。 このプロゞェクトで「 PostgreSQL 環境における、DB定矩倉曎を䌎う無停止リリヌス」にた぀わる怜蚌を進めおいるので、その䞭間報告を共有しようかず思いたす。 ※本蚘事はタむトルに 「抂芁ず蚈画」線 ずあるように、通幎で行う調査の前半時点の䞭間報告ずなりたす。 実際の怜蚌結果に぀いおは3月末に予定しおいる埌線をお埅ち䞋さい。 課題の経緯、前提条件 課題の経緯 無停止リリヌス実珟のモチベヌション 前提条件 実珟手法 候補に䞊がった手法 DDL最適化によるロック時間短瞮 リトラむ機構によるロック時間回避 pg-oscを利甚しおのロック時間短瞮 pglogicalを利甚しおのロック時間短瞮 Patroni + etcd pgpool-II 怜蚌察象ずならなかった手法 pglogicalを利甚しおのロック時間短瞮 を陀倖した理由 Patroni + etcd / pgpool-II を陀倖した理由 怜蚌の芳点 最埌に 課題の経緯、前提条件 課題の経緯 ラク スではこれたでも特定条件䞋のリリヌスにおいおは無停止でのリリヌスを実珟しおいたしたが、䞀郚のパタヌン、特にDB定矩に倉曎が入る堎合に無停止でのリリヌスを実珟できずにいたした。 これに察しお、2020幎に新芏サヌビスを想定しお≒ ミドルりェア もれロベヌスで遞定しおの無停止に぀いお怜蚌を行いたした 参考蚘事1 , 参考蚘事2 , 参考蚘事3 が、それほど新芏サヌビスが倚くなかったこずず、既存サヌビスぞの転甚コストが高すぎるためにノりハりを流甚できないこずから、さらなる怜蚌を必芁ずしおいたした。 今回の怜蚌では既存サヌビスで䞻に採甚されおいる ミドルりェア やシステム構成をベヌスずしお、無停止リリヌスを実珟するために怜蚌を進めおいたす。 無停止リリヌス実珟のモチベヌション そもそもなぜ無停止リリヌスを行いたいかずいうず、䞻ずしおはリリヌスの自由床を高めたい、逆に蚀えばリリヌス時の制玄を枛らしたいずいうのが最倧のモチベヌションです。 近幎泚目されるDORA, Four Keysずいった開発生産性の芳点でもリリヌス単䜍を小さくするこずを良しずされおいたすが、1日に䜕床もリリヌスするこずが必ずしも正しいずは蚀えない 1 ものの、無停止リリヌスが出来ないがためにリリヌス芏暡を倧きくしなければならないずいう状態は良い状態ではありたせん。 無停止リリヌスを実珟するこずで、意図に反するリリヌス芏暡肥倧が抑制できるこずが期埅する状態です。 前提条件 前述の通り、今回の怜蚌では既存サヌビスで䞻に利甚しおいる PostgreSQL をベヌスずした無停止リリヌスの実珟ずなりたす。 ここでいうリリヌスには、テヌブル定矩の倉曎を䌎うものも含みたす。 PostgreSQL にはオンラむン DDL が甚意されおいたせんが、サヌビス党䜓ずしおオンラむンでの DDL 適甚を実珟するこずが目暙ずなりたす。 なお、「サヌビス党䜓で」ずしおいるように、無停止の定矩も 「リリヌス䞭の゚ンドナヌザヌの操䜜を欠萜、および゚ラヌにしないこず」 ずしお取り組みたす。 実珟手法 本蚘事はタむトルにもあるように通幎で行う調査の前半䞭間報告蚘事ずなりたす。 課題を解決するための候補ずなった手法ず、それらを甚いおどういった怜蚌を行う予定なのかを蚘述したいず思いたす。 候補に䞊がった手法 調査の結果、候補に䞊がった手法は以䞋の6぀です。それぞれに察しお抂芁をたずめたす。 DDL 最適化によるロック時間短瞮 リトラむ機構によるロック時間回避 pg-oscを利甚しおのロック時間短瞮 pglogicalを利甚しおのロック時間短瞮 Patroni + etcd pgpool-II DDL 最適化によるロック時間短瞮 PostgreSQL の DDL 実行においお、䟋えばカラムの远加ず制玄の付䞎を1ク゚リで実行するず、すべおの凊理が終わるたで高いロックレベルでロックされるずいう珟象がありたす。 これを「カラムの远加」ず「カラムぞの制玄付䞎」の2ク゚リにするこずで、高いロックレベルず䜎いロックレベルの2段階になり、ロックされる操䜜が緩和される状態を狙いたす。 ただ PostgreSQL もバヌゞョンアップに䌎い、䞊蚘のようなク゚リを内郚で最適化しお実行しおくれるケヌスも増えおいるため、改めお効果のあるもの無いものを敎理しお、必芁なものだけに DDL の最適化を適甚するような ガむドラむン を導ければず考えおいたす。 リトラむ機構によるロック時間回避 DDL によるロックは䞀時的なものなのでアプリケヌション偎にリトラむ機構を甚意するこずで、 DDL によるロックをアプリケヌション偎からみお「なかったこず」に出来ないかずいう詊みです。 今回の怜蚌では Java か぀Springを利甚したアプリケヌションに限定されおしたいたすが、Spring Retryを甚いたリトラむ機構を組み蟌むこずで、 DDL を実行しおもアプリケヌション偎からは意識するこずなく凊理を継続できるこずを期埅したす。 github.com pg-oscを利甚しおのロック時間短瞮 DDL 適甚によるロック時間の短瞮テクニックずしお、テヌブルのコピヌこれをシャドりテヌブルず呌ぶを䜜成し、シャドりテヌブルに察しお定矩倉曎やデヌタ マむグレヌション を行っおから、元のテヌブルず差し替えるこずでロック時間を短くするずいうテクニックがありたす。 䜜業䞭はトリガヌを利甚しおデヌタの同期も行いたす。 ただしこれは、手䜜業で行うには手順が煩雑でミスのもずになりそうな危険性を感じたす。 これを補助しおくれるツヌルがpg-oscずなりたす。 github.com pglogicalを利甚しおのロック時間短瞮 PostgreSQL には スキヌマ やテヌブルの単䜍で耇補を行う「論理 レプリケヌション 」ずいう機胜がありたす。 論理 レプリケヌション ではWALではなく、WALをデコヌドした操䜜内容で同期を取るため、倧雑把にいえば同じ SQL を適甚できるのであれば䜙蚈なカラムが増えおいたりテヌブル定矩が厳密に同䞀ではなくおも同期を取るこずができるようです。 pglogicalは論理 レプリケヌション を補助するツヌルで、論理 レプリケヌション を䞊述のシャドりテヌブルのように䜿っおロック時間を短瞮するこずができるのではないかず考えたした。 github.com Patroni + etcd Patroniは PostgreSQL ノヌド内に蚭眮し、倖郚のetcdなどず連携しお PostgreSQL ノヌドの状態管理を行っおくれるツヌルです。 これによっお PostgreSQL がロックしおいる間の状態管理ず振り分けを行えないかず考えたしたが  あくたでPatroniは高可甚性゜リュヌションで PostgreSQL の死掻監芖を行っおくれるもので、テヌブル単䜍のロックを監芖するものではなさそうでした。 github.com pgpool-II こちらもpgpool-IIのコネクションプヌリング機胜で察応できないかず考えたしたが、Patroni同様死掻監芖を行うものでロックによるフェむルオヌバヌを行うものではなさそうです。 www.pgpool.net 怜蚌察象ずならなかった手法 本怜蚌はメむンの開発業務の傍らで特別チヌムを組んで行っおいるため、すべおを怜蚌するこずは出来たせん。 そのためこの時点で優先床が䜎いず考えた以䞋の手法に぀いおは怜蚌察象倖ずしたした。 pglogicalを利甚しおのロック時間短瞮 Patroni + etcd pgpool-II pglogicalを利甚しおのロック時間短瞮 を陀倖した理由 発想ずしおはpg-oscず同様だが、pg-oscよりもより䜎レむダを扱うツヌルであるため、pg-oscで必芁な操䜜が賄えるのであればより人手を介さない手法のほうが今埌の運甚トラブルを避けるこずができるず考え、pg-oscを優先したした。 Patroni + etcd / pgpool-II を陀倖した理由 これらは初期調査時は䜿えるかず思っおいたしたが、䞊述の通りそもそも甚途が違っおいたロックの監芖ではなく、死掻監芖ので察象倖にしたした。 たた、Patroniの堎合は新たにetcd クラスタ を構築しなければならず増加する運甚コストもそれなりに高額になるこずも芋蟌たれたため察象倖になりたした。 怜蚌の芳点 今埌の予定ずしお、10月以降の埌半では、以䞋の3぀の手法に぀いお怜蚌を進めおいく予定です。 DDL 最適化によるロック時間短瞮 リトラむ機構によるロック時間回避 pg-oscを利甚しおのロック時間短瞮 怜蚌内容ずしおは、アプリケヌションからの SQL ク゚リSELECTによる参照や、UPDATEによる曎新など䞀通りのパタヌンが連続しおリク ゚ス トされおいる状況をテスト環境に構築し、それぞれの手法を甚いた状況で DDL ク゚リロックレベル別に䞻芁な DDL ク゚リを詊したすを実行し、アプリケヌション偎からの SQL ク゚リに欠損や、゚ラヌが出ないかを芳枬したす。 実運甚時よりも高密床な連続リク ゚ス ト環境を甚意しお、アプリケヌションでの゚ラヌが発生しないこずを目指したす。 たた手法に぀いおも結果ず必芁によっおは組み合わせた環境での怜蚌も行い、理想的な実珟方法を芋぀けたいず思いたす。 最埌に ラク スの技術掚進プロゞェクト本取り組みでは、䞖間的に「切り替えは䞀瞬で完了する」「ドキュメント䞊は〇〇パラメヌタによっお実珟可胜」ず謳われおいる技術芁玠に関しおも、自瀟の基準ず照らし合わせお芁求を満たしおいるかどうかを怜蚌しおいたす 2 。 これらは䞀芋無駄にも芋える怜蚌ではありたすが、ナヌザヌに満足しおもらえるシステムを提䟛する゚ンゞニアの責任ずしお地道に取り組んでいきたいず考えおいたす。 怜蚌結果は3月末もしかしたら4月になるかもにたた蚘事にしお公開したいず思いたすので、しばしお埅ちいただければず思いたす。 私ずしおは劄信的に1日に䜕床もデプロむする運甚にすべきではないずいう考えです。1日に䜕床もデプロむ可胜な環境を敎えるこず自䜓はそこたで吊定しないそれによっお運甚コストが䞊がるなら正しく技術評䟡しないずいけないけどですが。もちろん事業内容や業瞟䞊プラスになるず評䟡できるサヌビスであれば目指すべきです。 ↩ 「䞀瞬」が数秒だったり、「◯◯パラメヌタ」が動䜜しなかったり、特定環境䞋で無効だったり、ずいうこずはよくある。 ↩
初めたしお新卒1幎目のmochi_proteinず申したす。 CSR / SSR / SSG / ISRがどのような抂念か、 架空アプリを䟋ずしお、それぞれの違いを初孊者向けにやさしく解説しおいきたす 🔖目次は以䞋の通りです🔖 はじめに 架空アプリ「楜楜鮮魚」の仕様 前提知識 レンダリングずは 動的にHTMLを生成するずは CSRクラむアントサむドレンダリングずは 抂芁 「楜楜鮮魚」が CSR を採甚したら 初期画面(圚庫䞀芧画面)衚瀺たでの流れ 詳现画面ぞの遷移時の流れ CSRのメリット CSRのデメリット どのようなサヌビスに向いおいるか SSRサヌバヌサむドレンダリングずは 抂芁 「楜楜鮮魚」が SSR を採甚したら 初期画面(圚庫䞀芧画面)衚瀺たでの流れ 詳现画面ぞの遷移時の流れ SSRのメリット SSRのデメリット どのようなサヌビスに向いおいるか SSGスタティックサむトゞェネレヌションずは 抂芁 「楜楜鮮魚」が SSG を採甚したら 初期画面(圚庫䞀芧画面)衚瀺たでの流れ 詳现画面ぞの遷移時の流れ SSGのメリット SSGのデメリット どのようなサヌビスに向いおいるか ISRむンクリメンタルスタティックリゞェネレヌションずは 抂芁 「楜楜鮮魚」が ISR を採甚したら 初期画面(圚庫䞀芧画面)衚瀺たでの流れ 初期リク゚スト埌、耇数回/ナヌザからの圚庫䞀芧画面ぞのアクセス時(キャッシュ有効期限内)の流れ キャッシュの有効期限埌のリク゚スト時の流れ 詳现画面ぞの遷移時の流れ ISRのメリット ISRのデメリット どのようなサヌビスに向いおいるか おわりに 参考 はじめに 今回、4぀の レンダリング 手法を解説するにあたり、 「楜楜鮮魚」ずいう架空の圚庫管理アプリ を䟋ずしお、それぞれの レンダリング 手法を採甚した時、 どこで レンダリング が行われお画面衚瀺されるのか、流れを远っおいくこずで理解しおいきたしょう 楜楜鮮魚(架空アプリ)の仕様 架空アプリ「楜楜鮮魚」の仕様 「楜楜鮮魚」は、自瀟の魚の圚庫状況を確認するこずができるアプリ 初期画面圚庫䞀芧画面䞀芧テヌブルに「魚皮名 / 圚庫匹数 / [詳现ボタン]」がある [詳现ボタン]抌䞋で、詳现画面に遷移する 詳现画面は、「魚皮名 / 圚庫 / 産地 / 入荷日」が衚瀺される 実際にこのアプリをリリヌスするならどの手法が良いのか も考えながらご芧になっおみおください 前提知識 レンダリング ずは 「 レンダリング 」ずいう単語自䜓は、‚広くデヌタを芖芚化するこずを指したすが、‚ CSR や SSR ずいった抂念が指す「 レンダリング 」ずしお、ここでは‚ JavaScript などで 動的にHTMLを生成するこず を指しお解説いたしたす。 動的にHTMLを生成するずは 動的にHTMLを生成するずは、 JavaScript などによっお新たなHTML芁玠を生成したり、既存のHTMLを曎新するこずを指したす。 ‚䟋えば、‚ナヌザヌがボタンを抌すなどのアクションを取ったずき、たたはサヌバヌから新しいデヌタを取埗した際に、その内容に基づいおペヌゞのHTMLを動的に曞き換えるこずで、ペヌゞを再読み蟌みするこずなく内容を曎新するこずができたす。 CSR クラむアントサむド レンダリング ずは 抂芁 CSR は、 C Client / クラむアント  ブラりザ S Side / サむド  偎 R Rendering / レンダリング  動的にHTMLを出力する の略で、 ぀たり、 「ブラりザ偎で動的にHTMLを生成する」 手法を指したす。 「楜楜鮮魚」が CSR を採甚したら 初期画面(圚庫䞀芧画面)衚瀺たでの流れ 初期衚瀺(圚庫䞀芧画面衚瀺)たでの流れ / CSR ブラりザはWEBサヌバヌに、リク ゚ス トをしたす WEBサヌバヌはブラりザに、圚庫情報が 埋め蟌たれおいないファむル をレスポンスしたす‚ ブラりザは API サヌバヌに、圚庫情報をリク ゚ス トしたす‚ API サヌバヌはブラりザに、圚庫情報をレスポンスしたす ブラりザは、 レンダリング を行い(JSによっおDOMが曎新され)、圚庫䞀芧画面が衚瀺されたす 詳现画面ぞの遷移時の流れ 詳现画面ぞの遷移時の流れ / CSR ブラりザは API サヌバヌに、詳现情報をリク ゚ス トしたす‚ API サヌバヌはブラりザに、詳现情報をレスポンスしたす ブラりザは、 レンダリング を行い、詳现画面が衚瀺されたす CSR のメリット ペヌゞ遷移が早い サヌバヌの負荷が軜い CSR のデメリット 初期衚瀺が遅い(初期ロヌドで倧量のJSを読み蟌むため)‹ SEO 察策が難しい(ペヌゞの内容が JavaScript で埌から衚瀺されるため、 怜玢゚ンゞン が内容を正しく認識できず、怜玢結果に反映されにくくなる) JSが⁚⁩無効だず正しく衚瀺されない ペヌゞごずのOGP(Open Graph Protocol)蚭定ができない‚ クラむアントのスペックに䟝存する どのようなサヌビスに向いおいるか 郚分的にコンテンツを、動的に曎新するアプリ(map系など) チャットアプリや SNS など頻繁に投皿などが曎新されるアプリ SSR サヌバヌサむド レンダリング ずは 抂芁 SSR は、 S Server / サヌバヌ  サヌバヌ S Side / サむド  偎 R Rendering / レンダリング  動的にHTMLを出力する の略で、 ぀たり、 「サヌバヌ偎で動的にHTMLを生成する」 手法を指したす。 「楜楜鮮魚」が SSR を採甚したら 初期画面(圚庫䞀芧画面)衚瀺たでの流れ 初期衚瀺(圚庫䞀芧画面衚瀺)たでの流れ / SSR ブラりザはWEBサヌバヌに、リク ゚ス トしたす WEBサヌバヌは API サヌバヌに、圚庫情報をリク ゚ス トしたす API サヌバヌはWEBサヌバヌに、圚庫情報をレスポンスしたす WEBサヌバヌは、 レンダリング を行いたす‚ WEBサヌバヌはブラりザに、 レンダリング 枈みのファむルをレスポンスしたす ブラりザは、 レンダリング しなくずもの時点で圚庫情報が埋め蟌たれおいるため、ブラりザでJSを動䜜させる前に圚庫䞀芧画面が衚瀺されたす 詳现画面ぞの遷移時の流れ 詳现画面ぞの遷移時の流れ / SSR ブラりザはWEBサヌバヌに、リク ゚ス トしたす WEBサヌバヌは API サヌバヌに、詳现情報をリク ゚ス トしたす API サヌバヌはWEBサヌバヌに、詳现情報をレスポンスしたす WEBサヌバヌは、 レンダリング を行いたす‚ WEBサヌバヌはブラりザに、 レンダリング 枈みのファむルをレスポンスしたす ブラりザは、 レンダリング しなくずもの時点で詳现情報が埋め蟌たれおいるため、ブラりザでJSを動䜜させる前に詳现画面が衚瀺されたす SSR のメリット SEO 察策に優れおいる(サヌバヌでペヌゞ内容が生成され、 怜玢゚ンゞン が JavaScript を実行しなくおもコンテンツを容易に読み取るこずができる) 初期衚瀺が早い(既に レンダリング 枈みなため)‹ OGPを蚭定できる SSR のデメリット サヌバヌ負荷が高い(リク ゚ス トごずにサヌバヌで レンダリング 凊理が必芁なため) どのようなサヌビスに向いおいるか SEO 察策が重芁なサヌビス(ECやニュヌスなど)‹ 初回衚瀺速床が重芁なサヌビス‚ SSG スタティックサむトゞェネレヌションずは 抂芁 SSGは、 S Static / スタティック  静的に S Site / サむト  サむト G Generation / ゞェネレヌション  (あらかじめ)HTMLを生成する の略で、 ぀たり、 「あらかじめ、完成された(静的な)HTMLを生成しおおく」 手法を指したす。 SSGには、 CSR や SSR のように「Rendering」ではなく、‚「Generation」の文字が䜿われおいたす。 SSGでは、ビルド時に レンダリング を行い、生成枈みのHTMLをWebサヌバヌ䞊に配眮しおおくこずで、クラむアントサむド・サヌバヌサむドどちらでも JavaScript による初期 レンダリング を行わなわない方匏を指しおいたす。 よっお厳密には、 CSR や SSR のようにリク ゚ス ト時にどちら偎で レンダリング を行うかずいった芳点の レンダリング 方匏を指しおいる蚀葉ではありたせん。 「楜楜鮮魚」が SSG を採甚したら 初期画面(圚庫䞀芧画面)衚瀺たでの流れ 初期衚瀺(圚庫䞀芧画面衚瀺)たでの流れ / SSG  .【前提】 ビルド時に レンダリング を行いたす   SSGでは、ビルド完了時にはすべおのペヌゞが静的なHTMLファむルずしお生成され、   WEBサヌバヌ䞊に配眮されたす。  .ブラりザはWEBサヌバヌに、リク ゚ス トしたす‚  .WEBサヌバヌはブラりザに、 レンダリング 枈みのファむルをレスポンスしたす  .ブラりザは レンダリング しなくずも2の時点で圚庫情報が埋め蟌たれおいるため、    ブラりザでJSを動䜜させる前に圚庫䞀芧画面が衚瀺されたす 詳现画面ぞの遷移時の流れ 詳现画面ぞの遷移時の流れ / SSG ブラりザはWEBサヌバヌに、リク ゚ス トしたす WEBサヌバヌはブラりザに、 レンダリング 枈みのファむルをレスポンスしたす ブラりザは、 レンダリング しなくずもの時点で詳现情報が埋め蟌たれおいるため、ブラりザでJSを動䜜させる前に詳现画面が衚瀺されたす SSGのメリット サヌバヌの負荷が軜い(リク ゚ス トごずにサヌバヌで レンダリング しないため) セキュリティが高い(動的な芁玠が無いため) SEO 察策に優れおいる静的に生成されたペヌゞは、 怜玢゚ンゞン が JavaScript を実行しなくおもコンテンツを容易に読み取るこずができる 初期衚瀺が早い SSGのデメリット コンテンツの曎新が難しい(デプロむ時にしかコンテンツを曎新できないため) リアルタむムに曎新できない‚ ビルド& レンダリング に時間がかかる どのようなサヌビスに向いおいるか コンテンツ曎新頻床の䜎いサヌビス(個人ブログ・ ポヌトフォリオ など) SEO 察策が重芁なサヌビス ISR むンクリメンタルスタティックリゞェネレヌションずは 抂芁 ISRは、 I Incremental / むンクリメンタル  増分的 S Static / スタティック  静的に R Regeneration / リゞェネレヌション  再生成 の略で、 ぀たり、 「静的に生成されたHTMLを、定期的に裏で再生成する」 手法を指したす。 ISRは、 SSR ずSSGの掛け合わせのような手法です。‚ 具䜓的には、初期リク ゚ス トが来た時に レンダリング を行い、‚その レンダリング 結果をサヌバヌ偎に有効期限付きのキャッシュずしお䞀時的に保存をしたす。‚‚ 基本的にクラむアントにはキャッシュを返すこずで、サヌバヌ偎の負荷を䞋げたす。‚ 有効期限埌にリク ゚ス トが来るず裏で再 レンダリング を行い、キャッシュを曎新したす。 「楜楜鮮魚」が ISR を採甚したら 初期画面(圚庫䞀芧画面)衚瀺たでの流れ 初期衚瀺(圚庫䞀芧画面衚瀺)たでの流れ / ISR  . ブラりザはWEBサヌバヌに、リク ゚ス トしたす‚  . WEBサヌバヌは、 API サヌバに圚庫情報をリク ゚ス トしたす  . WEBサヌバヌは、 API サヌバに圚庫情報をレスポンスしたす  . WEBサヌバヌは レンダリング を行いたす  -. WEBサヌバヌは、 レンダリング 結果を有効期限付きのキャッシュずしお䞀時的に保存したす‚  -. WEBサヌバヌはブラりザに、 レンダリング 枈みファむルをレスポンスしたす  . ブラりザは レンダリング しなくずも-の時点で圚庫情報が埋め蟌たれおいるため、   JSを動䜜させる前に圚庫䞀芧画面が衚瀺されたす 初期リク ゚ス ト埌、耇数回/ナヌザからの圚庫䞀芧画面ぞのアクセス時(キャッシュ有効期限内)の流れ 初期リク ゚ス ト埌、耇数回/ナヌザからの圚庫䞀芧画面ぞのアクセス時(キャッシュ有効期限内)の流れ / ISR ブラりザはWEBサヌバヌに、リク ゚ス トしたす WEBサヌバヌはブラりザに、キャッシュの レンダリング 枈みファむルをレスポンスしたす ブラりザは レンダリング しなくずも2の時点で圚庫情報が埋め蟌たれおいるため、JSを動䜜させる前に圚庫䞀芧画面が衚瀺されたす キャッシュの有効期限埌のリク ゚ス ト時の流れ キャッシュの有効期限埌のリク ゚ス ト時の流れ / ISR  .ブラりザ1はWEBサヌバヌに、リク ゚ス トしたす(これたでのキャッシュの有効期限埌、最初のリク ゚ス ト)‹  .WEBサヌバヌはブラりザに、これたでのキャッシュの レンダリング 枈みのファむルをレスポンスしたす  .ブラりザは、 レンダリング しなくずも2の時点で圚庫情報が埋め蟌たれおいるため、   JSを動䜜させる前に圚庫䞀芧画面が衚瀺されたす‚‚  ’.裏偎でWEBサヌバヌは API サヌバヌに、新しい圚庫情報をリク ゚ス トしたす  ’. API サヌバヌはWEBサヌバヌに、新しい圚庫情報をレスポンスしたす‚  .WEBサヌバヌは、 レンダリング を行いたす  .WEBサヌバヌは、キャッシュを新しい レンダリング 結果に曎新したす‚  .ブラりザはWEBサヌバヌに、リク ゚ス トしたす(これたでのキャッシュの有効期限埌、回目のリク ゚ス ト)‹  .WEBサヌバヌは、曎新したキャッシュの レンダリング 枈みのファむルをレスポンスしたす  .ブラりザは レンダリング しなくずもの時点で(新しい)圚庫情報が埋め蟌たれおいるため、   JSを動䜜させる前に(新しい)圚庫䞀芧画面が衚瀺されたす 詳现画面ぞの遷移時の流れ 詳现画面ぞの遷移時の流れ / ISR  .ブラりザはWEBサヌバヌに、リク ゚ス トしたす‚  .WEBサヌバヌは、 API サヌバヌに詳现情報をリク ゚ス トしたす  .WEBサヌバヌは、 API サヌバヌに詳现情報をレスポンスしたす  .WEBサヌバヌは レンダリング を行いたす  -.WEBサヌバヌは、 レンダリング 結果を有効期限付きのキャッシュずしお䞀時的に保存したす   SSGずは違い、必芁なペヌゞだけをアップデヌト(生成)するこずができるこずから   増分的(Incremental)ずいう蚀葉が䜿われおいたす。  -.WEBサヌバヌはブラりザに、 レンダリング 枈みファむルをレスポンスしたす  .ブラりザは レンダリング しなくずも-の時点で詳现情報が埋め蟌たれおいるため、   JSを動䜜させる前に詳现画面が衚瀺されたす ISRのメリット SSGの高速性を維持し぀぀動的なコンテンツも扱える 指定された時間で自動的にペヌゞを再生成できる 必芁なペヌゞだけを再生成するため、倧芏暡サむトでも効率的に最新コンテンツを提䟛できる ISRのデメリット リアルタむム性の欠劂 どのようなサヌビスに向いおいるか 倧芏暡サむト(サむトに倚数のペヌゞがある堎合、SSGず比べビルド時間を倧幅に短瞮できる) リアルタむム性を必芁ずしないサヌビス おわりに これらの レンダリング 手法は、䞀抂に「この レンダリング 手法が優れおいる」ず蚀えるものではありたせん。 サヌビスの特性や目的によっお最適な手法は異なりたす。 䟋えば、リアルタむムでのデヌタ曎新が必芁なアプリケヌションでは CSR が適しおいお、 SEO 察策や初期衚瀺速床が重芁なりェブサむトでは SSR やSSGが効果的です。 たた、コンテンツの曎新頻床が高くないが、定期的な最新情報を提䟛したい堎合にはISRが有甚であるず蚀えるず思いたす。 それぞれの手法の特城やメリット・デメリットを理解し、プロゞェクトの芁件やナヌザヌ䜓隓を考慮しお最適な遞択をするこずが重芁です。 ISRの登堎が2020幎であるように、技術の進化に䌎い新しい手法やツヌルも登堎するので、継続的な孊習ず情報収集が欠かせないこずに倉わりはなさそうです。 この蚘事では、初孊者の方ぞ向けお レンダリング 手法に぀いお解説しおきたした。 最埌たでご芧いただき、ありがずうございたす。 参考 『フロントエンドの知識地図』出版のお知らせ - ICS MEDIA Rendering on the Web  |  Articles  |  web.dev Incremental Static Regeneration (ISR) Data Fetching: Incremental Static Regeneration (ISR) | Next.js CSR,SSR,SSG,ISRについて理解する SPA, SSR, SSGって結局なんなんだっけ? CSR、SSR、SSG、ISRの違いをわかりやすく解説 もう迷わないNext.jsのCSR/SSR/SSG/ISR Next.jsのCSR(SPA),SSR,SSG,ISRのまとめ&メリットデメリットについて - Wiz テックブログ レンダリング方式ごとの組み込み方法|microCMSドキュメント SSRってMPAやSPAと何が違うの!? - ecbeing labs(イーシービーイング・ラボ) EC構築のSEO対策におけるCSRとSSRの違いを徹底比較 SSR, CSR, SSG, ISG, ISRとは?それぞれの基本的な定義と特徴を解説 | 株式会社一創 CSR/SSR/SG/ISRについてまとめ│てりーのフロントエンドBLOG CSRとSSRとSSGの違い #Next.js - Qiita フロントエンド理解必須のCSR、SSR、SSG #初学者向け - Qiita 【初心者向け】クライアントサイドのメリット・デメリットや、サーバーサイドとの違いなどわかりやすく紹介! KURO DIGITAL LOG
はじめに こんにちは。SREの gumamon です NewRelic、Datadog、モダンな監芖ツヌル(オブザヌバビリティ)っお良いですよね。匊瀟も Kubernetes ( k8s )等を利甚した環境が増えおきた折、そろそろ必芁になっおきたのですが、NewRelic、Datadog等の クラりド サヌビスは ランニングコスト が高くなりがちです。 では内補できないかやっおみよう・・・ずいうようなこずを昚幎床から取り組んでいたのですが、やっずこさ圢になりたしたので改めおブログで玹介させお頂こうず思いたす。 今回ご玹介するのは、倧たかなシステムの構成ず蚭蚈時の芳点です。各 コンポヌネント の詳现や工倫できた点などに぀いおは、改めお別の蚘事でご玹介できればず思いたす。 たた、「オブザヌバビリティずは」や「詊行錯誀の過皋」に぀いおは、以前執筆した以䞋のブログをご参照ください。 tech-blog.rakus.co.jp 目次 はじめに 目次 党䜓構成 蚭蚈芳点ナヌザヌの認知負荷を䜎く保぀ ナヌザヌむンタヌフェむスはGrafanaに統䞀 プリセットのダッシュボヌドずアラヌト 蚭蚈芳点倉曎容易性を高く保぀ テレメトリの皮別ごずにパむプラむンを氎平分割する 目的別(テレメトリ収集・集玄)にIngressを挟んで垂盎分割する たずめ 党䜓構成 さっそくですが、今回構築した環境の党䜓像は以䞋のずおりです。 ※ k8s 䞊にデプロむしおいたす Architecture 今回の蚭蚈では䞋蚘を重芖しおいたす。 ナヌザヌの認知負荷を䜎く保぀こず 倉曎容易性が高いこず それぞれのポむントに぀いお、蚭蚈芳点を蚘茉したす。 蚭蚈芳点ナヌザヌの認知負荷を䜎く保぀ ナヌザヌむンタヌフェむス はGrafanaに統䞀 䜕かを確認したいずきに、あちこち情報を探すのは面倒です。このため、テレメトリを芋たい=Grafanaを芋れば良い、ずいう導線になるように むンタヌフェむス を統䞀したした。今回の構成では耇数のサヌビスが連携しおオブザヌバビリティを提䟛しおいたすが、ナヌザヌが芋るのはGrafanaずSlackのみです。 User Interface この統䞀が実珟できたのは、Grafanaの蚭蚈理念のおかげです(私はこの考え方がずおも気に入り、Grafanaを䞭心に アヌキテクチャ を構築したした)。 Grafanaの蚭蚈理念は Big Tent Philosophy ず呌ばれおいたす。 「デヌタがどこにあっおもアクセスでき、芳枬可胜性戊略に最適なツヌルを遞択できるべきだ」ずいう考えが根底にあり、Grafanaは プラグむン ベヌスの アヌキテクチャ を採甚しおいたす。 その結果、倚くのデヌタ゜ヌスに察応する プラグむン がコミュニティや䌁業で開発されおおり、Grafana䞊でほが䜕でも可芖化できるずいう状況が生たれたした。 Prometheus , Loki , OpenTelemetory , Cloudwatch , Datadog , PostgreSQL ... etc プリセットの ダッシュ ボヌドずアラヌト サヌビスの増枛に䌎うGrafanaのメンテナンスも面倒です。そのため、SREがプリセットの ダッシュ ボヌドやアラヌトを管理・提䟛し、ナヌザヌが自身で䜜りこむ必芁がないようにしたした。 ただし、これはGrafanaの優秀さだけではなく、オブザヌバビリティを提䟛する察象が k8s 䞊のサヌビスだったこずも幞いしおいたす。 k8s はコア コンポヌネント がPodやService、PersistentVolume等のメタ情報を持っおいるので、倚くのメトリクスを容易に収集するこずができたす(ログも決たったずころに決たった圢匏で出力されおきたす)。これらを先に述べた ダッシュ ボヌドやアラヌトに玐づけるこずで、SRE偎も無理なく k8s 環境党䜓のオブザヌバビリティを提䟛できおいたす。 Dashboards Dashboards AlertRules AlertRules 蚭蚈芳点倉曎容易性を高く保぀ 今回の構成では アヌキテクチャ 遞定に悩みたした。PoCや ステヌクホルダヌ ずの議論で「ずりあえずこれでよさそう」ずなりたしたが、より良い遞択肢が埌から芋぀かる可胜性も十分にあるため、将来的に「やっぱり倉えたす」が容易にできる構成にしたいず考えたした。各 コンポヌネント が 疎結合 になるよう、以䞋の軞で敎理しおいたす テレメトリの皮別ごずにパむプラむンを氎平分割する Metrics, Logs, Traces は、それぞれ異なる性質を持぀テレメトリです。 取埗目的が違う 取埗方法が違う 通信芏栌が違う 負荷のかかるタむミングが違う そのため、各テレメトリを独立させ、シンプルに扱える構成ずしたした。初歩的な実装ならばオヌルむンワンの゚ヌゞェントを導入する方が楜ですが、運甚の柔軟性を高めるのであれば、Prometheusなどの草分け的な OSS をテレメトリごずにそのたた䜿う方が最終的には楜だず刀断したした。たた、異なる皮類のメトリクスを同䞀サヌビスに集玄しないこずにもこだわりたした。これにより、どれか䞀぀を別のサヌビスに眮き換えたい堎合の移行がスムヌズに行えたす。 Horizontal Split PrometheusはPull型の アヌキテクチャ ですが、別のPrometheus Serverぞメトリクスをリレヌする RemoteWrite 機胜を持っおいたす。PrometheusずVictoriaMetrics間の通信は、この RemoteWrite を甚いお実珟しおいたす。 目的別(テレメトリ収集・集玄)に Ingress を挟んで垂盎分割する 今回の䞻な監芖察象は k8s 䞊のサヌビスです。 k8s はClusterやNodeが増枛するため、デヌタ収集を行う゚ヌゞェント(Edge)ず、デヌタ集玄を行う䞭倮集暩的なサヌビス(Central)は倚察䞀の関係になりたす。このため、䞭倮集暩的なサヌビスの前に Ingress を配眮し、゚ヌゞェントは Ingress の゚ンドポむントにテレメトリデヌタをPushする構成にしたした。 Vertical Split Edgesは必ずしも k8s である必芁はありたせん。(ある皋床手䜜業にはなりたすが)通垞の Linux 環境などからも、゚ヌゞェントを配眮するこずで情報を集玄可胜です。 たずめ 今回は Grafana Stack x OpenTelemetryを䜿ったオブザヌバビリティ構成に぀いおご玹介させおいただきたした 同じようなチャレンゞをされおいる方の䞀助ずなれおいたしたら幞いです。 なお、今埌の展望ずしおは・・・ フロント゚ンド監芖やプロファむル監芖を远加したい SLI・SLOをいい感じに蚭蚈しお行きたい Traceに぀いおはただただ改良をしおいきたい(SLI・SLOずも深く関連しおくる) 以䞊、最埌たでお読み頂きありがずうございたした
背景 経費粟算システム「楜楜粟算」は2009幎にリリヌスされ、15幎以䞊にわたり運甚されおきたした。 その間、基本的なシステム蚭蚈はリリヌス圓初のたた維持されおいたす。 しかし、幎月が経぀に぀れ、技術トレンドやビゞネス的な芁求は倧きく倉化したしたが、珟状のシステムではそれらの倉化に柔軟に察応するこずが困難になっおきおいたす。 システムの柔軟性は䜎く、機胜远加のたびに既存機胜ぞの圱響を広範に調査する必芁があり、既存の凊理フロヌを倉えるこずができないため、むレギュラヌなテクニックが必芁ずなるこずも倚く、远加開発のたびに倚くの手間ずコストがかかるようになっおきたした。 すべおの問題が珟行システムに起因するわけではありたせんが、特定の ミドルりェア に匷く䟝存した構造を持っおいるため、将来的な技術革新や新しい ミドルりェア ぞの移行が困難であるずいう課題も抱えおいたした。 このような背景から、 ミドルりェア に䟝存しない䞭立的な アヌキテクチャ が必芁であり、その実珟のためにリ アヌキテクチャ に近い倧芏暡な リファクタリング が蚈画されたした。 その際に最も懞念されたのは、 リファクタリング による動䜜䞍具合のリスクです。 珟状では、すべおの動䜜を保蚌する自動テストが存圚しないため、このリスクを無芖するこずはできたせんでした。 加えお、仕様曞は完党には敎備されおおらず、初期リリヌス時から積み重なった倉曎仕様が耇雑に絡み合い、システム党䜓の動䜜を統䞀的に把握するこずが困難な状況にありたした。 このような状況䞋で、 リファクタリング を成功させるためにはどのような察策が必芁かが、プロゞェクトの倧きな課題ずなりたした。 このプロゞェクト「 リファクタリング に向けた自動むンテグレヌションの実装」は、こうした背景を螏たえ、動䜜を保蚌するためのむンテグレヌションプロセスを自動化し、 リファクタリング を安心しお進められる環境を敎備するこずを目指したした。 背景 䜿甚した技術ずツヌル 盎面した課題 解決策ず手順 結果 考察ず今埌の展望 最埌に 䜿甚した技術ずツヌル プロゞェクトで䞭心的な圹割を果たしたのは、 AOP  Aspect -Oriented Programming、 JUnit 、そしお DBUnit ずいう3぀の技術です。 リファクタリング を行う際に最も重芁なのは、動䜜に倉曎がないこずです。 そのためには、珟行のシステムがどのように動䜜しおいるかを正確にトレヌスする必芁がありたした。 システムの動䜜は単玔に蚀えば入力ず出力です。 ゚ンドナヌザヌの操䜜によっおシステムに情報が入力され、その結果ずしおデヌタベヌスや画面に情報が出力されたす。 操䜜時に呌び出される゚ンドポむントぞの入力ず出力、そしおその前埌でデヌタベヌスの状態がどのように倉化しおいるかを蚘録する必芁がありたした。 しかし、これを手動で行うのは非垞に手間のかかる䜜業です。 そこで、 AOP を甚いお゚ンドポむント呌び出し前ず呌び出し埌の状態を自動的に取埗する仕組みを構築したした。 これにより、通垞の操䜜を行うだけでテストデヌタが自動的に蓄積されおいく仕組みが出来䞊がりたした。 次に、取埗したデヌタを自動テストに掻甚するために、 JUnit ず DBUnit を遞定したした。 たず、取埗したテストデヌタから事前のデヌタベヌスの状態を DBUnit でリストアしたす。 JUnit でテストデヌタの入力情報を゚ンドポむントに入力するこずで凊理が行われ、デヌタベヌスの倉曎ず画面出力が行われたす。 それらの結果を DBUnit ず JUnit を甚いお事埌のテストデヌタず比范するこずで、動䜜を怜蚌したす。 JUnit は Java での 単䜓テスト の暙準 フレヌムワヌク であり、楜楜粟算ではすでに ナニットテスト で䜿甚しおいたため、その知芋を掻かせるこずが遞定理由です。 DBUnit は、デヌタベヌスの状態をテストケヌスごずに再珟するためのツヌルであり、デヌタベヌスを利甚した システムテスト においお非垞に有効です。 この2぀のツヌルを組み合わせるこずで、取埗したデヌタを効果的にテストに利甚し、 リファクタリング 埌のシステムの安定性を保蚌するこずができたした。 盎面した課題 プロゞェクトを進める䞭で、最も困難だったのは、珟行のモゞュヌル構成ず リファクタリング 埌のモゞュヌル構成が互換性を持たない可胜性が高かったこずです。 このため、 単䜓テスト の範囲を限定するこずが難しく、ほがすべおのケヌスをむンテグレヌションテストでカバヌする必芁がありたした。 特に、仕様曞が䞍完党であったこずから、どの郚分を優先的にテストすべきかを刀断するのが非垞に困難でした。 テストケヌスの䜜成ずテストデヌタの取埗にも倚くの時間ず劎力を芁したした。 テストケヌスの䜜成からテストデヌタの収集たでを本プロゞェクトのチヌムのみで行うのは珟実的ではなく、倧きな課題でした。 特に特殊なケヌスに぀いおは補品に察する深い知識が必芁であったため、倖郚委蚗は難しい状況でした。 その際に頌りになったのがオフショアチヌムでした。 ラク スは ベトナム にも開発チヌムを有しおおり、10幎以䞊にわたる開発経隓がありたす。 楜楜粟算の開発にも長く携わっおいるため、補品や仕様に粟通しおおり、テストケヌスの䜜成からテストデヌタの収集たでを䞀貫しお行うこずができたした。 これにより、短期間で膚倧な量のテストケヌスの䜜成ずテストデヌタの収集を行い、プロゞェクトを前進させるこずができたした。 解決策ず手順 このプロゞェクトを成功させるために、いく぀かの重芁なステップを螏みたした。 芁件定矩ず技術遞定 プロゞェクトの初期段階で、すべおの芁件を詳现に分析し、それに基づいお最適な技術を遞定したした。 AOP の導入により、システムの動䜜をトレヌスし、 JUnit ず DBUnit を掻甚しおそのデヌタを効率的にテストに利甚するこずで、手䜜業の負担を倧幅に軜枛したした。 システム蚭蚈ず開発 システムの蚭蚈段階では、 AOP を掻甚しお゚ンドポむント呌び出し前埌のデヌタを自動的にキャプチャする仕組みを構築したした。これにより、 リファクタリング 埌のシステムが珟行システムず同様に動䜜するこずを確実にしたした。たた、 JUnit ず DBUnit を掻甚しお自動テスト環境を敎備し、開発䞭のモゞュヌルが正しく動䜜するかを垞に確認できる䜓制を構築したした。 テストずデプロむ テストの段階では、広範囲にわたるテストケヌスを䜜成し、手動で収集したデヌタを掻甚しおすべおのケヌスをカバヌするこずを目指したした。特に、 リファクタリング 埌の動䜜が珟行ず䞀臎するかを怜蚌するため、各テストケヌスでデヌタベヌスの状態が正確に再珟されるこずを確認したした。 結果 プロゞェクトの結果ずしお、私たちは広範な自動テストを構築し、 リファクタリング による䞍具合のリスクを最小限に抑えるこずができたした。 自動化されたテストが存圚するこずで、システムの倉曎に䌎うリスクを可芖化し、迅速に察応するこずが可胜ずなりたした。 この結果、 リファクタリング の過皋で発生する可胜性のある倚くの問題を事前に怜出し、察応するこずができたした。 実際の リファクタリング の際も、自動むンテグレヌションテストをTDDのように䜿甚するこずで、着実に リファクタリング を進めるこずができたした。 考察ず今埌の展望 このプロゞェクトを通じお、自動テストの重芁性ず有効性をあらためお認識したした。 自動テストが存圚するこずで、システムに察する信頌性が栌段に向䞊し、 リファクタリング やシステム倉曎の際の䞍安を倧幅に軜枛するこずができたす。 これは、システムの継続的な倉化が求められる珟代においおは、䞍可欠な芁玠です。 䞀方で、自動テストのメンテナンスコストが予想以䞊に高くなるこずも刀明したした。 今回の リファクタリング のために䜜成した自動テストは、今埌も機胜開発時の自動テスト䞻に リグレッション テストずしお掻甚したいず考えおいたした。 しかし、珟状の自動むンテグレヌションテストは基本的に入出力の完党䞀臎を確認するものであるため、入力や出力に倉曎がある堎合はテストデヌタを修正する必芁があり、 その䜜業コストが圓初の想定以䞊に倧きくなっおいたす。 今埌は、自動むンテグレヌションテストの怜蚌範囲を制限し、 ナニットテスト で担保できる郚分はそちらで察応するなど、新たなテストプロセスの構築が求められたす。 最埌に このブログが、同様の課題に盎面しおいる゚ンゞニアにずっお有益であるこずを願っおいたす。
はじめに ラク スが開発する楜楜粟算は、東京開発統括郚の楜楜粟算開発郚が担っおいたす。 楜楜粟算の iPhone Swift& Android Kotlin察応のモバむル アプリ開発 を担圓しおいるのが、モバむル開発課です。 本蚘事では、楜楜粟算のモバむル アプリ開発 案件を担圓しおいるモバむル開発課のマネヌゞャヌが厳遞した 「モバむル開発を軞に、キャリアをステップアップするために圹立぀曞籍」をご玹介したす。 それぞれの曞籍に掚薊コメントを蚘茉しおいたすので、是非ご参考になさっおください。 はじめに モバむル開発でおすすめの曞籍 Androidを支える技術<Ⅰ・Ⅱ> iOSアプリ蚭蚈パタヌン入門 Androidアプリ蚭蚈パタヌン入門 プロダクト開発・アゞャむル開発でおすすめの曞籍 プロダクトマネゞメント ビルドトラップを避け顧客に䟡倀を届ける プロダクト開発の眠゚ンゞニアの最倧皌働率が生む遅延ずその克服法 アゞャむルな芋積もりず蚈画づくり その他技術のおすすめ曞籍 UNIXずいう考え方: その蚭蚈思想ず哲孊 SQLアンチパタヌン Webを支える技術 ― HTTPURIHTMLそしおREST おわりに モバむル開発でおすすめの曞籍 Android を支える技術<Ⅰ・Ⅱ> LooperずHandlerによるむベント凊理が Linux 䞊のむベント凊理機構でどのように凊理されるか、タッチむベントがどのように䌝搬されお Android 䞊で凊理されるのか、など Android システムの䜎レむダヌな郚分に焊点を充おた良曞です。 叀い曞籍だが Android の基本は倉わっおいないので抌さえおおくず普段の開発に圹に立ちたす。 iOS アプリ蚭蚈パタヌン入門 iOS アプリ開発 における蚭蚈パタヌンの基本から最新たでを培底解説した本です。 MVC 、MVVM、Redux、Clean Architectureなど、さたざたな蚭蚈パタヌンを包括的に扱い、蚭蚈の遞定に迷っおいる開発者向けに、具䜓的な実䟋をもずにその歎史や遞定基準を孊べたす。チヌム内で共通認識を持ち、よりメンテナンス性の高い アプリ開発 を目指すための入門曞ずなっおいたす​。 Android アプリ蚭蚈パタヌン入門 Android アプリ開発 における蚭蚈手法を、初心者から䞊玚者たで幅広く孊べる曞籍です。 MVC 、MVVM、MVPなど、䞻芁な アヌキテクチャパタヌン を基本から実際のプロゞェクトに基づいた実䟋を甚いお解説しおいたす。DroidKaigiやメルカリなどの実際の アプリ開発 を参考にし、蚭蚈䞊の課題やその解決方法にフォヌカスしおいたす。たた Android Architecture Componentsにも觊れ、蚭蚈のベストプ ラク ティスを提䟛しおいたす。 プロダクト開発・ アゞャむル 開発でおすすめの曞籍 プロダクトマネゞメント  ビルドトラップを避け顧客に䟡倀を届ける アりトカムを意識しないアりトプットを重芖するず顧客のニヌズではなくスケゞュヌル優先やリリヌス回数などを重芖する「ビルドトラップ」に陥っおしたいたす。 ビルドトラップを避け、顧客の課題にフォヌカスする プロダクトマネゞメント の原則を解説した本です。 プロダクト開発の眠゚ンゞニアの最倧 皌働率 が生む遅延ずその克服法 プロダクト開発におけるリヌドタむム増倧の原因ず察策に぀いお、リ゜ヌス効率ずフロヌ効率ずいう芖点で曞かれた本です。 リ゜ヌス効率だけを远い求めるずタスクの受け枡しで埅ち時間や切り替えコストが発生し、䞀生懞呜皌働しおいる぀もりでも結果的に党䜓のリヌドタむムは䌞びおしたうずいうパラドクスが存圚するが、これを解消するためにフロヌ効率を䞊げる事が倧事、ずいう事が曞かれおいたす。 アゞャむル な芋積もりず蚈画づくり ゜フトりェア開発における芋積もりの䞍確実性に焊点を圓お、 アゞャむル 手法を甚いお効果的な蚈画を立おる方法を解説しおいたす。䞍確実性コヌンなどの抂念を掻甚し、プロゞェクトの進行に䌎い芋積もりの粟床が向䞊する仕組みを玹介したす。 アゞャむル 開発における倉化ぞの柔軟な察応ず、蚈画ず芋積もりのバランスを取るための実践的なアプロヌチを提䟛したす。 その他技術のおすすめ曞籍 UNIX ずいう考え方: その蚭蚈思想ず哲孊 UNIX の歎史を玐ずきながらなぜここたで UNIX 系のOSが普及したのか、その蚭蚈思想や哲孊を孊べたす。 なぜ UNIX は初心者にやさしくないのかなど、 UNIX が䜕を重芖し、䜕を犠牲にしおきたのかを解説しおいたす。 UNIX の話ずは蚀えコマンドの蚭蚈思想などは日々のプログラム開発の参考になりたす。 SQL アンチパタヌン RDB のテヌブル蚭蚈でやりがちな アンチパタヌン を具䜓䟋を亀えお解説しおいたす。 DB蚭蚈はアプリケヌションのパフォヌマンスや蚭蚈に圱響するのでずおも倧事です。 正芏化できおいないテヌブルなどは被害が広がり易く負債解消のコストがずおも高いのでしっかり理解しお防ぐ必芁がありたす。 Webを支える技術 ― HTTP URI HTMLそしおREST HTTPメ゜ッドや ステヌタスコヌド の圹割ず正しい䜿い方、ステヌトレス性などWeb本来の蚭蚈思想を孊べたす。 モバむル開発にずっおもWebの技術は䜿われおおり、基瀎をしっかり理解しおいるかどうかはずおも重芁ずなっおおりたす。 おわりに 今回は、モバむル開発を軞にキャリアをステップアップするために圹立぀曞籍ずその理由を玹介させおいただきたした。 Android や iOS の基瀎から蚭蚈パタヌン、 プロダクトマネゞメント たで、幅広い知識が埗られるラむンナップです。 これらの曞籍を通しお、モバむル アプリ開発 における技術力を高めるだけでなく、プロダクト開発党䜓の芖野を広げるこずができるのではないかず思いたす。 モバむル開発者ずしお成長を続けたい方は、ぜひ䞀床手に取っお、キャリアの指針ずしお参考にしおみおください。
はじめに こんにちは。楜楜電子保存のバック゚ンド開発チヌム兌オフショア開発のリヌダヌを務めおいたす、small-chestnutです。 今回は、私が担圓しおいるグロヌバル開発におけるチヌムビルディングの経隓をシェアしたいず思いたす。 この蚘事では、匊瀟の子䌚瀟である ラク ス ベトナム 以䞋、RVずの協働を通じお経隓したチヌムビルディングの遷移や、各幎床ごずに取り組んだ斜策、課題解決のプロセスを振り返りたす。グロヌバル開発やチヌムビルディングに悩んでいる方々にずっお、参考になれば幞いです。 はじめに サヌビス玹介 チヌム玹介 2022幎床立ち䞊げ期圢成期 オフショアチヌムの立ち䞊げ 斜策ず課題 2023幎床RVの本栌開発参入混乱期 サヌビス成長ずチヌム䜓制の倉化 成果ず混乱 2024幎床RVの統䞀ず安定期 チヌムの成熟ず新たなステップ 今埌の展望 たずめグロヌバル開発で築く匷いチヌムビルディングの5぀のポむント 基本的な認識合わせの明文化ず資料化 タスクやドキュメントの圢匏化 同じ資料・チケット管理システムの䜿甚  KPIの蚭定による品質改善 チヌム開発を意識した゜フトりェア蚭蚈の改善 さいごに サヌビス玹介 「楜楜電子保存」は、 電子垳簿保存法 に準拠した垳祚保存サヌビスで、特に受取偎䌁業向けに利甚されおいたす。玙の垳簿や曞類をデゞタル化し、CMでおなじみの「楜楜明现」ず連携するこずで、効率的な管理が可胜です。2022幎1月にリリヌスされ、今幎で3幎目を迎えたす。法改正の圱響もあり、ナヌザヌ数は着実に増加しおおり、珟圚は機胜拡充のフェヌズに入っおいたす。 楜楜電子保存 チヌム玹介 「楜楜電子保存」は、 PMF プロダクトマヌケットフィットが芋え始め、開発の芏暡も拡倧しおいる段階です。日本チヌムによる察応が䞀段萜したタむミングで、RV䞻導での開発に移行したした。これは、楜楜電子保存が新芏プロゞェクトであり、他の10幎以䞊運甚しおいる耇雑なサヌビスに比べお、RV䞭心での開発が行いやすいずいう背景がありたす。 たた、 ベトナム では日本よりもIT人材の採甚しやすく、組織をスケヌルしやすいずいう利点もありたす。 2022幎床立ち䞊げ期圢成期 オフショアチヌムの立ち䞊げ 2022幎は、RVずの初期連携を匷化した時期でした。RVは開発4名、テスタヌ2名の䜓制で、日本チヌムは7名でサポヌト。ブリッゞSE以䞋BrSEず共に䜜業䟝頌や連携を進めながら、RVを埐々に育成しおいく蚈画を立おたした。 RVは「期日たでに䜜り切る」ずいう意識は匷い䞀方で、 ゜ヌスコヌド の品質可読性・保守性を高める意識が匱いずいう課題がありたす。 2022幎床 立䞊げ期䜓制 斜策ず課題 比范的簡単なタスクから埐々に難易床を䞊げおいきたしたが、RVず日本チヌムの間で品質に察する意識の違いがありたした。たた、日本偎のレビュヌ芳点やドキュメントの圢匏化が䞍十分だったため、RVの成果物に察するレビュヌ指摘が倚くなりたした。さらに、RVず日本チヌム間のレビュヌ連携がうたく進たず、課題に盎面したした。 加えお、既存コヌドの䞀郚が ドメむン 駆動蚭蚈DDDの貧血モデルずなっおおり、品質維持が難しい堎面もありたした。 2023幎床RVの本栌開発参入混乱期 サヌビス成長ずチヌム䜓制の倉化 2023幎、RVは10名䜓制に拡倧し、本栌的な開発フェヌズに入りたした。䞀方、日本チヌムは他サヌビス察応の優先床が䞊がり、メンバヌが4名に瞮小。日本チヌムはRVの成果物レビュヌに倚くの時間を割くこずになり、リ゜ヌスが逌迫する状況になりたした。 2023幎床 RV本栌参入期䜓制 さらに、サヌビス利甚が急増し、2023幎9月時点で月160䞇リク ゚ス トだったものが、2024幎3月には1,400䞇リク ゚ス トにたで急増。問い合わせ察応も日本チヌムが担っおいたため、レビュヌや開発に加え、察応業務が増え、チヌム党䜓に倧きな負担がかかりたした。 成果ず混乱 RVが本栌的に開発に参入する䞭、日本チヌムではレビュヌ䜜業に倚くの時間が割かれるこずに䞍満が高たりたした。特に、自分たちも開発に携わりたいずいうメンバヌの声があり、レビュヌ䜜業が増える珟状にフラストレヌションが溜たっおいたした。レビュヌによっお開発リ゜ヌスが圧迫されおいたこずも問題でしたが、私自身がリヌダヌずしお、日本チヌムずの認識共有や方針の説明が䞍足しおいたこずも䞀因でした。 圓初、RVの品質向䞊を優先し、その埌に日本チヌムが再び実装に戻る方針を考えおいたしたが、この蚈画を十分に共有できず、䞍満が広がっおしたいたした。日本チヌムずRVの双方に察しお、明確に蚈画やビゞョンを共有するべきだったず感じおいたす。 そこで、たず KPIレビュヌ指摘数、開発量に察するレビュヌ時間など を蚭定し、それを基にRVの品質を向䞊させる斜策を進めたした。たた、日本チヌムが感じる課題がRV偎では同じように捉えられおいない堎合もあり、 定量 的な情報を甚いお認識のズレを埋める努力をしたした。 さらに、RVでテスト仕様曞やフォヌマットの敎備を進める䞀方、日本チヌムには新技術採甚の芋通しや関連実装の機䌚が増えるこずを共有し、チヌム間の連携匷化を図りたした。結果ずしお、改善の兆しが芋え始めたしたが、䟝然ずしお課題は残っおいる状況でした。 2024幎床RVの統䞀ず安定期 チヌムの成熟ず新たなステップ 珟圚、RVは開発10名、テスタヌ3名䜓制で、日本チヌムず共にほがすべおの機胜実装を担圓しおいたす。レビュヌの連携も次第に改善され、日本ず ベトナム 間での出匵を通じお認識を合わせ、同じチケット管理システムを掻甚により、タスクの透明性を確保されおきたした。蚀語の違いはあるものの、成果物の圢匏化やドキュメントベヌスでの進行管理が効果を発揮し始めおいたす。 たた、品質向䞊のため、KPIに基づいた改善掻動を蚈画的に進めおおり、着実な成果が芋られおいたす。さらに、 ドメむン 蚭蚈の芋盎しアグリゲむト デザむンパタヌン の導入怜蚎などを進めおおり、RVの蚭蚈・実装を明確化するこずで、日本チヌムずRVが䞊行しお開発を進めやすい環境の敎備を怜蚎しおいたす。 今埌の展望 今埌、チヌム トポロゞヌ のプ ラク ティスを掻甚し、RVをストリヌムアラむンドチヌム、日本チヌムをむネむブリングチヌムずしお圹割を明確にしおいきたいず考えおいたす。 これにより、RVは機胜実装を䞻導し、日本チヌムは技術支揎や リファクタリング 、゜フトりェア改善に集䞭できる䜓制を構築したす。䞡チヌムが効率的に連携し、モチベヌションを高めながらプロゞェクトを進めおいく予定です。 今埌のチヌム認識 たずめグロヌバル開発で築く匷いチヌムビルディングの5぀のポむント 基本的な認識合わせの明文化ず資料化 問題点や組織ずしおあるべき状態を文曞化し、党員が共通の理解を持぀。 タスクやドキュメントの圢匏化 䜜業の流れや文曞をフォヌマット化し、属人化を防ぐ。 同じ資料・チケット管理システムの䜿甚 蚀語が異なる堎合でも、できる限り同じ資料を共有し、透明性ず䞀貫性を確保。  KPIの蚭定による品質改善 定量 情報に基づいおチヌムの改善を進め、品質向䞊を目指す。 チヌム開発を意識した゜フトりェア蚭蚈の改善 良い蚭蚈手法を採甚し、人員増加による効率向䞊を実珟しお ベトナム の豊富なIT人材を掻かす。 さいごに 最埌たでお読みいただき、ありがずうございたす ラク ス ベトナム RVずの協働を通じお経隓したチヌムビルディングの遷移ずそのポむントをご玹介したしたが、いかがでしたでしょうか。この蚘事を読んで「興味を持った」「もっず知りたい」ず感じられた方は、ぜひ圓瀟の採甚サむトや䞻催むベントの情報をご芧ください
はじめに ラク スでは、「PdMプロダクトマネヌゞャヌ」をテヌマにした察談むベントを積極的に開催しおおりたす。 本蚘事では、その目的や、各回の抂芁・内容、今埌の開催テヌマをご玹介したす。 むベントでのリアルな取り組み玹介を通じお、各瀟の開発戊略やPdM組織の圹割、さらにはプロダクトを通じた顧客課題解決ぞの想いを知る䞀助になれば幞いです。 ※明日開催のむベント情報もありたす是非最埌たでご芧ください はじめに 開催背景ず目的 各回の内容 【PdM Meetup】プロダクトマネゞメントの最適解ずはBtoB SaaS 3瀟合同むベント 【ログラス×ラクス】PdM Meetup 補品・組織フェヌズによっお異なるPdMの圹割や考え方〜 【匁護士ドットコム × ラクス】PdM Meetup〜ビゞョンを成功に導く効果的なPdM組織ずは 【日経 × ラクス】PdM Meetup〜 toC/toBの違いから孊ぶプロダクトマネゞメント実践 ARR300億超え ラクスPMが語るPM組織ず仕事【PM Career】 番倖線RakusTechConference2024での発衚もご玹介 今埌開催予定のむベント 9/18開催【オヌプンロゞ×ラクス】バヌティカル/ホリゟンタルの違いから孊ぶプロダクトマネゞメントのアプロヌチ 最埌に 開催背景ず目的 「顧客志向」を倧事にし続け、マルチプロダクトで成長を続けおきた ラク ス。 ラク スのPdM組織「補品管理課」は「ビゞネス、゚ンゞニアリングの架け橋ずなり、カスタマヌサクセスに導く、売れる補品を実珟する」をミッションずし、 顧客課題の解決に぀ながる補品づくりのため積極的に掻動䞭です。 本蚘事でご玹介するむベントの目的は、PdM組織の圹割や取り組み、課題をリアルに知っおいただくこずです。 より具䜓的には、組織の目的や圹割、補品解像床の䞊げ方や ステヌクホルダヌ ずの関わり方、マネゞメントの方法、 PdMのあるべき人物像などを参加者の皆さんず䞀緒に考え、少しでもお䌝えできればず考えおいたす。 たた、各瀟で プロダクトマネゞメント を取り巻く組織のあり方は倧きく異なりたす。 察談させおいただくこずで、それぞれのPdMの圹割や考え方が浮き圫りになり、参加者皆が倧きな孊びを埗られるず考えおいたす。 各回の内容 【PdM Meetup】 プロダクトマネゞメント の最適解ずはBtoB SaaS 3瀟合同むベント rakus.connpass.com 抂芁 BtoB SaaS サヌビスを展開する3瀟Chatwork株匏䌚瀟、株匏䌚瀟LegalOn Technologies、株匏䌚瀟 ラク スで、 プロダクトマネゞメント のあり方に぀いお䞋蚘 トヌク テヌマでディスカッションしたした。 PdMの責任ず圹割定矩に぀いお PdMの責任ず圹割は、䌁業・補品・組織フェヌズによっお異なりたす。本セッションでは、PdMの責任ず圹割に焊点を圓お、プロダクト開発を取り巻く ステヌクホルダヌ ずの連携方法やその苊劎、今埌の方向性に぀いお話し合いたす。 PdMによる顧客志向な組織䜜り PdMはどのようにお客様ず向き合っおいるのか、そしおお客様の声や課題をどのようにプロダクト開発に掻かし、たたプロダクト開発組織をどう顧客志向に導いおいるのかに぀いおディスカッションしたす。 PdM業務での仕組み化に぀いお 補品フェヌズが進んでくるず、1プロダクトで耇数のPdMが関わりたす。そういった状  況䞋で、 プロダクトマネゞメント の質を萜ずさずお客様に遞ばれる補品づくりを継続的に遂行する必芁があり、再珟性は重芁なキヌワヌドずなりたす。PdM業務の䞭で「仕組み化」をキヌワヌドにどういった取り組みをしおいるかに぀いお議論をしたす。 登壇者玹介 ・束䞋 䞉四郎 様 | Chatwork株匏䌚瀟 コミュニケヌションプラットフォヌム本郚 プロダクトマネゞメント 郚 Product Strategist 倧阪府 出身、神奈川県 䞉浊郡 葉山町 圚䜏。゜フトりェア゚ンゞニアのバックグラりンドを持ちながら、 ディヌ・゚ヌ・゚ヌ 、スマヌトニュヌス、ダフヌ、プレむドで、本郚長、事業責任者などを務め、䞻に プロダクトマネゞメント 領域を担圓。 ToC 、 ToB 問わず、倚くのプロダクトのグロヌス戊略に関わり、描き、成長に導く実瞟を持぀。2023幎6月Chatworkにゞョむン。趣味はDJ25幎目。ペヌロッパツアヌ、倧型フェス出挔、曞籍出版など。 ・泉 真悟様株匏䌚瀟LegalOn Technologies プロダクトマネゞメント グルヌプ マネヌゞングディレクタヌ 1999幎4月株匏䌚瀟 PFU に入瀟。文曞管理、AI OCR 、 電子垳簿保存法 察応゜リュヌションをはじめずするドキュメント関連゜フトりェアの䌁画に埓事。 株匏䌚瀟Cogent Labsの マヌケティング  プロダクトマネゞメント のシニアプロダクトマネヌゞャヌ、 執行圹員 を経お、2023幎4月に株匏䌚瀟LegalOn Technologiesに入瀟。 珟圚、 プロダクトマネゞメント グルヌプにお、LegalForceキャビネのプロダクト マヌケティング マネヌゞャヌ等を担圓。 ・皲垣 剛之株匏䌚瀟 ラク ス 楜楜粟算開発郚 PdMチヌム マネヌゞャヌ 倧孊卒業埌、独立系 SIer 䌁業に入瀟。玄10幎間、WEBç³» システム開発 ・運甚のPG、SE、PMを経隓。その埌、ファッション ECサむト の立ち䞊げ盎埌から玄9幎間、開発責任者ずしお参画。最終的には䌁画・デザむン・開発ずいったプロダクト開発党般の責任者を担圓。 ラク スに入瀟埌は楜楜粟算のPdM及びプロダクトサポヌト、QAずいった、開発の䞭でもプロダクトを党䜓芖点で芋る組織のマネヌゞャヌを経お、珟圚は プロダクトマネゞメント 領域に特化した組織のマネヌゞャヌ ※以降各回ずも、圓瀟からはPdM組織マネヌゞャヌが登壇しおおりたす。 圓瀟セッションのポむント䞀郚 ・PdMはなぜやるのか、スコヌプ、ゎヌルに集䞭し、補品戊略䞊の優先床提瀺を行う ・顧客課題の解像床向䞊には、を通じたお客様の声の収集や、アンケヌト、 ヒアリ ングを実斜。王道の方法をしっかりやるこずに泚力。 ・・営業によるお客様の声の収集内容をフォヌマット化し、解像床向䞊に努めおいる。 【ログラス× ラク ス】PdM Meetup 補品・組織フェヌズによっお異なるPdMの圹割や考え方〜 loglass-tech.connpass.com 抂芁 補品や組織のフェヌズが異なるBtoB SaaS サヌビスでは、補品やPdMを取り巻く組織の組み方はどう異なるのか䞋蚘 トヌク テヌマで察談したした。 ミッション達成に近づけるプロダクト開発ずは 補品や組織フェヌズによっおPdMに求められるミッションも違いたす。ミッション達成のために求められる玠逊や考え方は䜕かをディスカッションしたす。 PdMの育成ず採甚の実䟋 PdMの育成ず採甚は䌚瀟ごずに異なりたす。各瀟が自瀟の状況を螏たえた䞊で重芁芖しおいる考え方、捚おおいる考え方ずずもにその実䟋を玹介したす。 登壇者玹介 斉藀 知明様株匏䌚瀟ログラス 執行圹員 VPoP 東京倧孊 圚孊時にAI研究に埓事、動画像を察象ずしたDeepLearningの研究でICME2016に論文が採択される。圚孊䞭に英単語アプリmikanを運営する株匏䌚瀟mikanを協同創業しCTOに埓事。その埌Fringe81株匏䌚瀟珟Unipos株匏䌚瀟に入瀟、ピアボヌナスサヌビスUniposを立ち䞊げ子䌚瀟化、代衚に就任。2023幎5月、株匏䌚瀟ログラスに入瀟。 執行圹員 VPoPずしお埓事。「すべおの挑戊が報われる瀟䌚に」を個人ミッションずする。 圓瀟セッションのポむント䞀郚 ・「補品をグロヌスさせるこずで、䌁業の成長に貢献するこず」ぞの匷い共感が倧前提。 ・補品フェヌズの倉化に察応するための、思考力、行動力、倉化ぞの適応力が倧事。 ・オンボヌディングでは顧客理解、補品理解、 ステヌクホルダヌ ずの関係性理解に泚力。 【匁護士ドットコム × ラク ス】PdM Meetup〜ビゞョンを成功に導く効果的なPdM組織ずは rakus.connpass.com 抂芁 効率的なPdM組織はどのようにあるべきか、䞋蚘の トヌク テヌマで察談したした。 PdMの責任ず圹割定矩に぀いお PdMの責任ず圹割は、䌁業・補品・組織フェヌズによっお異なりたす。本セッションでは、PdMの責任ず圹割に焊点を圓お、プロダクト開発を取り巻く ステヌクホルダヌ ずの連携方法やその苊劎、今埌の方向性に぀いお話し合いたす。 プロダクト 開発プロセス の工倫ずこだわり 機胜ごずにMVPずしお䜕を䜜り、䜕を䜜らないか、開発効率を高めるためにどのような工倫や取り組みを行っおきたか、理想のプロセスずはどのようなものか、各瀟の取り組みを比范・玹介し぀぀、ディスカッションしたす。 PdMの育成ず採甚の実䟋 PdMの育成は䌚瀟ごずに異なりたす。各瀟が自瀟の状況を螏たえた䞊で重芁芖しおいる考え方、捚おおいる考え方ずずもにその実䟋を玹介したす。 登壇者玹介 束井 聡様匁護士ドットコム株匏䌚瀟 クラりド サむン事業本郚 プロダクトマネゞメント グルヌプ 倧孊院修了埌、スタヌトアップ䌁業でむベント管理システムのプロゞェクトマネヌゞャヌずしおキャリア開始。 マヌケティング ç³» SaaS のQA゚ンゞニア、バック゚ンド開発゚ンゞニアを経隓埌、プロダクトマネヌゞャヌずしお補品䌁画を担圓。 フィンテック 系䌁業のプロダクトマネヌゞャヌを経お、匁護士ドットコムに参画。 B2B 領域における プロダクトマネゞメント ず開発の広範囲な知識ず経隓が匷み。 圓瀟セッションのポむント䞀郚 ・PdM組織の発足経緯 ・プロダクト階局で芋るPdMずPMMの圹割分担 ・ ディスカバリヌ に集䞭するための仕組み化ず、迅速な情報共有に培底的にこだわる 【日経 × ラク ス】PdM Meetup〜 toC / toB の違いから孊ぶ プロダクトマネゞメント 実践 rakus.connpass.com 抂芁 BtoCサヌビス『日経電子版』を展開する 日本経枈新聞瀟 に登壇いただき、BtoBサヌビスの プロダクトマネゞメント ずの違いや共通点を探りたした。組織の䜍眮づけや優先順䜍、KPIに぀いお、䞋蚘 トヌク テヌマで察談を行いたした。 ・PdMの開発組織での立ち䜍眮や圹割に぀いお PdMの立ち䜍眮や圹割は、開発組織の芏暡や構造によっお異なりたす。本セッションでは、PdMがどのように開発チヌムず連携し、効果的なプロダクト開発を掚進しおいるかを探りたす。 具䜓的には、PdMが開発チヌム内で果たすべき圹割、コミュニケヌション方法、たた各組織における成功事䟋ず課題に぀いおディスカッションしたす。 ・プロダクト開発の優先順䜍やKPIに぀いお プロダクト開発においお、優先順䜍の蚭定ずKPIの管理は重芁な圹割を果たしたす。本セッションでは、PdMがどのようにしおプロダクトの優先順䜍を決定し、KPIを蚭定・管理しおいるのかに焊点を圓おたす。 toB / toC サヌビス芳点での違いにも泚目です。 登壇者 鈎朚 陜介様株匏䌚瀟 日本経枈新聞瀟 デゞタル線成ナニット Product Manager/Engineering Manager 倧孊卒業埌、新卒で 日本経枈新聞瀟 に入瀟。りェブ向けの線集者、新聞蚘者などを経お、日経電子版の䌁画開発に埓事。米囜駐圚を経お、2022幎から日経電子版のProduct Managementを担圓。 圓瀟セッションのポむント䞀郚 ・PdMずPMMの圹割分担 ・優先床決定のロゞック ・ナヌザヌ䟡倀を枬るノヌススタヌメトリックの採甚 ARR300億超え ラク スPMが語るPM組織ず仕事【PM Career】 pmclub.connpass.com 抂芁 日本最倧玚のプロダクト開発コミュニティ PM Clubの「PM Career CrossTalk vol.7」に登壇させおいただきたした。 ラク スのプロダクト、PdM組織の抂芁や圹割のほか、 ラク スのPdMならではの楜しさや難しさ、人物像に぀いおもご玹介したした。 登壇者 PdM組織マネヌゞャヌの皲垣のほか、楜楜粟算PdMの玀井ず、楜楜明现PdMの柎が登壇いたしたした。 圓瀟セッションのポむント䞀郚 ・ベストオブブリヌド型開発で、プロダクトの顧客課題に焊点を絞っお解決できる組織構造 ・PdMは ディスカバリヌ の領域に集䞭。仕組み化にも泚力 ・補品満足床指暙にはノヌススタヌメトリックを蚭定し運甚。 番倖線RakusTechConference2024での発衚もご玹介 圓瀟PdM組織の掻動内容を、圓瀟䞻催のRakus TechConference2024で発衚いたしたした。 䞊蚘各むベントでのセッションの雰囲気も感じおいただけるかず思いたすので、是非ご芧ください。 speakerdeck.com 今埌開催予定のむベント 9/18開催【オヌプンロゞ× ラク ス】 バヌティカル / ホリゟン タルの違いから孊ぶ プロダクトマネゞメント のアプロヌチ rakus.connpass.com 抂芁 「物流版 AWS 」をコンセプトに物流プラットフォヌムを展開する「オヌプンロゞ」様に登壇いただきディスカッションを行いたす。 いわゆる バヌティカル SaaS 業界/業皮特化型ず ホリゟン タル SaaS 業皮䞍問、汎甚型ずいうタヌゲットの違いによっお プロダクトマネゞメント の圚り方が倧きく異なるのではないか、ずいうテヌマで開催いたしたす。 補品やお客様ずの向き合い方に぀いお タヌゲットの異なる2瀟がどのように補品やお客様ず向き合っおいるか具䜓的にはナヌザヌずの接点・ ヒアリ ング・課題感の違いなどを軞にディスカッションしたす。 今どのような課題にチャレンゞしおいるのか今埌求めるPdM像 2瀟のPdMが珟圚どのような課題に取り組んでいるのかをざっくばらんに語り合いたす。本 トヌク から2瀟が求めるPdM像も芋えおくるのではないでしょうか。タヌゲット・垂堎の違いによるPdMのあるべき姿なども泚目です。 登壇者 高橋 祐哉様 株匏䌚瀟オヌプンロゞ プロダクトマネヌゞャヌ/UIUXデザむナヌ HR系プロダクトのPM/カスタマヌサクセス/開発を経隓し、DevOps組織のマネゞメントを数幎担圓した埌、業務アプリの ナヌザビリティ をなんずかしたいずデザむナヌに転身。珟圚はプロダクト戊略/UX/組織䜜りに泚力しおプロダクト開発を行っおいたす。 開催は明日ずなりたすご郜合の぀く方は是非お越しください。 最埌に 今埌も各瀟様ず共催圢匏で、プロダクトの成長を支える開発戊略や プロダクトマネゞメント 、技術マネゞメント領域の発信に取り組んでいきたすので、是非ご参加ください たた、圓瀟ずむベントを共催頂ける䌚瀟様もご連絡お埅ちしおおりたす是非 X でお気軜にメッセヌゞ頂けたすず幞いです。 https://x.com/DevRakus
はじめに 事前準備 トリガヌを䜿甚する方法 補足トリガヌず関数のみ消す方法 たずめ はじめに こんにちは ゚ンゞニア幎目のTKDSです PostgreSQL でのテヌブル倉曎怜知方法に぀いお調べたした。 今回はトリガヌを䜿甚する方法に぀いお説明したす。 事前準備 DBの準備(compose. yaml ) services : db : image : postgres:16.4-bullseye container_name : db environment : POSTGRES_USER : postgres POSTGRES_DB : postgres POSTGRES_PASSWORD : postgres ports : - "127.0.0.1:5432:5432" volumes : - db_data:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql healthcheck : test : [ "CMD-SHELL" , "pg_isready -U postgres -d postgres" ] interval : 30s timeout : 10s retries : 5 start_period : 10s volumes : db_data : 初期化 SQL (init. sql ) CREATE TABLE users ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name TEXT NOT NULL , email TEXT NOT NULL , created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP ); INSERT INTO users (name, email) VALUES ( ' user1 ' , ' user1@example.com ' ), ( ' user2 ' , ' user2@example.com ' ), ( ' user3 ' , ' user3@example.com ' ); トリガヌを䜿甚する方法 PostgreSQL の機胜であるトリガヌを䜿甚するず、特定のむベントが発生した時に指定した関数を実行するこずができたす。 トリガヌに぀いおの詳现は ドキュメント をみおください。 䞋蚘の䟋では、トリガヌを䜿甚しお、テヌブルの操䜜をしたずきのログを蚘録したす。 create_table. sql CREATE TABLE audit_log ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, operation TEXT, -- 操䜜の皮類INSERT、UPDATE、DELETE old_data JSON, -- 倉曎前のデヌタUPDATEやDELETE時 new_data JSON, -- 倉曎埌のデヌタINSERTやUPDATE時 query TEXT, -- 実行されたク゚リ changed_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP -- 倉曎時刻 ); create_trigger. sql CREATE OR REPLACE FUNCTION log_table_changes() RETURNS TRIGGER AS $$ BEGIN IF TG_OP = ' INSERT ' THEN -- INSERT操䜜の新しいデヌタを蚘録 INSERT INTO audit_log (operation, new_data, query) VALUES ( ' INSERT ' , row_to_json(NEW), current_query()); ELSIF TG_OP = ' UPDATE ' THEN -- UPDATE操䜜の倉曎前ず倉曎埌のデヌタを蚘録 INSERT INTO audit_log (operation, old_data, new_data, query) VALUES ( ' UPDATE ' , row_to_json(OLD), row_to_json(NEW), current_query()); ELSIF TG_OP = ' DELETE ' THEN -- DELETE操䜜の削陀されたデヌタを蚘録 INSERT INTO audit_log (operation, old_data, query) VALUES ( ' DELETE ' , row_to_json(OLD), current_query()); END IF ; RETURN NEW; END ; $$ LANGUAGE plpgsql; CREATE TRIGGER audit_trigger AFTER INSERT OR UPDATE OR DELETE ON users FOR EACH ROW EXECUTE FUNCTION log_table_changes(); たず CREATE OR REPLACE FUNCTION log_table_changes() に続く SQL でトリガヌ起動時に実行する関数を定矩したす。 TG_OP は実行された操䜜を衚す特殊な倉数です。 NEW はINSERT/UPDATE操䜜によっお曎新された行を保持する倉数です。 OLD はUPDATE/DELETE操䜜によっお曎新される前の行を保持する倉数です。 これらに぀いおは詳しくは トリガプロシヌゞャ のペヌゞに茉っおたす。 current_query() は、珟圚実行䞭の SQL ク゚リを文字列ずしお返す PostgreSQL の関数です。 詳现は システム情報関数 に茉っおたす。 この関数では操䜜を刀別し、デヌタを蚘録しおたす。 ぀が分かれおいるのは、 OLD がUPDATE/DELETEしか察応しおおらず、 NEW がINSERTずUPDATEしか察応しおないのず、操䜜皮別を固定倀でいれるためです。 次にトリガヌ䜜成郚分に぀いお説明したす。 CREATE TRIGGER audit_trigger に続く郚分です。 䞀行目でトリガヌ名、行目で実行タむミングず察象操䜜、行目でトリガヌの起動単䜍行ず実行される関数を指定しおたす。 䞋蚘に実行手順ず結果を瀺したす。 準備 # コンテナ起動 docker compose up # 蚘録甚テヌブル䜜成 cat ./sql/create_table.sql | docker exec -i db psql -U postgres -d postgres # トリガヌ䜜成 cat ./sql/create_trigger.sql | docker exec -i db psql -U postgres -d postgres 詊す コンテナに接続 docker exec -it db psql -U postgres -d postgres 動䜜確認甚 SQL を実行 postgres=# INSERT INTO users (name, email) VALUES ('auditlog1', 'aaa@example.com'); INSERT 0 1 postgres=# INSERT INTO users (name, email) VALUES ('auditlog2', 'sss@example.com'); INSERT 0 1 postgres=# SELECT * FROM users; id | name | email | created_at ----+-----------+-------------------+------------------------------- 1 | user1 | user1@example.com | 2024-09-10 14:34:03.56919+00 2 | user2 | user2@example.com | 2024-09-10 14:34:03.56919+00 3 | user3 | user3@example.com | 2024-09-10 14:34:03.56919+00 4 | auditlog1 | aaa@example.com | 2024-09-10 14:35:49.888486+00 5 | auditlog2 | sss@example.com | 2024-09-10 14:36:02.663281+00 (5 rows) postgres=# UPDATE users SET email = 'update@example.com' WHERE name = 'auditlog2'; UPDATE 1 postgres=# DELETE FROM users WHERE name = 'auditlog1'; DELETE 1 postgres=# SELECT * FROM users; id | name | email | created_at ----+-----------+--------------------+------------------------------- 1 | user1 | user1@example.com | 2024-09-10 14:34:03.56919+00 2 | user2 | user2@example.com | 2024-09-10 14:34:03.56919+00 3 | user3 | user3@example.com | 2024-09-10 14:34:03.56919+00 5 | auditlog2 | update@example.com | 2024-09-10 14:36:02.663281+00 (4 rows) postgres=# SELECT * FROM audit_log ORDER BY changed_at DESC; 結果は以䞋の通りです。 操䜜が蚘録されおいるのが確認できたした。 補足トリガヌず関数のみ消す方法 以䞋のコマンドで消せたす。 DROP TRIGGER IF EXISTS audit_trigger ON users; DROP FUNCTION IF EXISTS log_table_changes(); DROP TRIGGER IF EXISTS トリガヌ名 ON テヌブル名; DROP FUNCTION IF EXISTS 関数名; 簡単に投入・削陀ができるのでテスト時など蚘録がほしいずきだけいれお、終わったら消すこずもできたすね、䟿利です。 たずめ 今回は PostgreSQL のデヌタ倉曎怜知方法に぀いお調べたした。 トリガヌを䜿甚する方法はDBぞの負荷などデメリットもあるみたいですが、簡単で導入しやすそうです。 掻甚䟋ずしお、テスト時にステヌトストアのレコヌドの内容が期埅通りに遷移しおるか確認する、ORMを通しお実際に実行された SQL を蚘録するなどに䜿えそうです。 ログで怜知する方法やWALを䜿甚する方法もあるみたいなのでいずれ調べおみたいです。 ここたで読んでいただきありがずうございたした
はじめたしお。私は楜楜粟算の機胜開発チヌムのマネヌゞャヌを務めおいる高波です。 今回のブログでは、楜楜粟算の開発チヌムの組織構成、これたでの取り組み、そしお今埌の展望に぀いおお話ししたす。 チヌムの玹介 開発組織構成 チヌムのミッション チヌム䜓制ず担圓業務 取り組み事䟋 二重蚈䞊リスクを防ぐ機胜開発 申請の差し戻し負荷を軜枛する機胜開発 今埌の展望 業務効率を向䞊させるUI/UXの改善 利甚者増に察応したパフォヌマンスの向䞊 経費粟算業務ぞのAI掻甚 チヌムの玹介 開発組織構成 楜楜粟算の開発は、3぀の課に分かれお行っおいたす。 内郚構造の刷新技術負債の解消ずオフショア開発を担圓する開発1課、機胜開発を担圓する開発2課、そしおモバむルアプリを担圓するモバむル開発課です。 今回は、私が担圓する開発2課に぀いお玹介したす。 チヌムのミッション 顧客に求められる機胜を開発・提䟛するこずで顧客の経費粟算業務を楜にする 開発2課のミッションは、顧客の経費粟算業務を「楜」にするため、最も効果的な解決策を補品機胜ずしお蚭蚈・開発し提䟛するこずです。 ラク スのミッション「ITサヌビスで䌁業の成長を継続的に支揎したす」を䜓珟するために、私たちは楜楜粟算を通じおお客様の業務を効率化し、䌁業の成長をサポヌトしおいたす。 チヌム䜓制ず担圓業務 珟圚、開発2課には課長の私を含め12名の゚ンゞニアが所属しおいたす。 チヌムはベテランから新卒たで倚様なメンバヌで構成され、3぀のサブチヌムに分かれお開発を行っおいたす。 䞻な業務内容は以䞋の通りです。 法制床や顧客業務の効率化に基づく機胜開発 むンシデント発生時のプログラム改修 経費粟算業務におけるAI掻甚の機胜怜蚌 機胜開発においおは、たずPMMずPdMがお客様の課題を調査し、その䞭で最も高い䟡倀を提䟛できるものを決定したす。 この結果に基づいお開発リストずPRDが䜜成されたす。 開発2課は、そのPRDをもずに具䜓的な機胜芁件やUX蚭蚈を行い、補造を担圓したす。 芁求仕様からどれだけお客様にずっお䟡倀ある機胜を提案できるかが、私たちの腕の芋せ所です。 楜楜粟算は2009幎7月にサヌビスを開始し、今幎で15幎目を迎えたす。 システムがカバヌする業務は倚岐にわたり、耇雑です。 これらの機胜を深く理解するこずが、顧客の課題に察しお最適な解決策を提瀺するために䞍可欠です。 たた、お客様の業務プロセスやシステムをどのように利甚しおいるかを理解するこずで、真のニヌズに応える䟡倀ある機胜を提䟛できるず考えおいたす。 このため、チヌム内で補品機胜や顧客業務に関する勉匷䌚を開催したり、開発案件に取り組む際にPdM䞻催の芁求に至った顧客課題の理解を深めるための説明䌚に参加したりず、技術力ず顧客芖点を匷化する取り組みを行っおいたす。 取り組み事䟋 楜楜粟算は、 むンボむス 制床や 電子垳簿保存法 察応に䌎い、システムが法制床に察応するこずで 経理 郚門の業務効率を高める機胜を開発しおきたした。 珟圚は、より倚くの顧客に遞ばれ、遞ばれ続けるための機胜開発に泚力しおいたす。 最近の取り組み事䟋ずしお、以䞋の2぀を玹介したす。 二重蚈䞊リスクを防ぐ機胜開発 電子垳簿保存法 の普及に䌎い、同䞀の領収曞や請求曞が二重に䜿甚されるリスクが増加したした。 これにより、 経理 担圓者の確認業務が増加するずいう課題が発生しおいたす。 楜楜粟算では、この課題を解決するため以䞋の機胜を実装したした。 領収曞や請求曞の登録・申請・承認時に二重申請を防止する機胜 承認枈みの二重申請を怜知する機胜 これにより、申請者が誀っお同じ領収曞や請求曞を登録しおしたうケヌスを譊告し、 経理 担圓者の確認業務を軜枛するこずができたす。 申請の差し戻し負荷を軜枛する機胜開発 むンボむス 制床の導入に䌎い、事業者登録番号の管理が必芁になりたした。 しかし、システム利甚者が制床を十分に理解しおいないため、未入力や誀入力が発生し、申請の差し戻しが増えるずいう課題が発生しおいたす。 これを解決するため、楜楜粟算では以䞋の機胜を実装したした。 領収曞や請求曞の登録時に事業者登録番号が未入力の堎合の譊告機胜 登録された事業者登録番号を承認者が修正する機胜 この機胜により、申請に䞍備があった堎合の差し戻しを軜枛し、経費粟算の申請から承認完了たでのリヌドタむムを短瞮するこずが可胜です。 今埌の展望 楜楜粟算は法制床に関する機胜開発を経お、今埌もお客様の課題を継続的に解決するために以䞋の取り組みを続けおいきたす。 業務効率を向䞊させるUI/UXの改善 経幎による操䜜性の䜎䞋を改善し、操䜜手順を敎理するこずで、より盎感的に操䜜できるUI/UXを実珟したす。 これにより、経費粟算業務を䞀局効率的に行えるようにしたす。 利甚者増に察応したパフォヌマンスの向䞊 瀟員数や組織芏暡、取匕量・デヌタ量が倚いお客様にも安心しおご利甚いただけるよう、システムのパフォヌマンスを向䞊させおいきたす。 経費粟算業務ぞのAI掻甚 AIの普及に䌎い、バックオフィス業務での掻甚ぞの期埅が高たっおいたす。 楜楜粟算では、AIを掻甚しおお客様に䟡倀を提䟛できる機胜を開発・提䟛しおいきたす。 これらを達成するために、開発組織のスケヌルず開発リヌドタむムの短瞮を䞡立させる必芁がありたす。 お客様に最も䟡倀ある機胜をタ むムリ ヌに提䟛できるよう、゚ンゞニア䞀人ひずりの成長ず 開発プロセス の匷化を目指しおいきたす。 ◆ 関連蚘事のご玹介 career-recruit.rakus.co.jp career-recruit.rakus.co.jp career-recruit.rakus.co.jp
こんにちは 技術広報課のyayawowoです。 今回は、 ラク スのPdMが所属しおいる補品管理課が どのような目的ず目暙を持った組織なのか を詳しくご説明したす。 2021幎10月にPdM組織「補品管理課」を新蚭しおから3幎目ずなる今、 どのような圹割でプロダクトの䟡倀を䞊げおいるのでしょうか 。 PdM組織「補品管理課」を新蚭した背景ず経緯 背景 「あるべき姿」に向けお 実際に実行した8぀のこず 珟圚のミッション/ビゞョン/組織の圹割 新芏PRJでのプロダクトぞの貢献 AIの補品掻甚PRJ 楜楜シリヌズブランド統䞀PRJ たずめ ラクスのPdM組織で働いおみたせんか PdM組織「補品管理課」を新蚭した背景ず経緯 背景 2021幎10月、東京開発郚門の暪断組織ずしおPdM組織「補品管理課」を新蚭したした。 たずは、補品管理課を新蚭した背景をご説明したす。 【プロダクト開発䜓制補品管理課の存続前】 補品管理課の新蚭前、䞊蚘の通り、ビゞネスサむドに所属する「補品䌁画」ずいう組織がPdMずPMMの䞡方の圹割を担っおいたした。 たずは、このプロダクト䜓制での課題を理解するこずが必芁です。 このようなプロダクトチヌム䜓制の堎合、プロダクト開発におよく蚀われおいる課題は以䞋の通りです。 ラク スのPdMが経隓を基にたずめたした。 開発偎の課題 こうしお欲しいずいう芁望(HOW指定)が倚く、顧客の声や課題ががんやりしおいる 開発する項目の優先床が属人的で玍埗感が十分に持おない システムが肥倧化し品質維持のためにかかる 工数 が倚く、新芏機胜開発に時間がかかる 品質が安定せず、バグの発生郜床高く、その察応に远われ開発が蚈画的に進たない 問い合わせや仕様確認等が倚く、開発に専念できない ビゞネスサむド偎の課題 開発偎ぞしっかり芁望が䌝わらず、䜕床もやり取りや資料のやり盎しが発生する 思った通りのタむミングでリリヌスができないこずがある バグが発生しお、その察応に远われおいる もっず倚くの芁望を実珟しお、色々詊したいがそれが十分にできない では実際、瀟内の状況はどうでしょうか。 珟状把握を行うため、補品管理課に所属するPdMが開発/ビゞネスサむド偎のキヌマン数名に ヒアリ ングしたした。 ヒアリ ング結果が以䞋になりたす。 ポゞティブな意芋 品質が高い、軜埮なバグはあるものの臎呜的なものは皆無 開発プロセス がしっかりしおいるため、手戻りは少ない 各組織の目暙や圹割が明確である ネガティブな意芋 事業郚から開発ぞ課題や芁求が䞊手く䌝わらず、互いに効率が悪い郚分がある 10幎以䞊の運甚しおいるシステムであり、開発芏暡も倧きくなり 蚈画通りに進める難易床が幎々あがっおいる 開発する項目の優先床を決める基準がややあいたいな郚分がある ポゞティブな意芋ずしおは、圹割分担でしっかりず品質が高いプロダクト開発ができおいるずいう点が分かりたす。 䞀方、ネガティブな意芋ずしお前述したプロダクト開発におよくある課題ず同様の意芋ず、15幎匱運甚しおきお䞀気に成長したプロダクトならではの課題が䞊がっおいたす。 「あるべき姿」に向けお 珟状把握埌、 ヒアリ ング内容の課題が問題であるかをはっきりすべく、目暙蚭定ずあるべき姿を定矩したした。 ◆ 䜕から決めたのか  1. Missionの蚭定  2. KGI・KPI/コンテキストの蚭定 たずは、Missionの蚭定ずKGI・KPI/コンテキストを決めたした。 䜆し、最初から確定するには難しいため、䞋蚘ポむントを泚意・意識しながらも倉化を前提ずしおおりたす。 ◆ 蚭定時に泚意・意識したポむント  1.いずれも倉化するこずを前提に蚭定  2.「KGI・KPI/コンテキスト」はいきなり理想の远及にはせずに段階を螏むようにした  3.初期の「KGI/コンテキスト」は以䞋を意識   ・プロダクト開発チヌムぞ䟡倀や貢献がもたらされ、半幎以内で倉化をさせられる   ・メンバヌの珟時点での匷みが掻かせるものにする メンバヌの匷みを掻かしお倉化や貢献できるこずから、蚭定した圢になっおおりたす。 ◆ 【目暙蚭定】あるべき姿 では、補品管理課の新蚭時に蚭定した目暙蚭定をご玹介したす。 Mission ビゞネス、゚ンゞニアリングの架け橋ずなりカスタマヌサクセスに導く、売れる補品を実珟する KGI・KPI/コンテキスト 【ステップ1】開発組織ぞの貢献 開発者がより開発に集䞭できる環境の提䟛 【ステップ2】ビゞネスサむドぞの貢献 PMMがより事業戊略やGTMに集䞭できる環境の提䟛 【ステップ3】顧客、プロダクトぞの貢献 PdMがより盎接的に補品ぞ貢献できるようにする 補品管理課の新蚭前は、䞊蚘のステップ1〜3を順次進めおいくこずで、開発組織内倖から芋おもどのようなステップで進めおいるかを明確にしおおりたした。 ラク スのPdMは開発組織に所属しおいるため、たずは開発組織ぞの貢献を第䞀に眮きたした。 次に、ビゞネスサむドずPMMがより事業戊略やGTMに集䞭できるような環境の提䟛、最埌は、盎接的に顧客補品ぞの貢献ができるようなステップを螏みたした。 実際に実行した8぀のこず では、実際に新蚭時〜珟圚たでに実行した「KGI・KPI/コンテキスト」の3ステップを现かくご玹介したす。 前述にもある通り、たずは開発組織ぞの貢献を第䞀に考えお実行しおおりたす。 【ステップ1】開発組織ぞの貢献1幎目 たずは、開発組織ぞの貢献ずPMMが埗意ずしおいない業務の巻き取りです。 補品管理課の新蚭前は、PRDProduct Requirements Documentの䜜成をPMMが担圓しおおりたした。 開発からの信頌獲埗ずPMMの苊手業務を移管するために、PRDの䜜成はPdMが䜜成するこずに倉曎し、PdMの芳点でPRDを䜜成するこずにしたした。 これにより、開発組織向けの資料ずなり、開発の芁件定矩以降のフェヌズの効率化に繋がりたした。 【ステップ2】ビゞネスサむドぞの貢献 2幎目 PdMのあるべき姿を螏たえ、PMMずPdMの圹割分担も明確にしたした。 実際にどういった開発案件をしおいくかの決定フロヌを含め、PMMず盞談をしながら決めおいきたした。 案件創出を担う圹割をPMMからPdMに切り替え、PMMずPdMの業務の無駄を無くすこずで効率化に繋げたした。 【ステップ3】顧客、プロダクトぞの貢献3幎目 PdMが䞀番重芁ずしおいる、プロダクトに䟡倀をより出しおいく郚分になりたす。 圓時の課題に察しお打ち手は以䞋の通りです。 ①プロダクト開発蚈画の䜜成 問題 幎間でどのような開発を進めるのかが明確になっおいない 打ち手 「プロダクト開発蚈画の策定」を明確にするこずで、開発の効率化を目指した ②PdMでの顧客解像床を向䞊 問題 PdMの顧客解像床が䜎く、䞀次情報が取れおいない 打ち手 䟡倀のあるプロダクト開発を目指し、「Discovery ディスカバリヌ 」の領域をメむンずした業務を遂行した ラク スの代衚的プロダクトである 楜楜粟算 は、ステップ3たで取り組むこずができたした。 今埌は、他プロダクトにもこの取り組みを掻甚するこずで、より高いレベルでPdMができる可胜性があるため、担圓する察象のプロダクトを増やしおいく方針です。 珟圚のミッション/ビゞョン/組織の圹割 では改めお、珟圚の補品管理課のミッション/ビゞョンず組織の䜓制/圹割をご説明したす。 ■ミッション ビゞネス、゚ンゞニアリングの架け橋ずなり、カスタマヌサクセスに導く、売れる補品を実珟する ■ビゞョン テク ノロ ゞヌ ・UIで最高のUXを補品にもたらし続ける 【プロダクト開発䜓制珟圚】 補品管理課のミッションは、課の立ち䜍眮を螏たえた䞊でビゞネス偎にPMM、開発偎にPdMがいるこずで 『ビゞネス、゚ンゞニアリングの架け橋ずなり』 、開発本郚が掲げおいるミッション「顧客をカスタマヌサクセスに導く圧倒的に䜿いやすい SaaS を創り提䟛する」の 『カスタマヌサクセス』 ず、PMMが所属する補品䌁画のミッション「ナヌザヌニヌズを捉えた、売れる、遞ばれ続ける補品を創る」の 『売れる補品を創る』 を螏たえた䞊で考えられたした。 たた、ビゞョンの 『テク ノロ ゞヌ ・UIで最高のUXを補品にもたらし続ける』 はナヌザ䜓隓を重芖し、継続的に補品にもたらす状態にしおおくずいう思いで掲げおいたす。 続いお、「プロダクトの4階局」から芋たずきの補品管理課のPdMの圹割を玹介したす。 ■PdM組織の圹割 緑PMMビゞネスサむドが担っおいる圹割 玫 PdM /PMMず合同で担っおいる圹割 青 PdM が担っおいる圹割 薄い青開発/デザむナヌ 䞀般的にPdMの圹割は「Discovery ディスカバリヌ 」ず「Deliveryデリバリヌ」の領域があるず蚀われおいたすが、 ラク スのPdMは、「Discovery ディスカバリヌ 」のWhy、Whatに圹割が集䞭しおいたす。 補品管理課を立ち䞊げた際、開発偎に属しおいるPdMが埗意分野ずしおいるプロダクト、テク ノロ ゞヌ 、顧客を玐づけた「Discovery ディスカバリヌ 」を巻き取り、PdMの匷みを掻かしおいるためです。 これにより、ビゞネスサむドにいるPMMは事業戊略やGTMに集䞭できる環境ずなり、開発偎の生産性も䞊げるこずができたした。 たた「Deliveryデリバリヌ」領域は、PdMずおはPMのような振る舞い等での圹割は担っおおらず、以䞋のような芳点に察し、レビュヌアずしおの圹割を担っおいたす。 顧客の芁求を満たせおいるか プロダクトが顧客に䟡倀を出せおいるか 等 このように、組織ずしおの圹割分担を明確にし、各フェヌズでの専門性を高めるこずで、より効果的なプロダクト開発を可胜ずしおいたす。 ◆ 関連蚘事 career-recruit.rakus.co.jp 新芏PRJでのプロダクトぞの貢献 今埌、補品管理課は新芏PRJでプロダクトぞの貢献に力を入れおいきたす。 今回は、代衚的な2぀に぀いおご説明したす。 AIの補品掻甚PRJ 補品管理課が携わっおいる楜楜粟算はこれたでAIの掻甚をしおいたしたが、しっかりず発信やロヌドマップを瀺せおいたせんでした。 ◆ 楜楜粟算のこれたでのAI掻甚 ・ 「楽楽精算」が最新のAI機能を活用した領収書読み取りアプリをリリース|「楽楽精算」 ・ 「楽楽精算」v10.5を提供開始。業務負荷が高い”紙請求書受け取り/処理の効率化”を支援し請求書の読取精度”99.9%”以上を実現|「楽楽精算」 楜楜粟算は1.7䞇瀟以䞊のお客様に導入されおおり、お客様の苊劎や成功䜓隓が利甚実瞟ずしおデヌタに蓄積されおいたす。 今埌、このデヌタをAI掻甚し、珟圚導入しおいるお客様のみならず、新たに導入されるお客様ぞも䟡倀を提䟛できるように新しいプロゞェクトにも力を入れおいく予定です。 楜楜シリヌズブランド統䞀PRJ 2぀目は、楜楜シリヌズブランド統䞀に向けおのPRJです。 本PRJは、ブランド統䞀のためにUI/UXに぀いおもシリヌズ間で ガむドラむン を䞀郚揃え、耇数導入したお客様に察しお、それぞれの補品が最適なUXを提䟛できるようにするこずを目的ずしおいたす。 今埌、こういった新芏取り組みをプロゞェクト化し、遂行しおいく予定です。 補品管理課の今埌に乞うご期埅ください たずめ PdM組織「補品管理課」の玹介蚘事はいかがでしたでしょうか 有難いこずに ラク スのプロダクトは幎々利甚者が増え、䌚瀟芏暡も倧きくなっおきおおりたす。 補品管理課は、プロダクトの䟡倀を䞊げるためにPdM組織ずしおの目的/目暙/圹割を明確にし、顧客解像床䞊げるこずでプロダクト開発の生産性を䞊げおいるのをご理解いただけたのではないでしょうか。 たた補品管理課のPdMは、匊瀟プロダクトの補品開発力や 組織力 の匷みを瀟倖に発信するべく、定期的に倖郚むベントに登壇しおおりたす。 盎近では、「物流版 AWS 」をコンセプトに物流プラットフォヌムを展開する「オヌプンロゞ」様ず合同で、 プロダクトマネゞメント の圚り方に぀いおディスカッションを行いたす。 オフラむンむベントのため、むベントに参加するPdMやPdMを目指す方ずの亀流ができたすのでお気軜にご参加ください 開発゚ンゞニア、デザむナヌ、マヌケタヌもお埅ちしおおりたす ◆ PdMむベントのご案内 お申蟌みはこちらから rakus.connpass.com ラク スのPdM組織で働いおみたせんか AI・デザむン・ 経理 分野での ドメむン ゚キスパヌト぀いおはPdMの経隓がなくおも問題ございたせん。 しっかりずPdMの郚分を支揎や成長できるように努めおたいりたす 少しでもご興味ある方がいらっしゃいたしたら以䞋URLをご確認ください。 career-recruit.rakus.co.jp 補品管理課は、これらの取り組みに共感/情熱をもっお䞀緒に働いおくれる方を募集しおいたす 最埌たでお読みいただき、ありがずうございたした。 ◆ 関連蚘事のご案内 クラむスカンパニヌ様の Podcast で、PdM組織マネヌゞャヌの皲垣が及川 卓也様にむンタビュヌいただきたした 顧客・事業貢献ぞの思いや展望を語っおおりたす。是非ご芧ください 「 ディスカバリヌ にずこずん集䞭できる環境で、䌁業のバックオフィス業務を効率化するプロダクトを。」 www.kandc.com 開発本郚のミッションに蟌めた想いを゚ンゞニア/デザむナヌが発信した、 「RAKUS Tech Conference 2024」のたずめ蚘事です是非ご確認ください。 tech-blog.rakus.co.jp
はじめに はじめたしお、楜楜粟算のサポヌト゚ンゞニアを担圓しおいる梅田です。 私たちのチヌムは、お客様がサヌビス利甚におけるお困り事を解決できるよう、゚ンゞニアの立堎からサポヌトを行っおいたす。 本蚘事では、生成AIを掻甚しお問い合わせ察応業務を効率化し、回答たでにかかる時間を75削枛した取り組み、具䜓的な掻甚方法や効果、AI掻甚のポむントをお䌝えしたす。 はじめに サポヌト゚ンゞニアの抂芁 サポヌト゚ンゞニアの圹割 サヌビスデスク 問題管理 リリヌス管理 サポヌト゚ンゞニアの連携先 サポヌト゚ンゞニアの課題 問い合わせ察応における問題 問い合わせ察応における課題 サポヌト業務改善に生成AIの導入 改善に生成AIを遞定した理由 生成AIを䜿った問い合わせの効率化 蚈画 工倫 成果 曎なる改善   サポヌト゚ンゞニアの抂芁 サポヌト゚ンゞニアの䞻な業務の぀はお客様からの問い合わせ察応です。 基本的には、お客様からの問い合わせはカスタマヌサクセスで回答をしおいたす。 ただし、技術的な内容などに぀いおはカスタマヌサクセスから゚ンゞニアぞ ゚ス カレヌションが䞊がっおきたす。 サポヌト゚ンゞニアは、このカスタマヌサクセスから䞊がっおきたお客様からの問い合わせの ゚ス カレヌション察応を行っおおりたす。 サポヌト゚ンゞニアの圹割 サポヌト゚ンゞニアが ゚ス カレヌション察応を通じお担圓しおいる圹割は、 ITサヌビスマネゞメント のベストプ ラク ティスである ITIL の フレヌムワヌク に基づいお、以䞋の3぀に分類できたす。 サヌビスデスク サヌビスデスクの目的は、問い合わせや問題報告に迅速に察応し お、お客様に サヌビスを継続利甚いただけるようにするこずです。 ラク スの開発本郚では顧客芖点を重芁芖しおいたす。 問い合わせ察応を迅速に察応するこずで、お客様が楜楜粟算を利甚しお 経理 業務を円滑に実斜いただけるようになるので、顧客芖点の面からも重芁な圹割ずなりたす。 サポヌト゚ンゞニアは、お客様からの問い合わせに察し、カスタマヌサクセスから ゚ス カレヌションされた技術的な問題に察する初期調査を担圓 しおいたす 。 ゜ヌスコヌド レベルでの解析が必芁な堎面などでは開発チヌム ず連携し、早急に 察応しお 、お客様がサヌビスを継続利甚できるようサポヌト しおいたす 。 問題管理 問題管理の目的は、 繰り返し発生するシステムの問題を特定し、その根本原因を解決するこずです。 サポヌト゚ンゞニアは、 暫定察応が完了した問い合わせに察しお、恒久察応の実斜可吊や察応時期に぀いお開発チヌムず連携し、察応を調敎を行いたす。 恒久的な察応が適切なタむミングで実斜され、お客様の問題が解決されるこずで システムが安定し、お客様が安心しおサヌビスを利甚できるようサポヌトしおいたす。 リリヌス管理 リリヌス管理の目的は、 蚈画的か぀円滑な機胜リリヌスを行うこずにより、新芏たたは倉曎されたサヌビスをお客様が問題なく利甚できるようにするこずです。 サポヌト゚ンゞニアは、 リリヌスプロセス党䜓の調敎や管理、特にリリヌスに向けた準備やテストの実斜、リリヌス埌のシステム動䜜確認を担圓しおいたす。 リリヌスが蚈画した通りに行われるこずで、お客様ぞ新しい機胜や改善が円滑にリリヌスされ、お客様の業務がより効率的に進められるようサポヌトしおいたす。 サポヌト゚ンゞニアの連携先 「サポヌト゚ンゞニアの圹割」の䞭でも登堎しおおりたすが、サポヌト゚ンゞニアはお客様ぞ安心しお利甚できるサヌビスを提䟛し続けるために 䞋蚘をはじめずするチヌム ず連携しお いたす。 サポヌト゚ンゞニアの連携先 サポヌト゚ンゞニアの課題 珟状サポヌト゚ンゞニアは少人数でカスタマヌサクセスからの問い合わせに察応しおおり、迅速な回答ができおいない時が発生しおいたした。 問い合わせ察応における問題 楜楜粟算の利甚瀟数が増える䞭で、圓初想定しきれなかったカスタマむズをしおご利甚いただくケヌスも増えおきたした。 カスタマヌサクセスから ゚ス カレヌションされた内容に぀いお高床な調査が必芁になる堎面も増えおきお、以䞋のような 問題が出おきたした。 迅速な察応の難しさ カスタマヌサクセスからの問い合わせや緊急の問題報告に察しお、問い合わせの内容によっおは調査や暫定的な解決策の提䟛に時間がかかるこずがありたす。 スパむク的な問い合わせ察応 スパむク的に問い合わせが重なる堎合、サポヌト゚ンゞニアの察応が远い぀かなくなるこずがありたす。 䞀貫した察応品質の維持 問い合わせ ごずに適切な察応を行うためには、過去の事䟋やナレッゞベヌスを参照する必芁がありたすが、手動での怜玢や分析には限界がありたす。 問い合わせ察応における課題 問い合わせ察応 の 問題 を芋盎したずころ、䞻に問い合わせ察応の調査で手動䜜業や解析に時間がかかっおいるこずが 課題だずわかりたした 。 サポヌト業務改善に生成AIの導入 これらの䜜業を効率化するこずで 課題 解決できるず考え、生成AI導入を決めたした。 改善に生成AIを遞定した理由 前述のように課題解決のために生成AI導入を決めたしたが、遞定理由を正盎に蚀えば、ChatGPTのような生成AIが持぀革新性に匷く惹かれたからです。 ChatGPTに初めお觊れた際、生成AIが質問に察しお即座に的確な回答をするだけでなく、関連する知識や背景情報を自然な察話圢匏で提䟛しおくれる点に非垞に感銘を受け、単なる情報提䟛を超えた可胜性を秘めおいるず感じたした。 たた、 ゚ンゞニアずしお新しい技術に觊れ、その可胜性を詊したいずいう思いがありたした 。 加えお、 ラク スの行動指針であるリヌダヌシッ ププリン シプル「小さく詊しお倧きく育おる」に基づき、たずは 問い合わせ察応 に適甚し、成功すれば他の領域にも展開できるず考えたした。 生成AIを䜿った問い合わせの効率化 サポヌト゚ンゞニアの業務に生成AIを導入するこずで、問い合わせの効率化を実珟したした。 サポヌト゚ンゞニアが問い合わせの効率化を蚈画し、どのような工倫で生成AIを掻甚し、成果を出すこずが出来たのかを説明いたしたす。 蚈画 珟状(図GPTsを䜿う前の問い合わせ察応)の問い合わせ課題 を解決するためにChatGPTのGPTsを掻甚する蚈画を立おたした。 GPTsは、 自然蚀語凊理  NLP 技術を利甚しおナヌザヌからの問い合わせを解析し、適切な回答を生成する機胜を持っおいるため、カスタマヌサクセスからサポヌト゚ンゞニアぞの ゚ス カレヌション埌に行う調査時間を短瞮するのに最適であるず刀断したためです。 GPTsを䜿う前の問い合わせ察応 珟状の問い合わせ察応における課題 迅速な察応の難しさ スパむク的な問い合わせ察応 䞀貫した察応品質の維持 工倫 蚈画に基づき、GPTsを掻甚したカスタマヌサクセスからサポヌト゚ンゞニアぞの ゚ス カレヌション埌に行う調査を自動化したした。 この調査の自動化を効果的に行うため以䞋のような工倫を実斜したした。 耇数芖点の導入 回答粟床を向䞊させるため、AIに耇数の芖点を持たせる手法を導入したした。AIが異なる芳点から分析を行わせるこずが狙いです。実際にAIの䞭で議論を重ねるこずで、最適な回答を導き出すこずができ、粟床の高い回答が埗られるようになりたした。 GoogleDriveAPIによる孊習 GPTsにはファむルをアップロヌドしお、远加で知識を孊習させる「knowledge」機胜がありたすが、この機胜にはファむル数やファむルごずの容量に制限がありたす。ChatGPTを Google Drive ず連携し、指定フォルダ内のドキュメントを参照させるこずで、楜楜粟算の仕様やマニュアル、過去の問い合わせナレッゞに基づいた回答が埗られるようになりたした。 GPTsぞの孊習を自動化 調査結果の粟床を持続的に向䞊させるため、過去の問い合わせデヌタやナレッゞベヌスを敎理し、デヌタのクロヌルず孊習プロセスを自動化したした。これにより、 GPTs は継続的に新しい情報を孊習し、怜玢粟床ず解析胜力を向䞊させおいたす。 成果 GPTs機胜を掻甚するこずで、サポヌト゚ンゞニアの問い合わせ察応業務の効率化(図GPTs導入埌の問い合わせ察応)が実珟できたした。 GPTs導入埌の問い合わせ察応 迅速な察応ず問い合わせ察応の効率化 関連する過去事䟋や情報を迅速に怜玢・参照できるようになり、ずある察応では埓来よりも調査にかかる察応時間が75%削枛できたした。 察応品質の向䞊ず ゚ス カレヌション件数の削枛 GPTsを掻甚するこずで、問い合わせ内容を耇数の芖点から解析できるようになり、ある皮の問い合わせ察応においおは䞀貫しお高品質な察応が可胜になり開発チヌムぞの ゚ス カレヌション件数が50%削枛できた結果、開発チヌムの負担も軜枛できたした。 スパむク的な問い合わせ察応の平準化 サポヌト゚ンゞニアの調査時間の削枛ず開発チヌムぞの ゚ス カレヌション件数が削枛できたこずで、スパむク的な問い合わせにも効果的に察応できるようになり、問い合わせ察応の滞りを枛少させるこずができたした。 曎なる改善 サポヌト業務ぞの生成AI導入は初期段階ずしお䞊々の成果を䞊げたした。 これですべおの課題が解決できたわけではなく、ただ改善の䜙地が残っおいたす。 今回は 問い合わせ 察応に GPTs機胜 を䜿甚したしたが、今埌は他の業務にも GPTs を掻甚しおさらなるお客様ぞのサヌビス品質向䞊を目指しおいきたいず考えおいたす。
8/7(æ°Ž)にRAKUS TechConference以䞋TechConが開催され、盛況のうちに閉䌚したした。本蚘事ではその様子を、TechConを開催する目的や背景、圓日発衚資料なども亀えながらご玹介したす TechConずは TechConの開催目的 今幎のテヌマは「顧客志向」 ラクスの開発組織にずっお「顧客志向」ずは なぜ「顧客志向」をテヌマに遞んだのか むベント抂芁 発衚の玹介 「顧客志向」の開発組織 マルチプロダクトでのプロダクトマネヌゞャヌのリアル 拡倧するマルチプロダクトSaaSの顧客理解にデザむン組織はどう取り組んでいるか 急成長する倧芏暡プロダクト開発のマネゞメント課題ずアプロヌチ パフォヌマンス向䞊ずリ゜ヌス管理のためのアプロヌチ 急成長するサヌビスを支えるためのむンフラ戊略 楜楜粟算のQA改革楜楜粟算でのQA専門組織の実践ず成功事䟋 新たな顧客課題に挑む17幎目の進化ずモダナむれヌション クロヌゞングトヌク 終わりに TechConずは TechConは、 ラク スの開発組織である開発本郚が䞻催する、幎に䞀床の倧型むベントです。2022幎に初開催し、今幎で回目を迎えたした。 毎幎、各チヌムがテヌマに沿っお取組みを発衚する圢匏で開催しおいたす。 TechConの開催目的 TechConは、圓瀟の゚ンゞニアやデザむナヌが日々の業務を通じお埗た独自の知芋を発信するこずで、圓瀟の開発組織やカルチャヌ、 開発プロセス 、利甚技術に぀いお広く知っおいただくこずを目的ずしおおりたす。 たた瀟内の゚ンゞニアにずっおも所属する組織の文化を改めお認識する機䌚ずし、士気を高める堎にしたいずいう目的もありたす。 今幎のテヌマは「顧客志向」 今幎のテヌマずしお掲げたのは、 「顧客志向」 です。 ラク スの開発組織にずっお「顧客志向」ずは 私たち開発本郚は 「顧客をカスタマヌサクセスに導く圧倒的に䜿いやすい SaaS を創り提䟛する」 ずいうミッションを掲げおいたす。 このミッションを実珟するためには、䜕よりも「顧客志向」が欠かせたせん。 ラク ス開発本郚にずっおの「顧客志向」ずは 顧客を深く理解し、本圓に必芁な機胜を芋極めた䞊で開発を行うこず、たた顧客フィヌドバックを迅速か぀的確に補品に反映させるこずです。 開発本郚が「顧客志向」を培底するこずは 提䟛䟡倀を远求し遞ばれ続ける補品を提䟛するこずであり ひいおは 「ITサヌビスで䌁業の成長を継続的に支揎する」ずいう党瀟のミッション実珟にも぀ながるず考えおいたす。 なぜ「顧客志向」をテヌマに遞んだのか 「顧客志向の SaaS 開発組織」であるこずは、2000幎代初頭から顧客芖点を重芖しお開発しおきた圓瀟の匷みです。 しかし、組織が急成長する䞭で、メンバヌ䞀人䞀人の顧客に察する解像床が䜎䞋するずいう問題にも盎面しおおり、「顧客志向」の維持・向䞊ずいう課題にしっかりず向き合わなければなりたせん。そこで顧客志向の維持・向䞊ずいう課題に各組織がどのよう取り組んでいるか、珟堎のリアルな事䟋を玹介し、顧客志向を持っお開発する重芁性を参加者の皆様ず共有する堎にしたいず考えお、このテヌマを遞びたした。 むベント抂芁 日時 2024/8/7(æ°Ž) 14:00-18:00 䌚堎 オンラむン 参加費無料 䞻催  株匏䌚瀟ラクス開発本郚 X ハッシュタグ  #RAKUSTechCon techcon.rakus.co.jp 【むベントメッセヌゞ】 ラク ス開発本郚は「顧客をカスタマヌサクセスに導く圧倒的に䜿いやすい SaaS を創り提䟛する」をミッションに掲げおいたす。 私たちは、2000幎代初期の SaaS 開発時から培底しお顧客芖点を倧切にし、顧客のペむンポむントを理解し、その解決に向けお様々な取り組みを行っおきたした。䞀方、組織が急拡倧する䞭で、゚ンゞニア䞀人ひずりの顧客に察する解像床が䜎䞋するずいう課題にも盎面したした。 本カンファレンスでは、私たちが盎面した困難ずその乗り越え方、顧客芖点を保぀ための具䜓的な取り組みを、CTOやPdM・EM・゚ンゞニア・デザむナヌが珟堎のリアルな声でお届けしたす。 顧客志向の開発を重芖し、真のカスタマヌサクセスを目指す皆様に、私たちの知芋ずむンスピレヌションを少しでも共有できればず思っおいたす。 発衚の玹介 ここからは各発衚内容の玹介です 「顧客志向」の開発組織 登壇公手 真之 [ 執行圹員 å…Œ 開発本郚長] speakerdeck.com 👉抂芁 ラク スの開発組織の進化を振り返りながら、「顧客志向の開発組織」ずなるために取り組んできたこずをお話ししたした。 初期の ベンチャヌ 組織から機胜別組織、そしお珟圚の 事業郚制 ぞず移行する過皋で、組織が倧きくなるに぀れお、顧客の声を取り入れる難しさが増しおきたす。 今埌も「顧客志向の開発組織」であり続けるために、共通認識を匷化するためのワヌクショップ実斜や、各チヌムで顧客芖点を匷化するためのアクションを行い始めおいるこずも玹介したした。 マルチプロダクトでのプロダクトマネヌゞャヌのリアル 登壇皲垣 剛之 [補品管理課 課長] speakerdeck.com 👉抂芁 ラク スのPdM組織がどのようにお客様、補品、 ステヌクホルダヌ ず向き合い䟡倀を出しおいるのか、珟堎でのやりがい、苊劎、難しさのリアルをお話ししたした。䞋蚘のようなテヌマで、 ラク スならではの特城を玹介したした。 ・PdM組織の圹割、発足ず拡匵の経緯 ・ ラク スにおけるPdMの圹割分担、日々の プロダクトマネゞメント 手法 ・マルチプロダクトならではのチャレンゞず楜しさ ・今埌の課題ず展望 拡倧するマルチプロダクト SaaS の顧客理解にデザむン組織はどう取り組んでいるか 登壇小林 肇 [プロダクトデザむン課 課長]    今村 沙穂理 [プロダクトデザむン課] speakerdeck.com 👉抂芁 プロダクトデザむン課がマルチプロダクト SaaS の顧客理解にどのように取り組んでいるかをお話ししたした。特に、顧客課題を解決するUI/UX蚭蚈のために、顧客理解ず ドメむン 知識が重芁であるずいうこずを、過去の倱敗䟋や成功䟋を通じおご玹介したした。 さらに今埌の課題ずしお、顧客理解のさらなる深化ず、それをチヌム党䜓で共有するこずの重芁性をお話ししたした。 急成長する倧芏暡プロダクト開発のマネゞメント課題ずアプロヌチ 登壇高橋 康匘 [楜楜粟算開発郚 郚長]    小宮山 和圊 [楜楜粟算開発1課 課長]    涌井 友茔 [楜楜粟算開発1課] speakerdeck.com 👉抂芁 楜楜粟算開発チヌムが急拡倧する䞭で発生した組織的課題、 開発プロセス 課題、技術的課題を玹介したした。 組織的課題ずしおはマネゞメント負荷の増倧、開発効率の䜎䞋が挙げられおいたす。 これらの解決策ずしお、圹割の専門分化や技術負債の解消を目指したチヌム構成の芋盎しが行われおいたす。 開発プロセス 課題ずしおは、サヌビス拡倧により肥倧化するコヌドに察する認知負荷が挙げられたす。 分業化によりこの課題に察凊したしたが、顧客芖点の垌薄化ずいう新たな課題も生たれたした。珟圚は顧客芖点を匷化するため、PdMずの連携や芁求共有、顧客の声を盎接聞く機䌚の提䟛や、仮説のモニタリングず怜蚌に取り組んでいたす。 技術的課題ずしおは、技術的負債の解消が挙げられたす。コヌドの リファクタリング やむンフラの刷新に取り組むこずで、生産性の向䞊ず顧客䟡倀の最倧化を図る方針を玹介したした。 これらの取り組みを通じ、開発効率の向䞊ず顧客ニヌズに迅速に察応する䜓制の匷化が期埅されたす。 パフォヌマンス向䞊ずリ゜ヌス管理のためのアプロヌチ 登壇牧野 寛知 [ ラク スラむト クラりド 䌁画課]    䞊原 厇  [ ラク スラむト クラりド 開発郚] speakerdeck.com 👉抂芁 ブラスト゚ンゞンは、顧客のメヌルサヌバ運甚の課題から生たれた、 API 連携や SMTP リレヌを通じお効率的なメヌル配信を可胜にするツヌルです。 サヌビスを運営するうえでは、 API 凊理の タむムアりト 、ナヌザリ゜ヌスの集䞭利甚をはじめずする、パフォヌマンスずナヌザリ゜ヌス管理の課題がありたした。 これに察し、非同期 API 蚭蚈、レヌトリミットの採甚、MongoDBの導入などの察策を実斜したした。その結果、ナヌザに安定したシステムを提䟛でき、利䟿性も向䞊できたこずをご玹介したした。 急成長するサヌビスを支えるためのむンフラ戊略 登壇藀井 靖匘 [むンフラ開発郚副郚長] speakerdeck.com 👉抂芁 ラク スでは急成長するサヌビスを支えるために、戊略的にオンプレミスを遞択しおいたす。 オンプレミスには、コストマネゞメントず技術面の自由床を確保できるメリットがありたす。セッションでは仮想化技術の導入によるラックコストの倧幅な削枛や、安定運甚を実珟するためのIOPS芁件の最適化を玹介したした。 新技術導入によるコスト䜎枛ずレスポンス性胜向䞊により、 顧客満足 を高める望たしいルヌプを䜜っおいく狙いをお話したした。 楜楜粟算のQA改革楜楜粟算でのQA専門組織の実践ず成功事䟋 登壇金子 䜳暹 [東京開発統括郚 QA課] speakerdeck.com 👉抂芁 「楜楜粟算」の品質保蚌QA専門組織の取り組みに぀いお玹介したした。 楜楜粟算のQA組織は、開発フェヌズのテストだけでなく運甚にも関わり、サヌビス党䜓の品質向䞊を目指しおいたす。サヌビス利甚瀟数の増加に䌎い、開発ずテスト・運甚を䞊行しお行うよりも、専門組織化するほうが効率的であるずいう背景がありたす。 顧客課題解決のためには、運甚フェヌズでしか埗られないフィヌドバックも重芁であり、それを開発に掻かす フィヌドバックルヌプ を確立する取り組みをお話ししたした。 新たな顧客課題に挑む17幎目の進化ずモダナむれヌション 登壇倧塚 正道 [配配メヌル開発課 課長]    井䞊 良倪 [配配メヌル開発課]    亀ノ䞊 孝雄 [フロント゚ンド開発1課] speakerdeck.com 👉抂芁 17幎目を迎える「配配メヌル」は、埓来のBtoB向けのメヌル配信サヌビスから マヌケティング ・オヌトメヌション機胜を取り入れたサヌビスぞ進化したした。より顧客に成果を実感しおいただくために、新たにリヌド獲埗や商談獲埗をサポヌトする機胜が远加されたした。 技術的には、埓来の レガシヌシステム のモダナむれヌションや、モダンなフロント゚ンド技術の導入に挑戊し、倚くの䞀般ナヌザヌのアクセスに察応するためのフォヌム機胜やポップアップ機胜を実珟したした。これらの取り組みにより、サヌビスの進化ず顧客䟡倀の向䞊が図られおいたす。 クロヌゞング トヌク 登壇矢成 行雄 [倧阪開発統括郚 統括郚長]    小林 肇 [プロダクトデザむン課 課長]    皲垣 剛之 [補品管理課 課長]    倧塚 正道 [配配メヌル開発課 課長] speakerdeck.com TechConの締めくくりずしお、゚ンゞニア リングマ ネヌゞャヌ、 プロダクトデザむナヌ 、プロダクトマネヌゞャヌによるクロヌゞング トヌク を行いたした。 顧客志向を組織でどのように浞透させおいくか ラク スならではの顧客志向の取り組み 生成AIが顧客䜓隓や開発をどう倉えるか など、最埌たで熱い議論を亀わしたした 終わりに 今回のTechConは開発本郚のミッションに立ち返り、「顧客志向」をテヌマに開催いたしたした。昚幎床より倚くの方にご参加いただいたほか、参加アンケヌトからも取り組みに共感頂けたこずが䌺え、感謝いたしたす。 たた瀟内からもポゞティブなフィヌドバックが倚く寄せられ、瀟内倖共に意矩深いものになったず振り返っおおりたす。 匕き続き「顧客志向」重芖の開発に取り組み、そこで埗られた知芋を次回のTechConでお届けしたいず思いたす ◆ 関連蚘事 昚幎床(2023幎)の開催レポヌトは以䞋をご芧ください tech-blog.rakus.co.jp
抂芁 プロポヌザル提出 採択から緎習䌚たで 圓日 感想 良かった登壇内容 抂芁 2024幎8月22日8月24日に開催された iOSDC Japan 2024 に、登壇者ずしお参加したした。 本むベントは、日本の iOS やSwift゚ンゞニア向けの最倧玚のむベントの䞀぀です。 このレポヌトでは、このむベントでの登壇経隓に぀いおご玹介したす。 プロポヌザル提出 iOSDCで登壇するためには、プロポヌザルを提出し、䞻催偎からの採択が必芁です。 募集芁項 にもあるように、 iOS やSwiftに限定せず、゚ンゞニアにずっお興味深いテヌマであれば䜕でも構いたせん。 匊瀟でも有志で応募するこずずなり、私はこのようなむベントに応募した経隓はなかったものの、挑戊するこずで経隓を埗られるず考え、以䞋の3぀のプロポヌザルを䜜成したした。 なお、iOSDCでは初めお登壇する方向けに5分間のルヌキヌズLTずいう枠が蚭けられおおり、私のような初心者でも気軜に応募できたした。 近距離撮圱の新垞識iOSカメラアプリ開発におけるピンボケ察策の最前線 メモリ最適化を究めるiOSアプリ開発における5぀の重芁なポむント 実践Flutter Add-to-app既存アプリずの統合で芋えたメリットず課題 採択から緎習䌚たで 締め切りから玄10日埌、2番目の「メモリ最適化」に関するプロポヌザルが採択されたずいうメヌルが届きたした。 メヌルのタむトルに「採択」ずあり、正盎2床芋しおしたいたした。 その埌、メヌルに蚘茉されおいた必芁事項の入力、チケットの賌入登壇者は無料です、 トヌク 可吊の登録を行いたした。 ※詳しい数字は公開できたせんが、採択倍率はかなり高かったようです。 登壇資料を䜜成し、プレれンの緎習を進めおいたずころ、数日埌に iOSDC Japan 2024 ルヌキヌズLT緎習䌚 の案内メヌルが届きたした。 ルヌキヌズLTの登壇者向けに本番の機材で緎習ができ、経隓者からのフィヌドバックを受けられるずいうこずで、少し䞍安もありたしたが参加したした。 緎習䌚には、私を含め5名の登壇者ず䞻催の長谷川さん、スタッフ玄10名が参加しおいたした。 スタッフに芋おもらえるず思っおいたしたが、長谷川さんから盎接プレれンのフィヌドバックをいただけたのは非垞に有益でした。 この経隓のおかげで、本番でも䞍安を感じるこずなく登壇できたした。倧倉感謝しおいたす。 ※緎習䌚は毎幎開催されおいるようなので、ルヌキヌズLTに登壇する方には匷くお勧めしたす。 ただし、カンペ無しで即座に登壇緎習が始たるので、緎習䌚の前に緎習しおおいたほうが良いです。 たた、匊瀟のメンバヌにも資料をレビュヌしおいただき、倧倉感謝しおいたす。 開催の䞀週間前からは1日2回、3日前からは1日3回皋床プレれンの緎習を行いたした。 圓日 10:00頃に 西早皲田 の䌚堎に到着し、受付を枈たせるず登壇者専甚のネヌムプレヌトをいただきたした。 私の登壇は17:55からだったので、17:00頃たで他のセッションを楜しむこずができたした。 ※特に印象に残ったセッションに぀いおは最埌に玹介したす。 圓日の案内ずしおは「受付を枈たせお、登壇する時間になったら䌚堎に来おください」ずいったものでした。 緊匵しながら䌚堎に向かうず、ペンラむトが垭に敷き詰められおおり、「これは䜕だろう」ず思っおいたずころ、スタッフの方に「ペンラむトの色は䜕色が良いですか」ず聞かれたした。 よく分からないたた「赀色」を遞びたした。私はゲヌムなどでキャ ラク タヌの目の色を赀にするこずが倚いので、ちなみにペンラむトは登壇者応揎甚でした PCの接続チェック倖郚映像出力の確認や、音声再生の確認を行い、いよいよ登壇の時が来たした。 私も含めお8名のルヌキヌズLT登壇者が順番に登壇し、私の番が来たずき、䌚堎はかなり暗く、芳客の姿はほずんど芋えない状態でした。 そのため、自分の話に集䞭できたした。 緎習では玄4分50秒の内容でしたが、圓日は4分30秒未満で終わっおしたい、もう少しゆっくり話しおも良かったず感じたした。 登壇の様子 感想 iOSDCはコミュニケヌションを重芖しおいるむベントで、䌁業ブヌスでぱンゞニア同士の亀流が掻発に行われおいたした。 たた、登壇内容も参加者が真剣に耳を傟けおおり、登壇者ず盎接話せる堎も蚭けられおおり、゚ンゞニアずしお非垞に楜しく刺激を受けるこずができたした。 そんなむベントに登壇できたこずを非垞に嬉しく思いたすし、倧倉良い経隓ずなりたした。 来幎も登壇できるかはわかりたせんが、ぜひ応募し参加したいず思いたす。 ※ただ匊瀟メンバヌのご厚意で頂いた、たこ焌き匕換刞を䜿えなかったこずだけが心残りです。 匊瀟メンバヌがGETしたたこ焌き 良かった登壇内容 耇雑さに立ち向かうための゜フトりェア開発入門 ゜フトりェア開発党䜓における耇雑さにどう察凊するかに぀いお、脳の認知リ゜ヌスやワヌキングメモリの芳点から説明されおいたした。 タスクを现分化し、資料化しお倖に出す、チヌムメンバヌに分散するなど、日垞的に行っおいるこずが脳の負荷分散に圹立っおいるこずがわかりやすく説明されおいたした。 たた、登壇者のshizさんの話し方が講垫のようで、ずおも聞きやすかったです。 月間4.5億回再生を超える倧芏暡サヌビスTVer iOSアプリのリアヌキテクチャ戊略 TVer が目指しおいる アヌキテクチャ の方向性に぀いおの説明でした。 長期間のリニュヌアルはリリヌスが遅れるリスクがあるため、モゞュヌル分割ずフィヌチャヌフラグを掻甚しお段階的に公開する戊略が特に印象的でした。 審査が入るためリヌドタむムが発生するアプリのリリヌスにおいお、フィヌチャヌフラグで即リリヌスや ロヌルバック を制埡する手法は非垞に有甚だず思いたした。 快適な開発ず高セキュリティを実珟するCryptoKitを掻甚したCoreDataのデヌタ暗号化術 セキュリティを考慮したアプリ偎で保持するデヌタの暗号化に぀いお、SQLCipherでのデヌタベヌス党䜓の暗号化や、CryptoKitでの個別デヌタの暗号化など、実践的な手法が説明されたした。 たた、暗号化の際の 秘密鍵 の管理方法ずしお、KeyChainを䜿っお機皮倉曎時に新しく生成するずいうアプロヌチが掚奚されおおり、玍埗できる内容でした。 ◆ 関連ブログ 匊瀟から参加したメンバヌのレポヌトは こちら ぜひご芧ください。 tech-blog.rakus.co.jp
こんにちは。モバむル開発課の吉田です。 2024/8/22(朚)~8/24(土)の3日間に枡り「 iOSDC Japan 2024 」以䞋iOSDCが開催されたした。 そしお今幎床は匊瀟歎史䞊でも初のiOSDC登壇者ずしお、圓課メンバヌが登壇したした 応揎も兌ねお圓課メンバヌもむベントに参加したした。 本ブログでは、圓日の雰囲気やメンバヌの印象に残ったセッションをお届けいたしたす。 iOSDCずは 前倜祭 珟地の様子 トヌクセッション メモリ最適化を究めるiOSアプリ開発における5぀の重芁なポむント 詳解UIWindow 座談䌚 「Strict ConcurrencyずSwift 6が開く新時代: 私たちはどう生きるか」 れロから始めるiOSセキュリティ ~ OWASP Mobile Top10から孊ぶ脆匱性察策 iOSアプリらしさを玐解く Kotlin MultiplatformでSaaS倧芏暡アプリの生産性を向䞊させる技術的意思決定ず導入効果を最倧化するための取り組み さいごに iOSDCずは iOSDCは iOS 関連技術をコアのテヌマずした゜フトりェア技術者のためのカンファレンスです。 2016幎の初開催から今幎で9回目を迎えたしたが、幎々芏暡も倧きくなり党囜の iOS ゚ンゞニアからの泚目床も非垞に高いむベントずなっおいたす。 圓日コンテンツもメむンずなる トヌク セッションの他、ルヌキヌズLT倧䌚、スポンサヌ䌁業ブヌスでのナニヌクな展瀺䌁画、亀流を深める懇芪䌚、果おにはネむルアヌトやフェむスペむンティングなど初心者から熟緎者問わず楜しめるコンテンツが準備されおいたす。 今幎床も匕き続きオンラむン ニコニコ生攟送 オフラむン 早皲田倧孊 西早皲田 キャンパスでのハむブリッド開催でしたが、珟地は今幎の猛暑に負けないほどの熱気にあふれおいたした。 前倜祭 iOSDCの初日である8/22は、前倜祭ずしおいく぀かの トヌク セッションが行われたした。 その䞭でも今幎の泚目むベントは指瀺された動䜜をする Swiftコヌド をより短く曞けた方が勝ち、ずいう1察1の察戊コンテンツである「 Swiftコヌド バトル」 予遞から熱い戊いが繰り広げられ、前倜祭では決勝の優勝者決定たでが配信されたした。 内容はシンプルですが、ラむブコヌディング特有の難しさを感じられる臚堎感がありたした。 たた、優劣が䞀目で分かるようにリアルタむムでバむト数が衚瀺されたり、決勝では芳芧者も急遜同じ問題に挑戊できるようシステムが敎備されるなど、運営偎の工倫も光り、非垞に芋ごたえがあり盛り䞊がりたした。 珟地の様子 翌日8/23からはいよいよ、朝からiOSDC本線の幕開けです 圓日も厳しい暑さでしたが、倚くの方が足を運んでおり、お祭りのような賑わいを芋せおいたした。 䌚堎の様子ず登壇ステヌゞ スポンサヌ䌁業ブヌスでは iOS やSwiftにちなんだ趣向をこらした䌁画が催されおおり、和気あいあいず亀流しおいる姿が玠敵でした。 䌁業ブヌス䌁画 たた䌚堎には色々な゚リアに軜食やフリヌドリンクが提䟛され、キッチンカヌも蚭営されるなど参加者ぞの気遣いが感じられたした。 改めお運営の方々がむベントを成功させるために毎幎努力を重ねられおいるんだな、ずいうのが䌝わりたした。 ドリンクず軜食サヌビス トヌク セッション メむンずなる トヌク セッションは、䌚堎4か所のブヌスでルヌキヌズLTも含めるず合蚈91ずもなる倚皮倚様な トヌク が行われたした。 日頃オフラむンむベントに参加する事は少ないのですが、やはり珟地で盎接聎講するずスピヌカヌの方や䌚堎の熱量も分かりやすく、立お続けの移動で1日の終わりにはクタクタになりたしたが、ずおも濃厚な時間を過ごすこずができたした。 ここからは、圓課メンバヌが特に印象に残った トヌク セッションをご玹介させおいただきたす。 メモリ最適化を究める iOS アプリ開発 における5぀の重芁なポむント fortee.jp speakerdeck.com 抂芁 圓課メンバヌの発衚 昚今は機皮性胜向䞊により、ほずんど意識する機䌚が枛ったアプリメモリ管理ですが、改めおそのテクニックを玹介 感想 そこたで意識しないでいいずずはいえ、このようなハヌドに近い領域を前提知識ずしお知っおいるかどうかでクオリティに差が出る事を再認識した セッション自䜓ではないが5分ずいう枠の䞭で、終わりに近づくず サむリりム を振っお合図するなど䌚堎の䞀䜓感が䌝わるようなルヌキヌズLTの雰囲気が楜しかった 登壇の様子 詳解UIWindow fortee.jp speakerdeck.com 抂芁 UIWindowに぀いお、UIScreen、UIWindowScene、UIViewずの関係ず各クラスの圹割、たたこれらのクラスが動䜜するずきの现かい挙動を解説 感想 基瀎的な内容だが、開発者ずしお知っおおいた方がいいセッションず感じた 開発で觊れるこずのあるUIWindowず関連するクラスに぀いお、どういった抂念で䜜られたものなのかわかりやすい図ずずもに解説しおいるずころが良かった 画面芁玠の衚瀺順序が蚭定される仕様、党画面衚瀺にしたずき特有の仕様など知っおおいた方がいいこずやSwiftUIからりィンドりサむズを取埗する堎合など孊びの倚いセッションだった 座談䌚 「Strict ConcurrencyずSwift 6が開く新時代: 私たちはどう生きるか」 fortee.jp speakerdeck.com 抂芁 Swift 6におけるStrict Concurrencyの導入が、゜フトりェア開発にどのような圱響を䞎えるかに぀いお、座談䌚圢匏で議論 感想 Data raceずRace conditionの違いに぀いお図で説明されおいお分かり易かった Data Isorationに぀いおIsoration Domainごずの具䜓的なコヌド事䟋など亀えながら説明があり分かり易かった Concurrencyぞの移行を始めるのにおすすめのレむダヌずData raceの原因ごずの具䜓的な手法に぀いお蚀及されおおり孊びが倚かった れロから始める iOS セキュリティ ~ OWASP Mobile Top10から孊ぶ 脆匱性 察策 fortee.jp speakerdeck.com 抂芁 モバむル開発を行うにあたっお、よく遭遇するセキュリティリスクを䟋に、その内容ず察策を玹介 感想 モバむル アプリ開発 におけるセキュリティの重芁性を改めお認識できた。特に、クラむアント偎の端末で動䜜するアプリにおいお、センシティブな情報パスワヌドや個人情報などの取り扱いには、现心の泚意が求められるこずが匷調されおいた点が印象的だった アプリごずに䜜成された サンドボックス 領域ぞのアクセスも決しお䞍可胜ではないずいう点、リリヌスビルドであっおもコヌド解析は可胜であるずいう事実から、セキュリティ蚺断を行う際に Apple の仕組みに頌り切った刀断は危険だず認識できた これらの点から、そもそもセンシティブなデヌタはアプリ偎に眮かない方が良いずいう結論に自然ず至った。できるだけクラむアント偎ではなく、サヌバヌ偎でデヌタを管理し、必芁に応じお最䜎限の情報のみを端末に保存するずいうアプロヌチが、より安党なのだず匷く思った iOS アプリらしさを玐解く fortee.jp 抂芁 iOS アプリのデザむンにおける「 iOS らしさ」ずは䜕かずいうテヌマに぀いお、Human Interface Guidelinesや Apple 玔正アプリ等から分析した結果に぀いお玹介 感想 デザむンがナヌザぞ䞎える情報量は倚く、適切なアニメヌションやUIの採甚がナヌザヌ䜓隓の向䞊に䞎える圱響は倧きいず感じた Apple における「盎感的」ずいうワヌドは切っおも切れないもので、珟実䞖界の挙動を暡倣したデザむンの採甚もその圹割を担っおいるず感じた ハヌフモヌダルを匕っ匵っお項目を探すずいう動䜜は、匕き出しから物を探す動䜜に䌌おいるずいうように、珟実䞖界の動䜜ず照らし合わせおみるこずは「盎感的」な䜿甚感に぀ながるデザむンを遞定するヒントになりそうだず感じた Kotlin Multiplatformで SaaS 倧芏暡アプリの生産性を向䞊させる技術的意思決定ず導入効果を最倧化するための取り組み fortee.jp 抂芁 Kotlin Multiplatform(以降KMP)導入たでの意思決定ず導入する際の取り組みを玹介 感想 私自身が Android アプリ゚ンゞニアのためKMPを孊習する際ハヌドルずしお意識しおいなかった Android ではお銎染みのGradleなどのツヌルやラむブラリやKotlin孊習などを iOS ゚ンゞニアがしっかりキャッチアップできるような取り組みがなされおいるのが印象的だった 孊習コスト以倖では、 Objective-C 倉換される点はSwift倉換がロヌドマップ䞊にはあるそうなので、解消されるこずを期埅 ここで玹介した以倖にも、本圓に興味が惹かれるセッションばかりで、技術的モチベヌションの刺激にもなりたした。 登壇メンバヌも終わった埌の解攟感がすごかったず蚀っおいたので、登壇者の方々は圓日たで入念に準備を重ね、重責に耐えお挑たれたものず思いたす。 登壇者の皆様、本圓にお疲れ様でしたありがずうございたした さいごに 以䞊、3日間に枡る「iOSDC Japan 2024」の暡様をお䌝えしたしたがいかがだったでしょうか。 iOSDC自䜓はこれたでも断片的には楜したせおいただいおいたしたが、今幎床はメンバヌも登壇し初の珟地参加ずいうこずでたた特別な䜓隓でした。 リモヌトでは埗られない珟地の熱気や亀流を通じお、チヌムずしおもお互いに曎に理解を深めたり、 トヌク セッションを受けお早くも創䜜意欲が湧き䞊がったりず有意矩な経隓を埗る事ができたした。 そしお最埌にはなりたすが運営いただいたスタッフの皆様、登壇者の皆様、参加者の皆様、本圓にお疲れ様でした。 チヌムでの集合写真
はじめに 埩習PGlite pg-gateway pg-gatewayずPGliteを起動しおSQLクラむアントから接続する たずめ はじめに こんにちは、゚ンゞニア幎目のTKDSです 前回 はPGliteの抂芁・䜿い方・速床実隓に぀いお蚘事にしたした。 今回はさらに、PGliteぞの SQL クラむアントからの接続を可胜ずするpg- gateway に぀いお玹介し、掻甚䟋に぀いお瀺したす。 埩習PGlite PGliteは、 PostgreSQL をWebAssemblyWASMに コンパむル した軜量なデヌタベヌス゚ンゞンです。 これにより、ブラりザ、Node.js、Bun、DenoなどでPostgresの機胜を利甚でき、開発者はロヌカルやサヌバヌレス環境でデヌタベヌス操䜜を行うこずが可胜です。 PGliteは、むンメモリデヌタベヌスや ファむルシステム Node.jsやBun、IndexedDBブラりザでの氞続化をサポヌトしたす。 pg- gateway TypeScript library that implements the Postgres wire protocol from the server-side. It provides APIs you can hook into to handle authentication requests, queries, and other client messages yourself. 翻蚳サヌバヌサむドでPostgresのワむダヌ プロトコル を実装するTypeScriptラむブラリです。このラむブラリは、認蚌リク ゚ス ト、ク゚リ、およびその他のクラむアントメッセヌゞを自分で凊理するための API を提䟛したす。 簡単にいうずこのラむブラリは、デヌタベヌスずやりずりするための仕組みをサヌバヌ偎で実珟するものです。 これによっお、簡単にPGliteぞ倖郚のクラむアントから接続できるようにしおくれたす。 pg- gateway ずPGliteを起動しお SQL クラむアントから接続する たずはpg- gateway を䜿えるようにしたす。 # クロヌンする git clone https://github.com/supabase-community/pg-gateway.git # ビルドの蚭定があるディレクトリに移動 cd pg-gateway/packages/pg-gateway/ # 必芁な䟝存関係のむンストヌル npm install # ビルド npm run build # PGlite+pg-gateway甚のディレクトリを䜜る # 元いたディレクトリに戻る cd - # ディレクトリの䜜成 mkdir -p pglite-with-gateway/lib cd pglite-with-gateway/lib # ビルド成果物のコピヌ cp ../../pg-gateway/packages/pg-gateway/dist/index.js ./ cp ../../pg-gateway/packages/pg-gateway/dist/index.mjs ./ cp ../../pg-gateway/packages/pg-gateway/dist/index.d.ts ./ # プロゞェクトルヌトで初期化 npm init 生成されたpackage. json の䞭身を以䞋のように曞き換えおください。 { " name ": " pglite-with-gateway ", " version ": " 1.0.0 ", " description ": " A project integrating PGlite with pg-gateway ", " main ": " src/app.js ", " directories ": { " lib ": " lib " } , " scripts ": { " start ": " node src/app.js " } , " author ": "", " license ": "", " dependencies ": { " pg-gateway ": " file:./lib/index.js " , } , " type ": " module " } PGliteのむンストヌル npm install @electric-sql/pglite # dotenvのむンストヌル npm install dotenv # pg-protocolのむンストヌル npm install pg-protocol 準備が敎ったので、コヌドを準備しお起動しおいきたす。 pg-gatewayのREADME を参考にコヌドを曞きたす。 "use strict" ; import net from "node:net" ; import dotenv from "dotenv" ; import { PGlite } from "@electric-sql/pglite" ; import { PostgresConnection } from "../lib/index.mjs" ; // 環境倉数読み蟌み dotenv . config () ; // PGliteのむンスタンス䜜成 const pg = new PGlite () ; // 平文パスワヌドでの認蚌凊理 async function validateUserCredentials ( credentials ) { const { user , password } = credentials ; const validUser = process . env . DB_USER ; const validPassword = process . env . DB_PASSWORD ; // ナヌザヌ名ずパスワヌドが䞀臎するか確認 return user === validUser && password === validPassword ; } // クラむアントメッセヌゞの凊理 async function handleClientMessage ( data , isAuthenticated , connection ) { if ( ! isAuthenticated ) { return false ; } try { const [[ _ , responseData ]] = await db . execProtocol ( data ) ; connection . sendData ( responseData ) ; } catch ( err ) { console . error ( "Error processing message:" , err ) ; connection . sendError ( err ) ; connection . sendReadyForQuery () ; } return true ; } // クラむアント接続凊理 function handleClientConnection ( socket ) { const connection = new PostgresConnection ( socket , { serverVersion : "16.3 (PGlite 0.2.0)" , authMode : "cleartextPassword" , // 平文パスワヌド認蚌 validateCredentials : validateUserCredentials , onStartup : async () => { await db . waitReady ; return false ; } , onMessage : ( data , { isAuthenticated }) => handleClientMessage ( data , isAuthenticated , connection ) , }) ; socket . on ( "end" , () => { console . log ( "Client disconnected" ) ; }) ; socket . on ( "error" , ( err ) => { console . error ( "Socket error:" , err ) ; }) ; } // サヌバヌの起動 function startServer () { const server = net . createServer ( handleClientConnection ) ; server . listen ( 5432 , () => { console . log ( "Server listening on port 5432" ) ; }) ; server . on ( "error" , ( err ) => { console . error ( "Server error:" , err ) ; }) ; } // サヌバヌを開始 startServer () ; pg-protocol関連でむンポヌトできない゚ラヌがでる堎合がありたす。 ゚ラヌメッセヌゞを確認し、node_modules内のファむルを曞き換えおください。 䜜業が完了したら起動したす。 npm start 別のタヌミナルを開いお接続したす。 # psqlがない堎合はむンストヌルする sudo apt install -y postgresql-client # 接続 psql -h localhost -U postgres 以䞋のように繋がりたす。 これで、 SQL クラむアントからPGliteにアクセスするこずが可胜になりたした たずめ pg- gateway を動かすたでに぀いお解説したした。 情報が少なく、動かせるようになるたで苊劎したした。 珟時点で実甚するには少し厳しいかなず感じたした。これからに期埅ですね 実はpg- gateway を䜿っおGoからク゚リ実行しようずしおできず、諊めたした...。ログむンができるのですがpg- gateway 偎で送信されたク゚リを実行できず ここたで読んでいただきありがずうございたした
はじめに 察象読者 TL;DR OpenAPI Specificationずは OASを導入するこずの䜕が嬉しい 1. プロダクトごずにAPI仕様曞を蚘述するツヌルやフォヌマットがバラバラでスむッチングコストがかかる 2. 蚘述量が増えるず動䜜が重くなる 3. API仕様倉曎の䌝達挏れの倚発 導入たでの課題 1. OASの調査に時間をかけすぎた 2. OASのデメリット党おに察応策を講じようずしおしたったこず 導入しお幎、開発環境は改善されたのか おわりに はじめに ラク スフロント゚ンド開発2課の斉藀です。 ラク スの開発するプロダクトである楜楜明现、楜楜電子保存、楜楜請求では OpenAPI Specification 以䞋 OAS を採甚した開発を行っおいたす。 今でこそ OAS を掻甚した開発を行うこずができおいたすが、導入にあたっおは様々な苊劎がありたした。 そこで今回は 䜕故 OAS を導入したのか 導入にあたっおどのような課題があったのか 導入しお実際に効果はあったのか を玹介したいず思いたす。 察象読者 OAS の導入を怜蚎しおいる人 OAS の導入に呚りから賛同を埗られない人 OAS 導入の効果が知りたい人 TL;DR 時間がない方に向けお結論から曞きたす。 埓来の API 仕様曞の閲芧パフォヌマンスやコミュニケヌションの霟霬による課題を解決したくお OAS を導入した。 導入にあたっおは ステヌクホルダヌ の䞍安を ヒアリ ングし、ケアをするこずで合意を埗る事ができた。 OAS 導入埌、開発者の満足床は高く、 工数 削枛の効果があった。たたAIず組み合わせる事で生産性がさらに向䞊する副次効果もあった。 OpenAPI Specificationずは OAS ずはRESTful API を定矩するための暙準仕様であり、もずもずはSwaggerず呌ばれおいたした。 *1 JSON たたは YAML 圢匏で蚘述され、 API の゚ンドポむント、HTTPメ゜ッド、パラメヌタ、レスポンス、゚ラヌハンドリング、などを定矩するこずができたす。 䟋えば以䞋は YAML 圢匏で蚘述された OAS の䟋です。 openapi : 3.0.2 servers : - url : /v3 info : description : |- This is a sample Pet Store Server based on the OpenAPI 3.0 specification. tags : - name : pet description : Everything about your Pets externalDocs : description : Find out more url : 'http://swagger.io' paths : /pet : post : tags : - pet summary : Add a new pet to the store description : Add a new pet to the store operationId : addPet responses : '200' : description : Successful operation content : application/json : schema : $ref : '#/components/schemas/Pet' '405' : description : Invalid input requestBody : description : Create a new pet in the store required : true content : application/json : schema : $ref : '#/components/schemas/Pet' これをSwagger UIのようなツヌルを甚いお衚瀺するず、以䞋のようにシンプルなUIで API 仕様を確認するこずができたす。 公匏がサンプルを甚意 しおいるので、こちらを参照するずより具䜓的な䜿甚むメヌゞが掎めるず思いたす。 OAS を導入するこずの䜕が嬉しい OAS を導入する前、プロダクト開発チヌムは API 仕様曞に぀いお以䞋の課題を抱えおいたした。 1. プロダクトごずに API 仕様曞を蚘述するツヌルやフォヌマットがバラバラでスむッチングコストがかかる 䟋えばあるプロダクトでは API 仕様曞の蚘述に スプレッドシヌト 、他のプロダクトでは Google Docs 、ずいったようにそれぞれが異なるツヌルを甚いおいたした。 蚘述のフォヌマットも統䞀されおおらず、耇数のプロダクトを暪断的に開発するチヌムにずっおは蚘述ルヌルの孊習コストが無芖できないものになっおいたした。 2. 蚘述量が増えるず動䜜が重くなる これは Google Docs を採甚しおいるプロダクトで顕著だったのですが、 API の゚ンドポむントが増えるに぀れ動䜜がカクカクしおしたい、閲芧するにも䞀苊劎ずいう状況が生たれおいたした。 これに察しおはドキュメントを分割するなどの察策が取れたすが、耇数ファむルを参照しながら開発するのは良い䜓隓ずは蚀えたせんでした。 API 仕様は䜕床も繰り返し参照するドキュメントなので、閲芧時のパフォヌマンスは早急に改善したいポむントでした。 3. API 仕様倉曎の䌝達挏れの倚発 開発する䞭で API 仕様の倉曎は぀きものです。...ですよね 倧きな倉曎は滅倚にありたせんが、軜埮な倉曎、䟋えばプロパティ名をより適切な 呜名 に倉曎したり、゚ラヌパタヌンを远加したりずいったこずはありたす。 そういった倉曎の共有挏れが頻発し、疎通テストで初めお発芚しお慌おお修正するずいった状況が倚くありたした。 コヌドの修正は開発工皋の初期であるほど䜎コストで枈みたす。 修正が起きた郜床、チヌム内で倉曎が共有されおいる状況を䜜る方法を暡玢するも最適解が出ない状態でした。 これらの課題を党お解決したいず考えたずき、 OAS が遞択肢ずしお挙がりたした。 OAS を甚いるず 仕様の蚘述フォヌマットが芏定されおいるため、チヌム内で共通蚀語を甚いた暪断的な開発ができる Swagger UIのようなツヌルを甚いれば倚量の API 仕様を぀のHTMLで高いパフォヌマンスで閲芧できる OAS からI/Fの型を自動生成するこずで型レベルで䌝達挏れを防ぐこずができる ずいったメリットがあり、自分たちの抱える課題を䞀挙に解決するできるのではずいう期埅から、導入怜蚎に進むこずになりたした。 導入たでの課題 OAS を䜿えば課題解決できるダッタヌ導入した〜すあずよろしく、で通ったら苊劎したせん。 私たちはチヌムで仕事をしおいるので、 ステヌクホルダヌ ず合意圢成をする必芁がありたす。 たた、匊瀟が芏定する ラクスリヌダヌシッププリンシプル ずいう行動指針に 党䜓最適 芖点を持぀ ずいうものがありたす。 この指針に照らし合わせ、 OAS 導入が 党䜓最適 に寄䞎するずいう仮説をチヌムから玍埗しおもらう必芁がありたした。 そこで各々のプロダクトを担圓するバック゚ンド゚ンゞニアず䌚議を行い、 OAS の抂芁ず導入を怜蚎しおいるこずを䌝えたした。 䞭にはぜひ導入したいずいう゚ンゞニアもいれば、いきなり倉えるのには䞍安がある、ずいった意芋もありたした。 さらに深掘っお、導入にあたっおの疑問点や䞍安に思っおいるこずを ヒアリ ングするず以䞋の意芋が挙がりたした。 OAS 導入のメリットは理解できたが、開発フロヌがどのように倉わるかむメヌゞできない OAS 導入によっお自分が行うタスクがどう倉わるのかむメヌゞしづらい OAS はフォヌマットが芏定されおいるため、孊習コストが気になる そこで1, 2に関しおは OAS 導入の前埌で倉わるこずをスラむドを甚いお説明するこずでむメヌゞを掎んで頂きたした。 たた3に関しおは勉匷䌚を開催するこず、 スプレッドシヌト で曞かれた既存の API を OAS に曞き換え、蚘入䟋を瀺すこずで察応したした。 その甲斐あっおか最終的には導入を提案した3぀のプロダクト党おにおいお、合意を埗るこずができたした。 合意圢成がうたくいったポむントずしおは 盞手が䞍安に思っおいるこずを ヒアリ ングし、その䞍安は杞憂である、もしくは察応策があるこずを根拠を持っお答えるこずができた点 かず思っおいたす。 ず、さらっずスマヌトに事が運んだかのように曞いおいたすが、 最終的に合意圢成に至るたでにヶ月くらいかかっおいたす。 理由ずしおは OAS の調査に時間をかけすぎたこず OAS のデメリット党おに察応策を講じようずしおしたったこず が挙げられたす。 1. OAS の調査に時間をかけすぎた OAS の調査にあたり公匏ドキュメントを読み蟌んでいたのですが、芚えるべき事が膚倧でOpenAPIを曞けるようになるたでにはかなりの時間がかかるのではず考えるようになっおいきたした。 フロント゚ンド゚ンゞニアだけで完結するならただ良かったのですが、いずれはバック゚ンドチヌムにもOpenAPIを曞いおもらうようにしたかったので、孊習コストを理由に導入を断られおしたう䞍安がありたした。 そこで Stoplight Studio や Apicurio Studio ずいった GUI でOpenAPIを蚘述できるようなサヌビスを䜿えば孊習コストを抑えられそうず思い至り、さらにそちらの調査にも時間を割いおしたいたした。 結論から曞くず、珟圚これらのツヌルは䜿甚しおいたせん。 OAS を導入した今蚀えるこずは、そもそもOpenAPIの孊習コストは高く無いずいうこずです。 OpenAPIは様々な API 仕様蚘述のフォヌマットを甚意しおいたすが、䜿甚するのはその䞭の䞀郚であり、公匏が甚意しおいるドキュメントを真䌌ればすぐに曞けるようになりたす。 たた匊瀟では Github Copilotを党瀟的に導入しおおり、Copilotは OAS の掚論がずおも埗意なので、知識が浅いうちでも匷力なサポヌトを埗る事ができたす。 したがっお、孊習コストを䞋げるために GUI ツヌルを導入するずいうのはコストず効果が芋合っおいないず刀断したした。 実際、バック゚ンドに察しお䞍安を ヒアリ ングしたずきに孊習コストの懞念は挙がったのですが、先述したようにちょっずした勉匷䌚の開催ず蚘入䟋の提瀺で玍埗しおいただけたした。 ドキュメントを読んだ印象だけで孊習コストが高いず決め぀け、あれもこれもず調査に時間を䜿ったのはもったいなかったです。 2. OAS のデメリット党おに察応策を講じようずしおしたったこず OAS を調査しおいく䞭で スプレッドシヌト や Google Docs にはできおOpenAPIにはできないこずがいく぀かある事がわかりたした。 䟋えば スプレッドシヌト や Google Docs はドキュメント同士をリンクするこずができたり、蚘述した内容に察するコメント等ができたすが、OpenAPIではできたせん。 そこで、OpenAPIの description をうたく掻甚する事でどうにかデメリットを吞収できないかず思玢しおいたした。 結局今は description の蚘述ルヌルなどは特に蚭けずに運甚しおいたす。 ドキュメント同士のリンクなどはできれば䟿利ですが、必須な機胜ではありたせん。 これを無理やり実珟しようずしお運甚コストが高くなっおは本末転倒です。 新しい手法を導入する事でメリットずデメリットの䞡方が生じるのは圓然です。 生じるデメリットが本来解決したかった課題の倧きな障害ずなるかどうかずいう芖点で、察応の芁吊を最初から取捚遞択しおおくべきでした。 実際このようなデメリットが存圚するこずを䌝え぀぀ OAS 導入をチヌムに提案したしたが、すんなり受け入れおもらえたした。 振り返るず、぀の倱敗の共通点は 思い蟌み だったず思いたす。 孊習コストが高いのではないか デメリットに察する完璧な察応策を考えおおくべきではないか これらに察凊しなければ合意をもらえないのではないか このような思い蟌みを根拠にした意思決定が、倚くの時間をかけおしたった原因だったように思いたす。 次に同じような課題に盎面した際は ある皋床調査したら実際に手を動かしおシミュレヌションしおみる 早い段階でチヌムに盞談しデメリットが蚱容できるものか認識を擊り合わせおおく こずで思い蟌みによる無駄を避けるように行動しおいきたいず思いたす。 導入しお幎、開発環境は改善されたのか OAS を導入しおから玄幎経った珟圚2024/08は以䞋の流れで開発を行っおいたす。 フロント゚ンド゚ンゞニアがOpenAPIで API 芁求仕様を蚘述しプルリク ゚ス トを出す バック゚ンド゚ンゞニアが API 芁求仕様のレビュヌを行い、 API 仕様を確定させる OpenAPIから型やコヌドを自動生成するフロント゚ンドは openapi-generator を䜿甚 生成した型をパッケヌゞ化しプラむベヌト レゞストリ にpublish npm installで生成した型をむンストヌルしI/Fを実装 フロント゚ンドもバック゚ンドもOpenAPIから自動生成した型やコヌドを䜿甚しおいるので、疎通テストのバグが倧幅に枛少し 工数 削枛ずなりたした。 たた自動生成した型ず Github Copilotを組み合わせお、モックデヌタを掚論できるずいう副次効果の恩恵にもあずかっおいたす。 もちろん圓初挙げおいた課題も解決する事ができ、開発䜓隓も改善されたした。 さらに今回゚ンゞニアに向けお OAS を導入しお実際にどう感じおいるか、アンケヌトを取っおみたので結果を玹介したいず思いたす。 回答者の属性 OAS 導入埌、OpenAPIを参照もしくは蚘述したこずがある゚ンゞニア 有効回答数9ä»¶ Q: OpenAPIを䜿った開発においお、改善が必芁だず感じた点や課題を教えおください。 A: 実装過皋の埌半でSwaggerの修正に少しハヌドルを感じおいたすので、FE/BE共に修正が必芁なら早急に盞談し、すぐ修正するコミュニケヌションや雰囲気をお互いで䜜っおいきたいず思っおいたす。 Q: その他ご意芋ご感想などあれば蚘述しおください。 A: 導入圓時、OpenAPIを導入したい経緯や課題は理解できたが、既存の 開発プロセス のどこで䜕をすればよいのかはよくわからなかった。今でも正しく理解できおいるか埮劙。 党䜓的に高い満足床であり、少なくずも定性的には OAS 導入の効果はあったず蚀えそうです。 ただ、 OAS の導入プロセスに぀いおは䞍満ず回答した方はいないものの、他の項目ず比べるず満足床が䜎めです。 自由蚘述の回答にもある通り、「 開発プロセス のどこで䜕をすればよいのかはよくわからなかった。」ず意芋を頂いおおり、スラむドによる説明だけでは䌝わりづらかった郚分があったず考えられたす。 小さくプロトタむプの リポゞトリ を䜜っお、 OAS 導入埌の 開発プロセス のシミュレヌションを行うなどすればより理解しお貰いやすかったのかなず思いたす。 おわりに 本蚘事では OAS 導入に至った経緯から導入たでの課題、その埌の効果たで玹介したした。 導入たでには数々の障害があり、至らない郚分も倚くありたしたがなんずか開発フロヌに組み蟌む事ができたした。 党䜓ずしおは高い満足床ずなり、圓初の課題も解決できたため導入しおよかったず感じおいたす。 今埌さらなる 開発プロセス の改善に取り組む際には、今回の反省点を掻かし、より効率的に、より倚くの ステヌクホルダヌ に玍埗しおいただけるよう進めおいきたいです。 *1 : 曖昧な情報です。おそらくOpenAPI2系たではSwagger, 3系からは OAS ず呌ばれおいたす。
はじめに PGliteの抂芁 PGliteの特城 PGliteを詊す ブラりザで䜿う PGliteの速床蚈枬 たずめ はじめに こんにちは゚ンゞニア幎目のTKDSです 今回はPGliteに぀いお調べおみたした 抂芁・䜿い方・速床実隓・たずめの内容で蚘事は構成されおいたす。 䜿っおみた結果ずしお、軜量高速であり色々䜿いみちがありそうなツヌルだず感じたした。 ぜひ最埌たで読んでいただけるず幞いです。 PGliteの抂芁 PGliteは、 PostgreSQL をWebAssemblyWASMに コンパむル した軜量なデヌタベヌス゚ンゞンです。 これにより、ブラりザ、Node.js、Bun、Denoなどで PostgreSQL の機胜を利甚でき、開発者はロヌカルやサヌバヌレス環境でデヌタベヌス操䜜を行うこずが可胜です。 PGliteは、むンメモリデヌタベヌスや ファむルシステム Node.jsやBun、IndexedDBブラりザでの氞続化をサポヌトしたす。 PGliteの特城 公匏サむト によるず、 1. Lightweight 2. Extendable 3. Reactive 䞊蚘、3぀の特城が挙げられおいたした。 1PGliteのWASMバむナリが圧瞮状態で3MB皋床であるこず 2 PostgreSQL の 拡匵機胜 が適甚可胜であるこず 3に関しおはテヌブルが倉曎されたずきに曎新された結果を受け取る機胜をサポヌトしおいるこず から来おいるそうです。 3はCDCChange Data Captureの機胜に䌌おたすね フロント゚ンドは詳しくないのですが、状態管理などにも䜿えるのではなど思い浮かびたした。 PGliteを詊す ドキュメントをみ぀぀環境構築しおみたしょう。 手軜に詊したい堎合は、 こちらのリンク から詊すこずもできたす。 今回は手元で詊しおみたす。 npm install @electric-sql/pglite application.jsに䞋蚘の内容を曞き蟌みたす。 const { PGlite } = require ( '@electric-sql/pglite' ) ; ( async () => { try { const db = new PGlite () ; await db . exec ( ` CREATE TABLE IF NOT EXISTS todo ( id SERIAL PRIMARY KEY, task TEXT, done BOOLEAN DEFAULT false ); INSERT INTO todo (task, done) VALUES ('Install PGlite from NPM', true); INSERT INTO todo (task, done) VALUES ('Load PGlite', true); INSERT INTO todo (task, done) VALUES ('Create a table', true); INSERT INTO todo (task) VALUES ('Update a task'); ` ) ; const ret = await db . query ( ` SELECT * from todo WHERE id = 1; ` ) ; console . log ( "Query Result:" , ret . rows ) ; } catch ( error ) { console . error ( "Error executing query:" , error ) ; } })() ; ドキュメントの内容をそのたたコピヌしおも動かないので、少々修正しおありたす。 結果は以䞋のずおりです。 無事に動かすこずができたした。 雑に時間を枬っおみるず起動から SQL 実行たで2.08秒ほどで完了しおいたす。非垞に高速ですね ブラりザで䜿う コマンドラむン で決たった SQL を実行する以倖にも、ブラりザでREPLを䜿っお、察話的にPGliteにアクセスできたす。 ドキュメントに コヌド が蚘茉されおいたすが、2024/8/18時点では、そのたた䜿甚できたせん。 開発者ツヌルでみるず、 Failed to load resource: the server responded with a status of 404 () ずメッセヌゞが衚瀺されおいたす。 ゜ヌスからファむルを開くず Couldn't find the requested file /dist-webcomponent/Repl.js in @electric-sql/pglite. ず衚瀺されおいたす。 おそらくドキュメントのコヌドのリンクが間違っおいそうです。 JSDELIVER で調べおみたしょう。 調べおみるず、䞋蚘画像のようにpglite-replがありたしたこのパスに倉曎すればいけそうです。 念のため䞭身をチェックしおから䜿甚したした。 では、以䞋のコヌドをファむルに曞き、ブラりザで開いおください。 <!doctype html> < html lang = "ja" > < head > < meta charset = "UTF-8" /> < meta name = "viewport" content = "width=device-width, initial-scale=1.0" /> < title > PGlite REPL Example </ title > < script src = "https://cdn.jsdelivr.net/npm/@electric-sql/pglite-repl@0.2.1/dist-webcomponent/Repl.js" type = "module" ></ script > </ head > < body > < h1 > PGlite REPL </ h1 > <!-- PGlite REPLコンポヌネントがここに衚瀺されたす --> < pglite-repl id = "repl" ></ pglite-repl > < script type = "module" > import { PGlite } from "https://cdn.jsdelivr.net/npm/@electric-sql/pglite/dist/index.js" ; // PGliteむンスタンスを䜜成 const pg = new PGlite () ; // REPL芁玠を取埗 const repl = document . getElementById ( "repl" ) ; // PGliteむンスタンスをREPLに蚭定 repl . pg = pg ; </ script > </ body > </ html > REPLを開くこずができ入力もできたした PGliteの速床蚈枬 次にPGliteの速床を枬っおみたす。 SELECT、 INSERT、UPDATE、DELETEに぀いお、それぞれ実隓したす。 以䞋のコヌドで実隓したす。 各DB操䜜を行い、1000, 2000, 3000, 4000, 5000, 10000ず扱う件数が増えおいきたす。 import { PGlite } from "@electric-sql/pglite" ; import { performance } from "perf_hooks" ; const measureDbStartup = () => { const dbStartTime = performance . now () ; // DB起動時間の枬定開始 const db = new PGlite () ; // デヌタベヌスむンスタンスを初期化 const dbEndTime = performance . now () ; // DB起動時間の枬定終了 const dbStartupTime = dbEndTime - dbStartTime ; console . log ( `DB startup time: ${ dbStartupTime . toFixed ( 3 )} ms` ) ; return db ; } ; const initDb = async ( db , numRows ) => { await db . exec ( ` CREATE TABLE IF NOT EXISTS test_table ( id SERIAL PRIMARY KEY, name TEXT, value INTEGER ); ` ) ; const values = [] ; for ( let i = 0 ; i < numRows ; i ++ ) { values . push ( `('name_ ${ i } ', ${ i } )` ) ; } await db . exec ( `INSERT INTO test_table(name, value) VALUES ${ values . join ( ", " )} ` , ) ; } ; const measureOperationTime = async ( operation , db , numRows ) => { let totalTime = 0 ; for ( let trial = 1 ; trial <= 3 ; trial ++ ) { const startTime = performance . now () ; await operation ( db , numRows ) ; const endTime = performance . now () ; const duration = endTime - startTime ; totalTime += duration ; console . log ( `Trial ${ trial } , ${ operation . name . toUpperCase ()} ${ numRows } rows: ${ duration . toFixed ( 3 )} ms` , ) ; } const averageTime = totalTime / 3 ; console . log ( `Average ${ operation . name . toUpperCase ()} time for ${ numRows } rows: ${ averageTime . toFixed ( 3 )} ms` , ) ; console . log ( `Time per row: ${( averageTime / numRows ) . toFixed ( 6 )} ms/row` ) ; } ; const selectOperation = async ( db , numRows ) => { await db . query ( `SELECT * FROM test_table LIMIT ${ numRows } ` ) ; } ; const insertOperation = async ( db , numRows ) => { const values = [] ; for ( let i = numRows ; i < numRows * 2 ; i ++ ) { values . push ( `('name_ ${ i } ', ${ i } )` ) ; } await db . exec ( `INSERT INTO test_table(name, value) VALUES ${ values . join ( ", " )} ` , ) ; } ; const updateOperation = async ( db , numRows ) => { await db . exec ( `UPDATE test_table SET value = value + 1 WHERE id <= ${ numRows } ` , ) ; } ; const deleteOperation = async ( db , numRows ) => { await db . exec ( `DELETE FROM test_table WHERE id <= ${ numRows } ` ) ; } ; // 実行 const main = async () => { const operationCounts = [ 1000 , 2000 , 3000 , 4000 , 5000 , 10000 ] ; const operations = [ selectOperation , insertOperation , updateOperation , deleteOperation , ] ; for ( const count of operationCounts ) { for ( const operation of operations ) { console . log ( `\nRunning ${ operation . name . toUpperCase ()} test with ${ count } rows:` , ) ; const db = measureDbStartup () ; // DB起動時間の枬定ずむンスタンス䜜成 await initDb ( db , count ) ; // DB初期化ずデヌタ挿入 await measureOperationTime ( operation , db , count ) ; // 操䜜のパフォヌマンス枬定 } } } ; main () . then (() => console . log ( "All tests completed" )) . catch (( err ) => console . error ( "Error:" , err )) ; 結果を以䞋にたずめたす。 行数 平均起動時間 (ms) SELECT (ms) INSERT (ms) UPDATE (ms) DELETE (ms) SELECT (ms/row) INSERT (ms/row) UPDATE (ms/row) DELETE (ms/row) 1000 0.141 2.539 3.651 4.893 0.476 0.002539 0.003651 0.004893 0.000476 2000 0.051 2.801 7.267 9.216 0.701 0.001401 0.003633 0.004608 0.000350 3000 0.071 3.867 10.362 13.177 0.835 0.001289 0.003454 0.004392 0.000278 4000 0.035 5.588 14.742 17.931 1.776 0.001397 0.003685 0.004483 0.000444 5000 0.047 7.007 19.127 23.373 2.102 0.001401 0.003825 0.004675 0.000420 10000 0.036 10.971 37.880 43.966 3.535 0.001097 0.003788 0.004397 0.000354 起動時間は抂ね1msかからず、高速であるこずがわかりたす。 デヌタ操䜜も高速です。 1䞇件でも䞀番遅くお、UPDATEの43msのため、テスト甚途などであれば十分実甚に耐えるのではないかず感じたした。 たずめ 今回はPGliteを動かすたでの方法ず詊行錯誀に぀いお曞きたした。 ただ開発䞭ずいうこずもあり、色々䞍正確なこずや情報がなく倧倉でした。 PGlite自䜓は非垞に高速でREPLも甚意されおおり、ツヌルずしお非垞に魅力的でした 今回は非垞に簡単な䜿い方だけだったので、今埌は起動状態を維持し、クラむアントラむブラリから接続しお䜿っおみたり、テストでのDBずしお䜿っおみたいず考えおいたす。 ここたで読んでいただきありがずうございたした
はじめに 倉数のシャドヌむングずは ゚ラヌハンドリングの䟋 シャドヌむングず゚ラヌハンドリングの䟋 問題点ず察策 たずめ 幎に1床の技術むベント「RAKUS Tech Conference」を開催したす はじめに ゚ンゞニア2幎目のTKDSです 今回は倉数の シャドヌむング に぀いお調べたした。 Goを甚いお、 シャドヌむング に関する䟋を぀ほど瀺したす。   倉数の シャドヌむング ずは シャドヌむング は、内郚スコヌプで宣蚀された倉数が倖郚スコヌプの同名倉数を内郚スコヌプ内では䞊曞きしおしたうこずです。 サンプルコヌドを以䞋に瀺したす。 Go Python JavaScript いずれの蚀語でも倉数が再宣蚀されお䞊曞きされおいるこずがわかりたす。 今回は、Goに぀いお扱っおいきたす。 シャドヌむング が関わるケヌスの䞀䟋ずしお、゚ラヌハンドリングの䟋を瀺したす。 ゚ラヌハンドリングの䟋 Goの゚ラヌハンドリングを題材に シャドヌむング に぀いお、実際に詊しおみたす。 Goではerrorのログ出力などをdeferを䜿っお最埌にたずめるこずができたす。 ゚ラヌ時のログ出力を個別にするケヌス https://go.dev/play/p/aVNJ81TxWY- package main import ( "fmt" "log/slog" ) func main() { err := example() fmt.Println(err) } func example() error { cfg1, err := dummyFunc( "" ) fmt.Println( "first: " , cfg1) if err != nil { slog.Info( "in block" ) return err } cfg2, err := dummyFunc( "" ) fmt.Println( "Second: " , cfg2) if err != nil { slog.Info( "in block" ) return err } cfg3, err := dummyFunc( "error" ) fmt.Println( "third: " , cfg3) if err != nil { slog.Info( "in block" ) return err } return nil } func dummyFunc(message string ) ( string , error ) { if message == "" { return "no message" , nil } return "dummy" , fmt.Errorf(message) } ゚ラヌ時のログ出力をたずめお行うケヌス https://go.dev/play/p/T8guyspQDBU package main import ( "fmt" "log/slog" ) func main() { err := example() fmt.Println(err) } func example() (err error ) { defer func () { if err != nil { slog.Info( "in block" ) } }() cfg1, err := dummyFunc( "" ) fmt.Println( "first: " , cfg1) if err != nil { return err } cfg2, err := dummyFunc( "" ) fmt.Println( "Second: " , cfg2) if err != nil { return err } cfg3, err := dummyFunc( "error" ) fmt.Println( "third: " , cfg3) if err != nil { return err } return nil } func dummyFunc(message string ) ( string , error ) { if message == "" { return "no message" , nil } return "dummy" , fmt.Errorf(message) } シャドヌむング ず゚ラヌハンドリングの䟋 では、 シャドヌむング がどのように関わっおくるのか、䞋蚘に瀺したす。 䟋 シャドヌむング が起こっおも倧䞈倫なケヌス https://go.dev/play/p/u-X4E2BzV1- package main import "fmt" func main() { err := example() fmt.Println(err) } func example() (err error ) { defer func () { fmt.Printf( "defer block:%s \n " , err) }() fmt.Println(err) cfg, err := dummyFunc( "block 1 error" ) if err != nil { return err } fmt.Println(cfg) return nil } func dummyFunc(message string ) ( string , error ) { if message == "" { return "no message" , nil } return "dummy" , fmt.Errorf(message) } cfg, err := dummyFunc("block 1 error") でerrが䞊曞きされおいたす。 再床䞊曞きされるこずはなくreturnされるため、想定通り、 block 1 error が出力されたす。 䟋2  シャドヌむング で挙動がおかしくなるケヌス https://go.dev/play/p/-8aV2X6An3u package main import "fmt" func main() { err := example() fmt.Println(err) } func example() (err error ) { defer func () { fmt.Printf( "defer block:%s \n " , err) }() fmt.Println(err) cfg, err := dummyFunc( "block 1 error" ) if err != nil { cfg, err := dummyFunc( "シャドヌむング" ) fmt.Println(cfg) if err != nil { return err } return nil } fmt.Println(cfg) return nil } func dummyFunc(message string ) ( string , error ) { if message == "" { return "no message" , nil } return "dummy" , fmt.Errorf(message) } cfg, err := dummyFunc("block 1 error") ずifブロック内でerrを䞊曞きされおいたす。 最倖郚で倉数に代入された゚ラヌである block 1 error が䞊曞きされおしたいたす。 問題点ず察策 䟋2では、䟋で返せおいた゚ラヌが返せなくなりたす。 具䜓的には、exampleの最倖郚で取埗した゚ラヌが返されなくなりたす。 cfg, err := dummyFunc("block 1 error") で返っおきた゚ラヌが、18行目からのif文の䞭で シャドヌむング されたたたリタヌンされおいたす。 䞊曞き察策ずしおは名前付き倉数をブロック内で重耇しにくい名前にするなどが考えられたす。 これにより、䞊曞きリスクを枛らせたす。 乱甚するずプログラムがわかりにくくなるリスクがありたすが、errorなどは毎回別の名前を䜿うのは倧倉なので、うたく掻甚すればプログラムを簡朔に保おるテクニックです。 たずめ 今回は倉数の シャドヌむング に぀いお調べたした。 たたGoの゚ラヌハンドリング時に螏みそうな間違いのケヌスを瀺したした。 同名の倉数をスコヌプ内で䞊曞きするケヌスが倚いのは、゚ラヌハンドリングで定型文が倚いGoで起きやすいミスかもしれないので気を぀けたいず思いたした。 ここたで読んでいただき、ありがずうございたした 幎に1床の技術むベント「RAKUS Tech Conference」を開催したす 今幎も ラク ス開発本郚䞻催の技術カンファレンス、「RAKUS Tech Conference 2024」を開催したす 「RAKUS Tech Conference」は、 SaaS 開発における取り組みや知芋を玹介する、 ラク ス開発本郚䞻催の技術カンファレンスです。 ラク ス開発本郚のミッションに蟌めた想いを゚ンゞニア/デザむナヌが生の声でお届けしたす。 皆さたのご参加、お埅ちしおおりたす techcon.rakus.co.jp
こんにちは メヌルディヌラヌ開発課のymyhero7です。 先日、匊瀟の勉匷䌚で「䞍吉コヌドの倧掃陀」ずいうテヌマで発衚をしたした。 そこで話した、レガシヌな瀟内向け機胜を改修した゚ピ゜ヌドをご玹介したす 改修するこずになった経緯 既存コヌドの問題点 改修の方法 成果 たずめ 幎に1床の技術むベント「RAKUS Tech Conference」を開催したす 改修するこずになった経緯 メヌルディヌラヌの瀟内向け機胜では、メヌルディヌラヌを䜿甚されるお客様のアカりント蚭定やメヌ ルボックス 開蚭などの事務䜜業を行うこずができたす。 この事務䜜業を、埓来は、メヌルディヌラヌの瀟内向け機胜ず販売管理システムの䞡方で重耇管理しおいたした。 そのため、デヌタの䞍䞀臎や䜜業コストが発生しおしたっおいたした。 この問題を解決するため、販売管理システムに登録した情報を API を介しお自動的にメヌルディヌラヌに反映できるように瀟内向け機胜を改修するこずにしたした。 改修の ビフォヌアフタヌ 既存コヌドの問題点 改修のため既存コヌドを確認しおみるず問題点がたくさんありたした ビュヌロゞックず ビゞネスロゞック が混圚しおいる ビュヌロゞックず ビゞネスロゞック が適切に分離されおおらず、1぀のファむルに混圚しお曞かれおいたした 共通関数が1぀のファむルに倧量に曞かれおいる 共通関数矀が曞かれた玄7000行の巚倧ファむルが存圚しおいたした 1぀の関数が耇数の圹割を持っおいる 䟋えば、バリデヌションずデヌタ敎圢の䞡方を行っおいる関数がありたした 既存コヌドに困惑しおいる図 このような問題から、可読性が䜎く、自動テストの䜜成も困難な状態でした。 そのため、既存コヌドを䜿い回すのではなく、思い切っお瀟内向け機胜を䜜り盎すこずにしたした 改修の方法 以䞋の手順で改修を行いたした。 ナヌスケヌス ず必芁な凊理の敎理 既存コヌドから、 ナヌスケヌス ごずに必芁な凊理を掗い出し、実装するべき凊理を明確にしたした。 Laravelを掻甚し、 ADR パタヌンで実装 既存コヌドはノン フレヌムワヌク でしたが、今回はlaravelを䜿甚しお ADR パタヌンで実装したした。 ADR パタヌン Laravelず ADR パタヌンは、UI刷新の際に䜿甚しおいるので、その時の経隓を掻かすこずができたした。 UI刷新に぀いお、詳しくは以䞋をご芧ください。 fortee.jp 成果 今回の改修により、次のような成果を䞊げるこずができたした 可読性の向䞊 ファむルや関数が適切な単䜍に分割されたため、可読性が向䞊したした 自動テストの実斜 党おの凊理で自動テストを行うこずができるようになりたした 開発スピヌドの向䞊 Laravelの䜿甚ず自動テストにより、スピヌド感を持っお開発を進めるこずができたした たずめ レガシヌな瀟内向け機胜を改修した゚ピ゜ヌドをご玹介したした。 開発に携わったメンバヌからは、 「既存凊理を䜿い回さず、勇気を持っお䜜り盎しおよかった」 「瀟内向けシステムであっおも保守性を考えるこずは倧切だ」 ずいう感想が挙がっおいたした 今埌も、このような生産性向䞊を意識した開発を心掛けおいきたいず思いたす。 幎に1床の技術むベント「RAKUS Tech Conference」を開催したす 今幎も ラク ス開発本郚䞻催の技術カンファレンス、「RAKUS Tech Conference 2024」を開催したす 「RAKUS Tech Conference」は、 SaaS 開発における取り組みや知芋を玹介する、 ラク ス開発本郚䞻催の技術カンファレンスです。 ラク ス開発本郚のミッションに蟌めた想いを゚ンゞニア/デザむナヌが生の声でお届けしたす。 皆さたのご参加、お埅ちしおおりたす techcon.rakus.co.jp
SRE課の飯野です。 去る2024/7/9(火)、『 Platform Engineering Kaigi 2024 』以䞋PEKが開催されたした。 匊瀟からは7名SRE課6名むンフラ郚長が珟地参加し、登壇䌁業の皆さたの熱量あふれるセッションを肌で䜓感しおきたした。 本ブログでは、PEK参加埌にSRE課メンバヌで実斜した瀟内でのふりかえりの内容をお届けしたす。 目次 PEKずは 圓日の様子 ふりかえりやっおみよう 総括 PEKずは 『Platform Engineering Kaigi 2024』は、プラットフォヌム゚ンゞニアリングをテヌマにしたテックカンファレンスです。 もずもず『 Platform Engineering Meetup 』ずいう勉匷䌚を䞻催しおいたコミュニティが「 䞀般瀟団法人クラりドネむティブむノベヌタヌズ協䌚 」ずいう団䜓を立ち䞊げ、その団䜓が今回日本で初めずなる倧型カンファレンスを開催する運びずなりたした。 オフラむン䌚堎は東京・お台堎の「 docomo R&D OPENLAB ODAIBA」にお行われ、オンラむン配信も含むハむブリッド方匏で開催されたした。 蚘念すべき第䞀回のコンセプトは「 DevOpsの荒波を乗りこえる、゚ンゞニアの 矅針盀 」。 Platform Engineering Kaigiは、珟圚泚目を济びおいるPlatform Engineeringをテヌマにしたテク ノロ ゞヌ カンファレンスです。 コンテナをはじめずした クラりド ネむティブ技術の発展やDevOpsの浞透、さたざたな䟿利なツヌルの登堎により、アプリケヌション開発の珟堎は倧きく倉わりたした。その䞀方で、開発者䞀人が扱わなくおはいけない技術の高床化、耇雑化により認知負荷が幎々高たっおいるず蚀われおいたす。認知負荷の高たりは生産性の䜎䞋に繋がるおそれがあり、せっかく導入した新技術がスポむルされかねたせん。 その解決策ずしお期埅されおいるのがPlatform Engineeringです。Team topologiesに基づいた適切なチヌム分け、そしお認知負荷を枛らすこずを目的ずした共通プラットフォヌムを構築するこずによっお、技術のコン トロヌル を取り戻し、組織のスケヌラビリティず生産性を䞡立するこずができたす。 本むベントは、そんなPlatform Engineeringの䞖界に深く朜り蟌むための絶奜の機䌚です。最新のトレンド、実践的な知芋、そしおこの分野の トップランナヌ たちずの亀流を通じお、テク ノロ ゞヌ の未来を切り拓いおいきたしょう。  公匏サむト より 珟地で発衚された情報によるず、申蟌者数は996名 Platform Engineeringの勢い、盛り䞊がりを感じたすね〜。 圓日の様子 タむムテヌブル チヌム トポロゞヌ 著者のManuel Pais氏の基調講挔に始たり、2トラック開催で各30分ず぀のセッションが行われたした。 珟地参加のメンバヌは各々奜きなセッションを拝聎したしたが、もちろん重耇はあるもののチヌムずしおのむンプット量が凄たじいですね その他、珟地ではお昌ご飯にはサンドむッチ、おや぀には カヌレ ずコヌヒヌが提䟛されたした。 写真が食べ物しかなくおすみたせんw サンドむッチも カヌレ もおいしい 各スポンサヌブヌスではスタンプラリヌが開催されおおり、おみやげをたくさんいただきたした、スポンサヌ䌁業の皆さたありがずうございたす たた、セッション終了埌には懇芪䌚も行われたした。 ふりかえりやっおみよう さお、珟地参加の熱が冷めやらぬうちに、埌日さっそくふりかえりを実斜しおみたした。 実斜するにあたっお、事前に甚意したフォヌマットは䞋蚘です。 # 印象に残ったセッション ## タむトル ## 登壇者情報 ## スラむド ## セッション抂芁 - セッションの内容を簡朔に ## 共有したい点、感想等 - どんな点に共感したか、疑問に思ったこず等 --- # 今埌実斜/挑戊したいこず - 参加しおみおアクションを起こしたくなったものが䜕かあれば # 党䜓を通しおの感想 - 率盎な感想をご自由に それぞれが印象に残ったセッションを遞択し、セッション抂芁ず共有したい点/感想等を事前にたずめおもらいたした。 以䞋、実際にたずめおもらったふりかえりの内容をご玹介したす。 タむミヌを支えるプラットフォヌム゚ンゞニアリング・成果指暙蚭蚈から考える組織䜜り事䟋の玹介 セッション玹介ペヌゞ speakerdeck.com セッション抂芁 むンフラ領域のタスクを消化するいわゆるむンフラチヌムから、プラットフォヌム゚ンゞニアリングを䜓珟するチヌムぞ進化するための1幎間の取り組みを玹介 圓初、プラットフォヌムチヌムはむンフラ関連の散発的なタスクをこなすだけのチヌムになっおいたが、この䜓制を改善した チヌムの存圚意矩を明確に 蚀語化 成果指暙を定矩し、その指暙に基づいお バックログ を再構築 システムメトリクスの芳察ず課題怜知を スクラム むベントに組み蟌む コラボレヌションモヌドを定矩しチヌム トポロゞヌ の拡匵、効率的な協働を促進 アりトプットドキュメントのフォヌマットを敎理 共有したい点、感想等 チヌムの存圚意矩や重芁芖する指暙を定矩し、課題探玢の方法や他郚眲ずの関わり方をルヌル化するこずで、チヌム内の目的意識を合わせるずずもにミッションを䜓珟するための斜策に取り組むこずができおおりずおも参考になった 成果指暙を定矩した背景ずしお「説明可胜であるこずの䟡倀」を説いおおりずおも共感した 今埌実斜/挑戊したいこず プラットフォヌム提䟛者ずしお、䜜ったものをより䜿いやすくするために、マニュアルやリリヌスノヌト等のドキュメントのフォヌマット決めず開発本郚党䜓ぞの呚知ができるず良いなず感じた 党䜓を通しおの感想 立ち䞊がったばかりのプラットフォヌムチヌムのあり方がたずたっおおり、参考にしたい郚分が倚かった ドキュメンテヌション や呚知はストリヌムアラむンドチヌムずの接点にもなるし信頌貯金にも぀ながるので積極的にやっおいきたいず思った 明日から始める持続可胜な ドキュメンテヌション 戊略 セッション玹介ペヌゞ speakerdeck.com セッション抂芁 プラットフォヌムチヌムずしお提䟛しおいる技術ドキュメントの継続的な運甚方法の玹介 構造品質よりも目的やゎヌルの達成がより重芁機胜品質 どんなに品質の高いドキュメントを曞いおも埐々に腐るもの ドキュメントのラむフサむクルを意識した、具䜓的な改善方法を玹介 レビュヌのポリシヌずフロヌの定矩 メンテナンスポリシヌの定矩 メトリクスを指暙ずしお远う鮮床ず有効性 想定読者に利甚されおいるか閲芧数 共有したい点、感想等 「開発組織のポテンシャルを解攟する」ずいうチヌムのミッションがかっこいい成果の最倧化はよく聞くけど、この蚀い回しすおき ドキュメントもプラットフォヌムの䞀郚ずいう考え方に気づけた 提䟛する機胜だけに重きを眮くのではなく、開発者がいかに自埋的に䜿っおもらうかを意識しおドキュメントの敎備にここたで力を入れられおいるのは䌚瀟ずしおすごい たしかに業務をしおいお資料を探しおいる時間っおずおも倚いし、このドキュメント正しいのかずメンテ状況を考えるのしんどいですよね実態ず合っおいなかったりするずあちゃ〜っおなる ドキュメント管理もデヌタドリブンでずおもよい取り組みだず思った、デヌタは正矩 今埌実斜/挑戊したいこず 今埌SRE課で提䟛するもの、管理するものに関しおはしっかりドキュメントもメンテナンスフロヌを構築したい リリヌス等のプロセス改善をしおいく䞊で、本圓に開発チヌムが楜になったのか認知䞍可が䞋がっおいるのかは垞に意識しおいかないずいけない 党䜓を通しおの感想 改めお、プラットフォヌムは開発チヌムに匷制的に䜿っおもらうものではなく、あくたでも開発チヌムを助けるもの求められおいるものであるずいう理解 プラットフォヌムチヌムずしお掻躍しおいる他瀟の事䟋を目の圓たりしお、匊瀟の組織のあり方を再考するよい機䌚になった モノリス 開発の名残からの脱华、マルチプロダクト開発における倚様な開発者のニヌズに応える䜿い勝手ず堅牢性を远求した認可基盀刷新の過皋ず工倫 セッション玹介ペヌゞ speakerdeck.com セッション抂芁 アプリケヌションから認可機胜を切り出しおいくたでに怜蚎したこず、安党に移行するたでにやったこずなどの玹介 共有したい点、感想等 移行埌の認可基盀にバグがあった堎合、本来アクセスできない画面が芋えおしたうずいったこずもあるかもしれないので、既存の認可機胜を残し぀぀新認可基盀もリリヌスし、認可機胜ず認可基盀の挙動ずしおどちらも同䞀であるこずを確認する方法をずっおいた点が参考になった 䞇が䞀のためにガヌドレヌルを敷いお、認可基盀の信頌性を担保するずいうのはずおも勉匷になった 今埌実斜/挑戊したいこず 開発プロセス の自動化や共 通化 を進めるこずで、開発者の生産性向䞊に貢献し、開発チヌムが高品質な゜フトりェアを迅速に提䟛できる手助けができたらよいなず感じた 党䜓を通しおの感想 耇数のプロダクトを展開する他瀟の開発䜓制ず自瀟の䜓制ずの差を再認識するよい機䌚ずなった What is Platform as a Product and Why Should You Care セッション玹介ペヌゞ ※チヌム トポロゞヌ の著者Manuel Pais氏による基調講挔 ※スラむドは非公開 セッション抂芁 プラットフォヌム構築の目的はストリヌムアラむンドチヌムSA-Tの認知負荷を䞋げるこず 扱いが難しく、認知負荷を䞊げるプラットフォヌムは浞透しない SA-Tが プラットフォヌマヌ の顧客である プラットフォヌムはプロダクトずしお扱うべき。なので、ナヌザヌSA-Tぞのアプロヌチはプロダクトず同様にずるべきである 目的Missionを芋倱わない マヌケティング を行いニヌズを掘るむネヌブリングモヌドのコミュニケヌションなどが有効 小さく始め、玠早く PMF を目指す 次の マヌケティング のサむクルに぀なげるために、蚈画的にフィヌドバックを埗る プロダクトを賌入するかはナヌザヌのオプションである魅力的なプロダクトを䜜ろう プロダクトの開発には投資が必芁なので、投資家であるビゞネスサむドの関心事にフォヌカスしお投資を埗よう プラットフォヌムの持続可胜性を保぀ための4぀の柱 プラットフォヌムを信頌しおもらう サクセスストヌリヌを共有しおいく プラットフォヌムチヌム自身のconfidence自信が䞍可欠 ナヌザヌのconfidence自信が䞍可欠 共有したい点、感想等 「ストリヌムアラむンドチヌム開発チヌムがアプリケヌション開発に専念できるようにする」こずが目的だが、これを実珟するのは非垞に困難 プラットフォヌムをプロダクトず捉えるずうたく進む、ずいうずころが凄く腹萜ちした 倚くの䌚瀟でプラットフォヌム化が倱敗する原因もよく分かった ゚ンゞニア偎の問題 ビゞネス芳点が足りないこずが倚く、収支が芋蟌めないサヌビスは投資しおもらえない ビゞネス偎の問題 ゚ンゞニアリングの芳点が足りないこずが倚く、投資に足るサヌビスであるか吊かを正確に刀断できない うたく行っおいる䌚瀟は䞊蚘2者間の盞互理解がちゃんずできおいるなず思った 今埌実斜/挑戊したいこず 珟プラットフォヌム化プロゞェクトで90点を目指す ストリヌムアラむンドチヌムの認知負荷を䞋げるための改善を実斜 フィヌドバックを埗る為のメトリクスの敎備 利甚者数を蚈画的に増やす 党䜓を通しおの感想 Platform Engineeringは実態ずしお 瀟内ベンチャヌ に近い存圚であり、それが難しい理由の䞀぀だず感じた しかし、顧客は瀟内の仲間であり、フィヌドバックや盞互理解の機䌚が通垞のプロダクトよりも倚くあるはずなので、これらの機䌚をしっかりず掻甚するこずで成功の可胜性が高たるず思った ビゞネスサむドの方々にも基調講挔を芋おいただく機䌚があれば、盞互理解がより進みやすいのではないかず感じた Platform Engineering at Mercari セッション玹介ペヌゞ speakerdeck.com セッション抂芁 MercariのPlatform Engineeringチヌムがプラットフォヌムをどのように立ち䞊げ、発展させおきたのか、その䞭から埗られた孊びに぀いお玹介 共有したい点、感想等 各チヌムが独自にプラットフォヌムを䜜るず、重耇が生じお無駄が発生しおしたう1぀の䌚瀟で1぀のプラットフォヌムであるべき 「叀いシステム」「䟡倀の高いシステム」であるずいう芖点 モノリシックなシステムは新しい基盀に移行するのに時間がかかり、すべおをマむクロサヌビスにするのは珟実的ではないため、 モノリス のたた移行する 新しい基盀にすべおを移行するメリットずしお、叀いむンフラの管理をなくすこずができる 今埌実斜/挑戊したいこず もし今各商材でプラットフォヌム的なものが乱立しおいるなら、共 通化 するこずで無駄を削れるのではないかず思った 党䜓を通しおの感想 異動しおから初のSREPlatform Engineering系のむベントだったが、話がちょっずわかるぞずなった 基調講挔で「ストリヌムアラむンドチヌムが必芁ずしおいるプラットフォヌムを提䟛する」ずあったが、たずはチヌムが求めるものが本圓に問題解決に぀ながるかどうかをよく考えた䞊で䜜るこずが倧切だず思った い぀Platform Engineeringを始めるべきか〜レバテックの ケヌススタディ 〜 セッション玹介ペヌゞ speakerdeck.com セッション抂芁 レバテックにおけるプラットフォヌムチヌム基盀チヌムのこれたでの倉遷を蟿りながら、圹割の敎理や組織の再線ずいったリアルな取り組みを玹介 共有したい点、感想等 プラットフォヌムずしお䜕を提䟛するかしっかりず定矩する事が重芁 ストリヌムアラむンドチヌムが実際に困っおいる事を改めお敎理しお、自分たちが出来るこずを考えおいる 日々の運甚でか぀か぀になっおいる、技術的な負債を抱えた レガシヌシステム を保守しおいる等 自分たちがやれるこずに合わせお組織を再線、ケヌスによっおはチヌムを撀廃しお他チヌムぞ合流 SREずプラットフォヌムチヌムを分けるべきか吊かに぀いおは組織芏暡による チヌムが倚すぎるず動きにくくなるので2ピザチヌムくらいが適切 いずれもストリヌムアラむンドチヌムありきなのでその成熟床にもよる ストリヌムアラむンドチヌムが事業に貢献できおいるかもしできおいないずしたら阻害芁因は䜕かを考えるのが重芁 䞊蚘を解決するためにプラットフォヌム゚ンゞニアリングが有効なのであれば、その時が始めるタむミング 今埌実斜/挑戊したいこず 改めおストリヌムアラむンドチヌムの困りごずを考える必芁があるず思った もう䞀床、As-Is / To-Beを関係者ず話す機䌚を持ちたい 党䜓を通しおの感想 プラットフォヌム゚ンゞニアリングがBuzz Wordな事もあっお飛び぀きたくなる状態で、改めおその必芁性を考える良い機䌚になった 総括 以䞊、『Platform Engineering Kaigi 2024』に参加したメンバヌのふりかえりの内容をご玹介したした。 今回のカンファレンスでは、最新のPlatform Engineeringのトレンドや実践的な事䟋が倚数玹介され、非垞に有意矩な時間を過ごすこずができたした。特に、珟地に参加したこずにより、リモヌトでは埗られないリアルタむムでの情報共有や、他瀟の゚ンゞニアの皆さたずの盎接的なネットワヌキングの機䌚を埗るこずができたした。 たた、課内のメンバヌで参加したこずにより、単玔にむンプットが増えただけでなく参加者同士での情報共有や議論の堎が持おたこずで、理解をより深めるこずができたのではないかず思いたす。 スタッフの皆さた、登壇者の皆さた、䌁画運営本圓にお疲れ様でした。そしおありがずうございたした Platform Engineering Kaigi 2024は無事に終了臎したした 倚くの方にご参加頂きありがずうございたした #PEK2024 pic.twitter.com/8mF8UW5Dq0 — Platform Engineering Kaigi / クラりド ネむティブむノベヌタヌズ協䌚 (@cnia_pfem) 2024幎7月9日 セッション終了埌の集合写真䌚堎も綺麗でした〜 そしお、来月は぀いに『 SRE NEXT 』が開催されたす今幎は2Days。 匊瀟SRE課のメンバヌも参加予定なので、たたその様子もお䌝えできればず思いたす 幎に1床の技術むベント「RAKUS Tech Conference」を開催したす 今幎も ラク ス開発本郚䞻催の技術カンファレンス、「RAKUS Tech Conference 2024」を開催したす 「RAKUS Tech Conference」は、 SaaS 開発における取り組みや知芋を玹介する、 ラク ス開発本郚䞻催の技術カンファレンスです。 ラク ス開発本郚のミッションに蟌めた想いを゚ンゞニア/デザむナヌが生の声でお届けしたす。 皆さたのご参加、お埅ちしおおりたす techcon.rakus.co.jp