2024-01-01から1年間の記事一覧

ALPS, ASD でセマンティクス重視のドキュメントを作成する

この記事は個人ブログと同じ内容です ソフトウェア設計をする際に以下のような課題が発生する場合があります。 ドキュメント化のコストと、管理コストの増加 システムが複雑化するにつれて、コードの理解が難しくなる 一貫性のない命名規則 これらの課題を解…

GraphQL + gRPC + Go で作るバックエンド環境

この記事は個人ブログと同じ内容です www.ritolab.com GraphQL サーバと gRPC サーバを Go で実装し、それらを連携させた簡単なローカル環境を構築しました。この記事では、その手順と体験をシェアしていきます。 全体アーキテクチャの概要 全体のアーキテク…

Go 言語における Functional Option Pattern をラーメン屋で理解する

この記事は個人ブログと同じ内容です www.ritolab.com Functional Option Pattern は、Go 言語でよく使用される設計パターンの 1 つです。このパターンを使用することで、柔軟で拡張性の高い API 設計が可能になります。この記事では、Functional Option Pat…

XP入門3

この記事は個人ブログと同じ内容です 前回までの振り返り 第1章~第16章は実践的な内容で、XP (エクストリームプログラミング)における開発手法や考え方について学びました。 XP入門 XP入門2 今回の内容 今回は17~25章を読み進め、XP の哲学や歴史的な背景に…

BigQuery パイプ構文を試す - 直感的で読みやすい新しいSQLクエリの書き方

この記事は個人ブログと同じ内容です www.ritolab.com 2024 年 10 月 9 日の Google Cloud Blog にて、BigQuery と Cloud Logging における「パイプ構文」導入の記事がアップされました。 Introducing pipe syntax in BigQuery and Cloud Logging | Google C…

XP入門2

この記事は個人ブログと同じ内容です 前回の振り返り 簡単に前回を振り返ると、XP (エクストリームプログラミング) は、アジャイル開発の手法の一つです。 XP において「価値」「原則」「プラクティス」は重要な概念であり、それぞれの要素が連携してソフト…

Workload Identity 連携で GithubActions から GCP リソースをデプロイする

この記事は個人ブログと同じ内容です www.ritolab.com GCP 外のアプリケーションから GCP リソースを操作する場合に、サービスアカウントキーを用いずに安全にリソースへアクセスできる Workload Identity 連携を用いて、Github Actions から GCP リソースの…

AWS セッションマネージャーでEC2に接続できない時の対処法

この記事は個人ブログと同じ内容です はじめに プライベートサブネットにあるEC2インスタンスに、VPCエンドポイント経由でAWS Systems Manager(SSM)を使って接続する際、かなり苦戦したので、その対処法についてこの記事でまとめます。 SSMで接続できない…

AWSのプライベートサブネットにあるEC2にSession Managerを使ってセキュアにアクセスする

この記事は個人ブログと同じ内容です Session Managerについて Session ManagerはAWS Systems Managerの一部であり、安全にEC2インスタンスなどに接続するためのツールです。Session Managerを使用すれば、SSHキーやパブリックIPを割り当てることなく、AWSの…

Vercel へのビルド&デプロイをローカル環境から行う

この記事は個人ブログと同じ内容です www.ritolab.com Vercel は、モダンなウェブアプリケーションの開発、デプロイ、ホスティングを簡単かつ効率的に行うためのクラウドプラットフォームです。AWS Amplify, Firebase Hosting, Netlify, Heroku あたりと同じ…

XP入門

この記事は個人ブログと同じ内容です はじめに 今年の6月からスクラムマスターの役割を担うことになりました。 しかし、私自身現在の会社に勤めるまでアジャイル開発の経験が全くなかったので、理解を深めるために XP について学ぶことにしました。 この記事…

地方在住エンジニアが上京して変わったこと:技術イベント参加を通じて得た経験

この記事は個人ブログと同じ内容です はじめに 私は、新潟に住みながらフルリモートでエンジニアとして働いていました。その理由の一つは、男子新体操の練習を続けるためです。しかし、2022年の冬頃からエンジニアのイベントに参加したいという気持ちが高ま…

【ローカルで動作確認】Functions Framework を用いた Cloud Functions 開発

この記事は個人ブログと同じ内容です www.ritolab.com Functions Framework を用いた Cloud Functions 開発 Google Cloud Functions は、サーバーレスコンピューティングの強力なソリューションです。Functions Framework を使用することで、開発者はローカ…

Looker Studio で Cloud Billing データ(料金・コスト)を可視化する

この記事は個人ブログと同じ内容です www.ritolab.com GCP コスト管理の重要性と可視化の必要性 クラウドコンピューティングの普及に伴い、多くの企業が Google Cloud Platform (GCP) を利用しています。しかし、クラウドサービスの利用が拡大するにつれて、…

IntelliJ + DevContainer + Zenn CLI でブログ執筆環境を構築する

この記事は個人ブログと同じ内容です はじめに この記事では、IntelliJ IDEA と DevContainer, Zenn CLI を利用してブログ執筆環境を構築する方法をご紹介します。 DevContainer とは 以下が参考になりました。 Devcontainer(Remote Container) いいぞという…

男子新体操とはエンジニアリングである

この記事は個人ブログと同じ内容です はじめに 私はエンジニアであり、男子新体操というスポーツをやっており、プライベートの時間に練習し、大会に出場してたりします。 私は個人競技をやっており、飽き性なため、4種目の演技を毎年作り変えています。 ※一…

TROCCO と BigQuery で始める ETL 入門

この記事は個人ブログと同じ内容です www.ritolab.com データ分析基盤を構築する上で欠かせないのが ETL ツールです。外部データソースの取り込みを一元管理し、分析基盤のデータを最新に保ちます。 今回は、TROCCO と BigQuery を使って分析基盤を構築し、…

SQL クエリを効率よく書こう: CTE, Window 関数編

この記事は個人ブログと同じ内容です www.ritolab.com データベースを操作する SQL SQL(Structured Query Language)は、関係データベース管理システム(RDBMS)でデータを管理・操作するための標準化された言語です。データベースに格納された情報を効果的…

外部ライブラリのfinalクラスをモックする

この記事は個人ブログと同じ内容です はじめに 外部のライブラリを使用して実装し、テストを書いていたらfinalクラスがモックできずに詰まったので、その解決方法を解説していきます。 また、解決にあたりサービスコンテナ周りで得た知見の共有をしていきま…

はじめまして。AWS Step Functions のフローを理解する

この記事は個人ブログと同じ内容です www.ritolab.com AWS Step Functions の「フロー」を触って挙動を確認します。 AWS Step Functions 様々なアプリケーションのワークフローを一連の処理として定義し実行できるサービス。Lambda invoke や SNS Publish, E…

【AWS】SAA [SAA-C03] 合格体験記 2023/01

この記事は個人ブログと同じ内容です はじめに 2024年1月30日にAWS実務未経験で3ヶ月でAWS SAAに合格することができましたので、 その合格体験記を書きたいと思います。 私の背景 私のエンジニア歴は3年程度で、普段はWeb開発のフロントエンドとバックエン…

瞬時に、柔軟に、そして簡単に。Amazon Athena で行うログ分析

この記事は個人ブログと同じ内容です www.ritolab.com ログの分析をどのような手段で実施するか ログの多くはテキストファイルであることが多く、DB に格納されていないことがほとんどです。 しかも、ログファイルは大抵、複数の環境から吐き出されたり、量…

テーブル結合は JOIN と FROM どちらで行うべきか。両者の違いと注意点

この記事は個人ブログと同じ内容です www.ritolab.com JOIN での結合式と、FROM での結合式 テーブル結合といえば JOIN 句が一般的ですが、FROM 句に複数テーブルを指定することでもテーブルを結合できます。例えば、以下 2 つのクエリは全く同じ結果を返し…

Laravelを使用したStripeのCheckoutの決済済みかどうかの判定の実装

この記事は個人ブログと同じ内容です Laravelを使用したStripeのCheckoutの決済済みかどうかの判定の実装 前回と前々回の記事の続きです。 https://zenn.dev/ota_rg/articles/5bb03b17198f58 https://zenn.dev/ota_rg/articles/836c891b481c23 概要 今回はCh…

Nuxt.js+LaravelでStripeのCheckoutの実装をやってみた【決済フォーム埋め込み編】

この記事は個人ブログと同じ内容です Nuxt.js+LaravelでStripeのCheckoutの実装をやってみた【決済フォーム埋め込み編】 前回の記事の続きです。 https://zenn.dev/ota_rg/articles/5bb03b17198f58 概要 LaravelとNuxt.jsでStripeの決済処理を実装しました。…

Nuxt.js+LaravelでStripeのCheckoutの実装をやってみた【Stripe決済ページ遷移編】

この記事は個人ブログと同じ内容です Nuxt.js+LaravelでStripeのCheckoutの実装をやってみた【Stripe決済ページ遷移編】 概要 LaravelとNuxt.jsでStripeの決済処理を実装しました。 Stripeにはいくつか決済方法があるのですが今回はCheckoutと呼ばれる、Stri…

Node.js サーバーアプリケーションにおけるトークンバケットを用いたレートリミットの実現

この記事は個人ブログと同じ内容です Node.js サーバーアプリケーションにおけるトークンバケットを用いたレートリミットの実現 はじめに こんにちは、株式会社 ROXX で back check というサービスを開発しているぐっきー(@Area029S)です。 リクエストを受…