ROXX開発者ブログ

https://techblog.roxx.co.jp/

ROXX開発者ブログ

フィード

記事のアイキャッチ画像
ALPS, ASD でセマンティクス重視のドキュメントを作成する
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // ソフトウェア設計をする際に以下のような課題が発生する場合があります。 ドキュメント化のコストと、管理コストの増加 システムが複雑化するにつれて、コードの理解が難しくなる 一貫性のない命名規則 これらの課題を解決するために、今回は ALPS という情報設計手法を学習しました。 ALPS とは ALPS QuickStart によると、以下のように説明されています。 Application-Level Profile Semantics (ALPS)は、アプリケーションレベルのセマンティクス(語句の意味や構造)を表現するフォーマットです。JSON、HTML…
10日前
記事のアイキャッチ画像
GraphQL + gRPC + Go で作るバックエンド環境
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} GraphQL サーバと gRPC サーバを Go で実装し、それらを連携させた簡単なローカル環境を構築しました。この記事では、その手順と体験をシェアしていきます。 全体アーキテクチャの概要 全体のアーキテクチャは以下のような構成になります。 フロントエンド(クライアント)からのリクエストは、GraphQL サーバのエンドポイントに送信されます。 GraphQL サーバは受け取ったクエリを解析し、必要なデータを取得するために内部で gRPC クライアント…
13日前
記事のアイキャッチ画像
Go 言語における Functional Option Pattern をラーメン屋で理解する
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} Functional Option Pattern は、Go 言語でよく使用される設計パターンの 1 つです。このパターンを使用することで、柔軟で拡張性の高い API 設計が可能になります。この記事では、Functional Option Pattern の基本的な考え方と実装方法について解説します。 Functional Option Pattern Functional Option パターンは、関数を使ってオプションの設定を定義し、適用するデザイン…
1ヶ月前
記事のアイキャッチ画像
XP入門3
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // 前回までの振り返り 第1章~第16章は実践的な内容で、XP (エクストリームプログラミング)における開発手法や考え方について学びました。 XP入門 XP入門2 今回の内容 今回は17~25章を読み進め、XP の哲学や歴史的な背景について学びました。 その中でも印象的だった章についてまとめていきます。 エクストリームプログラミング / ケント・ベック 著 テイラー主義とソフトウェア 世界初の生産技術者である、フレドリック・テイラーという人物について。 工場の生産性を飛躍的に向上させる、科学的管理法を提唱した。 これが「テイラー主義」と呼ばれており、技術的…
2ヶ月前
記事のアイキャッチ画像
BigQuery パイプ構文を試す - 直感的で読みやすい新しいSQLクエリの書き方
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} 2024 年 10 月 9 日の Google Cloud Blog にて、BigQuery と Cloud Logging における「パイプ構文」導入の記事がアップされました。 Introducing pipe syntax in BigQuery and Cloud Logging | Google Cloud Blog SQL のクエリといえば、長らく同じ記法で歴史を刻んできた古に伝わる呪文ですが、今回の「パイプ構文」は、それに一石を投じる新しい書…
3ヶ月前
記事のアイキャッチ画像
XP入門2
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // 前回の振り返り 簡単に前回を振り返ると、XP (エクストリームプログラミング) は、アジャイル開発の手法の一つです。 XP において「価値」「原則」「プラクティス」は重要な概念であり、それぞれの要素が連携してソフトウェア開発を効率化します。 前回の記事はこちら 今回の内容 今回は9~16章を読み進めました。 その中で印象的だった、導出プラクティス、チーム全体、制約理論と時間の重要性についてまとめていきます。 エクストリームプログラミング / ケント・ベック 著 導出プラクティス 導出プラクティスは主要プラクティスを補強し、より効果的な開発を可能にするプ…
3ヶ月前
記事のアイキャッチ画像
Workload Identity 連携で GithubActions から GCP リソースをデプロイする
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} GCP 外のアプリケーションから GCP リソースを操作する場合に、サービスアカウントキーを用いずに安全にリソースへアクセスできる Workload Identity 連携を用いて、Github Actions から GCP リソースのデプロイを行います。 Workload Identity 連携:簡単で安全な Google Cloud アクセス Workload Identity 連携は、Google Cloud外のアプリケーションが安全かつ簡単にGo…
4ヶ月前
記事のアイキャッチ画像
AWS セッションマネージャーでEC2に接続できない時の対処法
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // <![CDATA[ if (location.href.match(/entry/)) { const canonicalUrl = 'https://zenn.dev/ota_rg/articles/4d32b5691eada9'; let canonical = document.querySelector("link[rel='canonical']"); if (canonical) { canonical.setAttribute('href', canonicalUrl); } else { canonical = document.cre…
4ヶ月前
記事のアイキャッチ画像
AWSのプライベートサブネットにあるEC2にSession Managerを使ってセキュアにアクセスする
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // <![CDATA[ if (location.href.match(/entry/)) { const canonicalUrl = 'https://zenn.dev/ota_rg/articles/59eac8ad278c78'; let canonical = document.querySelector("link[rel='canonical']"); if (canonical) { canonical.setAttribute('href', canonicalUrl); } else { canonical = document.cre…
4ヶ月前
記事のアイキャッチ画像
Vercel へのビルド&デプロイをローカル環境から行う
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} Vercel は、モダンなウェブアプリケーションの開発、デプロイ、ホスティングを簡単かつ効率的に行うためのクラウドプラットフォームです。AWS Amplify, Firebase Hosting, Netlify, Heroku あたりと同じ位置づけのイメージ。 基本的には、Vercel と Github を連携させるだけで、開発ブランチプッシュやプルリクエスト作成時にプレビュー環境を構築してくれたり、デフォルトブランチにマージしたら本番環境へデプロイし…
5ヶ月前
記事のアイキャッチ画像
XP入門
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // はじめに 今年の6月からスクラムマスターの役割を担うことになりました。 しかし、私自身現在の会社に勤めるまでアジャイル開発の経験が全くなかったので、理解を深めるために XP について学ぶことにしました。 この記事はケント・ベック氏によって著された「エクストリームプログラミング」の7章までの読書メモと感想です。 XP とは XP (エクストリームプログラミング)は、アジャイル開発の手法の一つです。 エクストリームは日本語で「極限」という意味で、柔軟な変更や継続的な成長により開発プラクティスを極限まで洗練させ、品質の高いソフトウェアを効率的に開発することを…
5ヶ月前
記事のアイキャッチ画像
地方在住エンジニアが上京して変わったこと:技術イベント参加を通じて得た経験
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // .table-warp {overflow-x: scroll;} はじめに 私は、新潟に住みながらフルリモートでエンジニアとして働いていました。その理由の一つは、男子新体操の練習を続けるためです。しかし、2022年の冬頃からエンジニアのイベントに参加したいという気持ちが高まっていました。地方にいると、なかなかその機会を得るのは難しく、実際に参加しないまま終わってしまうことが多かったのです。このままでは一生イベントに行かないままで終わってしまうと思い、関東に拠点を移してみることにしました。そして、いくつかの技術イベントに参加してみることにしました。 こ…
5ヶ月前
記事のアイキャッチ画像
【ローカルで動作確認】Functions Framework を用いた Cloud Functions 開発
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} Functions Framework を用いた Cloud Functions 開発 Google Cloud Functions は、サーバーレスコンピューティングの強力なソリューションです。Functions Framework を使用することで、開発者はローカル環境で Cloud Functions を効率的に開発、テスト、デバッグすることができます。本記事では、Functions Framework を用いた Cloud Functions 開…
6ヶ月前
記事のアイキャッチ画像
Looker Studio で Cloud Billing データ(料金・コスト)を可視化する
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} GCP コスト管理の重要性と可視化の必要性 クラウドコンピューティングの普及に伴い、多くの企業が Google Cloud Platform (GCP) を利用しています。しかし、クラウドサービスの利用が拡大するにつれて、コスト管理の重要性も増しています。効果的なコスト管理は、ビジネスの収益性と持続可能性に直接影響を与える重要な要素です。 GCP の課金システムは柔軟で詳細ですが、その複雑さゆえに、実際の使用状況と費用を把握することが困難な場合があります…
6ヶ月前
記事のアイキャッチ画像
IntelliJ + DevContainer + Zenn CLI でブログ執筆環境を構築する
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // はじめに この記事では、IntelliJ IDEA と DevContainer, Zenn CLI を利用してブログ執筆環境を構築する方法をご紹介します。 DevContainer とは 以下が参考になりました。 Devcontainer(Remote Container) いいぞという話 ~開発環境を整える~ Devcontainer とは、 Dockerコンテナを開発環境とし作成することで、開発環境に必要なライブラリやランタイムのバージョン、Extension をコンテナ内に閉じ込めその中で完結させることができます。 Devcontainer っ…
7ヶ月前
記事のアイキャッチ画像
男子新体操とはエンジニアリングである
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // .table-warp {overflow-x: scroll;} はじめに 私はエンジニアであり、男子新体操というスポーツをやっており、プライベートの時間に練習し、大会に出場してたりします。 私は個人競技をやっており、飽き性なため、4種目の演技を毎年作り変えています。 ※一般的には1つの演技を作ったら2~3年、長い人は7年ほど同じ演技をします エンジニアを仕事としてやっていくうちに、男子新体操での演技作りと似ている部分が多いと、かなり前から感じていたので、面白いと思ってこの記事を書いてみました。 男子新体操とは 団体 youtu.be 個人 yout…
7ヶ月前
記事のアイキャッチ画像
TROCCO と BigQuery で始める ETL 入門
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} データ分析基盤を構築する上で欠かせないのが ETL ツールです。外部データソースの取り込みを一元管理し、分析基盤のデータを最新に保ちます。 今回は、TROCCO と BigQuery を使って分析基盤を構築し、データ処理の流れを体験してみましょう。 対象 本記事は、TROCCO を使ってみたい。分析基盤を構築してみたい人が対象です。 TROCCO と GCP を利用します。個人利用のアカウントを使い、ハンズオン形式で進めていけます。 基本的には無料の範囲…
8ヶ月前
記事のアイキャッチ画像
SQL クエリを効率よく書こう: CTE, Window 関数編
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} データベースを操作する SQL SQL(Structured Query Language)は、関係データベース管理システム(RDBMS)でデータを管理・操作するための標準化された言語です。データベースに格納された情報を効果的に取得、挿入、更新、削除するために使用されます。 SQLは、テーブルと呼ばれるデータの形式で情報を格納し、クエリを使用してデータベースとの対話を行います。初心者にとっても覚えやすく、構文も直感的であるため、多くのデータベース管理シス…
8ヶ月前
記事のアイキャッチ画像
外部ライブラリのfinalクラスをモックする
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // .table-warp {overflow-x: scroll;} はじめに 外部のライブラリを使用して実装し、テストを書いていたらfinalクラスがモックできずに詰まったので、その解決方法を解説していきます。 また、解決にあたりサービスコンテナ周りで得た知見の共有をしていきます。 問題 以下のようにLaravelのAuth0 SDKを使用して実装し、テストを書いていたら、 Auth0 SDKで実装されているクラスがfinalなため、直でモック化することができませんでした... https://github.com/auth0/laravel-auth…
9ヶ月前
記事のアイキャッチ画像
はじめまして。AWS Step Functions のフローを理解する
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} AWS Step Functions の「フロー」を触って挙動を確認します。 AWS Step Functions 様々なアプリケーションのワークフローを一連の処理として定義し実行できるサービス。Lambda invoke や SNS Publish, ECS Run task など、AWS 上に構築した処理を一つのシナリオにまとめて、順番に実行したり、条件によってそれらの実行を決定したり、並列実行や反復実行なども行える。 AWS Step Functi…
10ヶ月前
記事のアイキャッチ画像
【AWS】SAA [SAA-C03] 合格体験記 2023/01
ROXX開発者ブログ
この記事は個人ブログと同じ内容です // .table-warp {overflow-x: scroll;} はじめに 2024年1月30日にAWS実務未経験で3ヶ月でAWS SAAに合格することができましたので、 その合格体験記を書きたいと思います。 私の背景 私のエンジニア歴は3年程度で、普段はWeb開発のフロントエンドとバックエンドをやっています。 ですので、AWSの実務経験はありません。 AWSは昔に、チュートリアルなどをみながらEC2やECSを使用してサーバーを建てた経験があるくらいです。 試験の傾向 オンプレからAWS移行するサービスの組み合わせや、コストを最適化するための問題が多…
10ヶ月前
記事のアイキャッチ画像
瞬時に、柔軟に、そして簡単に。Amazon Athena で行うログ分析
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // .table-warp {overflow-x: scroll;} ログの分析をどのような手段で実施するか ログの多くはテキストファイルであることが多く、DB に格納されていないことがほとんどです。 しかも、ログファイルは大抵、複数の環境から吐き出されたり、量や時間で分割して出力されたりするため、複数のファイルにまたがっていることがほとんど。 そんな環境下でも、ログ分析の環境を簡単に構築し、柔軟に解析していけるのが、Amazon Athena です。 AWS Athena AWS Athena は、Amazon S3 に…
1年前
記事のアイキャッチ画像
テーブル結合は JOIN と FROM どちらで行うべきか。両者の違いと注意点
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // JOIN での結合式と、FROM での結合式 テーブル結合といえば JOIN 句が一般的ですが、FROM 句に複数テーブルを指定することでもテーブルを結合できます。例えば、以下 2 つのクエリは全く同じ結果を返します。 SELECT * FROM books INNER JOIN author_book ON books.id = author_book.book_id INNER JOIN authors ON author_book.author_id = authors.id ; SELECT * FROM boo…
1年前
記事のアイキャッチ画像
Laravelを使用したStripeのCheckoutの決済済みかどうかの判定の実装
ROXX開発者ブログ
この記事は個人ブログと同じ内容です Laravelを使用したStripeのCheckoutの決済済みかどうかの判定の実装 // 前回と前々回の記事の続きです。 https://zenn.dev/ota_rg/articles/5bb03b17198f58 https://zenn.dev/ota_rg/articles/836c891b481c23 概要 今回はCheckoutで決済した後の決済、未決済の判定について紹介していきたいと思います。 バックエンドはLaravelを使用しています。 決済、未決済の判定をする方法は以下のように2種類あり、今回はそれらについて解説しています。 ・Stri…
1年前
記事のアイキャッチ画像
Nuxt.js+LaravelでStripeのCheckoutの実装をやってみた【決済フォーム埋め込み編】
ROXX開発者ブログ
この記事は個人ブログと同じ内容です Nuxt.js+LaravelでStripeのCheckoutの実装をやってみた【決済フォーム埋め込み編】 // 前回の記事の続きです。 https://zenn.dev/ota_rg/articles/5bb03b17198f58 概要 LaravelとNuxt.jsでStripeの決済処理を実装しました。 今回はCheckoutの「自前のページに決済フォームを埋め込む方法」の紹介をしていきたいと思います。 https://stripe.com/docs/payments/checkout/how-checkout-works?payment-ui=emb…
1年前
記事のアイキャッチ画像
Nuxt.js+LaravelでStripeのCheckoutの実装をやってみた【Stripe決済ページ遷移編】
ROXX開発者ブログ
この記事は個人ブログと同じ内容です Nuxt.js+LaravelでStripeのCheckoutの実装をやってみた【Stripe決済ページ遷移編】 // 概要 LaravelとNuxt.jsでStripeの決済処理を実装しました。 Stripeにはいくつか決済方法があるのですが今回はCheckoutと呼ばれる、Stripeが用意してくれた決済フォームを使用しました。 また、Checkoutにも2種類存在し、「決済時にStripeの決済ページに遷移する方法」と「自前のページに決済フォームを埋め込む方法」があるのですが、今回は「決済時にStripeの決済ページに遷移する方法」の紹介になります。 …
1年前
記事のアイキャッチ画像
Node.js サーバーアプリケーションにおけるトークンバケットを用いたレートリミットの実現
ROXX開発者ブログ
この記事は個人ブログと同じ内容です Node.js サーバーアプリケーションにおけるトークンバケットを用いたレートリミットの実現 // はじめに こんにちは、株式会社 ROXX で back check というサービスを開発しているぐっきー(@Area029S)です。 リクエストを受け付けるごとに重い処理が実行される機能の実装などにおいては一定の時間内に大量に処理を実行するとシステムのリソースを圧迫してしまう可能性があるため注意が必要です。 このような処理をリソースを圧迫させずに処理する方法の1つとして、レートリミット(時間あたりの実行数の制御)の導入があげられます。 今回はネットワークのトラ…
1年前
記事のアイキャッチ画像
BigQuery やさしいはじめの一歩〜実際に触って理解するデータ操作ワークショップ〜
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // BigQuery BigQueryは、Google Cloud Platform(GCP)が提供するフルマネージドのサーバーレスデータウェアハウスです。膨大な量のデータを高速に分析することが可能で、データ分析やビジネスインテリジェンス(BI)の分野で広く利用されています。 BigQuery では、データに対してクエリを実行することで、ほしいデータに絞って取得したり、集計したりなど、データを分析することができます。 BigQuery - Google Cloud 対象 本記事は、BigQuery を用いてデータの操作を行い…
1年前
記事のアイキャッチ画像
Looker Studio やさしいはじめの一歩〜実際に触って理解するレポート作成ワークショップ〜
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // 蓄積した大量のデータを収集・分析・加工し、事業戦略の意思決定を支援する。いわゆる「ビジネス・インテリジェンス(BI)」という言葉が当たり前に聞かれるようになって数十年。これまでたくさんのツールが生まれてきました。 今回は、データを視覚化するためのツール Looker Studio の使い方を解説します。 Looker Studio Looker Studioは、Google が提供する BI ツールです。さまざまなデータソースからデータを収集し、視覚化されたレポートやダッシュボードを作成・共有することができます。 Loo…
1年前
記事のアイキャッチ画像
PHP 8.3 の新機能を試してみよう
ROXX開発者ブログ
この記事は個人ブログと同じ内容です www.ritolab.com // PHP 8.3 が 2024 年 11 月にリリースになります。PHP 8.3 の新しい機能をいくつかピックアップして試してみます。 クラス定数の型指定 クラスで定義する定数に型の指定が行えるようになりました。 Typed class constants https://wiki.php.net/rfc/typed_class_constants <?php class Person { const string NAME = 'rito'; } 指定した型ではない値を代入するとエラーになります。 <?php class…
1年前