ROBOT PAYMENT TECH-BLOG 株式会社ROBOT PAYMENTのテックブログです 2024-03-28T07:00:00+09:00 robotpayment-tech Hatena::Blog hatenablog://blog/26006613587060917 もくもく会のフォーマットをサボりがちなことに転用した話 hatenablog://entry/6801883189062071784 2024-03-28T07:00:00+09:00 2024-03-28T07:00:16+09:00 こんにちは サブスクペイのCREのhori_kです。 緊急性は低いけど重要なタスクを後回しにしがちなタイプです。ありがちですがよくないですね。すみませんすみません。 もくもく会という様式の話 さて、ところでテックブログを読みに来るエンジニアの方なら「もくもく会」という言葉を聞いたことがあると思います。あるいは、参加や主催している方もいらっしゃるでしょう。 もくもく会とはITやプログラミングの勉強をするという目的で集まった人たちがそれぞれ「黙々と」作業をする勉強会のことです。現在ではIT以外にも、さまざまな勉強・作業するためのもくもく会が存在しているようです。自分も過去に、転職活動系オンラインも… <h3 id="こんにちは">こんにちは</h3> <p>サブスクペイのCREのhori_kです。<br/> 緊急性は低いけど重要なタスクを後回しにしがちなタイプです。ありがちですがよくないですね。すみませんすみません。</p> <h3 id="もくもく会という様式の話">もくもく会という様式の話</h3> <p>さて、ところでテックブログを読みに来るエンジニアの方なら「もくもく会」という言葉を聞いたことがあると思います。あるいは、参加や主催している方もいらっしゃるでしょう。</p> <p>もくもく会とはITやプログラミングの勉強をするという目的で集まった人たちがそれぞれ「黙々と」作業をする勉強会のことです。現在ではIT以外にも、さまざまな勉強・作業するためのもくもく会が存在しているようです。自分も過去に、転職活動系オンラインもくもく会に参加いたしました。<br/> もくもく会の一般的な様式としては、<br/> ・時間を区切る<br/> ・もくもくと作業する前の自己紹介、やることの紹介<br/> ・もくもくと作業した後の進捗報告<br/> ・作業を邪魔しない多少の質問、雑談はOK<br/> という感じでしょうか。<br/> 他人にやることを宣言してから制限時間に黙々とやることで、ほどよい緊張感で集中して、勉強や作業をすすめることができます。</p> <h3 id="身近なところで転用してみました">身近なところで転用してみました</h3> <p>さて、このもくもく会の様式を身近なところで2,3転用して、日常のサボりがちなことをサボらず(※前よりは)できるようになってきたので、今回はそんな話を書きます。</p> <p>■ひとつは仕事で。<br/> 部署内の朝会後のもくもく入力タイムができました。<br/> 仕事で毎月、やった作業ごとの時間工数の提出があります。これ、提出は月末ですが、入力は日々やったほうが絶対に良いものです。時間も正確になるし、毎日入力なら入力作業も数分で済みます。しかし、ついつい後回しにしていると、入力時間は不正確になるし、何をやったか思い出すのに余計な時間もかかるし、毎日なら数分だった入力作業に月末に1時間もとられてしまいます。<br/> この一日数分のことを「ついサボってしまい(汗」と上司に話したところ、「いえ、ありがちですよね」と共感からの仕組みで解決しようということになりまして、毎朝のミーティングのあとに「もくもくタイム」で入力する形になりました。 この時間、作業自体もサボらずに済むし、朝会にかけるほどではなかった話やちょっと思い出した話があれば聞けたりもするので、なかなか良い仕組みになりました。</p> <p>■ひとつは家庭内で。<br/> うちは子供が高1でして、勉強など見てあげられることはもうないのですが、リビングで学校の課題をやったりしています。<br/> 一方の自分はというと、子育てが手離れしてブランクのあった技術職に復帰した身なので、技術書やビジネス書など読んで勉強しなおしたく、AmazonのKindleにセール時に買った書籍がつい積読状態。<br/> この状況は活かせる!と思いまして、最近は子供が勉強しているところに押しかけて「お母さんこれからXXの時間まで、仕事関係の本を消化するね〜」と宣言して、黙々と読書にはげんでいます。<br/> もくもく会的な趣旨目的も説明してあり、「どんなジャンルを読んだ」「どの課題が終わった」と最後に共有することで、互いに集中できるし親子のコミュニケーションも取れるしで、いい感じです。<br/> 弊社は技術書購入補助金の制度もあるので、Kindle積読を消化したらガンガン使っていきたいです。</p> <p>■さらに転用。お片付けペチャクチャ会。<br/> あとは旅行やキャンプの遊び仲間で、帰ったあとに「お片付けペチャクチャ会」なんてものもやっています。<br/> これ、もくもく会とペチャクチャ会では真逆のようですが、目的は一緒です。オンラインで音声をつないで話しながら、遊びから帰宅後にサボりがちな荷物やキャンプ道具の片付けの手を動かそう、というもの。<br/> お片付け、はかどります。旅行の振り返り雑談もできるし、いい感じです。お試しください。</p> <p>以上、IT業界の勉強会のフォーマットを、日常でも活かしたお話でした!</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech 決済システムのデータベース関連の課題 hatenablog://entry/6801883189054950035 2024-03-21T07:00:00+09:00 2024-03-21T07:00:07+09:00 こんにちは、ペイメント事業部システム課マネージャーの戸田です。 今回はインボイス制度対応の中で感じた課題感についてお話ししたいと思います。 といっても、インボイス制度に対してではなく、今後のサブスクペイのシステム基盤である決済システムの開発についてのお話しです。 2023年10月から開始のインボイス制度ですが、ニュースでも話題になっていますね。 サブスクペイでもご利用いただく加盟店様へ発行している明細書をインボイス制度に合わせる必要がありました。 この明細書ですが、決済データや契約内容をもとにバッチ処理で明細データとして集計されます。 今回はインボイス制度に合わせるといっても、単に事業者登録番… <p>こんにちは、ペイメント事業部システム課マネージャーの戸田です。<br/> 今回はインボイス制度対応の中で感じた課題感についてお話ししたいと思います。<br/> といっても、インボイス制度に対してではなく、今後のサブスクペイのシステム基盤である決済システムの開発についてのお話しです。</p> <p>2023年10月から開始のインボイス制度ですが、ニュースでも話題になっていますね。<br/> サブスクペイでもご利用いただく加盟店様へ発行している明細書をインボイス制度に合わせる必要がありました。<br/> この明細書ですが、決済データや契約内容をもとにバッチ処理で明細データとして集計されます。</p> <p>今回はインボイス制度に合わせるといっても、単に事業者登録番号の記載や税率などを記載といった明細書のレイアウト変更だけではありません。一部手動で管理していたデータも請求書と突き合わせるための明細データを出力できるようにするため、システムで一元管理できるようにするなど大幅な改修が必要でした。</p> <p>とはいえ、システム的にはこれを機に.NET Frameworkで作られているバッチを「.NET 6.0」に移行できたので、その点はよかったと思っています。</p> <h3 id="開発中に発生した問題">開発中に発生した問題</h3> <p>今回は関連するデータも多く、複雑な精算のルールを理解しながら実装となったため多くの時間と工数を要しましたが、関係者のおかげでどんどん開発が進みました。<br/> プロジェクトも後半に差し掛かり、本番相当のデータによるテストを開始したところで、開発中には気づかなかった問題が発覚しました。対象データが増えた影響でパフォーマンスに問題が生じ、いろいろな処理でタイムアウトが発生するようになったのです。</p> <p>タイムアウトの原因の根は深くすぐに解決できる問題ではありませんでしたが、システム基盤チームの協力もあり、ひとまずサービスには影響ないところまで持っていくことができました。</p> <p>ちなみにここで出てきた「システム基盤チーム」というものについては以前のブログでご紹介しておりますので、ぜひご覧いただけると幸いです。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.robotpayment.co.jp%2Fentry%2F2023%2F01%2F26%2F070000_1" title="サブスクペイ開発チームの紹介 - ROBOT PAYMENT TECH-BLOG" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tech.robotpayment.co.jp/entry/2023/01/26/070000_1">tech.robotpayment.co.jp</a></cite></p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.robotpayment.co.jp%2Fentry%2F2023%2F02%2F02%2F070000" title="システム基盤チームを立ち上げるにあたって最初にやったこと - ROBOT PAYMENT TECH-BLOG" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tech.robotpayment.co.jp/entry/2023/02/02/070000">tech.robotpayment.co.jp</a></cite></p> <h3 id="課題点">課題点</h3> <p>今回のインボイス制度対応での開発で改めて感じた課題点は以下となります。<br/> ・データベースのインデックス<br/> ・JOINの多用</p> <h3 id="インデックス問題">インデックス問題</h3> <p>データベースを利用する上でインデックスは必要不可欠なものですね。<br/> もちろん、決済システムのデータベースのテーブルにもいろいろなインデックスが貼られております。<br/> ただしインデックスによっては断片化が進んでいるものや、インデックスの不足などパフォーマンスに影響が出ることもあります。</p> <p>インデックスはただ貼ればよいというわけではないので、十分に効果を検証して必要なインデックスを貼る、インデックス追加後はきちんとメンテナンスして断片化を防ぐといった対策が必要です。</p> <p>これまでインデックスに関して十分な対策がとられていたとは言いにくいのですが、現在はシステム基盤チームがこの問題の解消に取り組んでくれており、少しずつですが対策の強化やメンバーへのナレッジ共有も行われております。</p> <h3 id="JOIN多用問題">JOIN多用問題</h3> <p>既存処理はとにかくJOINが多いです。<br/> JOIN+サブクエリの多用でクエリが肥大化し、テストがしにくく影響範囲も見えにくくなるため、結果として品質や素早い変化にも対応しにくいシステムとなってしまう懸念もあります。</p> <p>さらに、JOINを多用することでインデックス設計も複雑化し、それがまたインデックスの問題に繋がるといった悪循環にもなりかねません。</p> <p>JOINが必ずしも悪いというわけではありませんが、多用することによるデメリットも大きいと感じております。</p> <p>こちらのJOIN多用問題についても、システム基盤チームや新たに発足した技術的負債解消チームがこの課題について取り組み始めたところです。</p> <h3 id="今後の展開">今後の展開</h3> <p>インデックスについては、既に断片化が進んでいる部分の洗い出しも進んでおり、順次インデックスの再構築など改善する予定が組まれております。<br/> また、アプリケーション開発中での必要なインデックス設計には、システム基盤チームも参加して検証を行うなど、できるだけ技術的負債を生まない取り組みを行うようにしています。</p> <p>JOIN多用問題についても、開発者一人一人がこの問題に対してどうすればよいかと考え、開発することが重要だと考えております。<br/> そのためにも、まずは新たな実装方針をシステム基盤チームや技術的負債解消チームに策定してもらい、それを機能開発チームに展開していく予定です。</p> <p>今は問題だなと思っている課題も、いつか解決し素晴らしいシステムになっていくと思うと、今からワクワクしますね。<br/> いつかこれらの問題が解決できたことを報告できればと思います。</p> <p> <br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech プロトペルソナの社内活用事例 hatenablog://entry/6801883189052820353 2024-03-14T07:00:00+09:00 2024-03-14T07:00:12+09:00 こんにちは!株式会社ROBOT PAYMENT(以下、ロボペイ)でUXデザイナーをしている三木です。 先日公開したブログで「請求管理ロボのプロトペルソナ」の作成過程をご紹介しました。 詳細は下記記事を是非ご覧ください。 tech.robotpayment.co.jp その後、作成したプロトペルソナは全社的に展開され、各部署で活用していただいています。 今回の記事では、実際にどのようなプロトペルソナが出来上がったか、そしてどのように活用されているかの一例をご紹介できればと思います。 「現場で使ってもらえる」を意識したアウトプット 今回、プロトペルソナを作る最大の目的が「ターゲットに対する認識を揃… <p>こんにちは!株式会社ROBOT PAYMENT(以下、ロボペイ)でUXデザイナーをしている三木です。</p> <p>先日公開したブログで「請求管理ロボのプロトペルソナ」の作成過程をご紹介しました。<br/> 詳細は下記記事を是非ご覧ください。<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.robotpayment.co.jp%2Fentry%2F2023%2F07%2F06%2F070000" title="請求管理ロボで初めてのペルソナづくり - ROBOT PAYMENT TECH-BLOG" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tech.robotpayment.co.jp/entry/2023/07/06/070000">tech.robotpayment.co.jp</a></cite></p> <p>その後、作成したプロトペルソナは全社的に展開され、各部署で活用していただいています。 今回の記事では、実際にどのようなプロトペルソナが出来上がったか、そしてどのように活用されているかの一例をご紹介できればと思います。</p> <h3 id="現場で使ってもらえるを意識したアウトプット">「現場で使ってもらえる」を意識したアウトプット</h3> <p>今回、プロトペルソナを作る最大の目的が「ターゲットに対する認識を揃える」であり、作るからには各部署で使ってもらいたいという気持ちが強くありました。 <br/> 使ってもらうには「納得感」を持ってもらうことが重要だと考え、様々な職能の方から細かくフィードバックを頂き、調整しながらアウトプットしていきました。<br/> 当初考えていたのは3タイプのユーザーでしたが、議論を重ねていく中で「実際はもう一人いるのでは…」などの意見が出て、最終的には立場が異なる4体のプロトペルソナを作成しました。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023171826.png" alt="" /></p> <p>出来上がった後も記載内容の確認だけでなく、「現実に居そうか」といった目線でも評価していただきました。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023171834.png" alt="" /></p> <p>また、活用イメージも予めこちらから提示しておくことで、各部署でより自分ごと化していただくよう働きかけました。</p> <p>想像上のユーザーではなく、全員の意見を集約し確認してもらった内容になっているので納得感のあるプロトペルソナになったのではないかと感じています。</p> <h3 id="マーケティング部での活用事例">マーケティング部での活用事例</h3> <p>プロトペルソナが全社的に展開されたあと、早速マーケティング部で活用していただいていると聞き、活用の背景や活用方法などをヒアリングしてきました。</p> <h4 id="活用の背景">活用の背景</h4> <p>請求管理ロボをより良く訴求する上でユーザー理解は大切だという考えのもと、広告やランディングページ制作をする上でターゲット理解の拠り所になるようなものを求めていた。<br/> そのタイミングでプロトペルソナが完成したため、マーケティング部側で行っていたターゲット分析内容と照らし合わせることでユーザー理解を深めることにした。</p> <h4 id="活用方法">活用方法</h4> <p>まずはマーケティング用に掲載内容をカスタマイズ。<br/> 好むメディア、参加するイベント、刺さるメッセージ、導入検討を始めるタイミング等などの要素を追加することで、ユーザーとの接点をイメージしやすくし、マーケティング施策検討に活かしやすくしている。</p> <h4 id="実感している効果">実感している効果</h4> <ul> <li>マーケティング部内でターゲットについての共通認識を持ちやすくなった</li> <li>ターゲットがより明確化できたことでバナー広告のクリエイティブ品質が向上した</li> <li>どのような情報を、誰に、どのくらい訴求するべきかなどの検討がしやすくなった</li> </ul> <h4 id="今後の活用イメージ">今後の活用イメージ</h4> <p>今後も引き続き広告やランディングページなどコンテンツ制作で活用していき、クリエイティブの品質向上を目指していきたい。<br/> (例:広告バナーをユーザータイプごとに訴求ポイントを変えて、ランディングページへの流入を向上させたい。)<br/> また、イベント設計やイベントタイトル検討時にも積極的に使っていきたい。</p> <h3 id="更なる社内活用を目指して">更なる「社内活用」を目指して</h3> <p>マーケティング部へのヒアリングを通して、プロトペルソナの作成目的だった「ターゲットに対する認識を揃える」を体現していただいていることを知りました。 また、広告バナー等コンテンツの品質向上にも寄与していることを知り、思い描いていた以上に活用していただいていることが素直に嬉しいです。</p> <p>請求管理ロボのプロトペルソナについては、他の部署や職能でも活用機会を増やしていけるように、記載内容の定期的な見直しやアップデートなどを実施していければと思っています。 そして、今回の作成経験を活かして、他のプロダクトのペルソナ作成にも積極的に取り組んでいき、全社的にユーザー理解を深められるような働きかけをしていきたいと思います。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech Autify JSステップを使って画面Aのテキストをコピー、画面Bに貼りつけるテストを作成する hatenablog://entry/6801883189052818755 2024-03-07T07:00:00+09:00 2024-03-07T07:00:04+09:00 こんにちは、サブスクペイで開発を担当している近藤です。 サブスクペイではAutifyを導入してE2Eテストに使用しています。AutifyのテストはWebブラウザから行う操作をレコーディングして簡単に作成できます。指定した要素のクリックや、あらかじめ決まっている内容をフォームに入力するなどの単純な操作はレコーディングだけでいけるのですが、画面Aに出ているテキストをコピーして画面Bの入力フォームに貼りつけて実行、といったことをやろうとするとレコーディングだけではできなくなります。 Autify JSステップを使ったテストシナリオ 今回はそのようなときに使えるJSステップを使ったテストシナリオの紹介… <p>こんにちは、サブスクペイで開発を担当している近藤です。<br/> サブスクペイでは<a href="https://autify.com/ja/">Autify</a>を導入してE2Eテストに使用しています。AutifyのテストはWebブラウザから行う操作をレコーディングして簡単に作成できます。指定した要素のクリックや、あらかじめ決まっている内容をフォームに入力するなどの単純な操作はレコーディングだけでいけるのですが、画面Aに出ているテキストをコピーして画面Bの入力フォームに貼りつけて実行、といったことをやろうとするとレコーディングだけではできなくなります。</p> <h3 id="Autify-JSステップを使ったテストシナリオ">Autify JSステップを使ったテストシナリオ</h3> <p>今回はそのようなときに使えるJSステップを使ったテストシナリオの紹介です。テスト内でJavascriptのコードを実行して値を取得し、その値を別のステップで使用します。<br/> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023171056.png" alt="" /></p> <p>このテストでは以下の操作を行っています。<br/> 1. サブスクペイのWebサイトを表示する<br/> 2. <strong>JSステップ</strong> 指定した要素の内容を取得する<br/> 3. google に移動<br/> 4. 検索フォームに 2. の結果を入力する<br/> 5. 検索ボタンをクリック<br/> 6. 検索結果の確認</p> <h3 id="作成方法">作成方法</h3> <p>まずは JS ステップと、最後の確認ステップ以外を作成します。<br/> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023171103.png" alt="" /></p> <p>ステップ1 の後に JSステップを追加します。<br/> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023171109.png" alt="" /></p> <p>JSステップにコードを書きます。今回は下の画面から「 サブスクペイ(サブスクリプション決済)」の部分をコピーします。<br/> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023171116.png" alt="" /></p> <p>コードは以下になります。<br/> <code>return document.querySelector("#wrapper div ul").children[2].children[0].innerHTML;</code> 画面の要素を選択して、その内容を return しています。return した値を別のステップで使用できます。 <br/> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023171124.png" alt="" /></p> <p>ステップ4 で作っていた入力値を変更します。「他のステップから取得」を選択します。<br/> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023171130.png" alt="" /></p> <p>最後に確認ステップを追加します。サブスクペイを検索して ROBOT PAYMENTがトップに来ることを確認します。<br/> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023171137.png" alt="" /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023171144.png" alt="" /></p> <h3 id="おわりに">おわりに</h3> <p>以上でテストの画面からテキストを使うことができました。JSステップを使って操作することで、単純なクリックやキー入力だけでなく、少し手の込んだ操作も Autify を使ってE2Eテストが実行できます。<br/> 今回のテストシナリオでは静的なWebページから値を取っていますが、例えば画面Aで登録、その後登録時の情報を使って画面Bで検索などの操作をしたいときに便利になります。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech 「請求管理ロボ」のシステム基盤について hatenablog://entry/6801883189052816230 2024-02-29T07:00:00+09:00 2024-02-29T07:00:17+09:00 はじめまして、今年度新卒入社しました、請求管理ロボSREチームの塚本です。 今回は個人的な勉強も兼ねて、「請求管理ロボ」のインフラ構成をざっくりと解説していきたいと思います。 「請求管理ロボ」のインフラ基盤について 「請求管理ロボ」とは、請求書の作成から催促まで請求業務を自動化するクラウドサービスです。請求管理ロボの基盤は、AWSのサービスを活用して構築されています。AWSは多彩なサービスとリソースを提供し、クラウドコンピューティングの利点であるスケーラビリティ、自動化、および管理の簡素化を提供します。 以下に構成図と、それぞれのサービスが担う役割を紹介します。 Route53: ドメイン名の… <p>はじめまして、今年度新卒入社しました、請求管理ロボSREチームの塚本です。<br/> 今回は個人的な勉強も兼ねて、「請求管理ロボ」のインフラ構成をざっくりと解説していきたいと思います。</p> <h3 id="請求管理ロボのインフラ基盤について">「請求管理ロボ」のインフラ基盤について</h3> <p> 「請求管理ロボ」とは、請求書の作成から催促まで請求業務を自動化するクラウドサービスです。請求管理ロボの基盤は、AWSのサービスを活用して構築されています。AWSは多彩なサービスとリソースを提供し、クラウドコンピューティングの利点であるスケーラビリティ、自動化、および管理の簡素化を提供します。<br/> 以下に構成図と、それぞれのサービスが担う役割を紹介します。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023170019.jpg" alt="" /></p> <ul> <li><strong>Route53</strong>: <ul> <li>ドメイン名の管理とDNSのルーティングにRoute53を使用します。これにより、ユーザーがウェブサイトにアクセスするためのドメイン名を設定できます。</li> </ul> </li> <li><strong>ALB (Application Load Balancer)</strong>: <ul> <li>ALBを使用してトラフィックを分散します。これにより、ECSタスクに負荷分散され、可用性とスケーラビリティが向上します。</li> </ul> </li> <li><strong>S3 (Simple Storage Service)</strong>: <ul> <li>請求管理ロボでは主にログの保存や、作成された請求書のストレージとして利用しています。</li> </ul> </li> <li><strong>ECS (Amazon Elastic Container Service)</strong> <ul> <li>コンテナ化されたアプリケーションがある場合、ECSを使用してコンテナをデプロイおよび管理できます。これにより、アプリケーションのスケーラビリティが向上し、環境をコントロールできます。</li> <li>起動するコンテナのタイプをFargateとEC2から選択できますが、請求管理ロボでは主にFargateを選択しています。</li> </ul> </li> <li><strong>Amazon Aurora MySQL </strong>: <ul> <li>データベース層として<strong>Amazon Aurora MySQL</strong>を使用します。Webアプリケーションのデータを格納し、データの管理とバックアップを提供します。</li> </ul> </li> <li><strong>AWS Batch:</strong> <ul> <li>高性能コンピューティング (HPC) ジョブやバッチ処理を実行するためのサービス。</li> <li>大規模な計算リソースを自動的にプロビジョニングし、ジョブのキューイングと管理を行います。</li> <li>請求管理ロボでは主に、Webトランザクションで処理してレスポンスを返すには時間がかかりすぎる機能や、定時に実行する必要があるジョブを実行する役割を担います。定期実行されるジョブに関しては<strong>EventBridge</strong>がトリガーとなります。</li> </ul> </li> </ul> <h3 id="請求管理ロボの運用基盤について">「請求管理ロボ」の運用基盤について</h3> <p> ROBOTPAYMENTの請求管理ロボのインフラセキュリティ対策には、以下のAWSサービスと外部サービスを利用しています。それぞれのサービスについて詳細を説明します。</p> <ol> <li><strong>EventBridge / CloudWatch Logs</strong>: <ul> <li><strong>EventBridge</strong>は、AWSリソースとアプリケーションのイベントをリアルタイムで監視し、必要なアクションをトリガーするサービスです。これにより、システムの状態変更やセキュリティイベントなどの重要なイベントを捉え、自動的な対応を可能にします。</li> <li><strong>CloudWatch Logs</strong>は、アプリケーションやシステムのログデータを集約、保存、監視するためのサービスです。ログデータの収集、フィルタリング、アーカイブ、アラート設定などを提供し、セキュリティインシデントの検出や問題のトラブルシューティングに役立ちます。</li> </ul> </li> <li><strong>WAF (Web Application Firewall)</strong>: <ul> <li><strong>WAF</strong>は、ウェブアプリケーションのセキュリティを高めるためのAWSのマネージドウェブアプリケーションファイアウォールです。WAFを使用することで、不正なトラフィックや悪意のある攻撃からウェブアプリケーションを守ります。</li> <li>WAFは、HTTPリクエストに対するフィルタリング、ブロック、アラートをカスタムルールやAWS Managed Rulesを使用して実行します。これにより、セキュリティリスクを軽減し、SQLインジェクション、クロスサイトスクリプティング(XSS)、DDoS攻撃などから保護します。</li> </ul> </li> <li><strong>外部サービス (Mackerel、New Relicなど)</strong>: <ul> <li>ROBOTPAYMENTは外部のモニタリングサービス(例: Mackerel、New Relic)と連携して、アプリケーションのメトリクス監視を行っています。これにより、アプリケーションのパフォーマンスやセキュリティに関する情報を収集し、障害や問題が発生した際に即座に対応できる状態を維持しています。</li> </ul> </li> </ol> <p> これらのセキュリティ対策およびモニタリング手法により、ROBOTPAYMENTの請求管理ロボのインフラストラクチャはセキュアであり、アプリケーションの安定性とセキュリティが確保されています。</p> <h3 id="請求管理ロボの開発基盤について">「請求管理ロボ」の開発基盤について</h3> <p> 請求管理ロボでは、アプリケーション開発の自動化も進んでおり、以下のような取り組みが行われています。</p> <ul> <li><strong>CodePipeline/CodeBuildを利用したCI/CDパイプライン</strong>: <ul> <li>CodeBuildで作成されたCI/CDツールをCodePipelineでまとめて動かすことでアプリケーションのリリースプロセスを自動化するなど、迅速なデプロイメントを実現します。</li> </ul> </li> <li><strong>Pull Request(PR)作成時にユニットテストが走るようなワークフロー</strong>: <ul> <li>開発者がPRを作成すると、自動的にユニットテストが実行され、コード品質を確保します。</li> </ul> </li> </ul> <p> これらのアプローチにより、アプリケーションの開発とデリバリーが迅速化され、品質管理が向上します。</p> <p> また、これらのAWSリソースのほとんどは、Terraformを使用して管理されています。さらに、GitHub Actionsを用いてterraform plan/applyを半自動化するなど、インフラの管理・変更のワークロードも整備されています。</p> <p> 以上が「請求管理ロボ」を支えるインフラストラクチャの紹介でした!最後まで読んでくださりありがとうございました。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech データベースのチューニング運用について考える hatenablog://entry/6801883189052810597 2024-02-22T07:00:00+09:00 2024-02-22T07:00:18+09:00 こんにちは! ROBOT PAYMENT サブスクペイのシステム基盤チームの yoponpon です。 システム基盤チームではアプリケーションやシステムインフラの基礎部分の構築や管理、メンテナンス、性能改善などを行っています。 今回は、データベース(Microsoft SQL Server)のチューニング運用について考えていきたいと思います。 はじめに データベースのチューニングというキーワードを考えた時にその手段や目的は様々かと思います。 例えば目的で考えた時 慢性的なデータベースのパフォーマンス問題に対策を打ちたい 突発的に発生したデータベースの高負荷に対策をしたい 定常的な運用でデータベ… <p>こんにちは!</p> <p>ROBOT PAYMENT サブスクペイのシステム基盤チームの <a href="https://profile.hatena.ne.jp/yoponpon/">yoponpon</a> です。<br/> システム基盤チームではアプリケーションやシステムインフラの基礎部分の構築や管理、メンテナンス、性能改善などを行っています。</p> <p>今回は、データベース(Microsoft SQL Server)のチューニング運用について考えていきたいと思います。</p> <h3 id="はじめに">はじめに</h3> <p>データベースのチューニングというキーワードを考えた時にその手段や目的は様々かと思います。</p> <p>例えば目的で考えた時</p> <ul> <li>慢性的なデータベースのパフォーマンス問題に対策を打ちたい</li> <li>突発的に発生したデータベースの高負荷に対策をしたい</li> <li>定常的な運用でデータベースの安定性を保ちたい</li> </ul> <p>など、(その他諸々)があり、それに対する手段も色々かと思います 例えば以下です。</p> <ul> <li>ハード面の強化(CPU、メモリ、ストレージ等)</li> <li>内部のチューニング(データ構造、インデックス等)</li> <li>用法の見直し(クエリ、データの読み出し方、書き方、頻度を見直す)</li> <li>別のストレージの検討など</li> </ul> <p>弊社では現在、データベースに対しての定常的な運用を検討しております。</p> <p>これまでもデータ構造の見直しやインデックスの修正、断片化の解消など、何かしらの出来事の発生ベースでデータベースチューニングを行っておりました。ただ、これだけでは発生した問題には対処できるものの今後発生しうる問題への事前の対処などができていない状況となってしまい、計画性を持ったシステム運用を阻んでしまう可能性があります。</p> <p>では「今後発生しうる問題に対処するためのアクションとして何をするべきなのか?」という点について考察した内容を今回は軽くまとめさせていただきました。(一旦DBに限定して考察しています)</p> <h3 id="目的目標について考えた">目的・目標について考えた</h3> <p>先述の通り「データベースのチューニング」というキーワードだけでは目的も手段も明確ではありません。 まずは、何が現在問題なのかを考えました。</p> <p>最初に直近のデータベースで発生した問題の洗い出しや、現在のデータベースの状態を参照しました。</p> <ul> <li>データベース周り、パフォーマンス周りでどのような問題が発生していたか調べた</li> <li>データベースの状態を調べた <ul> <li>CPU、メモリ、ディスク利用量などの直近1ヶ月くらいの推移を見た</li> <li>動的管理ビューなどで重たいクエリや実行頻度等を調べた</li> <li>インデックスの断片化状況やディスク利用率を調べた</li> </ul> </li> <li>(など見るべき場所はまだあるかもしれないですが一旦これくらいにしました)</li> </ul> <p>なお、これらの調査は以下のドキュメントを軸に調べました。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Fsql%2Frelational-databases%2Fperformance%2Fperformance-monitoring-and-tuning-tools%3Fview%3Dsql-server-ver16" title="パフォーマンス監視およびチューニング ツール - SQL Server" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://learn.microsoft.com/ja-jp/sql/relational-databases/performance/performance-monitoring-and-tuning-tools?view=sql-server-ver16">learn.microsoft.com</a></cite></p> <h3 id="調査結果">調査結果</h3> <p>調べた結果ですが</p> <p>慢性的なパフォーマンスの問題が起きているというよりピンポイントや特定の機能などで発生している点が見受けられました。<br/> CPU、メモリ、ディスク利用量などは安定しており慢性的なハード不足は見受けられませんでした。(慢性的に重たい場合はスペックアップ等を行っていたため)<br/> クエリの調査でピンポイントで重たいクエリが検知されたり、インデックスの断片化が見受けられました。</p> <h3 id="今後のプランについて考察">今後のプランについて考察</h3> <p>まずは重たいクエリへの対処をと考えたのですが、重たいクエリがなぜ重たいのか?から考える必要がありました。<br/> どういうことかというと、クエリが重たくなる理由としては以下が考えられるからです。(他にもあるかも)</p> <ul> <li>①データの構造や呼び出し方の効率がよくない</li> <li>②必要なインデックスや付加列が不足している</li> <li>③クエリ実行プランが効率的でない</li> </ul> <p>①、②が原因であればアプリケーションの修正やインデックスの見直しで解決できるかと思います。</p> <p>③が原因であった場合は、インデックス断片化の改善、統計情報の更新が必要になるかと思います。<br/> インデックスの断片化や統計情報はクエリ・オプティマイザーの挙動に影響を与えるため、それらが最新ではない場合に効率的ではないクエリ実行プランが生成される可能性があります。</p> <p>なお、このあたりを参考にしました。 <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Flearn.microsoft.com%2Fja-jp%2Fsql%2Frelational-databases%2Fstatistics%2Fstatistics%3Fview%3Dsql-server-ver16" title="統計 - SQL Server" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://learn.microsoft.com/ja-jp/sql/relational-databases/statistics/statistics?view=sql-server-ver16">learn.microsoft.com</a></cite></p> <h3 id="チーム内で相談">チーム内で相談</h3> <p>重たいクエリが複数検知された上でそれらの対処を考えた時に、インデックスの断片化や古い統計情報がある状態では修正自体の妥当性が検証できない可能性がありました。なぜならば実行プランが新しい統計情報をもとに生成されていない為、実際のデータに対して効率的な実行計画が生成されていない可能性があるからです。なので、まずはインデックスの断片化率を一定値まで下げる運用をして必要なタイミングで統計情報を更新していこうという方向の話になりました。</p> <p>チーム内で考えた今後の計画は以下のような感じです。</p> <p>①すべてのテーブルでインデックス断片化を特定比率まで下げる<br/> ②統計情報の更新頻度、インデックスの断片化修正を定期的に実行する運用を設ける<br/> ③重たいクエリを定期的に棚卸しして修正計画を検討する</p> <h3 id="一旦まとめ">一旦まとめ</h3> <p>といった感じで一旦1つ目の必要な運用を洗い出すことができました。</p> <p>もちろんこれだけではあらゆる問題に対処できているわけではないですがデータベースチューニングの基礎づくりの一歩は進めたかな?といった状況です。</p> <p>増えていくデータのアーカイブやページング、データ構造の見直しやアプリケーションや処理フローの見直し、取るべきメトリクスなどまだまだやることはあるかなと思います。</p> <p>こちらについてまた、続きを書いていければと思います。 長くなりすぎるかもしれないので一旦ここまでで!</p> <p>読んでいただきありがとうございます!</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech OR演算子の話 hatenablog://entry/6801883189052810040 2024-02-15T07:00:00+09:00 2024-02-15T07:00:05+09:00 こんにちは。決済システムでエンジニアをやっております hoshino33 です。 今回はC#のOR演算子|と||について記載したいと思います。 はじめに 普段、コーディングする際は||でしか記載していないので、|と||の違いを聞かれたときになんだっけとなってしまいました。答えられる方は復習として、答えられない方は参考になれば幸いです。 OR演算子について 結論からいうと、違いは左側がtureだったとしても右側を評価するかしないかになります。 |(論理 OR 演算子)について | 演算子がそのオペランドの論理 OR を計算します。 x または y のどちらかが true と評価された場合、x |… <p>こんにちは。決済システムでエンジニアをやっております <a href="https://profile.hatena.ne.jp/hoshino33/">hoshino33</a> です。<br/> 今回はC#のOR演算子<code>|</code>と<code>||</code>について記載したいと思います。</p> <h3 id="はじめに">はじめに</h3> <p>普段、コーディングする際は<code>||</code>でしか記載していないので、<code>|</code>と<code>||</code>の違いを聞かれたときになんだっけとなってしまいました。答えられる方は復習として、答えられない方は参考になれば幸いです。</p> <h3 id="OR演算子について">OR演算子について</h3> <p>結論からいうと、違いは左側がtureだったとしても右側を評価するかしないかになります。</p> <h4 id="論理-OR-演算子について"><code>|</code>(論理 OR 演算子)について</h4> <blockquote><p><code>|</code> 演算子がそのオペランドの論理 OR を計算します。 <code>x</code> または <code>y</code> のどちらかが <code>true</code> と評価された場合、<code>x | y</code> の結果は <code>true</code> になります。 それ以外の場合、結果は <code>false</code> です。 <code>|</code> 演算子は、左側のオペランドが <code>true</code> と評価されても両方のオペランドを評価するため、操作結果は右側のオペランドの値に関係なく、<code>true</code> になります。</p></blockquote> <h4 id="条件付き論理-OR-演算子について"><code>||</code>(条件付き論理 OR 演算子)について</h4> <blockquote><p>条件論理 OR 演算子 <code>||</code> は、"短絡" 論理 OR 演算子とも呼ばれ、そのオペランドの論理 OR を計算します。 <code>x</code> または <code>y</code> のどちらかが <code>true</code> と評価された場合、<code>x || y</code> の結果は <code>true</code> になります。 それ以外の場合、結果は <code>false</code> です。 <code>x</code> が <code>true</code> に評価される場合、<code>y</code> は評価されません。</p></blockquote> <p>※ <a href="https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/boolean-logical-operators">ブール論理演算子</a>より引用</p> <h3 id="コードで確認">コードで確認</h3> <p>OR演算子<code>|</code>と<code>||</code>の動きを実際に見て見ます。 また、AND演算子<code>&amp;</code>と<code>&amp;&amp;</code>についても同じことが言えるのであわせて確認します。</p> <pre class="code lang-cs" data-lang="cs" data-unlink><span class="synType">void</span> Main() {     Console.WriteLine(<span class="synConstant">&quot;-- 論理 OR 演算子 |&quot;</span>);     <span class="synType">var</span> a <span class="synStatement">=</span> <span class="synConstant">true</span> | Method();     Console.WriteLine(a);     Console.WriteLine(<span class="synConstant">&quot;-- 条件付き論理 OR 演算子 ||&quot;</span>);     <span class="synType">var</span> b <span class="synStatement">=</span> <span class="synConstant">true</span> <span class="synStatement">||</span> Method();     Console.WriteLine(b);          Console.WriteLine(<span class="synConstant">&quot;-- 論理 AND  演算子 &amp;&quot;</span>);     <span class="synType">var</span> c <span class="synStatement">=</span> <span class="synConstant">false</span> &amp; Method(); Console.WriteLine(c);     Console.WriteLine(<span class="synConstant">&quot;-- 条件付き論理 AND  演算子 &amp;&amp;&quot;</span>);     <span class="synType">var</span> d <span class="synStatement">=</span> <span class="synConstant">false</span> <span class="synStatement">&amp;&amp;</span> Method();     Console.WriteLine(d); } <span class="synType">bool</span> Method() {     Console.WriteLine(<span class="synConstant">&quot;Method&quot;</span>); <span class="synStatement">return</span> <span class="synConstant">true</span>; } </pre> <p>実行結果</p> <pre class="code" data-lang="" data-unlink>-- 論理 OR 演算子 | Method True -- 条件付き論理 OR 演算子 || True -- 論理 AND 演算子 &amp; Method False -- 条件付き論理 AND 演算子 &amp;&amp; False</pre> <h3 id="まとめ">まとめ</h3> <p>C#と書きましたがOR演算子<code>|</code>と<code>||</code>の記述ができる言語は同じ挙動になると思います。 普段から<code>||</code>を使用しているので、あまり意識していなかったのですが、そういえばそうだったとかあるので時間がある際は立ち止まって動作を見てみるのもいいですね。 そもそも、<code>|</code>を利用するシーンってあまりないと思うのですがどんなときがあるのでしょうかね。ちょっと調べてみたのですがビット操作するときぐらいですかね。現代ではあまりなさそうですね。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech Visual Studio で SQL Server のテーブルを見てみよう! hatenablog://entry/6801883189052807231 2024-02-08T07:00:00+09:00 2024-02-08T07:00:29+09:00 はじめに こんにちは。ペイメントシステム課エンジニアの大倉です。 今回は、「Visual Studio から SQL Server のテーブルを見れるよ!」というお話です。 普段の開発では主にコーディングは Visual Studio を使用し、データベースを確認する際は SSMS(SQL Server Managementt Studio) を使用しています。 ツールを使い分けて開発することで特に問題はないのですが、SSMS を起動するほどではなかったり(ちょっとテーブルの中身を確認したり)、Visual Studio と SSMS を切り替えるのが面倒だったりする場面がありました。 そうい… <h2 id="はじめに">はじめに</h2> <p>こんにちは。ペイメントシステム課エンジニアの大倉です。<br/> 今回は、「Visual Studio から SQL Server のテーブルを見れるよ!」というお話です。</p> <p>普段の開発では主にコーディングは Visual Studio を使用し、データベースを確認する際は SSMS(SQL Server Managementt Studio) を使用しています。<br/> ツールを使い分けて開発することで特に問題はないのですが、SSMS を起動するほどではなかったり(ちょっとテーブルの中身を確認したり)、Visual Studio と SSMS を切り替えるのが面倒だったりする場面がありました。<br/> そういった場面では Visual Studio から SQL Server を操作すると良いかもしれません。</p> <p>今回は Visual Studio 2022 で SQL Server を操作する手順をご紹介します。</p> <h2 id="1-準備">1. 準備</h2> <p>Visual Studio 2022 のインストーラーを起動し、「ワークロード」の「データの保存と処理」にチェックを入れてインストールします。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162118.png" alt="" /> もしくは、「個別のコンポーネント」で「SQL Server Data Tools」にチェックを入れてインストールします。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162124.png" alt="" /></p> <p>続いて、Visual Studio 2022 を起動し、メニュー「表示」-「SQL Server オブジェクト エクスプローラー」が表示されることを確認します。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162131.png" alt="" /></p> <p>もし SQL Server オブジェクト エクスプローラー が表示されない場合は <a href="https://learn.microsoft.com/ja-jp/sql/ssdt/download-sql-server-data-tools-ssdt?view=sql-server-ver16">Microsoftの公式サイト</a> を参考に設定してみてください。</p> <h2 id="2-SQL-Serverに接続する">2. SQL Serverに接続する</h2> <p>Visual Studio 2022 の SQL Server オブジェクト エクスプローラー を表示(メニュー「表示」-「SQL Server オブジェクト エクスプローラー」)し、「SQL Server の追加」をクリックします。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162138.png" alt="" /></p> <p>「接続」ダイアログにて接続先の SQL Server の情報を入力し、「接続」をクリックします。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162144.png" alt="" /></p> <p>正常に接続できると SQL Server オブジェクト エクスプローラーに新しい接続が追加されます。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162150.png" alt="" /></p> <p>追加された接続を展開していくと、接続先のテーブルが確認できます。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162156.png" alt="" /></p> <h2 id="3-テーブルの中身を確認する">3. テーブルの中身を確認する</h2> <p>SQL Server オブジェクト エクスプローラーの任意のテーブルを右クリックし、「データの表示」をクリックします。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162203.png" alt="" /></p> <p>すると、このような形でテーブルの中身を確認できます。(値の変更も可能です) <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162210.png" alt="" /></p> <h2 id="4-クエリを実行する">4. クエリを実行する</h2> <p>SQL Server オブジェクト エクスプローラーの任意のデータベースを右クリックし、「新しいクエリ」をクリックします。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162217.png" alt="" /></p> <p>クエリのエディターが表示されるので、クエリを入力して「実行」をクリックします。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162224.png" alt="" /></p> <p>すると、クエリの結果が表示されます。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231023/20231023162231.png" alt="" /></p> <h2 id="おわりに">おわりに</h2> <p>SSMS ほどではありませんが、Visual Studio でもある程度の SQL Server の操作はできます。 Visual Studio だけで完結したい場面がありましたら是非お試しください!</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech Slackのスタンプから命名記法について考えてみました。 hatenablog://entry/6801883189052804642 2024-02-01T07:00:00+09:00 2024-02-01T07:00:24+09:00 Slackのスタンプの命名法について考えてみた。 こんにちは。4月に新卒として入社いたしました、株式会社ROBOT PAYMENTの小林です。弊社では、社内のコミュニケーションツールとしてSlackを採用しています。Slackといえば、独自にスタンプを追加できることが有名です。弊社でもオリジナルのスタンプが続々と追加されています。日々増え続けるスタンプですが、どのように名前が付けられているのだろうと気になりました。ほかの人が作ったスタンプを検索する際に、統一されていたほうが検索しやすくなると思い、Slackスタンプの命名について考えてみます。(3000個近くカスタムスタンプがありました!) ち… <h3 id="Slackのスタンプの命名法について考えてみた">Slackのスタンプの命名法について考えてみた。</h3> <p>こんにちは。4月に新卒として入社いたしました、株式会社ROBOT PAYMENTの小林です。弊社では、社内のコミュニケーションツールとしてSlackを採用しています。Slackといえば、独自にスタンプを追加できることが有名です。弊社でもオリジナルのスタンプが続々と追加されています。日々増え続けるスタンプですが、どのように名前が付けられているのだろうと気になりました。ほかの人が作ったスタンプを検索する際に、統一されていたほうが検索しやすくなると思い、Slackスタンプの命名について考えてみます。(3000個近くカスタムスタンプがありました!)</p> <p>ちなみに弊社でよく使われているスタンプはこちらです!(働く環境に記載があります)</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fcompany%2F3min%2F" title="3分でわかるロボットペイメント | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/company/3min/">www.robotpayment.co.jp</a></cite></p> <h2 id="命名法の種類">命名法の種類</h2> <p>最初に考えたことは、命名法についてです。<br/> 大きく分けて、<br/> 1. キャメルケース <br/> 2. パスカルケース<br/> 3. スネークケース<br/> 4. チェーンケース</p> <p>の4つがあると思います。</p> <p>ただすでにある社内のスタンプを見る限り、<br/> ほとんどのスタンプが上記に当てはまらないパターンでした。<br/> 後に記載しますが、以下の2パターンが多かったです。</p> <p><strong>パターン1 ローマ字入力</strong><br/> ありがとう→arigatou<br/> 了解です→ryoukaidesu</p> <p><strong>パターン2 日本語そのまま</strong><br/> 承知しました→承知しました<br/> 確認済→確認済</p> <p>文字をつなげるときは、3. スネークケース 4. チェーンケースが多くみられました。</p> <h2 id="社内の現状">社内の現状</h2> <p>スタンプを命名する際には、英語と日本語、そしてローマ字で表記する方法があると思います。 社内のスタンプを1通り確認してみました。 するとローマ字の表記が一番多かったです。(8割近くがローマ字表記でした)</p> <p>例</p> <pre class="code" data-lang="" data-unlink>お疲れ様でした→otsukaresamadeshita どういたしまして→douitashimashite</pre> <h2 id="今後の対策">今後の対策</h2> <p>プログラミングにおける変数名は、英語で記載されることが通常です。 ローマ字だとコードの可読性が下がりますし、様々な要因からローマ字の記法は避けたほうがいいとされています。<br/> では、Slackのスタンプだとどうでしょうか?</p> <p>Slackのスタンプは非エンジニアの方も多く使いますし、<br/> すでに弊社のSlackのスタンプは、ローマ字の命名であふれかえっています。<br/> 今後の対策として以下の3つを考えました。</p> <h3 id="1-Slackのスタンプ命名ルールを新たに制定する英語">1. Slackのスタンプ命名ルールを新たに制定する(英語)</h3> <p>すでにあるスタンプは負債となってしまいますが、今後追加するスタンプについては命名ルールに従ってもらうようにします。言語としては英語を選択するのが一目みたときわかりやすいので、英語で記載します。またSlack標準のスタンプをみたところ、チェーンケースで記載していたので、以下のような方針でいきたいです。<br/> ①英語で記載すること<br/> Slackで標準搭載されているスタンプを参考に命名してもらいます。<br/> ②スネークケースを採用すること</p> <p>例</p> <pre class="code" data-lang="" data-unlink> :smile: :muscle: :hoge_smile: :thank_you: :see_you:</pre> <h3 id="2-そのままローマ字記法を踏襲する">2. そのままローマ字記法を踏襲する</h3> <p>すでにあるスタンプに合わせてローマ字で記載するようにします。<br/> ここで考えるべきは、ヘボン式と訓令式です。<br/> 弊社のスタンプの名前は、どちらの方式もあったので、<br/> 統一したほうがスタンプを検索しやすくなると思います。</p> <p>弊社のSlackチャンネルの命名にはヘボン式が使われているので、スタンプも統一します。</p> <p>例</p> <pre class="code" data-lang="" data-unlink>○ o&#34;tsu&#34;karesamadeshita × o&#34;tu&#34;karesamadeshita</pre> <h3 id="3-Slackのスタンプ命名ルールを新たに制定するひらがなカタカナ漢字英語">3. Slackのスタンプ命名ルールを新たに制定する(ひらがな、カタカナ、漢字、英語)</h3> <p>こちらもすでにあるスタンプは負債となってしまいますが、今後追加するスタンプについては命名ルールに従ってもらうようにします。</p> <p>①スタンプの表記のまま記載する</p> <p>例</p> <pre class="code" data-lang="" data-unlink>○ 済→済 × 済→done</pre> <p>②英語の固有名詞もそのまま記載する<br/> (カタカナにできる場合はカタカナを使う)</p> <p>例</p> <pre class="code" data-lang="" data-unlink>Python Ruby_on_Rails GitHub_Copilot ChatGPT_ロゴ</pre> <h2 id="どの方法がよいか">どの方法がよいか</h2> <p>Slackのスタンプに限っては、スタンプの名前の可読性よりも検索したときにヒットしやすくなることが重要だと考えられます。そのため、Slackのスタンプの命名法は「漢字やカタカナなどを使うようにする」方式が一番いいと思います。</p> <p>なぜなら英語やローマ字と違って、一つの漢字でいろんな意味を持つからです。</p> <p>例えば踊っているキャラクターのスタンプがあるとします。<br/> このとき、英語で表現すると</p> <blockquote><p>:dancing: :dance: </p></blockquote> <p>ローマ字だと、</p> <blockquote><p>:dance: :odori: :odotteiru:</p></blockquote> <p>漢字を使うと</p> <blockquote><p>:踊:</p></blockquote> <p>となるのではないでしょうか?</p> <p>ハンバーガーを食べていたら キャラの名前<em>ハンバーガー</em>食<br/> なんだかキャラが揺れていたら キャラの名前_揺</p> <p>このような感じに 名前_動作の漢字 とすれば、検索にヒットしやすくなると思います。</p> <h2 id="結論">結論</h2> <p>Slackのスタンプに限っては、スタンプの名前の可読性よりも検索したときにヒットしやすくなることが重要だと考えられます。そのため、Slackのスタンプの命名法は「漢字やカタカナなどを使うようにする」方法がいいと考えています。弊社のスタンプは、ほとんどがローマ字で記載されていたので既存のものは完全に負債となってしまいました笑。しかし今後は漢字とカタカナで記載して、よいSlackスタンプライフを送りたいと思います。もしSlackのスタンプの名前を一括で変換できるものがあれば使ってみたいです笑 いや作る方が早いかもしれません笑</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech 問い合わせ対応の満足度の向上を目指して vol2 hatenablog://entry/820878482961547389 2024-01-25T07:00:00+09:00 2024-01-25T07:00:03+09:00 こんにちは!請求管理ロボCREチーム所属、前田です! ROBOT PAYMENTには昨年7月に入社し、福岡よりリモートで主にシステムに関する問い合わせ対応業務を担当しております。 前回に引き続き私の所属するCREチームの業務について書いていこうと思うのですが、そもそもCRE(Customer Reliability Engineering)エンジニアとはなんぞや?あまり聞き馴染みがないなと思った方、チームの大先輩である山下が以前詳しく解説しておりますので、併せて読んでみてください!(宣伝) tech.robotpayment.co.jp 今回もCREの業務の一つ、ユーザーからの問い合わせ対応業… <p>こんにちは!請求管理ロボCREチーム所属、前田です!<br/> ROBOT PAYMENTには昨年7月に入社し、福岡よりリモートで主にシステムに関する問い合わせ対応業務を担当しております。</p> <p>前回に引き続き私の所属するCREチームの業務について書いていこうと思うのですが、そもそもCRE(Customer Reliability Engineering)エンジニアとはなんぞや?あまり聞き馴染みがないなと思った方、チームの大先輩である山下が以前詳しく解説しておりますので、併せて読んでみてください!(宣伝) <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.robotpayment.co.jp%2Fentry%2F2022%2F05%2F19%2F145953" title="ROBOT PAYMENTのCREを考えてみた - ROBOT PAYMENT TECH-BLOG" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tech.robotpayment.co.jp/entry/2022/05/19/145953">tech.robotpayment.co.jp</a></cite></p> <p>今回もCREの業務の一つ、ユーザーからの問い合わせ対応業務においての新たな取り組み、私個人が意識していることについてお話ができればと思います。</p> <h2 id="調査回答の目標時間を設定">調査・回答の目標時間を設定</h2> <p>問い合わせ対応業務ですが調査・回答までにかける時間についてチーム内で目標時間を設定しました。<br/> 具体的には120分を目標値として設定しているのですが、これについては最終的にお客様に回答を行うCS/デスク(カスタマーサクセス、サポートデスク)の肌感でユーザーにストレスや不安感を与えない時間の目安ということで、この時間を目標値として設定しました。</p> <p>また目標値を設定することで業務に対するモチベーションの向上や調査の時間配分を考えやすくなる等様々な効果が得られると考えており、目標値を設定してからは時間内に回答を行うためにはどうすればいいかを考え、いかに回答をスピーディーかつ正確に行うかといった部分を意識しながら業務に取り組めるようになりました。</p> <p>2023年8月現在、目標値については達成ができているのですが、今後は継続的に目標値を達成していくことを次点の目標としています。</p> <h2 id="CSデスクとの連携を密に">CS/デスクとの連携を密に</h2> <p>請求管理ロボに関する問い合わせはCS/デスクが内容を確認し回答、テクニカルな部分や細かい仕様についてはCREに確認してから回答するというワークフローをとっているので、CS/デスクとのやり取りをいかにスムーズに行えるかがお客様への満足度に直結します。</p> <p>ここで今まで以上にCS/デスクとの連携をスムーズに行えるよう調査依頼がきたタイミングで、何かしらの一報を文章にてCS/デスクに入れるように心がけています。</p> <p>今までは調査を始める際に確認のスタンプ等でリアクションをとっていたのですが、ログが残らずリアクションを取ったタイミング、すなわち調査を開始した時間が分からない、またスタンプだけだと本当に調査対応してもらっているのか不安になるのではないか、といったことも考慮し「見てますよ!」アピールをするためにもメッセージを返すようにしています。</p> <p>例を挙げると「ただ今より調査開始します」、「ミーティング中のため終了後調査開始します」等々 現在の自分の状況について報告するようにしています、やっぱり返事がくると安心しますよね。</p> <p>実際に行ってみると誰がどの調査を行っているか分かるため作業分担がしやすくなる。<br/> 調査開始時間が分かるので完了時間の目処も立ちやすくなり、CS/デスクのスケジューリングがしやすくなる等々、精神的な面以外でもさまざまな良い効果がありました。</p> <h2 id="調査後の振り返り">調査後の振り返り</h2> <p>調査が完了し回答を行った後、その調査について振り返りの時間を設けるようにしました。<br/> 主に行っていることとしては調査のジャンル分け、回答を導くまでに至る調査過程の反省です。</p> <p>まずジャンル分けについてはどのような問い合わせの傾向を掴むために行っており、質問の多いジャンルについてはユーザー向けのQ&amp;Aの拡充や、CS/デスクに対し調査に必要な情報をあらかじめ用意、調査時間の短縮に向けた取り組みを行っています。</p> <p>調査過程についての反省は調査中に削減できる時間がなかったか、遠回りな調査になっていないかという観点で振り返りを行い、次回対応する際に最短ルートで回答を導けるよう反省を行っています。 問い合わせの回答の導き方にも様々なルートがあります。<br/> しっかりと振り返り反省を行うことで少しずつですが自分なりの調査ノウハウができてきたかなと実感しています。</p> <h2 id="さいごに">さいごに</h2> <p>いかがでしたか、今回はユーザーから来た問い合わせに対していかに満足度の高い対応をするか、 という点に着目した施策についてお話ししました。<br/> 個人的には<strong>ユーザーの不安感を取り除き、安心感を与える</strong>、これもまたCREの最終的な目標である <strong>問い合わせ対応の品質・満足度の向上</strong>に繋がっているなと改めて本ブログを執筆中に痛感しました。</p> <p>これからもCREチームで問い合わせ対応以外にも様々な業務改善に取り組んでいきますので、また本ブログにて近況や施策の結果の報告ができればと思います٩( 'ω' )و</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech ユーザー理解の重要性が組織に浸透してきた話 hatenablog://entry/820878482961546656 2024-01-18T07:00:00+09:00 2024-01-18T07:00:22+09:00 こんにちは!株式会社ROBOT PAYMENT(以下、ロボペイ)でUXデザイナーをしている三木です。 組織内でユーザー調査に取り組んでいると「どうすればユーザー調査の価値がもっと伝わるだろうか」という悩みを抱くことも多いかと思います。 私もその一人です。特に入社して間もない頃はそのようなことを考える機会も多く、自分の至らなさなどを感じることもありました。 入社してもうすぐ1年半が経ち、複数のプロダクトの様々なフェーズでユーザー調査などの取り組みを行い、社内に共有してきました。 そうした取り組みが所属部署以外にも徐々に伝わり、今では他部署の方から相談やお声がけを頂くようにもなってきました。 今回… <p>こんにちは!株式会社ROBOT PAYMENT(以下、ロボペイ)でUXデザイナーをしている三木です。</p> <p>組織内でユーザー調査に取り組んでいると「どうすればユーザー調査の価値がもっと伝わるだろうか」という悩みを抱くことも多いかと思います。<br/> 私もその一人です。特に入社して間もない頃はそのようなことを考える機会も多く、自分の至らなさなどを感じることもありました。<br/> 入社してもうすぐ1年半が経ち、複数のプロダクトの様々なフェーズでユーザー調査などの取り組みを行い、社内に共有してきました。<br/> そうした取り組みが所属部署以外にも徐々に伝わり、今では他部署の方から相談やお声がけを頂くようにもなってきました。<br/> 今回のブログでは、取り組みの一部を紹介したり今後の展望についてお話しできたらと思います。</p> <h2 id="実施している取り組み">実施している取り組み</h2> <p>仮説検証期でのユーザーインタビュー実施や満足度調査の定期実施など様々な取り組みを行っています。今回はその一部を紹介します。</p> <h3 id="サブスクペイ満足度調査の導入">サブスクペイ:満足度調査の導入</h3> <p>私が入社した頃の状況として、サポートに関することのみの部分的なアンケートや、お問い合わせを頂いた際の内容などから追加機能の要望や改善点などについて一定把握はできていましたが、体系的な満足度調査は十分にできていませんでした。<br/> このような状況を受け、今よりももっとユーザー理解に力を入れ、そこからサービス改善の起点を作っていきたいというプロダクト責任者の思いもあり、サブスクペイでも満足度調査を定期的に実施する仕組みを整えています。<br/> 請求管理ロボで実施していた満足度調査の知見なども活かし、ユーザーの属性情報をはじめサービス認知経路やサービスへの満足度、業務改善要望やサービスへの追加機能要望など、ユーザー理解を深めるための情報を定期的に知ることができるようになってきています。<br/> アンケート結果が数値として可視化されるようになり、サービス開発や運用に関わるメンバー内での理解が深まるきっかけにもなっているように感じます。</p> <h3 id="請求管理ロボ新機能開発におけるニーズ調査とプロトタイプ検証">請求管理ロボ:新機能開発におけるニーズ調査とプロトタイプ検証</h3> <p>請求管理ロボへ新機能を追加するプロジェクトが始動し、まずはその機能を求めているユーザーのことを深く知るためのニーズ調査を実施しました。その後、ニーズ調査で得た情報をもとに機能のアイデアを出してプロトタイプを作成し、プロトタイプ(アイデア)が受け入れられるかの検証も行いました。<br/> そうすることにより、「サービスを作ってリリースしたが実際はユーザーに全然使ってもらえない」「ユーザーの課題を解決できないサービスになってしまった」という事態を事前に防ぐことができます。 この結果から考えていたアイデアの方向性を修正することができ、本開発に進めることができました。開発中に迷うことがあっても、プロダクトマネージャー、デザイナー、エンジニアそれぞれがユーザーインタビューの結果を参考に検討できるので、ユーザーの声が開発の起点や立ち戻る場所になっているように感じます。</p> <h2 id="他職種他部署とのユーザー調査に関するコラボレーション">他職種、他部署とのユーザー調査に関するコラボレーション</h2> <p>上記で紹介したようなユーザー調査案件を、入社してから10プロジェクト以上担当してきました。入社直後は一人で淡々とプロジェクトを進めることが多かったですが、今では他部署や他職種のメンバーと一緒に進めることが増えてきました。</p> <h3 id="サポートに関する満足度調査の統合新機能アイデアのニーズ調査">サポートに関する満足度調査の統合、新機能アイデアのニーズ調査</h3> <p>私の方で統括してサブスクペイで定期的なアンケートを実施するようになったため、今まで部署ごとに行っていた調査などは統合していくことになりました。具体的には、今までサポートだけで実施していた満足度調査との統合を行い、設問や選択肢を一緒に考えていただいたり配信時の送信文面のチェックなどを行っていただいています。日ごろからユーザーと触れ、一番近い存在であるサポートの皆さんからの視点は非常に鋭く勉強になることがたくさんありより刺激をもらっています。<br/> また、経営層からお声がけを頂き「新機能案を考えているが、ユーザーに受け入れられるか聞いてほしい」と依頼を受けてアンケートに追加するといった動きも増えています。</p> <h3 id="プロダクトマネージャーが行うユーザー調査のアドバイザリー">プロダクトマネージャーが行うユーザー調査のアドバイザリー</h3> <p>今までのユーザー調査はUXデザイナーが調査企画〜分析までメインで関わることしかありませんでしたが、最近では調査の規模感によってはプロダクトマネージャー自ら調査企画を立てインタビュー進行などを担当される案件もあり、その際のアドバイザリー的役割を担うことも増えてきました。ユーザー理解の重要性が浸透し、開発に積極的に取り入れていこうという姿勢が体現化されており、とても良い雰囲気だと感じています。<br/> またリソースの面でも、UXデザイナーが1名体制である一度に進められる案件にも限界があるためプロダクトマネージャーと協業していけることは個人的にも助かっています。</p> <h2 id="ユーザー視点がサービス開発の起点になるように">”ユーザー視点”がサービス開発の起点になるように</h2> <p>アンケートやインタビューを素早く手軽に試せるような環境が整ってきていることにより、「ちょっとユーザーの意見を聞いてみたい」と思ったことをそのままにせず「調査してみよう!」という意識がプロダクト課だけでなく会社全体に広がりつつあるように感じます。<br/> こうした意識変化をさらに加速させて行動に移すために、もっとスピーディーかつスマートに調査ができる環境や体制づくりに力を入れていきたいです。社内社外問わずユーザー理解の重要性やその取り組みを発信し、一緒に進めてくれるメンバーを増やすことで、常に開発の起点にユーザー視点があるような組織を目指していきたいです。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech アラート通知をSlackに hatenablog://entry/820878482954162672 2024-01-11T07:00:00+09:00 2024-01-11T07:00:04+09:00 こんにちは、サブスクペイサービスでCREを担当していますmurakamiCPです。 今回は、システムのアラートに早く気付けるようにSlackにエラー通知を導入したお話をしたいと思います。 大量の通知メール サブスクペイサービスは毎日稼働していて、そこそこの機能量があるシステムです。 そして、たくさんの処理結果やエラー通知をメールで行っています。 そうなると、まあご想像の通り起きる事象としては… メールがたくさん届きます。 それはもう、たくさん届きます。 もちろん、メールの振り分け機能を使うことで大事なメールには気づけるように工夫していましたが それでも ・「メールをみる」までアラートに気づきに… <p>こんにちは、サブスクペイサービスでCREを担当していますmurakamiCPです。 今回は、システムのアラートに早く気付けるようにSlackにエラー通知を導入したお話をしたいと思います。</p> <h3 id="大量の通知メール">大量の通知メール</h3> <p>サブスクペイサービスは毎日稼働していて、そこそこの機能量があるシステムです。 そして、たくさんの処理結果やエラー通知をメールで行っています。 そうなると、まあご想像の通り起きる事象としては…</p> <p>メールがたくさん届きます。 それはもう、たくさん届きます。</p> <p>もちろん、メールの振り分け機能を使うことで大事なメールには気づけるように工夫していましたが それでも</p> <p>・「メールをみる」までアラートに気づきにくい ・新しい方が参画したときに大量のメール振り分けをする作業が発生する</p> <p>という課題がありました。</p> <p> </p> <h3 id="Slackに転送しよう">Slackに転送しよう!</h3> <p>そこで、業務のメインにコミュニケーションツールとして使用しているSlackに緊急度の高いアラートのメールを転送するようにしました。</p> <p>やり方については、Slackの公式に手順や設定が載っているのでご参考までに。 <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fslack.com%2Fintl%2Fja-jp%2Fhelp%2Farticles%2F206819278-Slack-%25E3%2581%25AB%25E3%2583%25A1%25E3%2583%25BC%25E3%2583%25AB%25E3%2582%2592%25E9%2580%2581%25E4%25BF%25A1%25E3%2581%2599%25E3%2582%258B" title="Slack にメールを送信する" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://slack.com/intl/ja-jp/help/articles/206819278-Slack-%E3%81%AB%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B">slack.com</a></cite></p> <p>アラートメールを通知するチャンネルは、障害対応に関わるメンバーが全員いる専用チャンネルにすることで その通知を誰が確認したかリアクションや発言などでリアルタイムで反応がわかり、 進捗や役割などもそのチャンネルで報告することで情報の集約され迅速にアラートの対応ができるようになりました。</p> <p>    今後は目的別・チャンネル別に通知できるようにして必要な関係者に迅速に通知できるようにしていきたいです。 サービスの品質底上げのために取り組んだちょっとしたことのご紹介でした!</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech スーパーウルトラワイドモニターでの作業体験 - メリットとデメリット hatenablog://entry/820878482961541613 2024-01-04T07:00:00+09:00 2024-01-04T07:00:05+09:00 ROBOT PAYMENTエンジニアのkanemotoです!請求管理ロボの開発を担当しています。 モニターは、エンジニアにとって作業環境の中核を担う重要な要素です。 今回は、私が実際に使用しているスーパーウルトラワイドモニターについてご紹介します。この広大な画面と没入感がもたらす作業体験について、率直な感想をお伝えしていきます。 結論を言うと、私個人の感想ではスーパーウルトラワイドモニターは使いづらい印象でした。以下では、その理由としてスーパーウルトラワイドモニターのメリットとデメリットについてご紹介していきます。 実際に私が使っているモニターはこちらです。 DELLのU4919DWを使用して… <p>ROBOT PAYMENTエンジニアのkanemotoです!請求管理ロボの開発を担当しています。</p> <p>モニターは、エンジニアにとって作業環境の中核を担う重要な要素です。<br/> 今回は、私が実際に使用しているスーパーウルトラワイドモニターについてご紹介します。この広大な画面と没入感がもたらす作業体験について、率直な感想をお伝えしていきます。</p> <p>結論を言うと、私個人の感想ではスーパーウルトラワイドモニターは使いづらい印象でした。以下では、その理由としてスーパーウルトラワイドモニターのメリットとデメリットについてご紹介していきます。</p> <p>実際に私が使っているモニターはこちらです。<br/> DELLのU4919DWを使用しています。横幅は1メートルを超えています。</p> <blockquote><p><img src="https://m.media-amazon.com/images/I/71Z2aWtQNJS._AC_SL1500_.jpg" alt="" /> 出典:<a href="https://www.amazon.co.jp/Dell-U4919DW-3%E5%B9%B4%E9%96%93%E7%84%A1%E8%BC%9D%E7%82%B9%25%5B%E2%80%A6%5D82%AB%E3%83%BC%E3%83%95%E3%83%AA%E3%83%BC/dp/B085J62428?th=1">Dell(デル)Amazon公式ブランドストア</a></p></blockquote> <p>次のセクションでは、そもそもウルトラワイドモニターとは何か?私がおすすめするウルトラワイドモニターの特徴や選び方について詳しくご紹介します。</p> <h3 id="ウルトラワイドモニターとは">ウルトラワイドモニターとは</h3> <p>ウルトラワイドモニターは、従来のモニターよりも広い画面サイズと広視野角を持つディスプレイのことを指します。<br/> 通常のモニターは16:9に対し、ウルトラワイドモニターはより広い21:9以上のアスペクト比を持っています。これにより、画面上により多くの情報を同時に表示することが可能となります。</p> <h3 id="スーパーウルトラワイドモニターとは">スーパーウルトラワイドモニターとは</h3> <p>ウルトラワイドモニターよりも更に大きい32:9アスペクト比のモニターのことを指します。<br/> このアスペクト比となるとモニターのサイズは約49インチとして取り扱っているものが多くなります。</p> <h3 id="購入する際に気をつけたこと">購入する際に気をつけたこと</h3> <ul> <li><p>解像度<br/> 主に開発として使用するため解像度を重視しました。 ただ、画面サイズがでかくなると解像度が荒くなります。画面がでかいほど荒さが目立つので基準として、1枚の画面を真ん中で区切って2枚の画面と考えた時、左右それぞれの解像度がWQHDと同等の解像度を担保していることを中心にモニターを探しました。そうするとちょうど1枚の画面で5K(5120×1440)となります。</p></li> <li><p>パネル<br/> IPSパネルで曲面のものを選びました。開発をする上で画面の応答速度等は重要ではないため、写り込みがなく視野角の広いIPSパネルがおすすめです。<br/> 特徴として大きな画面の端まで綺麗に見えます。VAパネルだと画面の中心から端に視点を移動した際、角度によっては綺麗に見えません。</p></li> </ul> <h3 id="実際に使用してみて">実際に使用してみて</h3> <ul> <li>使用方法 私は1画面を真ん中で区切り、1画面を2つの画面として表示しています。この場合、入力端子2つに接続が必要です。<br/> DELLの一部のモニターにはPBP機能が備わっており、異なる入力ソースを2画面に分割表示することが可能です。</li> </ul> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825170339.jpg" alt="" /></p> <ul> <li><p>メリット</p> <ul> <li>画面のつなぎめなしで横並びが可能 <ul> <li>画面分割機能があれば、実質WQHD解像度の29インチモニターをつなぎめなしで横並びが可能です。</li> </ul> </li> <li>作業範囲が広い。  <ul> <li>画面がとても広く、画面のつなぎめもない分、モニター間のツールの移動がシームレスにできます。</li> </ul> </li> </ul> </li> <li><p>デメリット</p> <ul> <li><p>ウルトラワイドモニターの湾曲を活かしきれない。 </p> <ul> <li>モニターにもよりますが、湾曲のあるモニターでもモニターがデカすぎる為、正面から見ると湾曲であることを感じません。</li> </ul> </li> <li><p>視点移動が大変</p> <ul> <li>モニターがとにかく広いので端から端への視点移動がかなり大変です。</li> </ul> </li> <li><p>重い</p> <ul> <li>本体だけで17キロ。箱を含むと26キロあります。移動時は購入時に包装されていた箱だけが頼りです。必ず捨てないようにしましょう。</li> </ul> </li> <li><p>画面の解像度の選択肢に限りがある</p> <ul> <li>現在市場にあるスーパーウルトラワイドモニターの解像度は5Kです。画面を分割しした場合、27インチの画面が実質2枚となりますが、それぞれの解像度で4Kを担保したい場合、スーパーウルトラワイドモニター1画面あたり8Kの解像度を担保する必要があります。しかし、現在市場で取り扱われているモニターは5Kまでです。</li> </ul> </li> </ul> </li> </ul> <h3 id="まとめ">まとめ</h3> <p>実際にエンジニアとして、コーディングを行うことを前提としてスーパーウルトラワイドモニターを使ってみたところ、結論としては使いにくいと感じました。モニターを縦にして、コードを表示したい場合がありますが、スーパーウルトラワイドモニターはサイズが大きすぎて縦に配置することができません。また、湾曲をあまり感じることができず、横幅が広いため視点移動が非常に困難でした。その点、4Kモニターを2画面接続することで、それぞれの画面の向きを変えることができるため、視点移動が容易になります。画面の継ぎ目があったとしても、視点移動がしやすい方が作業効率の向上には大きなメリットとなります。</p> <p>ただし、横1画面に長くコードを表示させたり情報を表示させたいと思う場合には、スーパーウルトラワイドモニターはおすすめです。1画面として扱うと、横に表示できる情報量が驚くほど多いです。<br/> ターミナルからデータベースにアクセスして情報を表示する場合、抽出した情報の量が多いと1行が長くなるため、画面が横に長いほど非常に見やすくなり、作業効率が向上しました。<br/> その点においては、スーパーウルトラワイドモニターの利点が存分に発揮されます。</p> <p>ここまでご覧いただき、ありがとうございました。スーパーウルトラワイドモニターの購入を検討されている方にとって、このブログが参考になれば幸いです。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech 「プロダクトマネージャーになりたい人のための本」の感想 hatenablog://entry/820878482961545378 2023-12-28T07:00:00+09:00 2023-12-28T07:00:04+09:00 こんにちは、プロダクト課の石地です。 今回は6月に発売された「プロダクトマネージャーになりたい人のための本」を読み、自身の経験と照らし合わせながら面白いと感じた点を抜粋します。 「プロダクトマネージャーになりたい人のための本」とは? プロダクトマネージャー(以下PM)のキャリア支援で実績が豊富なクライス&カンパニー社のキャリアアドバイザーの方々が執筆された本です。私自身も約1年前にPMのキャリアをスタートしましたが、その転職活動の際に大変お世話になりました。 本の内容は主にPMの転職活動・キャリア作りに論点を置いています。本についてのプレスリリースと監修者の紹介記事は下記となります。 出版社の… <p>こんにちは、プロダクト課の石地です。</p> <p>今回は6月に発売された「プロダクトマネージャーになりたい人のための本」を読み、自身の経験と照らし合わせながら面白いと感じた点を抜粋します。</p> <h1 id="プロダクトマネージャーになりたい人のための本とは">「プロダクトマネージャーになりたい人のための本」とは?</h1> <p>プロダクトマネージャー(以下PM)のキャリア支援で実績が豊富なクライス&amp;カンパニー社のキャリアアドバイザーの方々が執筆された本です。私自身も約1年前にPMのキャリアをスタートしましたが、その転職活動の際に大変お世話になりました。</p> <p>本の内容は主にPMの転職活動・キャリア作りに論点を置いています。本についてのプレスリリースと監修者の紹介記事は下記となります。<br/> <a href="https://prtimes.jp/main/html/rd/p/000000323.000034873.html">出版社のプレスリリース</a> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fprtimes.jp%2Fmain%2Fhtml%2Frd%2Fp%2F000000323.000034873.html" title="新刊『プロダクトマネージャーになりたい人のための本』プロダクトマネージャーがより成長するための考え方・アクションも徹底解説" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://prtimes.jp/main/html/rd/p/000000323.000034873.html">prtimes.jp</a></cite> <a href="https://takoratta.hatenablog.com/entry/2023/05/29/174500">監修者の書籍紹介記事</a> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftakoratta.hatenablog.com%2Fentry%2F2023%2F05%2F29%2F174500" title="プロダクトマネージャーになりたい人のための本 - Nothing ventured, nothing gained." class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://takoratta.hatenablog.com/entry/2023/05/29/174500">takoratta.hatenablog.com</a></cite></p> <h1 id="全体的な感想">全体的な感想</h1> <p>PMに特化した本ですが、転職活動についてはどの職種にも重要で汎用的なノウハウが詰まっていて好印象でした。また、PM転職に関して求められるスキル・マインド、市況感、キャリア作りについても有用です。自身の転職時に海外のPM事例も含めてwebで細かく調べて得た知識や、転職活動の中で解像度を上げることが出来た内容もかなり含まれています。転職当時にこの本があれば、時間が節約できただろうと思いました。一方で、PMの経験があり、他の書籍をよく読んだり勉強会参加などをしている場合は物足りなく感じるかもしれません。PM転職の全体感を知りたい、という期待値に対してはバッチリ当てはまる本です。</p> <h1 id="面白いと感じた点">面白いと感じた点</h1> <p>PM転職以前の職種の章が面白かったです。<a href="https://note.com/pmconfjp/n/n8ad11e37d7ed">pmconfの調査レポート</a>を元に、それぞれの職種に対する企業側の期待値や視点、PM転職のための具体的なアクションを紹介しています。私もエンジニアとプロジェクトマネージャーを経て転職しましたが、当てはまる点がありリアルな情報であることを感じました。また、ドメインスペシャリストの現状については知見がありませんでしたが、その存在がチームに大きな影響を与えるならばこれからの需要が増えるだろうと感じました。</p> <h1 id="ためになった点">ためになった点</h1> <p>ピンポイントですが</p> <blockquote><p>プロダクトそのものを愛することはもちろん大切なのですが、「課題を愛する」視点ももってみてください<br/> <span style="font-size: 80%"><em>引用元:『プロダクトマネージャーになりたい人のための本 エンジニアからプロジェクトマネージャー・事業企画・経営コンサルタント・デザイナー・現役PMまで』- 及川(監修) ,松永・山本・武田(著) -(翔泳社:2023)</em></span></p></blockquote> <p>という一文がためになりました。おそらく源流は<a href="https://blog.leanstack.com/love-the-problem-not-your-solution/">リーン開発の考え方(?)</a>でしょうか。</p> <p>ためになったと感じた理由は、PM採用の現場において応用できると感じたからです。私自身も弊社のPM採用の現場に出ています。弊社はBtoBプロダクトをメインで提供しており、BtoCプロダクトのように気軽に実際に触れていただくことの難易度が高いです。そのため、興味を持っていただいた方が、弊社のプロダクトと相性の良さを判断していただく機会の少なさは課題です。そこで「課題を愛する」視点で、カジュアル面談等では弊社のプロダクトが向き合っている課題を適切にお伝えすることがより重要だと感じました。課題に対しての興味や共感を認識することで、お互いにミスマッチが防ぎやすくなると思います。</p> <p>上述の一文の背景は、採用現場の企業側向けではないですが、新しい視点を感じたので良かったです。</p> <h1 id="最後に">最後に</h1> <p>本書は日本のプロダクトマネージャーになりたい人に向けてしばらく刺さり続けるであろうと思います。興味が湧いた方はぜひ読んでみてください!</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech ロボペイTシャツ始めました hatenablog://entry/6801883189068901271 2023-12-25T07:00:00+09:00 2023-12-25T07:00:24+09:00 こんにちは。 株式会社ROBOT PAYMENTでUI/グラフィックなどのデザイン業務を担当している長井です。今後自社イベントを活発にしていき、会社の認知度アップのため、Tシャツを作ろうということになりました。 今回はそのプロセスをご紹介したいと思います。 まずは打ち合わせ 最初にみんなで集まり、どういうデザインが良いか議論しました。 「かっこいいTシャツがいい!」「普段着られるのがいいな〜」など様々な意見が出ました。 デザインの発散 最初は3案くらい出してみんなで決めようとのことだったのですが、なるべくデザインに幅を持たせることで議論を活性化させたいと思い、当初の10倍の30案くらい作りまし… <p>こんにちは。 株式会社ROBOT PAYMENTでUI/グラフィックなどのデザイン業務を担当している長井です。今後自社イベントを活発にしていき、会社の認知度アップのため、Tシャツを作ろうということになりました。<br/> 今回はそのプロセスをご紹介したいと思います。</p> <h2 id="まずは打ち合わせ">まずは打ち合わせ</h2> <p>最初にみんなで集まり、どういうデザインが良いか議論しました。<br/> 「かっこいいTシャツがいい!」「普段着られるのがいいな〜」など様々な意見が出ました。</p> <h2 id="デザインの発散">デザインの発散</h2> <p>最初は3案くらい出してみんなで決めようとのことだったのですが、なるべくデザインに幅を持たせることで議論を活性化させたいと思い、当初の10倍の30案くらい作りました。自社だからできるプロセスかなと思います。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231222/20231222192145.jpg" alt="" /></p> <p>デザインの方向性に関しては下記の軸で作りました。<br/> 1. ロゴをワンポイントに配置するシンプルな案<br/> 2. 水色〜青のグラデーションである会社のブランドカラーを意識した案<br/> 3. 深いブルーと幾何学的な装飾が特徴な採用サイトのデザインを意識した案<br/> 4. カタカナの”ロボペイ”のロゴT案<br/> 5. その他装飾を入れた案</p> <h2 id="デザインの収束決定">デザインの収束→決定</h2> <p>翌週にみんなで集まり、30案の中から4つに絞ることができました。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231222/20231222192152.jpg" alt="" /></p> <p>この時点でデザインをほぼ決定することができました。 初校を3案しか出さなかったら、「あのパターンもみたいな」「このパターンはどう?」などの議論が繰り返され、それから修正を何度も重ねる作業が発生していたのかなと思うと最初にデザインをたくさん発散しておいてよかったかなと思いました。</p> <h2 id="カラバリ検討">カラバリ検討</h2> <p>デザインが決まったということで、次に色の決定です。普段着でも使えたらいいな!という声が多かったことから、汎用性が高くどんな機会やシーンにも合わせやすいホワイト、ブラック、グレー、ネイビーの4色でいくことになりました。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231222/20231222192158.jpg" alt="" /></p> <h2 id="Tシャツの生地と厚みの剪定">Tシャツの生地と厚みの剪定</h2> <p>デザインと色が決まったので、印刷するTシャツの生地を決めていきます。このプロセスでは実際に触ってみないと判断できないので</p> <p>①素材:ポリエステル100%/厚み:4.4オンス<br/> ②素材:綿100%/厚み:5.6オンス<br/> の2つのサンプルを取り寄せ、オフィスで集まってみんなで決めました。</p> <p>実際に触ってみたところ、ポリエステルより綿の方が肌触りがよかったのと、4.4オンスと5.6オンスはかなり厚みが違い生地が透けず、しっかりした作りの5.6オンスがいいということになり、②に決定しました。Tシャツの生地として考慮すべき点は、素材以外に、「厚さ」という観点も重要だなと思いました。</p> <h2 id="入稿">入稿</h2> <p>いよいよデザイン入稿です。印刷に関しては今回は費用が抑えられるネット印刷にしました。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fapparel.raksul.com%2F" title="ラクスル|アパレル・ユニフォーム通販" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://apparel.raksul.com/">apparel.raksul.com</a></cite></p> <p>デザインの画像さえあれば入稿できる仕様になっており、ノンデザイナーでも簡単に行うことができます。イラストレーターやフォトショップがなくてもデザイン入稿ができる点は非常に便利だと思いました。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231222/20231222192204.png" alt="" /></p> <h2 id="完成">完成</h2> <p>ついに完成です! 生地も良い!と社内で評判でした。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231222/20231222192214.jpg" alt="" /></p> <p>みんなで集合写真も撮りました。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231222/20231222192220.jpg" alt="" /></p> <h2 id="まとめ">まとめ</h2> <p>デザイン提案から入稿まで2週間くらいのスピードだったと思います。少数メンバーで意思決定も早く、最初にデザイン案を発散させることで、出戻りを少なくすることができたのかなと思います。今はイベント登壇者のみの配布になっているようですが、今後社員全員にTシャツが配布されるといいですね!</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech 【エンジニア社内イベント】リモートランチ会の振り返りと今後のリニューアルポイント hatenablog://entry/820878482961534368 2023-12-21T07:00:00+09:00 2023-12-21T07:00:18+09:00 こんにちは!開発サポートをしているRP_Naoです! エンジニアの組織に所属し、エンジニアが本来の業務に集中できるようにサポートしています。イベント運営も開発サポートの仕事の一つです。 昨年からエンジニアのリモートランチ会をはじめて1年以上経ちました。(早!!!) 運営の立場から振り返り、最後に改善点を踏まえた今後のリニューアルポイントをお伝えしたいと思います。 そもそもなぜリモートランチ会を始めたのか? エンジニアの皆さんはほとんど毎日在宅勤務。 出社していれば、業務であまり関わらない人ともランチをきっかけに仲良くなったり、コミュニケーションが生まれるかもしれませんが、在宅勤務だと同じチーム… <p>こんにちは!開発サポートをしている<a href="https://profile.hatena.ne.jp/RP_Nao/">RP_Nao</a>です!<br/> エンジニアの組織に所属し、エンジニアが本来の業務に集中できるようにサポートしています。イベント運営も開発サポートの仕事の一つです。</p> <p>昨年からエンジニアのリモートランチ会をはじめて1年以上経ちました。(早!!!)<br/> 運営の立場から振り返り、最後に改善点を踏まえた今後のリニューアルポイントをお伝えしたいと思います。</p> <h2 id="そもそもなぜリモートランチ会を始めたのか">そもそもなぜリモートランチ会を始めたのか?</h2> <p>エンジニアの皆さんはほとんど毎日在宅勤務。<br/> 出社していれば、業務であまり関わらない人ともランチをきっかけに仲良くなったり、コミュニケーションが生まれるかもしれませんが、在宅勤務だと同じチームの人や業務でやり取りをする人としか話さない・・という状況になっていました。</p> <p>昨年からプロダクト開発本部には、新しい仲間がたくさん増えたので、チームの垣根を越えて交流できる場を作ることで組織全体のコミュニケーション活性化を図ろうという目的で開催がスタートしました!</p> <h2 id="これまでのリモートランチ会はどんなの">これまでのリモートランチ会はどんなの?</h2> <p>頻度は月に1回、毎月第3水曜日12:00〜12:50で固定し、開催していました。</p> <p><strong><基本的なルール></strong></p> <ul> <li>1チームの人数は3〜4人</li> <li>Google Meetのブレイクアウトの機能を使って、1回メンバーをシャッフルする</li> <li>時間は20分ずつ</li> <li>話す内容は自由</li> <li>お昼ごはんは各自で用意してもらう</li> </ul> <p>ただ、話題に困ることもあるかな〜と思ったので、こちらでテーマを用意し、「ご自由にお使いください」スタイルでたくさん提示していました。</p> <ul> <li>休日の過ごし方</li> <li>教えて!あなたのルーティーン</li> <li>教えて!あなたの愛読書!</li> <li>おすすめの好きな動画をシェアしよう</li> <li>今欲しいものは?</li> <li>おすすめの映画をシェアしよう</li> <li>わたしのこだわりアイテムを紹介</li> <li>最近嬉しかったこと</li> <li>ペット紹介</li> <li>学生時代の部活や趣味</li> <li>好きな有名人やキャラクター</li> <li>テレワーク環境での工夫を共有</li> <li>健康のためにしていること</li> </ul> <h2 id="何回も繰り返しているうちに課題が出てきました">何回も繰り返しているうちに課題が出てきました・・・</h2> <p>上記のルールで、毎月第3水曜日に、計9回開催しました。<br/> しかし、回を重ねる毎に新鮮味がなくなり、いろいろな課題を感じるようになってきました。</p> <p>ただ、実際にメンバーが感じている不満や課題がどのようなものか不明瞭だったので、10回目のリモートランチ会の時間は特別に、課題と解決案についてディスカッションをしてもらうことにしました。Jamboadを使って自由に意見を出してもらい、代表1名が全体へ発表をしてもらうようお願いしました。<br/> 最後に、アンケートでどのチームの解決案が良かったかを投票していただきます。</p> <p>↓↓↓投票数が1番多かったチームのボード↓↓↓ <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825164359.png" alt="" /></p> <p>全体的に多かった課題として、</p> <ul> <li>ランチが食べられない(準備をする時間がない)</li> <li>MTG(業務)っぽくなってしまい、リラックスできない</li> <li>話題に困る</li> <li>話題に困った時用のテーマが多いので結局話すテーマが定まらない</li> <li>開催頻度が多い</li> </ul> <p>などがありました。</p> <p>様々な課題を踏まえ、投票数の多かった「ブレイクアウト8」チームの解決案を参考にさせてもらい、次回からリニューアル版をスタートさせます!!!(祝)</p> <p>↓↓↓実際に案内したリニューアル内容↓↓↓ <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825164406.png" alt="" /></p> <h2 id="リニューアル版は何が変わった">リニューアル版は何が変わった?</h2> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825164413.png" alt="" /></p> <p>全体の開催時間は短くして負担を減らしましたが、メンバー交代をなくしたので、同じメンバーでゆっくり喋ることができます。<br/> また話題に困るという意見が多かったので、テーマは運営側が1つ提示することにしました。今後、メンバからもテーマを募集できたらと考えています。<br/> そして、「ランチを出してほしい!」という声も多かったので、<a href="https://nonpi-foodbox.com/">nonpi foodbox</a>というサービスを使用して、開催当日の午前中に各自の自宅にランチボックスが届くように運営していく予定です!</p> <h2 id="さいごに">さいごに・・・</h2> <p>あたりまえのことですが、どんなことも惰性的に続けるのではなく、少しでも課題感や意見があれば共有して改善していくことって大切ですよね。<br/> ROBOT PAYMENTのメンバーは、一人一人がフラットに意見を言い合える関係性が築けていて良いな〜と実感しました。<br/> 貴重な時間を使って、意見出しをしてくださったエンジニアのみなさんに感謝です。<br/> これからも、エンジニアのみなさんがより働きやすい環境にしていけるよう、開発サポートとして精進します!</p> <p>最後まで読んでいただき、ありがとうございました!</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech エンジニア未経験から10ヶ月経ちました。 hatenablog://entry/820878482961528768 2023-12-14T07:00:00+09:00 2023-12-14T07:00:38+09:00 ご挨拶 こんにちは。フィナンシャルクラウドシステム課で請求管理ロボの開発に携わっている木村です。ROBOT PAYMENTに入社と同時に、未経験からエンジニアとして働き始めてから10ヶ月が経つのでそろそろ1年になります。これまで意識したこと、気づいたことなど、ざっと振り返りました。これからエンジニアとして働き始める方などに、少しでもご参考になれば幸いです。 ざっと今までの振り返り ROBOT PAYMENTには2022年の9月に入社しました。当時参画した時、私の所属しているチームでは請求管理ロボのインボイス制度(適格請求書等保存方式)対応のリリース間近だったため、当対応における結合テストを実施… <h4 id="ご挨拶">ご挨拶</h4> <p> こんにちは。フィナンシャルクラウドシステム課で請求管理ロボの開発に携わっている木村です。ROBOT PAYMENTに入社と同時に、未経験からエンジニアとして働き始めてから10ヶ月が経つのでそろそろ1年になります。これまで意識したこと、気づいたことなど、ざっと振り返りました。これからエンジニアとして働き始める方などに、少しでもご参考になれば幸いです。</p> <h4 id="ざっと今までの振り返り">ざっと今までの振り返り</h4> <p> ROBOT PAYMENTには2022年の9月に入社しました。当時参画した時、私の所属しているチームでは請求管理ロボのインボイス制度(適格請求書等保存方式)対応のリリース間近だったため、当対応における結合テストを実施することが私のエンジニアとして初めてのタスクでした。(テスト項目が多く大変でした。。)<br/>  以降は、新機能開発から規模の小さな機能改修まで、各々のプロジェクトにおける要件定義、実装のタスク、テスト仕様書作成、テスト実施など、1プロジェクトの中で分割されたタスクの一つに担当として取り組んでみるなどしていました。<br/>  現在は、規模の大きい開発を推進するレベルではありませんが、あるプロジェクトをリリースまで主担当として取り組んでみているといった状況になります。<br/>  常に、エンジニアとしての一般的な技術のキャッチアップや、請求管理ロボの仕様のキャッチアップと並行して上記を進めていったような感じになります。</p> <h4 id="エンジニアとして働いて楽しかったこと">エンジニアとして働いて楽しかったこと</h4> <h5 id="実装が面白い">①実装が面白い</h5> <p>  例えば、ある項目を画面に表示させるような簡単な実装でも、目的を達成できた時は気持ちが良いです。一つづつクリアしていくことで、それは自信につながりました。</p> <h5 id="自社のサービスがお客様に喜ばれていることを知った時">②自社のサービスがお客様に喜ばれていることを知った時</h5> <p>  これについては直接的に私が関わってはいなかったのですが、slackでカスタマーサクセスの方からの以下画像のようなコメントを見かけるだけでも、ユーザーから喜ばれるサービスの開発に、自分も関わっていけることを考えると嬉しくなりました。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825162315.png" alt="" /></p> <h5 id="輪読会などの学習イベントが多い">③輪読会などの学習イベントが多い</h5> <p>  今所属しているチームは毎週月曜日に輪読会を実施しており、現在は『SQLアンチパターン』の輪読会を実施しています。読んでいてよくわからない箇所はメンバーに確認ができたり、自分以外の人はどう感じているのか意見の擦り合わせができるので勉強になります。自分では手に取らないレベルの書籍も扱うことがあるので、そういった意味では強制的にインプットせざるを得ない状況になり、そういう面でも個人的に好きです。<br/>  輪読会に限らず他、有志の勉強会など社内的に学習の機会が多くあり非常にためになり楽しいです。現在は、『請求管理ロボのユーザー理解を深めようの会』に参加しています。ユーザーインタビュー動画を見た後に、エンジニア同士で各々の感想を共有し合うような会です。普段、ユーザーの意見を聞く機会が業務上少ないため、新しい気づきがあり面白いです。</p> <h4 id="エンジニア未経験スタートしてこれまで意識したこと">エンジニア未経験スタートしてこれまで意識したこと</h4> <h5 id="自分から積極的に動いてみる">①自分から積極的に動いてみる</h5> <p> 自分が今(その時)持っている能力では達成しづらいタスクに積極的に手を挙げるようにしました。毎週のスプリントプランニングで、メンバーのタスク割り振りをする際、そのようなタスクをやってみたいことをチームメンバーに相談します。プロジェクトの納期や難易度の兼ね合いもあるため、何でもかんでも手を挙げるわけではありませんが、手を挙げた際には快く任せてくれ、サポートしていただけるチームメンバーには大感謝しています。<br/>  チャレンジングなタスクに手を挙げることについては、まだ自分が知らない機能の仕様を知る機会を作るためであったり、要件定義であれば、まずどんな要求であるかを十分に把握する必要があることを経験するためだったり、さまざまだと思っていますが、今まで自分ができなかったことをできるようになったと知るには、今までできなかったことに挑戦していくしか方法はないため、自分から動く必要があると思っていました。<br/>  ここ最近では、slack上でカスタマーサクセスの方からの問い合わせに対して、できるだけ反応し、自分で調査し回答してみています。  今振り返ってみた時に、10ヶ月前の自分だったらこれはできなかっただろうな、と思う部分は少なからずあると感じたため、些細なことでも積極的に動いてみることは大切だと思いました。</p> <h5 id="素直さ">②素直さ</h5> <p> わからないことは素直にわからないことを認め、自分で調べた上で人に相談するようにしました。何か質問をする前に、『エンジニアであればわかっていて当然のことなのかな。、?』と心配することもありますが、先ずは自分で調べた上でも解決しなければ、その思っていたことを素直に発言するようにしました。『理解できた?』と言われた時、理解できていなければ正直に聞き直すなどします。教えてくれる側も、相手には素直でいてほしいと思っているのでは?と思っています。ちなみにROBOT PAYMENTのエンジニアは全員優しいので、前提知識の確認から丁寧に教えてくれます。 </p> <h4 id="大事だと気づいたこと">大事だと気づいたこと</h4> <h5 id="質問のしかたが大切">質問のしかたが大切</h5> <p> 弊社のエンジニアは基本フルリモート勤務のため、コミュニケーションは基本slackで、テキストベースか、huddle機能を使っての会話となります。オンラインでも声をかけやすい雰囲気作りがなされているため質問をするにも、雑談するにも何の会話をするにしても助かっています。とは言いつつも、流石にオフラインで同期的に会話をするような状況とは少し違うと思っています。未経験からエンジニアスタートしたての時は特に質問の仕方の難易度が高いのかな?と思います。<br/>  先ずは、今課題と感じていることで結論から先に伝え、それに対してどういう考えを持って解決しようとしているかを分かりやすく伝えるようにすることが大切と学びました。(今も絶賛訓練中です)  できるだけテキストベースで質問した方が自分にとって考えを整理する時間が作れ、かつ相手の時間を取らないことができると思いますが、時にはhuddleを繋いで同期的に会話することも大切であると気づきました。例えば実装中、目的が達成できずつまづいている時には、会話の壁打ちのような(ラバーダッキング的な)感じでも声に出して相手に説明することで、考えがまとまって解決に近づくことがあったためです。<br/>  また、人と会話をすることでリフレッシュできることもあるためそういった意味でも、会話するのは良い効果がありそうと思いました。</p> <h5 id="もしかしたらこれが最初のうちは一番大切かもと思ったこと">もしかしたらこれが最初のうちは一番大切かもと思ったこと。</h5> <p>『相手に伝わりやすい説明をする』ことが一番大切なことであり、日々敏感にならなきゃいけない部分だと感じました。特に未経験からエンジニアになったばかりの時は、技術的にも未熟でわからないことが多くあり大変でした。(今も絶賛格闘中です。)その際何がわからないのか(そもそもそれを解決することが本筋なのかはさておき)しっかり相手に伝わらなければ納得感は得づらいと学びました。</p> <h4 id="まとめ">まとめ</h4> <p>  こうやって書くとちょっと恥ずかしいですが、1年を振り返る良い時間となりました。これからも頑張っていきます。ありがとうございました。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech 「やるなら、みんなで。」PCS DSS監査対応チームの話 hatenablog://entry/820878482961526882 2023-12-07T07:00:00+09:00 2023-12-07T07:00:31+09:00 ごあいさつ こんにちは。サブスクペイのペイメントシステム課CREのHori_kです。 弊社はクレジットカード決済を扱う会社なので、PCI DSSというクレカ業界のセキュリティ基準に準拠しています。なにそれ?という方はググったりうちのボスのブログを読んだりしてください。 tech.robotpayment.co.jp tech.robotpayment.co.jp 3月から5月にかけて、そのPCI DSSの監査対応にチームで当たりました。その時のチーム体制が、自分の過去の経験とは違いわが社のよい文化だと感じたのでブログに書こうと思います。 読者の職場のセキュリティ基準対応はどんな体制ですか? こ… <h3 id="ごあいさつ">ごあいさつ</h3> <p>こんにちは。サブスクペイのペイメントシステム課CREのHori_kです。<br/> 弊社はクレジットカード決済を扱う会社なので、PCI DSSというクレカ業界のセキュリティ基準に準拠しています。なにそれ?という方はググったりうちのボスのブログを読んだりしてください。 <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.robotpayment.co.jp%2Fentry%2F2022%2F07%2F21%2F103900" title="サブスクペイのPCI DSS対応 - ROBOT PAYMENT TECH-BLOG" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tech.robotpayment.co.jp/entry/2022/07/21/103900">tech.robotpayment.co.jp</a></cite> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.robotpayment.co.jp%2Fentry%2F2022%2F12%2F22%2F070000" title="PCI DSSバージョン4.0について - ROBOT PAYMENT TECH-BLOG" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tech.robotpayment.co.jp/entry/2022/12/22/070000">tech.robotpayment.co.jp</a></cite> 3月から5月にかけて、そのPCI DSSの監査対応にチームで当たりました。その時のチーム体制が、自分の過去の経験とは違いわが社のよい文化だと感じたのでブログに書こうと思います。</p> <h3 id="読者の職場のセキュリティ基準対応はどんな体制ですか">読者の職場のセキュリティ基準対応はどんな体制ですか?</h3> <p>こういうブログですから、読みに来た方も職場でなにかしらセキュリティ基準の対応などしているのかなと思います。PCI DSSであったり、PマークやISMS認証であったり、いろいろありますね。<br/> さて、その対応に当たっての担当者はどうなってますか?<br/> 多くの職場で、主な担当者は毎年同じ人で、周囲は担当者にただ従う形で対応しているのではないでしょうか。自分の昔の職場ではそうでした。こういう監査とか、まずは独特の言語表現やお約束事を理解するところからですし、毎年のことですからそれは毎年同じ人が担当するのが楽です。工数もかけないで済みます。</p> <h3 id="ペイシスの監査対応チームは真逆でした">ペイシスの監査対応チームは真逆でした。</h3> <p>さて、自分が今年のPCI DSS監査のMTGに他のメンバーともども呼ばれたのは3月の事でした。入社して1年未満のころ。前述のような体制に慣れていた私はMTGにもお客さん気分で油断していました。そこであった監査対応チームの説明は次の通りです。</p> <ul> <li>昨年、監査対応に当たったベテラン社員'sは今回の主担当はやりません。助言、サポートはします。</li> <li>今年の担当は、去年は監査対応に当たらなかったベテラン社員さんがリーダーです。</li> <li>Hori_Kさんも担当要件をいくつか持って監査員に説明してね。</li> </ul> <p>え?まじですか?会社の信用にかかわる重要な監査なのに、私なんかが監査員に説明するのですか?<br/> そんな感じで戦いは始まりました。</p> <h3 id="さあ-PCI-DSS-監査対応です">さあ PCI DSS 監査対応です!</h3> <p>さて、PCI DSSの監査対応の内容については、本稿では割愛します(笑)<br/> 本稿ではチームの話。</p> <ul> <li>不慣れな作業。まずは資料をどう読み解くか日本語がわからん状態でしたが、この順番で資料をみると理解が進むよ!などと積極的に共有してくれるメンバーがいて助かりました。ありがとう!</li> <li>自分のキャパをオーバーした要件は、調整していただき他のメンバーに助けてもらいました。ありがとうありがとう!</li> <li>昨年の担当メンバーにもなんだかんだとサポートしていただきました。</li> <li>ペイメントシステム課では通常業務は基盤・機能開発・CREチームと業務が分かれているのですが、今回の監査対応チームはそれらを横断して対応するので、いつもより多くコミュニケーションが図れました。</li> </ul> <h3 id="やるならみんなで">「やるなら、みんなで。」</h3> <p>さて、タイトルに入れた「やるなら、みんなで。」<br/> これは実は、弊社の開発チームが大切にしている価値観の4本柱の1つです(他の3つは何か?ページ下部の採用リンクから確認できます)。こういう、掲げた価値観が建前だけになってしまうことも世間ではありそうですが、弊社はちゃんと実践しているなと実感しました。 みんなで対応したことで、慣れているいつもの人が対応するよりも工数はかかります。しかし、PCI DSSについての理解はとても深まり、今後の業務に活かせそうです。 また、PCI DSSの監査対応の前後では、会社の福利厚生とケータリングサービスを使って、決起会、お疲れ様会のオンライン飲み会などもありました。リモートワークなので同僚となかなか一緒に飲みに行ったりは出来ないので、オンライン飲み会、楽しい時間でした!<br/> 最後にその時の写真を紹介します。食べて飲むのに忙しくて雑な写真ではありますが。1枚目が決起会の和風セットで2枚目がお疲れ様会のイタリアンですね。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825161512.jpg" alt="" /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825161519.jpg" alt="" /> では、ここまで読んでくれてありがとうございました!</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech コンテナイメージのビルド時間の変化を振り返ってみた hatenablog://entry/820878482961524056 2023-11-30T07:00:00+09:00 2023-11-30T07:00:36+09:00 こんにちは。SRE課の trunkatree です。 請求管理ロボ のシステムはコンテナベースで構築していますが、今回はここ半年ほどのコンテナイメージのビルド時間の変化について振り返ってみたいと思います。 背景 集計結果 変更点とビルド時間の変化 ビルド済みの場合はビルド処理をスキップ GPG keyをアップデート CodeBuild実行環境のイメージを最新化&ローカルキャッシュ機能を有効化 改めて不要となった処理を削除 終わりに 背景 請求管理ロボSREチームは現在、本番環境/検証環境のAWSアカウントを分離してマルチアカウント戦略を実現することをメインに仕事を進めています。その中で、ビルド… <p>こんにちは。SRE課の <a href="https://twitter.com/trunkatree">trunkatree</a> です。<br/> <a href="https://www.robotpayment.co.jp/service/mikata/">請求管理ロボ</a> のシステムはコンテナベースで構築していますが、今回はここ半年ほどのコンテナイメージのビルド時間の変化について振り返ってみたいと思います。</p> <ul class="table-of-contents"> <li><a href="#背景">背景</a></li> <li><a href="#集計結果">集計結果</a></li> <li><a href="#変更点とビルド時間の変化">変更点とビルド時間の変化</a><ul> <li><a href="#ビルド済みの場合はビルド処理をスキップ">ビルド済みの場合はビルド処理をスキップ</a></li> <li><a href="#GPG-keyをアップデート">GPG keyをアップデート</a></li> <li><a href="#CodeBuild実行環境のイメージを最新化ローカルキャッシュ機能を有効化">CodeBuild実行環境のイメージを最新化&amp;ローカルキャッシュ機能を有効化</a></li> <li><a href="#改めて不要となった処理を削除">改めて不要となった処理を削除</a></li> </ul> </li> <li><a href="#終わりに">終わりに</a></li> </ul> <h2 id="背景">背景</h2> <p>請求管理ロボSREチームは現在、本番環境/検証環境のAWSアカウントを分離してマルチアカウント戦略を実現することをメインに仕事を進めています。その中で、ビルド時間の改善が見込めることもついでに取り組んできました。ビルド時間の改善を主目的として取り組んだわけではないので、その後の変化については肌感でしか確認していなかったのですが(計測せよ!)、今回のブログ執筆を良い機会と思って改めて振り返ってみたいと思います。</p> <h2 id="集計結果">集計結果</h2> <p>早速ですが集計した結果は次のようになりました。全体としては若干ですが短縮傾向と言えそうです。 コンテナイメージのビルド環境にはCodeBuildを利用しており、実行者はその開始から終了までを待つことになるのでCodeBuildの実行時間で集計しています。横軸にはビルド実行1件1件を時系列順に並べており、縦軸は実行時間となっている棒グラフです。データセットはSUCCEEDED終了した実行のみとし、またグラフの見やすさを優先するために極端な外れ値は除外しています(3件程度です)。</p> <ul> <li><strong>CodeBuildの実行時間(duration = endTime - startTime)</strong></li> </ul> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825160201.png" alt="duration" /></p> <ul> <li><strong>CodeBuildのビルドフェーズのうち PRE_BUILD, BUILD, POST_BUILD を抜粋(積み上げ棒グラフ)</strong> <ul> <li>縦軸の単位: 秒</li> </ul> </li> </ul> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825160207.png" alt="PRE_BUILD,BUILD,POST_BUILD" /></p> <p>データセットは、昨年2022年10月から本ブログ執筆中の2023年6月までのデータとなっています。2022年下半期は冒頭でお伝えしたAWSアカウント分離という目標に向けてCI/CDパイプラインのマルチアカウント対応に取り組んでいました。これまでは Jenkins + CodeBuild でパイプラインを構築していましたが、AWSリソースは環境間で使い回しており、このままではAWSアカウントをまたいだ設定が必要になってくるため改善を検討しました。結果として、JenkinsはCodePipelineに置き換え、CodePipeline + CodeBuild となったパイプラインはTerraformで定義し、環境毎に独立してプロビジョニングするようにしました。</p> <p>このような取り組みの中で、ビルド環境(CodeBuild)が環境毎に用意されたのが2022年10月頃で、それ以前のデータを集計しようとすると少々難易度が上がるので、今回はそれ以降のデータで集計しています。</p> <p>「ビルド → DBマイグレーション → デプロイ」等の各処理をそれぞれ個別のCodeBuild Projectで実行しており、これらをCodePipelineでフロー化しています。今回の集計は「ビルド」処理のCodeBuildの実行時間を集計しています。また、CodeBuildにはビルドフェーズという実行ステップの概念がありますが、PRE_BUILDフェーズでは処理に必要なツール等のインストール、BUILDフェーズでは主に <code>docker build</code>、POST_BUILDフェーズでは主に <code>docker push</code> をしています。</p> <h2 id="変更点とビルド時間の変化">変更点とビルド時間の変化</h2> <p>それでは、ビルド時間に影響がありそうな改修と実際の変化を照らし合わせながら集計結果を振り返ってみます。下記の他にも、インストールしているパッケージのバージョン更新などはありましたが、実行時間への影響は軽微そうだったので紹介は省略しています。</p> <h3 id="ビルド済みの場合はビルド処理をスキップ">ビルド済みの場合はビルド処理をスキップ</h3> <p>2022年12月上旬、指定したバージョンのソースコードからコンテナイメージがビルド済みであった場合はビルド処理をスキップするようにしました。その結果、スキップとなった際にはPRE_BUILDフェーズのみが残って、BUILD, POST_BUILDフェーズは0秒(スキップ)となり、グラフが歯抜けのように変わりました。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825160213.png" alt="skip" /></p> <p>これまではアプリケーションコードに変更がなくても、パイプラインを動かす度にイメージをビルドしてコンテナレジストリ(ECR)にpushしていました。このやり方では下記のような問題があったため、CI/CDパイプラインに手を付けたついでに改善に取り組みました。</p> <ul> <li>コンテナイメージの一意性が失われており、バージョン管理の観点でリスクがある</li> <li>アプリケーションに変更がなくてもわざわざビルドし直しているので余計な時間/コストがかかっている</li> </ul> <p>ビルドする前にイメージの存在を確認して、ビルドするかどうかを判断する制御を入れました。ビルド処理自体の変化ではないですが、パイプライン実行者(開発者)の体験は多少変わったのではないかと思っています。</p> <h3 id="GPG-keyをアップデート">GPG keyをアップデート</h3> <p>2023年1月下旬、PRE_BUILDフェーズにGPG keyをアップデートする一文を追加しました。2つ目のグラフは、1つ目のグラフから PRE_BUILD フェーズのみを抜き出したものです。少しだけ上昇したでしょうか。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825160219.png" alt="GPG" /></p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825160225.png" alt="GPG_PRE" /></p> <p>詳しい内容はリンクのIssueを参考にしていただければと思いますが、とりあえずビルドを通すために必要となった処置です。こういう地味な保守作業、なかなか避けられないですよね。</p> <blockquote><p>curl -sS <a href="https://dl.yarnpkg.com/debian/pubkey.gpg">https://dl.yarnpkg.com/debian/pubkey.gpg</a> | sudo apt-key add -</p></blockquote> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fyarnpkg%2Fyarn%2Fissues%2F7866" title="Yarn Debian key expiry date updated (EXPKEYSIG 23E7166788B63E1E) · Issue #7866 · yarnpkg/yarn" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://github.com/yarnpkg/yarn/issues/7866">github.com</a></cite></p> <h3 id="CodeBuild実行環境のイメージを最新化ローカルキャッシュ機能を有効化">CodeBuild実行環境のイメージを最新化&amp;ローカルキャッシュ機能を有効化</h3> <p>2023年2月中旬、CodeBuild実行環境のイメージを最新化したのと、CodeBuildのローカルキャッシュ機能を有効化しました。イメージは <code>aws/codebuild/docker:18.09.0</code> から <code>aws/codebuild/standard:6.0</code> に更新し、PRE_BUILDフェーズからAWS CLIのインストール処理を削除しました。これらは同じタイミングでリリースしたのでまとめて書いています。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825160230.png" alt="image" /></p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825160236.png" alt="image_PRE" /></p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825160242.png" alt="image_BUILD" /></p> <p>以前は数あるCodeBuild Projectで使用しているイメージがバラバラな状況で、コードでリソース管理もしておらず、メンテナンスしづらいという課題がありました。先述のCI/CDパイプラインのTerraform化に取り組んだことで、やっとラクにCodeBuild Project群を統率できるようになったので、イメージの整理と最新化に取り組みました。また、これに合わせて簡単に改善できそうなことはついでに取り組むこととし、ローカルキャッシュ機能を有効化したり、AWS CLIのインストール処理を削除したりしました。これまではPRE_BUILDフェーズでAWS CLIをわざわざインストールしていたのですが、新しいイメージではプリインストールされており、明らかに不要だとわかっていたためこのタイミングで削除しました。</p> <p>ローカルキャッシュ機能について、我々のユースケースではそこまで連続的にCodeBuildを実行することはないので、キャッシュが効いて時間短縮につながる場面はあまりないかなという見立てでしたが、副作用も特になさそうだったので有効化しました。</p> <p>グラフを見ると、BUILDフェーズは短縮していますが、PRE_BUILDフェーズは長くなっていますね。全体としてはほんの少し減少傾向でしょうか。</p> <h3 id="改めて不要となった処理を削除">改めて不要となった処理を削除</h3> <p>2023年3月下旬、改めてbuildspec.ymlに記載している処理を確認し、不要なものを削除しました。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825160248.png" alt="remove" /></p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825160254.png" alt="remove_PRE" /></p> <p>2月中旬にCodeBuild実行環境のイメージを最新化したことで、これまで古いイメージのまま動かし続けるためにわざわざ入れていた処理を削除することができるようになったので、忘れないうちにキレイにしておきました。前述の通り、AWS CLIのインストール処理については明確に不要とわかっていたため先に削除しましたが、その他の処理についてはこのタイミングで改めて確認しました。結果として、PRE_BUILD フェーズから</p> <ul> <li>前述のGPG keyのアップデート処理を削除</li> <li><code>apt-get update</code> と <code>apt-get install -y hoge fuga ...</code> 処理を削除</li> </ul> <p>を実施しました。グラフを確認すると、PRE_BUILD のベースラインが下がっています。</p> <h2 id="終わりに">終わりに</h2> <p>今回はコンテナイメージのビルド時間に着目して変化を振り返ってきました。実施してきたことは、"CodeBuildをTerraform化して変更へのハードルが下がったのでいろいろとキレイにした" という保守作業やボーイスカウトルールのようなものですが、結果的にビルド時間も改善できていてよかったです。古くなった実装を放置せず、負債にならないようにちゃんと更新しておくことは将来コードを見る誰か(自分自身を含む)の時間をsaveすることにつながりますし、今回の場合はビルド時間も短縮できていることがわかりました。アップデートを怠らずにシステムのベースラインを上げ続けることの大切さを感じます。</p> <p>補足ですが、今回の改善は "ついで" のスタンスで取り組んできたことなので、あまり深入りせずにできる改善にとどめています。ビルド時間の短縮を主目的とするならば、Dockerfileの改善やCodeBuild実行環境イメージの事前作成など、考えられることはいろいろありそうです。</p> <p>さらに余談ですが、なにかの処理時間の改善に取り組む際は、その効果についてしっかり意識して取り組むのがよいと思っています。例えば、Webのレスポンスタイムであれば1秒なら十分早いのではという話があります。(この例はテキトーですが)1.5秒を1秒にするのと1秒を0.5秒にするのとでは効果が異なるかもしれません。はたまた、カップラーメンの待ち時間が3分に設定されているのは人間がイライラせずに待てる時間の限界が3分であるからという話があります。5分を4分にするのと4分を3分にするのとでは効果が異なるかもしれません。現状が5分であれば、3分まで改善しない限り効果は薄いかもしれません。</p> <p>今回のビルド時間の改善について言えば、おそらく効果があるほどの改善にはなっていないだろうと思います。なのでやはり "ついで" 程度の結果ではあったかなと思いました。取り組んだ意義は前述のとおり負債を残さないという点にあると思います。</p> <p>それではまたお会いしましょう。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech イベント告知|ロボペイTechNight_vol.1【12月14日(木)19:00 @Zoom】 hatenablog://entry/6801883189062567874 2023-11-29T12:00:00+09:00 2023-11-29T17:42:17+09:00 20231214event ▼▼▼ 申し込みはこちらから ▼▼▼ cloudpayment-sys.connpass.com ■ ロボペイTechNightとは? 自社サービスを開発運用している中で、技術的負債の蓄積や非効率なオペレーションなど困っていることはありませんか? ROBOT PAYMENTでも複数のサービスを開発運用していますが、さまざまな問題に直面しています。 本イベントでは、弊社運用サービスである「サブスクペイ(運用歴20年超)」や「請求管理ロボ(運用歴8年)」で直面した問題に対する取り組みや結果を、現場エンジニアが登壇しロボペイの”リアル”を定期的にお伝えします! 気軽に立ち… <p><figure class="figure-image figure-image-fotolife" title="20231214event"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231129/20231129103559.jpg" width="660" height="347" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>20231214event</figcaption></figure></p> <h5 id="-申し込みはこちらから-">▼▼▼ 申し込みはこちらから ▼▼▼</h5> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fcloudpayment-sys.connpass.com%2Fevent%2F302461%2F" title="ロボペイTechNight_vol.1 (2023/12/14 19:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://cloudpayment-sys.connpass.com/event/302461/">cloudpayment-sys.connpass.com</a></cite></p> <h4 id="-ロボペイTechNightとは">■ ロボペイTechNightとは?</h4> <p>自社サービスを開発運用している中で、技術的負債の蓄積や非効率なオペレーションなど困っていることはありませんか?<br/> ROBOT PAYMENTでも複数のサービスを開発運用していますが、さまざまな問題に直面しています。</p> <p>本イベントでは、弊社運用サービスである「サブスクペイ(運用歴20年超)」や「請求管理ロボ(運用歴8年)」で直面した問題に対する取り組みや結果を、現場エンジニアが登壇しロボペイの”リアル”を定期的にお伝えします!<br/> 気軽に立ち寄って聞けるようなカジュアルな会を目指します!</p> <p>何かご自身の組織に活かせる気づきや学びを少しでも得られれば幸いです。</p> <h4 id="-こんな方におすすめです">■ こんな方におすすめです</h4> <p>● 現在チームリーダーをしている方<br/> ● 現在システムアーキテクトをしている方<br/> ● 現在エンジニアリングマネージャーをしている方<br/> ● これから持続的改善の取り組みを行うとしている方<br/> ● 生産性向上や技術負債解消への取り組みに興味がある方<br/> ● 他社の開発プロセスや取り組み、事例に関心がある方</p> <h4 id="-イベント詳細">■ イベント詳細</h4> <p>日時:2023年12月14日(木)19:00〜20:10<br/> 会場 : オンライン(予約時、「参加者への情報」にURLを記載しております)<br/> 費用:無料</p> <h5 id="タイムスケジュール">【タイムスケジュール】</h5> <p>18:50 Zoomオープン<br/> 19:00 オープニング<br/> 19:05 LT①~サブスクペイの技術的負債解消に向けた取り組み~(ROBOT PAYMENT 川上)<br/> 19:15 LT②~新規機能開発における技術的負債解消への取り組み~(ROBOT PAYMENT 髙森)<br/> 19:25 LT③~単体テスト高速化~(ROBOT PAYMENT 花塚)<br/> 19:35 LT④~GASで楽な工数管理~(ROBOT PAYMENT 谷口)<br/> 19:45 LT⑤~生産性の計測がもたらした開発組織の変化のきっかけ~(ROBOT PAYMENT 白坂)<br/> 19:55 視聴者Q&amp;A(全員)<br/> 20:15 クロージング・アンケート<br/> 20:30 終了</p> <h5 id="-申し込みはこちらから--1">▼▼▼ 申し込みはこちらから ▼▼▼</h5> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fcloudpayment-sys.connpass.com%2Fevent%2F302461%2F" title="ロボペイTechNight_vol.1 (2023/12/14 19:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://cloudpayment-sys.connpass.com/event/302461/">cloudpayment-sys.connpass.com</a></cite></p> <h4 id="-登壇者">■ 登壇者</h4> <p><strong>【株式会社ROBOT PAYMENT CTO 白坂 有己人】</strong><br/> 新卒でロボットペイメントに入社し、新規事業推進室にて請求管理ロボの立ち上げに参画。その後同サービスのディレクションや開発を担当。 2019年9月よりスタートアップにカスタマーサクセスエンジニアとして転職するも、2021年からは再び請求管理ロボのエンジニアリングマネージャーとして復帰。趣味はサーフィン。</p> <p><strong>【株式会社ROBOT PAYMENT サーバーサイドエンジニア 谷口誠】</strong><br/> 大阪出身、神奈川在住<br/> 複数の会社でソーシャルゲームやIaasのクラウドサービス、社内SE業務等の開発等に従事しました。<br/> 2019年2月にサーバーサイドエンジニアとして株式会社ROBOT PAYMENTへ入社。 サブスクペイの決済フォームのリニューアルや機能開発を担当し、現在はサブスクペイの技術負債解消を行っています。</p> <p><strong>【株式会社ROBOT PAYMENT サーバーサイドエンジニア 川上智久】</strong><br/> 宮城出身、新潟在住。<br/> 地元新潟にて官公庁のイントラネット向けWebアプリケーション開発や、プリンタードライバー開発などに参画。<br/> 2022年7月に株式会社ROBOT PAYMENTへ入社。フルリモートのサーバーサイドエンジニアとしてサブスクペイの機能開発やインボイス対応を担当、現在はサブスクペイの技術的負債を解消すべく奮闘中。</p> <p><strong>【株式会社ROBOT PAYMENT バックエンドエンジニア 花塚駿】</strong><br/> 千葉県出身、東京在住。<br/> 2018年にSES企業に新卒入社。エンジニアとして広告会社基幹システム、ECサイトの価格管理システムなどのWeb系の開発に従事。<br/> 2022年4月より株式会社ROBOT PAYMENTへ入社。請求管理ロボのインボイス対応やデジタルインボイス対応の開発に携わり、現在は技術的負債を増やさない開発に奮闘中。</p> <p><strong>【株式会社ROBOT PAYMENT バックエンドエンジニア 髙森健太郎】</strong><br/> 2015年にSES企業に新卒入社。エンジニアとしてテレビ、IoT、車載などの主に組み込み系の開発に従事。<br/> 2021年8月より株式会社ROBOT PAYMENTに業務委託として参画し、2022年4月より社員として入社。請求管理ロボの認証基盤刷新やマイページ機能の開発に携わり、現在は請求管理ロボ for Salesforceの内製化を推進している。</p> <p><strong>※諸注意※</strong><br/> 当日の各セッションはZoomで録画予定です。 以下のプライバシーポリシーをご確認いただき、同意の上ご参加ください。<br/> <a href="https://www.robotpayment.co.jp/company/privacypolicy/">https://www.robotpayment.co.jp/company/privacypolicy/</a></p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech イベント告知|BtoB SaaSの新規機能開発にUXリサーチを初めて取り入れた話【12月7日(木)19:00 @Zoom】 hatenablog://entry/6801883189062565949 2023-11-29T12:00:00+09:00 2023-11-29T17:42:31+09:00 20231207event ▼▼▼ 申し込みはこちらから ▼▼▼ cloudpayment-sys.connpass.com ■ 概要 ユーザーにとって価値のあるプロダクトを提供し続けるためにUXデザインやUXリサーチを取り入れる企業が増えています。ROBOT PAYMENTでも数年前から開発プロセスにUXデザインの要素を積極的に入れる取り組みを始めました。 本イベントでは、その取り組みの一つである「請求管理ロボ」の新規機能開発の裏側を赤裸々にお伝えします。特定の開発プロジェクトを取り上げ、プロダクトマネジメント、UXデザイン、エンジニアリングがどのように連携してプロジェクトを推進するかを深掘… <p><figure class="figure-image figure-image-fotolife" title="20231207event"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20231129/20231129103021.jpg" width="660" height="347" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>20231207event</figcaption></figure></p> <h5 id="-申し込みはこちらから-">▼▼▼ 申し込みはこちらから ▼▼▼</h5> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fcloudpayment-sys.connpass.com%2Fevent%2F300975%2F" title="BtoB SaaSの新規機能開発にUXリサーチを初めて取り入れた話 (2023/12/07 19:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://cloudpayment-sys.connpass.com/event/300975/">cloudpayment-sys.connpass.com</a></cite></p> <h4 id="-概要">■ 概要</h4> <p>ユーザーにとって価値のあるプロダクトを提供し続けるためにUXデザインやUXリサーチを取り入れる企業が増えています。ROBOT PAYMENTでも数年前から開発プロセスにUXデザインの要素を積極的に入れる取り組みを始めました。</p> <p>本イベントでは、その取り組みの一つである「請求管理ロボ」の新規機能開発の裏側を赤裸々にお伝えします。特定の開発プロジェクトを取り上げ、プロダクトマネジメント、UXデザイン、エンジニアリングがどのように連携してプロジェクトを推進するかを深掘りして発表します。プロダクトマネージャーとUXデザイナーが登壇し、自身のよりリアルな課題や取り組みの成果を視聴者の皆様へ共有し、何かご自身の組織に活かせる気づきや学びを得られることを目指します。</p> <h4 id="-こんな方におすすめです">■ こんな方におすすめです</h4> <p>● 現在プロダクトマネージャーをしている方<br/> ● 現在UXデザイナーをしている方<br/> ● これからプロダクト開発にUXデザインやUXリサーチを取り入れたい方<br/> ● ユーザー調査のやり方や調査結果の活かし方について不安を抱えている方<br/> ● 現在の開発プロセスの進め方に不安を抱えている方<br/> ● 他社の開発プロセスや取り組み、事例に関心がある方</p> <p>■ イベント詳細<br/> 日時:2023年12月7日(木)19:00〜20:00<br/> 会場:オンライン(予約時、「参加者への情報」にURLを記載しております)<br/> 費用:無料</p> <h5 id="タイムスケジュール">【タイムスケジュール】</h5> <p>18:50 Zoomオープン<br/> 19:00 オープニング<br/> 19:05 LT①~タイトル未定~(ROBOT PAYMENT 石地)<br/> 19:20 LT②~タイトル未定~(ROBOT PAYMENT 三木)<br/> 19:35 パネルディスカッション 視聴者Q&amp;A(全員)<br/> 19:55 クロージング・アンケート<br/> 20:00 終了</p> <h5 id="-申し込みはこちらから--1">▼▼▼ 申し込みはこちらから ▼▼▼</h5> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fcloudpayment-sys.connpass.com%2Fevent%2F300975%2F" title="BtoB SaaSの新規機能開発にUXリサーチを初めて取り入れた話 (2023/12/07 19:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://cloudpayment-sys.connpass.com/event/300975/">cloudpayment-sys.connpass.com</a></cite></p> <h4 id="-登壇者">■ 登壇者</h4> <p><strong>【株式会社ROBOT PAYMENT プロダクトマネージャー 石地亮介】</strong><br/> 2017年にITサービスを多数展開する企業に新卒入社し、自社サービスの企画営業として従事。<br/> 以降、エンジニアに転向し、EC事業やスクール事業のシステム開発やプロジェクトマネジメントを経験。<br/> 2022年4月より株式会社ROBOT PAYMENTにプロダクトマネージャーとして参画。請求管理ロボや新規事業においてプロダクトマネジメントに携わっている。</p> <p><strong>【株式会社ROBOT PAYMENT UXデザイナー 三木惠理】</strong><br/> 2015年にデジタルマーケティングの会社に新卒入社。UXデザイナー/Information Architectとして、企業サイトやブランドサイト、ECサイトなどの情報設計/UXデザイン領域に従事。<br/> 2019年に人材系会社に転職し、新規サービス開発の部署においてUXリサーチャーとしてのキャリアを積む。<br/> 2022年3月より株式会社ROBOT PAYMENTに1人目のUXデザイナーとして参画。プロダクト開発にUXデザインのアプローチを取り入れ、ユーザーに寄り添ったプロダクトづくりを推進している。</p> <p><strong>※諸注意※</strong><br/> 当日の各セッションはZoomで録画予定です。 以下のプライバシーポリシーをご確認いただき、同意の上ご参加ください。<br/> <a href="https://www.robotpayment.co.jp/company/privacypolicy/">https://www.robotpayment.co.jp/company/privacypolicy/</a></p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> <br /></p> robotpayment-tech App RunnerにIPアドレス制限をかけてみた hatenablog://entry/820878482961522722 2023-11-23T07:00:00+09:00 2023-11-23T07:00:18+09:00 こんにちは。ROBOT PAYMENTでエンジニアをしているtakamoriです。 今回は、「AWS CDKを利用したAppRunner環境構築の実装」記事の続編として、App RunnerへのIPアドレス制限の追加編を書いていきたいと思います。 目的 本記事の目的は、App RunnerへのアクセスにAWS WAFを利用したIPアドレス制限を加える方法の紹介です。開発環境への開発者以外のアクセスを制限したい等、様々なケースでのApp Runnerへアクセス制限をかける場合の手助けになれば幸いです。 なお、本記事ではIPアドレス制限をメインに記載しております。AWS WAFはIPアドレス制限だ… <p>こんにちは。ROBOT PAYMENTでエンジニアをしているtakamoriです。 今回は、「<a href="https://tech.robotpayment.co.jp/entry/2023/06/01/070000">AWS CDKを利用したAppRunner環境構築の実装</a>」記事の続編として、App RunnerへのIPアドレス制限の追加編を書いていきたいと思います。</p> <h2 id="目的">目的</h2> <p>本記事の目的は、App Runnerへのアクセスに<a href="https://aws.amazon.com/jp/waf/">AWS WAF</a>を利用したIPアドレス制限を加える方法の紹介です。開発環境への開発者以外のアクセスを制限したい等、様々なケースでのApp Runnerへアクセス制限をかける場合の手助けになれば幸いです。 なお、本記事ではIPアドレス制限をメインに記載しております。AWS WAFはIPアドレス制限だけでなく<a href="https://aws.amazon.com/jp/waf/features/">様々な機能</a>が提供されていますので、状況に応じて使いわけをお勧めします。</p> <h2 id="前提">前提</h2> <p><a href="https://tech.robotpayment.co.jp/entry/2023/06/01/070000">前回までの記事</a>でApp Runner作成等は紹介してますので、今回は既存のApp Runnerに対するWAF設定を記載します。 気になる方は遡ってご確認ください。</p> <h2 id="手順">手順</h2> <ol> <li>IP setsの作成</li> <li>Web ACLの作成</li> <li>App RunnerへWeb ACLの紐付け</li> </ol> <h3 id="1-IP-setsの作成">1. IP setsの作成</h3> <p>AWS WAF -> IP sets -> Creat IP setを選択し、必要情報を入力します。 IPアドレスはCIDR形式で入力する必要があり、今回は特定の1アドレスを許可するために/32でCIDR指定しています。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825155645.png" alt="IP setの作成" /></p> <h3 id="2-Web-ACLの作成">2. Web ACLの作成</h3> <p>AWS WAF -> Web ACLs -> Create web ACLを選択し、各ステップ毎に情報を入力します。</p> <h4 id="Step-1">Step 1</h4> <p>Web ACLの詳細を設定します。 Resource typeはApp Runnerを紐付けたいので「Regional resources」を選択し、RegionはApp Runnerが存在するリージョンを選択します。 Associated AWS resourcesは、後ほどApp Runner側から設定するので現時点では不要です。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825155652.png" alt="ACL_Step1" /></p> <h4 id="Step-2">Step 2</h4> <p>Web ACLでアクセス制限を行うルールを設定します。 IP制限を持つルールは「Add rules -> Add my own rules and rule groups」を選択することで追加可能です。 今回は次のように、IP setsの作成で追加したIP制限を持つルールを設定しています。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825155659.png" alt="ruleの追加" /></p> <p>またStep 2全体の設定は次のようになります。 今回は特定IPアドレス以外からのアクセスはブロックしたいので、ルールにマッチしないリクエストはブロックする設定にします。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825155706.png" alt="ACL_Step2" /></p> <h4 id="Step-3">Step 3</h4> <p>ルールのプライオリティを設定します。 今回は1つのルールなのですが、複数ある場合はプライオリティを設定することで詳細な制限が可能になります。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825155713.png" alt="ルールプライオリティ" /></p> <h4 id="Step-4">Step 4</h4> <p>CloudWatchへの出力設定をします。 CloudWatchへのログ出力が不要等あれば設定値を変更してください。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825155719.png" alt="ACL_Step4" /></p> <h4 id="Step-5">Step 5</h4> <p>今回作成するACLの最終確認します。 確認して問題なければ「Create web ACL」ボタンを押して作成完了です。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825155726.png" alt="ACL_Step5_1" /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825155732.png" alt="ACL_Step5_2" /></p> <h3 id="3-App-RunnerへWeb-ACLの紐付け">3. App RunnerへWeb ACLの紐付け</h3> <p>App Runner -> サービス -> 対象のApp Runnerを選択し、設定タブを開きます。 サービス設定の編集画面を開き、セキュリティの「ウェブアプリケーションファイアウォール」に有効化すると、次のように作成済みのWeb ACLを選択可能になります。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825155739.png" alt="Web_ACL_有効化" /></p> <p>設定保存後、数分すると次のようにWeb ACLが設定されており、特定IP以外からのアクセスもブロックされるようになりました。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825155745.png" alt="設定完了" /></p> <h2 id="最後に">最後に</h2> <p>以上がApp RunnerへのIPアドレス制限の追加方法の紹介でした。<br/> 今まではIPアドレス制限等ができず開発環境の保護もできない状態でしたが、App Runnerのアップデートで無事保護できるようになりました。また、WAFを導入可能になったことで、App Runnerのセキュリティ面がかなり向上したのではないかと思います。 App Runnerは発展途上で、アップデートのたびにVPCやWAFなどセキュリティ上必要な機能が利用可能になってきたので、これからも開発が進んで欲しい限りです。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech テックリードを目指して3ヶ月働いてみて hatenablog://entry/820878482961510740 2023-11-16T07:00:00+09:00 2023-11-16T07:00:03+09:00 自己紹介 こんにちは、請求管理ロボ開発メンバーの花塚です。 ポエムっぽい記事を書きます!現在入社してから1年程度経ちますが、嬉しいことに開発業務以外にも様々なタスクを担当しています。将来的に遠い目で振り返れるように、テックリードを目指して取り組んだことの振り返りを書き残しておきたいと思います。 経緯 弊社ではエンジニアリングマネージャー(以下、EM)が複数の開発チームのチームリーダーを兼務している、という状況がありました。 そこで、EMから「今後チームをリードしていってほしい」と言われました。が、嬉しい思いはあったものの、自分なんかができるのか、、?という思いが大きかったのが正直なところです。… <h2 id="自己紹介">自己紹介</h2> <p>こんにちは、請求管理ロボ開発メンバーの花塚です。 ポエムっぽい記事を書きます!現在入社してから1年程度経ちますが、嬉しいことに開発業務以外にも様々なタスクを担当しています。将来的に遠い目で振り返れるように、テックリードを目指して取り組んだことの振り返りを書き残しておきたいと思います。</p> <h2 id="経緯">経緯</h2> <p>弊社ではエンジニアリングマネージャー(以下、EM)が複数の開発チームのチームリーダーを兼務している、という状況がありました。<br/> そこで、EMから「今後チームをリードしていってほしい」と言われました。が、嬉しい思いはあったものの、自分なんかができるのか、、?という思いが大きかったのが正直なところです。悩みながら読んだ書籍にこんな一文があり、背中を押されました。</p> <blockquote><p>テックリードの役を任されたというのは祝福されてしかるべきことです。チームを代表する連絡窓口であるテックリードにふさわしい人物だ、と誰かが認めてくれた証拠なのです。これを機に、新たなスキルを学び、身につけていってください。<br/> <em><span style="font-size: 80%">引用元:『<a href="http://www.amazon.co.jp/dp/4873118484">エンジニアのためのマネジメントキャリアパス ―テックリードからCTOまでマネジメントスキル向上ガイド</a>』- Camille Fournier -(オライリージャパン:2018) 第3章</span></em></p></blockquote> <p>いい言葉ですね。どこか評価に値するところがあったのだろう、ということで軽い気持ちで受けてみて、私のテックリード候補ライフが始まりました。</p> <h2 id="目指した状態">目指した状態</h2> <p>以下ができている状態を目指しました。</p> <ul> <li>タスク分割をしてメンバーにタスクを割り振ること</li> <li>進捗を守ること</li> <li>チーム内で議論が停滞した時に意思決定を行うこと</li> <li>コードレビューにおいてリファクタリングの提案を行うこと</li> </ul> <h2 id="結果">結果</h2> <p>大雑把ではありますが、◯、△、× で評価します</p> <ul> <li>タスク分割をしてメンバーにタスクを割り振ること <ul> <li>→ △</li> </ul> </li> <li>進捗を守ること <ul> <li>→ ◯</li> </ul> </li> <li>チーム内で議論が停滞した時に意思決定を行うこと <ul> <li>→ ×</li> </ul> </li> <li>コードレビューにおいてリファクタリングの提案を行うこと <ul> <li>→ ×</li> </ul> </li> </ul> <h2 id="工夫したこと心がけたこと">工夫したこと、心がけたこと</h2> <h4 id="タスク分割をしてメンバーにタスクを割り振ること">タスク分割をしてメンバーにタスクを割り振ること</h4> <p>要件を担当した案件を小さい単位に分割して、各メンバーにタスクを割り振りました。また、タスク内容に認識齟齬がないように、タスクごとに細かい粒度でTODOリストを作成しました。</p> <h4 id="進捗を守ること">進捗を守ること</h4> <p>スプリントの進め方で気になる細かいところの改善に取り組みました。<br/> 例えば、スプリント単位でのストーリーポイント消化を可視化して、ストーリーポイント達成/未達の要因をスプリントごとに振り返るようにしました。活かせる点があれば次スプリントに振り返り内容を盛り込んでいきます。細かいところではありますが、ストーリーポイント消化に対するメンバーの意識は高められたと感じています。</p> <h2 id="できていないこと学び">できていないこと、学び</h2> <p>この3ヶ月間を通してできなかったこととして、以下の2点を自覚しています。</p> <h4 id="チーム内で議論が停滞した時に意思決定を行うこと">チーム内で議論が停滞した時に意思決定を行うこと</h4> <p>技術の細かい話になってくると適切な意思決定ができていない(つまり議論をリードできていない)、という実感があります。</p> <h4 id="コードレビューにおいてリファクタリングの提案を行うこと">コードレビューにおいてリファクタリングの提案を行うこと</h4> <p>私の今までの経験で、そもそも良いコードとは、良い設計とは、というところに対する意識が低かったので、レビュー観点においてもリファクタリングの提案があまりできていないと考えています。</p> <p>テックリードを目指して、開発業務以外にも様々なタスクを担当することで、テックリードをやる上で<strong>足りていない技術力がある</strong>というところを自覚することができました。</p> <h2 id="これから">これから</h2> <ul> <li><p><strong>1つのPull Request(以下、PR)でリファクタリングを実施する</strong><br/> → まずは小さく実践していく、ということで日々のPRでリファクタリングを実践していきます。(ボーイスカウトの原則を実践していく、ということですね)</p></li> <li><p><strong>EMとの相互コードレビュー</strong><br/> → 影響範囲が大きい修正や、インシデントにつながる可能性のある修正に関してはEMがコードレビューに入っているのが現状です。この一次レビューに私が入って、どこでEMと差分が生じているか、どこで観点漏れが生じているかを明らかにして、コードレビューの改善に取り組んでいきます。</p></li> <li><p><strong>設計周りのインプット</strong><br/> → コードレビューの際に知識不足を感じたので、特に足りていないと感じている設計周りの知識を引き続きインプットしていこうと思っています。(現在、弊社ではコード品質を高めるために品質向上MTGというものを行なっており、この辺も上手く活用していきたいです。細かい内容に関しては機会があれば記載します、、!)</p></li> </ul> <p>総じて、技術力向上のために何をするか、というところですね。上述した内容を日々繰り返して技術力向上に取り組んでいきたいと思います。</p> <h2 id="3ヶ月ほどテックリードを目指して働いてみた感想">3ヶ月ほどテックリードを目指して働いてみた感想</h2> <p>引き受けてよかったな、と思っています。<br/> 仮にもチームをまとめる立場になり、振ってもらえる仕事が増えたことで、自分の得意なところ、苦手なところが明らかになったと感じています。メンバーのタスク管理や議論をリードするのは比較的できるが、テックリードとしてはコードレビューする上で設計周りの知識が不足している、ということを再認識できました。</p> <p>また、どうすればチームが良くなるか、という仮説を立てて成功・失敗するという経験ができるようになったのは良い点だと思っています。主体的に仮説を立てて失敗して、振り返り改善するというサイクルを回す機会が以前より明らかに増えました。</p> <h2 id="最後に">最後に</h2> <p>駄文にお付き合い頂きありがとうございました。何年後かに見た時に鼻で笑えるように日々研鑽を続けていきたいと思います!</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech コードレビューについて hatenablog://entry/820878482961509224 2023-11-09T07:00:00+09:00 2023-11-09T07:00:27+09:00 こんにちは。決済システムでエンジニアをやっております hoshino33 です。 今回はコードレビューのレビュアーになった際にどういった観点でレビューしているか書いていこうと思います。 環境について 決済システムでの開発においては以下を利用しております。 開発言語:C# IDE:Microsoft Visual Studio + ReSharper もしくは JetBrains Rider ユニットテスト:MSTest Gitのホスティングサービス:Bitbucket はじめに コードレビューを依頼する際はプルリクに以下を記載するようにしています。 要件定義 実装対象の要件定義を記載します。C… <p>こんにちは。決済システムでエンジニアをやっております <a href="https://profile.hatena.ne.jp/hoshino33/" title="hoshino33">hoshino33</a> です。<br/> 今回はコードレビューのレビュアーになった際にどういった観点でレビューしているか書いていこうと思います。</p> <h3 id="環境について">環境について</h3> <p>決済システムでの開発においては以下を利用しております。</p> <ul> <li>開発言語:C#</li> <li>IDE:Microsoft Visual Studio + ReSharper もしくは JetBrains Rider</li> <li>ユニットテスト:MSTest</li> <li>Gitのホスティングサービス:Bitbucket</li> </ul> <h3 id="はじめに">はじめに</h3> <p>コードレビューを依頼する際はプルリクに以下を記載するようにしています。</p> <h4 id="要件定義">要件定義</h4> <p>実装対象の要件定義を記載します。ConfluenceもしくはNotionで記載したリンク。</p> <h4 id="セキュアコードレビューシート">セキュアコードレビューシート</h4> <p>コードレビューとは別にセキュアコードレビューシートを用意しコードレビューと同時にセキュアコードレビューを行います。詳しくは<a href="https://tech.robotpayment.co.jp/entry/2023/05/25/070000">こちら</a>をご参照ください</p> <h4 id="実装内容">実装内容</h4> <p>実装内容の説明</p> <h4 id="画面プレビュー">画面プレビュー</h4> <p>画面がある場合はスクショ</p> <h4 id="ユニットテストの実行結果">ユニットテストの実行結果</h4> <p>ユニットテストの実行結果のスクショ</p> <h3 id="コードレビューの観点">コードレビューの観点</h3> <p>前置きが長くなりましたが、今回のメインテーマになります。</p> <h4 id="要件定義の内容を実装しているかどうか">要件定義の内容を実装しているかどうか</h4> <p>こちらは言わずもがな。</p> <h4 id="コーディング規約が守られているか">コーディング規約が守られているか</h4> <p>弊社の場合は、コーディング規約がいくつかありますのでそちらに従っているかどうか。</p> <h4 id="typoがないか">typoがないか</h4> <p>スペルミスがないかどうか。 ちなみに私はコーディングに限らずtypoが多め。。</p> <h4 id="命名は適切か">命名は適切か</h4> <p>一般的に使用されている命名かどうか。<br/> あとは、スコープが広いものについては多少長くなっても良いのでわかりやすいかどうか。狭い場合であればある程度許容します。</p> <h4 id="トリッキーな実装をしていないか">トリッキーな実装をしていないか</h4> <p>無理やり記述するコード量を少なくするなど難解なコードが書かれている場合。チーム開発においては難解なコードより他人にわかりやすいコードの方が有益だと思います。</p> <h4 id="すでにある機能を再実装していないか">すでにある機能を再実装していないか</h4> <p>すでにある機能(メソッドなど)がある場合はそちらを使用してもらう。</p> <h4 id="条件が複雑すぎないか">条件が複雑すぎないか</h4> <p>条件が複雑すぎるとどういった条件かわからなくなるため、分解してもらうなど簡易化してもらう。</p> <h4 id="不要なコード">不要なコード</h4> <p>デッドコードや不要な変数、メソッドがある場合は削除してもらう。</p> <h4 id="適切な場所に記載されているかどうか">適切な場所に記載されているかどうか</h4> <p>適切なクラスにロジックがかかれているかなど。</p> <h4 id="コメントが適切かどうか">コメントが適切かどうか</h4> <p>基本はドキュメンテーション コメントになりますが、処理中にコメントがある際は、有益な情報かどうかを確認します。</p> <h4 id="ネストが深すぎないか">ネストが深すぎないか</h4> <p>ネストが深く、可読性をさげていないかどうか。</p> <h4 id="エラーハンドリング">エラーハンドリング</h4> <p>エラーハンドリングが適切かどうか。不必要に握り潰していないかどうかなど。</p> <h3 id="まとめ">まとめ</h3> <p>みなさんはどのような観点でレビューしていますか?<br/> 他にも観点はありそうな気がしますが大体似たような観点になってくると思いますが、人によって観点が微妙に違ってくるので、この観点を意思統一することができればさらに品質を上げることができると思います。<br/> また、ツール類に頼れる部分は任せて、人でしか確認できない部分を中心にレビューができる環境を作っていけるとなお良いと思います。<br/> 正直、レビューは結構体力を使いますが、レビューの中で新たな発見があったときの学びは嬉しいですね。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech サブスクペイのプロジェクト管理ツールについて hatenablog://entry/820878482961498315 2023-11-02T07:00:00+09:00 2023-11-02T07:00:33+09:00 こんにちは、ペイメント事業部システム課マネージャーの戸田です。 今回はサブスクペイstandardの開発や運用のプロジェクト管理ツールについてご紹介します。 プロジェクト管理ツール 皆さんはどのようなツールを利用してプロジェクト管理をされていますか? Excelを利用したり、TrelloやBacklogなどWebサービスを利用してプロジェクト管理されていらっしゃるのではないでしょうか。 ペイメントシステム課では、サブスクペイstandardの開発や運用などのプロジェクト管理はRedmineで行っております。 Redmineって何?という方は、こちらをご参照ください。 Redmineを利用するた… <p>こんにちは、ペイメント事業部システム課マネージャーの戸田です。<br/> 今回はサブスクペイstandardの開発や運用のプロジェクト管理ツールについてご紹介します。</p> <h3 id="プロジェクト管理ツール">プロジェクト管理ツール</h3> <p>皆さんはどのようなツールを利用してプロジェクト管理をされていますか?<br/> Excelを利用したり、TrelloやBacklogなどWebサービスを利用してプロジェクト管理されていらっしゃるのではないでしょうか。<br/> ペイメントシステム課では、サブスクペイstandardの開発や運用などのプロジェクト管理はRedmineで行っております。<br/> Redmineって何?という方は、<a href="https://redmine.jp/">こちら</a>をご参照ください。</p> <p>Redmineを利用するためには、自分たちで立ち上げたサーバーにインストールしたり、My RedmineやAmazon Lightsailなど既にインストールされている環境を利用するといった方法もあります。<br/> また、Redmineは様々なプラグインを導入して使いやすくできますが、そちらはまた別の機会にでもご紹介できればと思います。</p> <h3 id="タスク管理ルール">タスク管理ルール</h3> <p>さて、我々がプロジェクト管理をする際は、タスクごとにRedmineでチケットを発行しております。<br/> ただし、そのままタスクをチケット化しただけではどんどん溜まって埋もれていくだけなので、管理が難しくなります。</p> <p>そこで、タスクチケットをまとめるための階層構造のルールを設けています。</p> <p>■チケットの階層構造<br/>  エピックチケット<br/>   └ ストーリーチケット<br/>      └ タスクチケット<br/>      └ タスクチケット<br/>      └ タスクチケット<br/>   └ ストーリーチケット<br/>      └ タスクチケット<br/>      └ タスクチケット</p> <p>タスクチケットは要件定義、開発、テストなど各自が担当する作業ごとに作成されます。<br/> 担当者は自身にアサインされているタスクチケットを見れば、いつまでに何をしないといけないのか作業の全量がわかるようになっています。</p> <p>タスクチケットの上位にあるストーリーチケットは目的やゴールを定義したチケットとなります。<br/> 例えば、「○○画面に×××を表示する」とか「○○機能に×××を追加する」など。<br/> つまり、各タスクはストーリーを実現するために必要な作業となるわけです。</p> <p>ストーリーチケットの上位にあるエピックチケットは各ストーリーを実現するための元となった要望のチケットとなります。<br/> 例えば、「○○決済のデータをAPIで参照したり更新できるようにしたい」とか「新しい○○決済の機能を実装してほしい」など。<br/> 要望はシステム課からあがることもありますが、大半はお客様やバックオフィスからいただいた要望となります。</p> <p>数多くの要望の中から優先度が高いものを選定し、要望を実現するために必要なストーリーを考え、そのストーリーを実現するために必要なタスクを洗い出し、それらをチケット化して担当者にアサインするといったことを常々行っております。</p> <h3 id="工数管理">工数管理</h3> <p>プロジェクト管理においては、必要なタスクとそのタスクにどのくらい工数がかかったかの工数管理も行うことが多いと思います。</p> <p>ペイメントシステム課では、担当者がタスクチケットの作業を終えるとそのチケットに作業工数を入力してもらいます。<br/> 管理者は毎月入力された工数を集計し、資産化対象となる工数がどれくらいか、機能に対する生産性はどれくらいかなどといった分析に利用しております。</p> <p>Redmineは歴史が古く、いろいろな方によって拡張されバージョンアップを繰り返し、今に至っております。<br/> 他にも便利なプロジェクト管理のサービスはありますが、自分たちで運用することができれば、拡張性とコストに優れたツールだと思います。</p> <h3 id="最後に">最後に</h3> <p>もしRedmineの便利なプラグインの情報があれば、ぜひ教えていただけるとうれしいです。<br/> また、こういった使い方しているよといった情報も大歓迎です。<br/> ぜひお待ちしております。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech Redashのバージョンを10にしてみて hatenablog://entry/820878482961495037 2023-10-26T07:00:00+09:00 2024-02-16T16:11:26+09:00 Redashのバージョンを7から10にして良かったこと こんにちは、株式会社ROBOT PAYMENT(以下、ロボペイ)で請求管理ロボのCREを担当している山下です。 今までCREについていくつか記事を書いてきましたが、前回の記事で紹介したRedashのバージョンアップについて、 良かったことを書いていこうと思います。 Redashのバージョンアップ tech.robotpayment.co.jp ROBOT PAYMENTのCREを考えてみた tech.robotpayment.co.jp ① UIの大幅変更 V8からV10への変更における一番大きな違いは、ユーザーインターフェース(UI)の… <h3 id="Redashのバージョンを7から10にして良かったこと">Redashのバージョンを7から10にして良かったこと</h3> <p>こんにちは、株式会社ROBOT PAYMENT(以下、ロボペイ)で請求管理ロボのCREを担当している山下です。 今までCREについていくつか記事を書いてきましたが、前回の記事で紹介したRedashのバージョンアップについて、 良かったことを書いていこうと思います。</p> <ul> <li><p>Redashのバージョンアップ <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.robotpayment.co.jp%2Fentry%2F2023%2F08%2F31%2F070000" title="Redashのバージョンアップ - ROBOT PAYMENT TECH-BLOG" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tech.robotpayment.co.jp/entry/2023/08/31/070000">tech.robotpayment.co.jp</a></cite></p></li> <li><p>ROBOT PAYMENTのCREを考えてみた <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.robotpayment.co.jp%2Fentry%2F2022%2F05%2F19%2F145953" title="ROBOT PAYMENTのCREを考えてみた - ROBOT PAYMENT TECH-BLOG" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tech.robotpayment.co.jp/entry/2022/05/19/145953">tech.robotpayment.co.jp</a></cite></p></li> </ul> <h2 id="-UIの大幅変更">① UIの大幅変更</h2> <p>V8からV10への変更における一番大きな違いは、ユーザーインターフェース(UI)の変更です。V10では、メニューバーが上部から左部に移動し、縦型の配置になりました。この変更により、UIはより洗練され、新鮮な印象を与えるようになりました。</p> <p>UIの見やすさについては個人の感じ方や好みによるところもあります。<br/> ただカスタマーサクセス(以下、CS)からも見やすくなったという反響があったので、おそらくみやすくなったんだと思います! <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825144108.png" alt="" /> ↓ <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825144114.png" alt="" /></p> <h2 id="権限のグループ設定">②権限のグループ設定</h2> <p>V8にバージョンを上げたことで、ユーザーページからグループの編集ができるようになりました。<br/> 以前はUIからの編集ができず、admin/default/viewerの3つのみの権限グループで運用しておりましたが、<br/> 新しいグループを簡単に作成することが可能になりました。<br/> この新機能により、各部署が必要な情報に対して適切な権限を与えることができるようになりました。</p> <p>従来は、3つの権限グループにしか権限の設定ができなかったため、データソースが複数ある場合には特定の部署やユーザーに適した権限設定が難しかったかもしれません。しかし、V8以降は新しいグループを作成できるようになり、さまざまな部署やユーザーに対して適切な権限を設定できるようになりました。</p> <p>この機能により、セキュリティレベルが上がり、<br/> 部署ごとに必要な情報に対して厳密な権限を設定することで、機密性やデータの保護が強化されました。<br/> 新しい権限グループの導入によって、より柔軟な権限管理が可能になり、組織全体の情報セキュリティを向上させることができたと言えます。</p> <h2 id="クエリ関連のアップデート">③クエリ関連のアップデート</h2> <p>Redashのバージョンアップにより、クエリの機能も強化されました。以下に、主なクエリのアップデート内容をご紹介します。</p> <ul> <li>ドロップダウンパラメーターで複数の選択が可能になりました。</li> <li>ドロップダウンパラメーターの値を検索できるようになりました。</li> <li>動的な日付や日付範囲を指定するパラメーターが利用できるようになりました。</li> <li>「limit 1000」のチェックボックスが追加されました。</li> </ul> <p>中でも、私個人が特にありがたいと感じたのは、ドロップダウンパラメーターの改善です。<br/> クエリパラメーターの中には、「Query Based Dropdown List」という選択肢があります。これは、別のクエリの結果をドロップダウンパラメーターとして利用する機能です。<br/> 例えば、IDやユーザーの検索クエリを別で用意しておくとその結果をドロップダウンの選択肢として表示できます。<br/> ただし、これまでは複数選択ができなかったため、利用の幅が限られていました。そのため、気になっていましたが、今回のアップデートにより、ようやく「Query Based Dropdown List」を有効活用できるようになりました。<br/> さらに、ドロップダウンの選択肢に対して検索機能も追加されたため、「Query Based Dropdown List」で取得した結果の数が多くても、検索して選択できるようになり、かなり使いやすくなりました。</p> <p>その他にも、クエリにlimitを記述するのは意外と面倒だったようで、「limit 1000」のチェックボックスが追加されたことで、CSからは喜びの声がありました。</p> <ul> <li>「Query Based Dropdown List」 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825144120.png" alt="" /></li> </ul> <h2 id="データソースの追加">④データソースの追加</h2> <p>Redashのバージョンアップによって、主にAWSのデータソースであるCloudWatch Logs Insightsの追加が一番のメリットで、これにより効率が大幅に上がりました。</p> <p>CloudWatchはAWSの監視およびログ管理サービスであり、アクセスログやシステムログなどを確認できます。以前はAWS自体でログの確認が可能でしたが、CSとしては定期的にログ確認の依頼が発生し、対応に時間と運用コストがかかっていました。しかし、Redashのバージョンアップにより、CloudWatchがデータソースとして追加されたことで、システムへのログインを必要とせずに必要な情報をCSが取得できるようになりました。</p> <p>これにより、CSは迅速にログ情報を取得し、必要な対応を行うことができるようになりました。また、システム側としても運用コストが削減され、効率的なログ管理が可能となりました。</p> <p>また、CloudWatch Logs Insights以外にも他のデータソースが追加されているため、機会があれば利用してみたいと思っています。</p> <h2 id="その他活用していきたい機能と弊害">⑤その他活用していきたい機能と弊害</h2> <p>これはバージョンアップと関係ないのですが、Redashの機能にはAPIとSAML認証があります。<br/> APIを介して他のサービスとデータ連携することができ、CSが利用する分析ツールに自動的にデータを反映させることができます。<br/> また、SAML認証はセキュリティレベルを向上させるための手段として利用できます。</p> <p>ただし、IP制限に関する課題が存在するようです。Redashでは重要なデータを扱うため、IP制限を設けて外部からのアクセスに制限をかけています。この制限がAPIの利用に影響を及ぼしているようです。</p> <p>一方、SAML認証に関してはIP制限と関係なく動作するはずなため、認証システムのサポートに問い合わせ中ではありますが、APIについてはおそらくどうしようもないので、他の解決策を模索している状況です。</p> <p>今後もCREとしてCSの運用負担を減らせるようにツールの改善をどんどん行っていければと思います。</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech ブラウザの拡張機能を駆使して快適なブラウジング生活はいかがですか hatenablog://entry/820878482961487222 2023-10-19T07:00:00+09:00 2023-10-19T07:00:31+09:00 こんにちは、ROBOT PAYMENTのプロダクト開発本部ペイメントシステム課のtaniguchikun です。 ブラウザの拡張機能を使う事で誤操作を防いでみたエピソードを、お伝えできればと思います。 ※本記事にChatGPTは使用されておりません。筆者の熱い想いが書かれておりますw 拡張機能とはどういう機能かというのをご説明をできればと思います。 以下3つの機能があります。 特定のサイトを閲覧したときに自分が実装したJavaScriptを読み込ませて実行する機能 ブラウザが起動した際にバックグラウンドで処理を行う機能 ブラウザにアイコンボタンを用意し、アイコンをクリックすると用意したHTML… <p>こんにちは、ROBOT PAYMENTのプロダクト開発本部ペイメントシステム課のtaniguchikun です。<br/> ブラウザの拡張機能を使う事で誤操作を防いでみたエピソードを、お伝えできればと思います。<br/> ※本記事にChatGPTは使用されておりません。筆者の熱い想いが書かれておりますw</p> <hr /> <h1 id="拡張機能とはどういう機能かというのをご説明をできればと思います">拡張機能とはどういう機能かというのをご説明をできればと思います。</h1> <p>以下3つの機能があります。</p> <ol> <li>特定のサイトを閲覧したときに自分が実装したJavaScriptを読み込ませて実行する機能</li> <li>ブラウザが起動した際にバックグラウンドで処理を行う機能</li> <li>ブラウザにアイコンボタンを用意し、アイコンをクリックすると用意したHTMLファイルをポップアップで表示する機能</li> </ol> <h2 id="本記事ではつ目の機能について例えを用いてご説明します">本記事では①つ目の機能について例えを用いてご説明します。</h2> <p>自分は開発作業を行っている中で、サイトを大量に開きっぱなしにしている時が多々あり、<br/> 確認している対象サイトが開発環境のサイトなのか本番環境のサイトなのか分からなくなる時があります。</p> <p>対策としてブラウザの拡張機能を使用して画面表示時にURLで背景色を変えることを行い、間違えることを防いでいます。</p> <p>どのようにブラウザの拡張機能を作り、動作させるかを説明していきたいと思います。<br/> まず下図のようなフォルダー構成でファイルを準備します。</p> <pre class="code" data-lang="" data-unlink>EnvironmentColor ├─ main.js └─ manifest.json</pre> <p>main.js</p> <pre class="code javascript:main.js" data-lang="javascript:main.js" data-unlink>window.onload = function() { // URLから開発環境か判断 let color = &#39;red&#39;; if(-1 &lt; window.location.origin.search(&#39;.prod.&#39;)) { color = &#39;green&#39;; } else if(-1 &lt; window.location.origin.search(&#39;.stg.&#39;)){ color = &#39;blue&#39;; } var bodyElement = document.querySelector(&#39;body&#39;) bodyElement.setAttribute(&#39;style&#39;, &#39;background-color: &#39; + color + &#39;;&#39;); };</pre> <p>manifest.json</p> <pre class="code json:manifest.json" data-lang="json:manifest.json" data-unlink>{ &#34;manifest_version&#34;: 3, &#34;name&#34;: &#34;environment color&#34;, &#34;description&#34;: &#34;環境表示&#34;, &#34;version&#34;: &#34;1.0.0&#34;, &#34;content_scripts&#34;: [{ &#34;matches&#34;: [ &#34;https://*.自社URL.com/*&#34;, &#34;http://local.dev.com/*&#34;, &#34;http://local.prod.com/*&#34;, &#34;http://local.stg.com/*&#34; ], &#34;js&#34;: [ &#34;main.js&#34; ] }] }</pre> <p>フォルダーとファイルが準備出来ましたら、後はブラウザに読み込ませるだけになります。 以下の手順通りに読み込みをすれば意図した通りの動作を行います。</p> <ol> <li><p>まずは赤枠の<code>拡張機能を管理</code>を選択してください。<br/> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825141554.png" alt="" /></p></li> <li><p>赤枠の<code>デベロッパーモード</code>をオンにしてください。<br/> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825141600.png" alt="" /></p></li> <li>赤枠の<code>パッケージ化されていない拡張機能を読み込む</code>を選択して今回作成したフォルダーを選択してください。</li> <li>後は対象となるサイトにアクセスしていただくとmain.jsが動作し、対象URLによって背景色が変わります。</li> </ol> <p>動作前 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825141607.png" alt="" /> 動作後 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825141614.png" alt="" /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825141621.png" alt="" /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825141629.png" alt="" /></p> <p>詳細を説明したいと思います。<br/> まず<code>manifest.json</code>ファイルから説明したいと思います。</p> <ul> <li><code>manifest_version</code>は3と仕様で決まっています。</li> <li><code>name</code>はパッケージの名前になるので任意で決めてください。</li> <li><code>description</code>は説明になるので、任意に決めてください。</li> <li><code>version</code>はパッケージのバージョンになります。</li> <li><code>content_scripts</code>は今回の肝となります。 <ul> <li><code>matches</code>は動作させたいURLになり、複数指定も出来ますしワイルドカード指定も出来ます。</li> <li><code>js</code>は動作させたいJavaScriptファイルになります。</li> </ul> </li> </ul> <p>次に<code>main.js</code>ファイルを説明したいと思います。</p> <ul> <li>1行目のwindow.onloadイベントに登録を行う事で、画面が表示された時に処理が行われます。</li> <li>3行目でURLに<code>.dev.</code>が含まれているか判断します。 <ul> <li>含まれていない場合は何も処理を行いません。</li> </ul> </li> <li>7行目で<code>body</code>要素の取得を行います。</li> <li>8行目で<code>body</code>要素に背景色が赤になるスタイルを追加しています。</li> </ul> <p>以上を持って説明は終わりとなります。<br/> このような細々とした事がコード管理されてない方がコードは読みやすくなると考えておりますので、ブラウザの拡張機能がもっと知られていけばと思っています。</p> <p>もっと知りたいよといった方はドキュメントのURLを記載しておりますのでご確認してみてください。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdeveloper.chrome.com%2Fdocs%2Fextensions%2Fmv3%2F" title="Welcome to Chrome Extensions - Chrome for Developers" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://developer.chrome.com/docs/extensions/mv3/">developer.chrome.com</a></cite></p> <p><strong>反響がありましたら残りの機能についても紹介していきたいと思います!</strong></p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech PCI DSS監査体験記 hatenablog://entry/820878482961486471 2023-10-12T07:00:00+09:00 2023-10-12T09:44:40+09:00 どうも!! ペイメントシステム課の川上です!! サブスクペイの中の人です!! 今回は、先日実施されたPCI DSSバージョン4の監査に参加した所感を書きます。 ちなみに私は、昨年サブスクペイにジョインするまでPCI DSSに関わったことはありませんでした。 ですので元シロウトなりに感じたことを綴りたいと思います。。。 PCI DSSってなんだっけ PCI DSSについては我らがボスが詳しく分かりやすく説明してくれています。 「PCI DSSなにそれおいしいの」状態の方は、まずはこちらをご覧いただければ幸いでございます(宣伝)。 tech.robotpayment.co.jp 備えよ常に ボスの… <p>どうも!!<br/> ペイメントシステム課の川上です!!<br/> サブスクペイの中の人です!!</p> <p>今回は、先日実施されたPCI DSSバージョン4の監査に参加した所感を書きます。<br/> ちなみに私は、昨年サブスクペイにジョインするまでPCI DSSに関わったことはありませんでした。<br/> ですので元シロウトなりに感じたことを綴りたいと思います。。。</p> <h2 id="PCI-DSSってなんだっけ">PCI DSSってなんだっけ</h2> <p>PCI DSSについては我らがボスが詳しく分かりやすく説明してくれています。<br/> 「PCI DSSなにそれおいしいの」状態の方は、まずはこちらをご覧いただければ幸いでございます(宣伝)。</p> <p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftech.robotpayment.co.jp%2Fentry%2F2022%2F07%2F21%2F103900" title="サブスクペイのPCI DSS対応 - ROBOT PAYMENT TECH-BLOG" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://tech.robotpayment.co.jp/entry/2022/07/21/103900">tech.robotpayment.co.jp</a></cite></p> <h2 id="備えよ常に">備えよ常に</h2> <p>ボスのブログでは「毎年監査を受け」ていることしか書かれていませんので、ここをもう少し掘り下げてみましょう。<br/> PCI DSSに準拠するには、PCI SSC(PCI Security Standards Council)が認定する審査機関(QSA : Qualified Security Assessors)による監査を受けて、これに合格する必要があります。<br/> PCI DSSの要件ごとに多数のチェック項目がありますので、ひとつひとつ基準を満たしているかどうかをQSAの監査員に説明し、弊社の対応状況を審査していただくことになります。</p> <h2 id="最初の準備">最初の準備</h2> <p>今回の監査では、要件ごとに担当者を決めました。<br/> 各担当者は自分が受け持つ要件について精査し、想定問答集を作成することが最初の作業です。<br/> とはいえ専門用語バリバリの難解な文章ですので、まず設問の意味が理解できません。最初に心が折れる瞬間です。<br/> 昨年の担当者にヒアリングしながら想定問答を考えますが、今回はPCI DSSがバージョン4になったことで昨年の回答実績が通用しない設問も多々あります。<br/> おかげでびっくりするくらい進捗が悪く心の折れる日々が続きます。</p> <h2 id="リハーサル開催">リハーサル開催</h2> <p>担当分の想定問答がある程度準備できたところで次なる試練が待ち受けます。<br/> QSAの監査員に扮したボスに、監査のリハーサルを実施していただくのです。<br/> リハーサルでは容赦のないツッコミの嵐が吹き荒れます。<br/> 想定問答を用意したことでそれなりに理解が進んだと思っていたのですが、ビックリするくらい回答できません。<br/> 額から汗が吹き出し、全身がガクガク震え、答える声がどんどん小さくなっていきます。<br/> こんなことで本番は大丈夫なのだろうか・・・という不安を抱えつつ、想定問答を練り直します。</p> <h2 id="監査本番">監査本番</h2> <p>監査は5日間にかけて実施されます。<br/> 文書などあらかじめ用意できるものは事前に提出し、監査では要件に沿った質問に答えていきます。<br/> 「あ!これリハーサルでやったところだ!」というところもあれば「え゛!?」と答えに詰まる部分もあります。<br/> 自分が担当していない要件では、想定外の質問に対する回答の準備を手伝ったり議事録を取ったり、朝から晩まで気が抜けません。これが5日間続きます。<br/> ときおりヒヤリとする瞬間もありましたが、予定通り5日間の日程を終えました。<br/> 正式な結果は後日となりますが、大きな問題もなく監査終了です!!<br/> こうして、準備から本番まで約2カ月にわたる監査対応が終わりを迎えました。</p> <h2 id="監査を終えて">監査を終えて</h2> <p>冒頭で書いた通り私はまだサブスクペイ歴1年のひよっこですが、日ごろの業務で使用する各種規定文書や記録・ルール等々、実はすべてPCI DSSに通じるものがあったのか!!という気付きを得られたことが一番の収穫に感じます。<br/> また事前にリハーサルを実施したことが有用でした。特に私は昨年の監査に参加していないため、あらかじめ流れや雰囲気をつかむのに役立ちました。<br/> これにて無事PCI DSSバージョン4の監査を終えたわけですが、バージョン4ではベストプラクティス要件(Feature-Dated)という「これメチャクチャ大変だから2025年3月31日までに対応すればいいよ!」と対応を先送りにすることが許されている項目がいくつもあります。<br/> 来年の監査ではこれらベストプラクティス要件への対応も必要になりますので、今回以上に長く苦しい戦いになることでしょう。<br/> 既に来年の監査に向けた準備ははじまっています。今年の経験を糧に頑張ります。<br/> 俺たちの戦いはこれからだ!!</p> <p><br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech 【イベント告知】「BtoB SaaSのプロダクトマネジメントこだわりどころ」10月18日(水)19時〜オンライン開催 hatenablog://entry/820878482973329022 2023-10-06T07:00:00+09:00 2023-10-12T09:48:18+09:00 [上場企業、大手グループ、スタートアップの3社がPdMの"こだわり"をクロストーク!] BtoBSaaSのプロダクトマネジメントこだわりどころ ■ 概要 このテーマを設定した背景には、多くの組織がプロダクトマネジメントの導入を模索している中で、組織ごと、またフェーズごとに異なる課題を抱え、さらにビジネスモデルに応じて最適解が異なるため、各組織が独自の悩みを抱えているという事実があります。そのうえ、各組織のプロダクトマネージャーが他社の取り組みを知る機会が限られているのが現状です。 そこで本イベントでは、上場企業、大手グループ、スタートアップという異なる規模、フェーズである3社の責任者を招き、互… <h3 id="上場企業大手グループスタートアップの3社がPdMのこだわりをクロストーク">[上場企業、大手グループ、スタートアップの3社がPdMの&quot;こだわり&quot;をクロストーク!]</h3> <p><figure class="figure-image figure-image-fotolife" title="BtoBSaaSのプロダクトマネジメントこだわりどころ"><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/R/RP_Nao/20231005/20231005222904.jpg" width="660" height="270" loading="lazy" title="" class="hatena-fotolife" itemprop="image"></span><figcaption>BtoBSaaSのプロダクトマネジメントこだわりどころ</figcaption></figure></p> <h4 id="-概要">■ 概要</h4> <p>このテーマを設定した背景には、多くの組織がプロダクトマネジメントの導入を模索している中で、組織ごと、またフェーズごとに異なる課題を抱え、さらにビジネスモデルに応じて最適解が異なるため、各組織が独自の悩みを抱えているという事実があります。そのうえ、各組織のプロダクトマネージャーが他社の取り組みを知る機会が限られているのが現状です。</p> <p>そこで本イベントでは、上場企業、大手グループ、スタートアップという異なる規模、フェーズである3社の責任者を招き、互いのプロダクトマネジメントについての”こだわりどころ”を語り合いつつ、よりリアルな課題や取組みの成果を視聴者の皆様へ共有し、何かご自身の組織に活かせる気づきや学びを得られることを目指します。</p> <p><strong>>>>申込はこちら </strong><br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fcloudpayment-sys.connpass.com%2Fevent%2F297476%2F" title="【さらに増枠!】BtoB SaaSのプロダクトマネジメントこだわりどころ (2023/10/18 19:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://cloudpayment-sys.connpass.com/event/297476/">cloudpayment-sys.connpass.com</a></cite></p> <h5 id="こんな方におすすめです">▼こんな方におすすめです</h5> <ul> <li>スタートアップで1人目プロダクトマネージャーをしている人</li> <li>現ミドル〜シニアのプロダクトマネージャーの人</li> <li>現在のやり方で「本当にプロダクトの価値を生み出せているか」という不安を抱えている方</li> <li>積み上がる改善要望への対応方針(優先度)に悩んでいる方</li> <li>リリース後の効果測定が上手くいかない方</li> <li>ユーザーに近いビジネスラインの声や力が強くなりがちで悩んでいる方</li> <li>開発方針や施策の意図がメンバーになかなか伝わらなくて困っている方</li> <li>複数のエンジニアと協業する上で、各エンジニアの進捗状況を把握するのが大変でお困りの方</li> </ul> <h4 id="-イベント詳細">■ イベント詳細</h4> <p><strong>▼基本情報</strong><br/> 日時:2023年10月18日(水)19:00〜20:35<br/> 会場 : オンライン(当日、connpassのお知らせメールにてZoomリンクをお送りします)<br/> 費用:無料<br/> <em>>>>開催用Zoomリンクは前日リマインドと、当日18:00頃にメールでお知らせいたします</em></p> <p><strong>▼タイムスケジュール </strong><br/> 18:50 Zoomオープン<br/> 19:00 オープニング<br/> 19:05 LT①~個別カスタマイズ機能との向き合い方~(ROBOTPAYMENT 田本)<br/> 19:15 LT②~プロダクト理解と顧客理解を軸としたプロダクトマネジメント~(DMMBoost 入部)<br/> 19:25 LT③~ドメイン未経験のプロダクトマネージャーは如何に振る舞うべきか~(estie 久保)<br/> 19:35 パネルディスカッション(全員)<br/> 19:50 視聴者Q&amp;A パネルトーク(全員)<br/> 20:10 クロージング<br/> 20:15 アフタートーク (自由参加)<br/> 20:35 終了</p> <p>>>>申込はこちら<br/> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fcloudpayment-sys.connpass.com%2Fevent%2F297476%2F" title="【さらに増枠!】BtoB SaaSのプロダクトマネジメントこだわりどころ (2023/10/18 19:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://cloudpayment-sys.connpass.com/event/297476/">cloudpayment-sys.connpass.com</a></cite></p> <p><strong>▼登壇者</strong><br/> <strong>【株式会社ROBOTPAYMENT CPO 田本諒】</strong><br/> 2005年に防衛省陸上自衛隊入隊、通信科の搬送陸曹として基地システム運営に携わる。2017年に当社に入社、主に請求管理ロボの開発・プロダクトマネジメントに従事し、2022年に執行役員CTO就任。2023年より、CPOとしてプロダクト戦略を推進。</p> <p><strong>【株式会社DMM Boost CPO 入部翔吾】</strong><br/> 株式会社リクルートホールディングスに入社し、リクルート 住まいカンパニーに出向。SUUMO付随サービスのプロダクトオーナーや新規業務支援PJに従事。その後、建機スタートアップのSORABITOにジョインし、PdMを軸としながらもCS/営業/事業開発と幅広く推進。PdMとしては新規事業である自社SaaSプロダクトの推進/実行をリード。2023年7月にDMM Boostにジョインし、プロダクト全体の管掌を担う。</p> <p><strong>【株式会社estie VP of Products 久保拓也】</strong><br/> 株式会社博展でセールスやプランナー、新規事業立ち上げを経験したのち、リクルートにてエンタープライズ領域のセールスマネージャー、SMB領域の戦略構築、九州拠点長等を担当。 その後ユアマイスター株式会社に参画し、社長室 兼 VP of Productsとして同社事業とプロダクト全般の戦略立案と実行をリード。 2022年8月にestieへ入社し、同年11月よりVP of Productsを担う。</p> <p><strong>▼諸注意</strong><br/> 当日の各セッションはZoomで録画予定です。 以下のプライバシーポリシーをご確認いただき、同意の上ご参加ください。</p> <ul> <li><a href="https://www.robotpayment.co.jp/company/privacypolicy/">https://www.robotpayment.co.jp/company/privacypolicy/</a></li> <li><a href="https://hassyadai.notion.site/823fa7f7c3264bb58e136f1ce587a1c7">https://hassyadai.notion.site/823fa7f7c3264bb58e136f1ce587a1c7</a></li> <li><a href="https://www.estie.jp/privacy/">https://www.estie.jp/privacy/</a></li> </ul> <p><strong>▼リンク集</strong><br/> <strong>ROBOTPAYMENT </strong> <br/> <a href="https://www.robotpayment.co.jp/">&#x682A;&#x5F0F;&#x4F1A;&#x793E;ROBOT PAYMENT&#xFF08;&#x30ED;&#x30DC;&#x30C3;&#x30C8;&#x30DA;&#x30A4;&#x30E1;&#x30F3;&#x30C8;&#xFF09;</a><br/> <a href="https://www.robotpayment.co.jp/recruit/">&#x63A1;&#x7528;&#x60C5;&#x5831; | &#x682A;&#x5F0F;&#x4F1A;&#x793E;ROBOT PAYMENT</a></p> <p><strong>DMMBoost</strong><br/> <a href="https://hassyadai.notion.site/hassyadai/DMM-Boost-Inc-4c892540b7ef49d581e0935edd5b8f66">DMM Boost,Inc.</a><br/> <a href="https://en-gage.net/dmm_jobs/">&#x682A;&#x5F0F;&#x4F1A;&#x793E;&#xFF24;&#xFF2D;&#xFF2D;&#xFF22;&#xFF4F;&#xFF4F;&#xFF53;&#xFF54;&#x306E;&#x63A1;&#x7528;&#x30FB;&#x6C42;&#x4EBA;&#x60C5;&#x5831;-engage</a></p> <p><strong>estie</strong><br/> <a href="https://www.estie.jp/">&#x682A;&#x5F0F;&#x4F1A;&#x793E;estie</a><br/> <a href="https://twitter.com/estie_corp">&#x682A;&#x5F0F;&#x4F1A;&#x793E;estie(&#x30A8;&#x30B9;&#x30C6;&#x30A3;) (@estie_corp) / X</a><br/> <a href="https://www.estie.jp/careers/">&#x63A1;&#x7528;&#x60C5;&#x5831;&#xFF5C;&#x682A;&#x5F0F;&#x4F1A;&#x793E;estie</a></p> RP_Nao ChatGPTのAPI機能について調べてみました hatenablog://entry/820878482961485241 2023-10-05T07:00:00+09:00 2023-10-05T07:00:04+09:00 こんにちは、サブスクペイで開発を担当している近藤です。 ChatGPT使っていますでしょうか?知らないことを調べたり、雑談もできるので適当にメッセージを投げて反応を楽しんでおります。 API機能があるので導入について少し調べました。 設定と使い方 API機能のリファレンスは以下になります。 platform.openai.com 単純に応答させたいだけならば、Chat APIを使用することで実現できます。 今回はPostmanを用いて、HTTPリクエストを投げる形で作成しました。 前準備として、ChatGPTのAPIキーを用意しておく必要があります。 ChatGPTのPersonal Sett… <p>こんにちは、サブスクペイで開発を担当している近藤です。<br/> ChatGPT使っていますでしょうか?知らないことを調べたり、雑談もできるので適当にメッセージを投げて反応を楽しんでおります。<br/> API機能があるので導入について少し調べました。</p> <h3 id="設定と使い方">設定と使い方</h3> <p>API機能のリファレンスは以下になります。 <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fplatform.openai.com%2Fdocs%2Fapi-reference%2F" title="OpenAI Platform" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://platform.openai.com/docs/api-reference/">platform.openai.com</a></cite></p> <p>単純に応答させたいだけならば、Chat APIを使用することで実現できます。<br/> 今回はPostmanを用いて、HTTPリクエストを投げる形で作成しました。<br/> 前準備として、ChatGPTのAPIキーを用意しておく必要があります。<br/> ChatGPTのPersonal Settingから API Keysをクリックし、Create new secret key でキーを作成してください。 作成したキーの情報をPostmanのヘッダに設定します。<br/> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825140644.png" alt="" /></p> <p>その他の設定は以下のようにしました。 <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/r/robotpayment-tech/20230825/20230825140650.png" alt="" /></p> <h3 id="応答例">応答例</h3> <p>リクエスト:</p> <pre class="code" data-lang="" data-unlink>メソッド: POST URL: https://api.openai.com/v1/chat/completions ヘッダ: Content-Type: application/json Authorization: Bearer [APIキー] 本文: { &#34;model&#34;: &#34;gpt-3.5-turbo&#34;, &#34;messages&#34;: [ { &#34;role&#34;:&#34;user&#34;, &#34;content&#34;:&#34;カツカレーの作り方とおすすめの付け合わせの紹介をしてください。付け合わせの作り方も教えてください。&#34; } ] }</pre> <p>レスポンス:</p> <pre class="code" data-lang="" data-unlink>{ &#34;id&#34;: &#34;chatcmpl-7VZBskbS8KkV3maA4diA4E5xmmFHE&#34;, &#34;object&#34;: &#34;chat.completion&#34;, &#34;created&#34;: 1687757796, &#34;model&#34;: &#34;gpt-3.5-turbo-0301&#34;, &#34;choices&#34;: [ { &#34;index&#34;: 0, &#34;message&#34;: { &#34;role&#34;: &#34;assistant&#34;, &#34;content&#34;: &#34;【カツカレーの作り方】\n\n材料:\n・豚ロース肉 200g\n・小麦粉 適量\n・塩、こしょう 適量\n・卵 1個\n・パン粉 適量\n・サラダ油 適量\n・カレールー 1-2人分\n・玉ねぎ 1/2個\n・にんじん 1/2本\n・じゃがいも 1個\n・水 350ml\n\n作り方:\n1. 豚ロース肉を厚さ1cm程度に切る。\n2. おろしにんにく、塩、こしょうを加えた小麦粉をまぶし、とき卵をからめ、最後にパン粉をつける。\n3. サラダ油を熱したフライパンでカツを揚げる。\n4. 玉ねぎ、にんじん、じゃがいもをスライスする。\n5. 玉ねぎを炒めて透き通るまで炒め、にんじん、じゃがいもを加えて炒める。\n6. 水を加えて煮込み、カレールーを加えてとろみがつくまで煮込む。\n7. カレーに揚げたカツを載せて完成。\n\n【おすすめの付け合わせ】\n\n・キャベツサラダ:食物繊維が豊富なキャベツを使ったサッパリとしたサラダが良いです。ドレッシングはレモン風味や和風味など、甘いものよりもさっぱりしたものがおススメです。\n作り方:キャベツと人参を薄切りにして、マヨネーズやレモン汁、塩、こしょうなどで和える。\n\n・ピクルス:カツカレーと相性の良いザクザクとした食感が楽しいピクルスを作ってみましょう。\n作り方:カイワレ大根、赤紫蘇の実、キュウリを薄切りにして、酢や砂糖、塩、お好みの調味料で漬け込みます。\n\n・紫キャベツのマリネ:色鮮やかな紫キャベツにマリネ液を加えて、上品な酸味がカツカレーの味を引き立てます。\n作り方:紫キャベツを薄切りにし、オリーブオイルや酢、レモン汁、塩、にんにくなどで味付けし、冷蔵庫で30分~1時間ほど寝かせる。\n\n・玉子焼き:カツカレーと相性抜群の玉子焼きを作りましょう。\n作り方:卵を溶いて、塩、砂糖、醤油などで味付けします。フライパンに油を敷き、薄く広げてから巻き上げていき、完成です。&#34; }, &#34;finish_reason&#34;: &#34;stop&#34; } ], &#34;usage&#34;: { &#34;prompt_tokens&#34;: 53, &#34;completion_tokens&#34;: 922, &#34;total_tokens&#34;: 975 } }</pre> <p>Chat APIでのリクエストはデフォルトでは応答文字数の制限がないため、一気にまとめて表示されるのがいいですね。長くなってもまとめて表示してくれます。<br/> また、使用したトークン数も出るため実際にどれくらいのトークンが使用されるかを把握することもできます。<br/> トライアルの場合は$5/月までの利用となっていますが、Chatの金額設定は 2023年6月の時点では $0.0015/1,000トークンとなっています。<br/> 1回の応答で数百トークンほど使用するので、開発用途で応答を確かめる分には十分な量だと思います。</p> <p>また、Playgroundにてリクエストの設定や応答内容を手軽に確認できるので、こちらでも感触をつかむことができます。 <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fplatform.openai.com%2Fplayground%3Fmode%3Dchat" title="OpenAI Platform" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://platform.openai.com/playground?mode=chat">platform.openai.com</a></cite></p> <h3 id="まとめ">まとめ</h3> <p>ChatGPTでのAPIの導入でした。APIキー設定とリクエスト形式を設定すれば簡単に応答を返すことができます。<br/> 単純な応答だけでも面白いですが、function calling を使えば関数を呼び出すJSONを生成することもできます。<br/> これで生成したJSONを他のサービスに投げる処理を書けば、面白いことができそうなので詳しく調べていきたいと思います。 <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fplatform.openai.com%2Fdocs%2Fguides%2Fgpt%2Ffunction-calling" title="OpenAI Platform" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://platform.openai.com/docs/guides/gpt/function-calling">platform.openai.com</a></cite></p> <p> <br /> <br /> <strong><span style="font-size: 150%"> We are hiring!!</span></strong><br /> <br /> ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!<br /> <br /> <iframe id="talk_frame_912302" class="speakerdeck-iframe" src="//speakerdeck.com/player/1de8e02c33ef4c9ea40732c2a9bd19a0" width="710" height="399" style="aspect-ratio:710/399; border:0; padding:0; margin:0; background:transparent;" frameborder="0" allowtransparency="true" allowfullscreen="allowfullscreen"></iframe> <cite class="hatena-citation"><a href="https://speakerdeck.com/robot_payment/robot-payment">speakerdeck.com</a></cite> <br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.robotpayment.co.jp%2Frecruit%2Fengineer-recruitment%2F" title="エンジニア採用 | 採用情報 | ROBOT PAYMENT" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;" loading="lazy"></iframe><cite class="hatena-citation"><a href="https://www.robotpayment.co.jp/recruit/engineer-recruitment/">www.robotpayment.co.jp</a></cite> <br /> 🎉<a href="https://twitter.com/takeo_kamimura">twitter採用担当アカウント</a>開設!🎉どんどん情報発信していきます!!</p> <p><br /></p> robotpayment-tech