ROUTE06 Tech Blog
https://tech.route06.co.jp/
ROUTE06 Tech Blog
フィード

ADRで意思決定し、そのADRを破棄して新しくADRを作成する実例を紹介します - GraphQLクライアントのキャッシュアルゴリズム変更編
ROUTE06 Tech Blog
ROUTE06 でソフトウェアエンジニアをしている @MH4GF です。2025/03/26 に、Findy Tools さん主催の「実例!フロントエンドの技術選定とその後を ADR から振り返る」というイベントで登壇します。 発表タイトルは「チームの性質によって変わる ADR との向き合い方と、生成 AI 時代のこれから」の予定です。サイボウズ株式会社の @sakito さん、ファインディ株式会社の @puku0x さんとパネルディスカッションも行います。オンラインのイベントなので、ぜひお気軽にご参加ください! findy-tools.connpass.com 発表に先立ち、私が関わったプロ…
11日前

GitHub リポジトリのメトリクスを GAS で継続的に蓄積する OSS リポジトリを公開した
ROUTE06 Tech Blog
こんにちは。ソフトウェアエンジニアの id:masutaka26 です。 以前、OSS 活動の指標(メトリクス)を GitHub のリポジトリデータから考察しました。 tech.route06.co.jp それを踏まえて、GitHub リポジトリのトラフィックデータを継続的に蓄積する Google Apps Script (GAS) を実装しました。 tech.route06.co.jp 今回は他のメトリクスを蓄積する GAS も追加しつつ、OSS としてリポジトリを公開したので、改めて紹介します。 公開したリポジトリ 蓄積しているメトリクス 1. Stargazers やりたいこと 課題感 …
16日前

Ruby パーサ Prism を活用して便利 Gem を作成してみた
ROUTE06 Tech Blog
こんにちは。ソフトウェアエンジニアの sasamuku です。 Prism は、エラートレラント性や移植性を考慮して設計された新しい Ruby パーサです1。先日リリースされた Ruby 3.4 で、Ruby のデフォルトパーサとして採用されたことが発表されました2。 ROUTE06 が開発している Liam では、以前から Ruby コードのパースに Prism を活用しています3。パーサと聞くと「専門知識が必要なんじゃ」「自分には難しい」と感じるかもしれません。私自身もそうでしたが、実際に開発で利用してみると、そこまで複雑ではなく、使いこなせると非常に便利な技術であることが分かりました。 …
3ヶ月前

ROUTE06 の「OSS 公開チュートリアル」を公開します
ROUTE06 Tech Blog
こんにちは。ソフトウェアエンジニアの id:masutaka26 です。 最近 ROUTE06 では、Giselle と Liam というプロダクトを OSS 化しました。 https://github.com/giselles-ai/giselle https://github.com/liam-hq/liam 本記事では、ROUTE06 の OSS 推進室が OSS 化の際に作成し実際に使用した、「OSS 公開チュートリアル」を公開します。一部、内部リンクへの参照などは削除しています。 👉 ROUTE06 の OSS 推進室は Open Source Program Office (OSP…
3ヶ月前

GAS を使って GitHub 複数リポジトリのトラフィックデータを継続的に蓄積する
ROUTE06 Tech Blog
こんにちは。ソフトウェアエンジニアの id:masutaka26 です。 前回は OSS 活動に関係する指標のうち、取得期間に制限のある数値に言及しました。 前述のとおり、Views, Unique views, Clones は直近 2 週間の数値しか取得できません。次回はこちらの課題を解決した方法を紹介する予定です。 tech.route06.co.jp 今回は Google Apps Script (GAS) を使って、Google スプレッドシートにこれらの数値を 2 週間以上蓄積する方法を紹介します。 Google スプレッドシートを作成する GitHub App Access To…
4ヶ月前

Rails で挑むイベントソーシングと補償トランザクション: ローコードプラットフォームでの事例
ROUTE06 Tech Blog
データベーススキーマを動的に操り、ユーザが持ち込んだ BYODB(Bring Your Own Database)のデータベースとも連携する——こうした特殊な要件に直面したローコードプラットフォームの開発現場で辿り着いた解決策はイベントソーシングと補償トランザクションでした。 本記事では、Ruby on Rails アプリケーションでタイトルのアーキテクチャパターンを実践し、複雑な分散トランザクション問題を乗り越えた手法と、その裏にある思考プロセスをご紹介します。 前半では課題の背景として、ローコードプラットフォームと BYODB 要件がもたらす複雑性を説明します。その後、イベントソーシングや…
4ヶ月前

OSS 活動の指標を GitHub リポジトリデータから考察した
ROUTE06 Tech Blog
こんにちは。ソフトウェアエンジニアの id:masutaka26 です。 最近 ROUTE06 では、Giselle と Liam というプロジェクトを OSS 化しました。 https://github.com/giselles-ai/giselle https://github.com/liam-hq/liam これから OSS 活動を進めるにあたり、その指標を定義し計測することは、プロジェクトの成長やユーザーとのエンゲージメントを理解し、改善点を見出すために重要です。 本記事では、OSS マーケティングにおける成果を測定するための指標と、それらの相関性、取得可能な指標の範囲について考察し…
4ヶ月前

ウェブサイトのセキュリティ対策の強化に有効な security.txt
ROUTE06 Tech Blog
こんにちは。ソフトウェアエンジニアの id:masutaka26 です。 プロダクトの OSS 化を進める過程で security.txt を知りましたので、軽くご紹介します。 security.txt の概要 security.txt のフォーマット ROUTE06, Inc. におけるテンプレート ROUTE06, Inc. における設置例 まとめ 付録: 各社の設置例 Supabase その他 security.txt の概要 security.txt はウェブサイトのセキュリティに関する情報を提供するための、標準的なテキストファイルです。2022 年 4 月に公開された RFC 911…
4ヶ月前

License Finder を導入して OSS のライセンスを継続的に監視し始めた
ROUTE06 Tech Blog
こんにちは。ソフトウェアエンジニアの id:masutaka26 です。 最近社内でいくつかのプロダクトの OSS 化が始まっています。OSS 化にあたり、利用パッケージとのソフトウェアライセンス(以下ライセンス)の競合はリスクになり得ます。 今回は License Finder というツールを導入することで、そのリスクを軽減し、継続的に監視し始めたお話を紹介します。 License Finder の紹介 インストール方法 実行方法 依存関係の承認 License Finder を CI に導入する GitHub Actions への導入例 まとめ 補足: 導入例で取り上げた Giselle …
5ヶ月前

GitHub Projects で実現する社内資産管理
ROUTE06 Tech Blog
ROUTE06 では全社ワークスペースとして GitHub を利用しており、社内資産をはじめとしたあらゆる情報を GitHub Projects で管理しています。 例えば、プロジェクトごとのアサイン状況、社内で承認/活用されているツールやライセンス、費用承認稟議など、その範囲は多岐にわたります。 GitHub という強力なプラットフォーム上に、社内のあらゆる情報が一元化されることよって生じるメリットは、非常に大きいと感じています。 一方で、デフォルトの機能だけではやや課題が残ることも事実です。 本記事は GitHub Actions でワークフローを構築することで課題を補ってみたよ、という記…
5ヶ月前

Kaigi on Rails 2024 協賛・参加レポート
ROUTE06 Tech Blog
こんにちは!ROUTE06 でソフトウェアエンジニアをしている @sasamukuです。 Kaigi on Rails 2024 に参加してきましたのでレポートをお届けします! 前回に引き続き、ROUTE06 は Silver Sponsors として協賛させていただきました。 弊社からは4人のメンバーが現地参加しました! ROUTE06は4名でおじゃましてます🙌 #kaigionrails @hoppiestar @sasamuku @MH4GF @ynndino88 pic.twitter.com/n7BRei0djt— ヤノ | ROUTE06 (@ynndino88) 2024年10月…
5ヶ月前

GitHubをコードで管理 ! Terraformを導入して安全な管理を実現しました
ROUTE06 Tech Blog
ROUTE06 では GitHub の管理に Terraform を導入しました。今回はその導入の背景、実際に導入してどう変わったのか、導入方法について紹介したいと思います。 Terraform とは Terraform は、IaC(Infrastructure as Code)ツールの一種です。 インフラの設定をコードとして管理することで、設定の変更履歴が明確になり、誤った設定によるトラブルを防ぐことができます。 なぜ GitHub を Terraform で管理するのか ROUTE06 では、全社的に GitHub を使用しています。そのため、GitHub の管理は非常に重要です。 Ter…
6ヶ月前

"それは失敗する":Appleですら疑ったiPhoneの挑戦
ROUTE06 Tech Blog
技術の世界では、今日の王者も昨日は挑戦者でした。その最も象徴的な例の一つが、AppleのiPhoneです。Tony Fadellの著書「Build」は、このiPhoneの開発秘話を通じて、革新的な製品開発の本質に迫ります。今回は、この書籍から得られる洞察を、現代の挑戦者たちに向けて紐解いていきます。
6ヶ月前

VercelのAI SDKを使ってLLMの出力を構造化しつつストリーミングする
ROUTE06 Tech Blog
VercelのAI SDKを使って、LLMの出力を構造化しながらストリーミングする方法をサンプルコードと共に紹介します。
6ヶ月前

Valibot Schema Driven UI - ユーザーがノーコードで自由に UI を組み立てられるエディタを Next.js と Valibot で構築する
ROUTE06 Tech Blog
近年 Bubble や Webflow、日本だと STUDIO などのノーコードプラットフォームが注目を集めています。これらのツールは、プログラミングの知識がなくてもユーザーが思い思いの UI を構築できる機能を提供し、アプリケーション開発の民主化に貢献しています。 このようなノーコードでユーザーが自由に UI を組み立てる仕組みはどのように構築されているのでしょうか。一見複雑に見えますが、基本的な考え方を理解すれば独自のエディタを構築することも不可能ではありません。アーキテクチャの中核となるのは、動的な UI コンポーネントを表現するスキーマ定義と、それを実際の UI 要素に変換する仕組みで…
6ヶ月前

ROUTE06 で Jamf Connect を導入しました
ROUTE06 Tech Blog
こんにちは。情シスの @kaze3desu です。 このたびROUTE06では、ゼロトラストセキュリティの実現に向けて、Jamf Connectを導入しました。 Jamf Connectの導入を検討している方向けに、ポイントをまとめました。 Jamf Connectとは Jamf Connectは、Appleデバイス向けに特化したツールで、IdP(アイデンティティプロバイダー)との連携を実現します。 Jamf Connectを使用することで、ユーザーはOktaなどのIdPを通じてMacにサインインでき、セキュリティと利便性が向上します。また、Jamf ProやJamf Protectとの連携に…
6ヶ月前

LLMアプリケーションにおけるObservabilityとLangfuse
ROUTE06 Tech Blog
LLMを利用したアプリケーションの開発において、オブザーバビリティ(Observability)確保のためにLangfuseを導入しました。 本格的な運用はこれからとなりますが、Langfuseが解決する課題についてツールの検討を通して得た知識を纏めます。 LLMOpsとObservability LLMOpsの重要性と、LLMアプリケーションのObservabilityとの関係について概説します。 LLMを使ったアプリケーション開発と運用における課題 LLMを用いたアプリケーション開発には、以下のような課題があります。 幻覚や誤情報の生成: LLMは文脈を理解しているわけではなく、逐次前後の…
7ヶ月前

ROUTE06 で Okta を導入しました
ROUTE06 Tech Blog
こんにちは。情シスの @kaze3desu です。 このたびROUTE06では、ゼロトラストセキュリティを実現するために、IdPとしてOktaを導入しました。 Oktaの導入を検討している方向けに、ポイントをまとめようと思います。 Oktaとは Oktaは、クラウドベースのアイデンティティプロバイダー(IdP)で、企業や組織がアイデンティティとアクセス管理を行うためのプラットフォームです。 その高い機能性、セキュリティ、そして世界中の企業に利用されている実績から、Oktaはアイデンティティとアクセス管理の分野でグローバルスタンダードとして認識されています。 なぜOktaを選んだのか? 以下の理…
7ヶ月前

Zed REPLで実現するTypeScriptのインタラクティブなコンピューティング
ROUTE06 Tech Blog
Zedに追加されたREPL機能と、Denoを使って、REPLでTypeScriptを実行する手順やデモを紹介します。
7ヶ月前

OSS 推進観点で Supabase の GitHub 設計が参考になった
ROUTE06 Tech Blog
こんにちは。ソフトウェアエンジニアの id:masutaka26 です。最近は社内プロダクトの OSS 化を推進する活動をしています。 先日、GitHub の Issue テンプレートを調査しました。その中で Supabase が参考になったので共有します。 1. New Issue からの導線 コラム: Issue テンプレートはどこにある? 2. Discussions のカテゴリ設計 Categories Most helpful まとめ 1. New Issue からの導線 これが Supabase の Issue テンプレートです。 🔗 https://github.com/supa…
7ヶ月前

ROUTE06 で Okta と GitHub Enterprise Cloud を SAML連携 させた方法
ROUTE06 Tech Blog
概要 OktaとGitHub Enterprise CloudをSAML連携させるために、Oktaのアプリ統合カタログにある「Github Enterprise Cloud - Enterprise Accounts」を使ってSSO(シングルサインオン)を実現しました。 実現できたこと プライベート環境と仕事環境の切り分けが可能になった GitHubでは、Enterprise Managed Usersという仕組みを利用している場合を除き、個人アカウントを使用して会社のGitHub環境に参加します。そのため、GitHubにログインすれば、時間や場所、デバイスに関係なく仕事環境にアクセスすること…
7ヶ月前

jscodeshift + OpenAI API でソースコード内の日本語文字列を一括で翻訳する
ROUTE06 Tech Blog
こんにちは、ROUTE06 でソフトウェアエンジニアをしている@MH4GFです。 私が関わるリポジトリでの共通言語を日本語から英語に変えることになり、既存のコードベースに散在する日本語文字列を一括で変換する方法を模索しました。 最終的に jscodeshift と OpenAI API を組み合わせて一括置換することで解決できました。今回はその手法について紹介します。 スクリプトの概要 早速、主要なコード部分と詳細な説明を示します。 #!/usr/bin/env zx import OpenAI from "openai"; import jscodeshift from "jscodeshi…
7ヶ月前

Vimの操作感を愛おしむ人たちへ: Zedで広がる新たな可能性
ROUTE06 Tech Blog
コードエディタのZedを紹介します。1年ほど使ってみて感じたZedの特徴、例えばVimライクな操作性や高速な応答性能、多言語サポート、AI機能などについて紹介しています。また、リアルタイムコラボレーション機能やオープンソース化後の開発状況、現時点での課題にも触れました。
8ヶ月前

Next.jsのRoute Handlerを型安全にするType Alias
ROUTE06 Tech Blog
Next.jsのRoute Handlerでレスポンスの型情報を推論するType Aliasを紹介します。ZodやValibotなどのスキーマバリデーションライブラリを使用するアプローチとの比較も。
9ヶ月前

チュートリアル: Yjs, valtio, React で実現する共同編集アプリケーション
ROUTE06 Tech Blog
Yjsは、リアルタイム共同編集を実現するためのアルゴリズムとデータ構造を提供するフレームワークです。Notion や Figma のように、1 つのコンテンツを複数人で同時に更新する体験を提供することができます。 Y.Map, Y.Array, Y.Text といった共有データ型を提供し、それらは JavaScript の Map や Array のように利用できます。さらにそのデータに対する変更は他のクライアントに自動的に配布・同期されます。 Yjs は Conflict-free Replicated Data Types (CRDT) と呼ばれるアルゴリズムの実装であり、複数人が同時にデ…
9ヶ月前

LOVEDから始める、開発者のためのプロダクトマーケティング入門
ROUTE06 Tech Blog
開発者がプロダクトマーケティング思考を知ることの意味や目的をLOVEDという書籍を引用しながら紹介します。
9ヶ月前

スタイリングがもっと楽しくなる!CVAとTailwind CSSで実現するVariant管理
ROUTE06 Tech Blog
Tailwind CSSの手軽さを活かしながら、より柔軟なスタイリングを実現するためのライブラリClass Variance Authority(CVA)をコード例を交えて紹介します。
10ヶ月前

モノレポでマージキューと必須ステータスチェックを運用するためのTips
ROUTE06 Tech Blog
ROUTE06 でソフトウェアエンジニアをしている @MH4GF です。 GitHub のマージキュー(Merge Queue)を私のチームでの開発フローに取り入れてから数ヶ月経ちました。マージキューは非常に便利ですが、挙動の理解やセットアップに難しさがあると感じています。いくつかの課題の対処ができ安定した運用ができてきたので、この記事ではセットアップでつまづきがちな点を紹介します。 マージキューとは マージキューは 2023 年 7 月に一般公開された比較的新しい機能で、簡単に説明すると「プルリクエストのマージ前にマージ先ブランチを取り込んだ上で CI を実行し、通ることを確認してからマージ…
10ヶ月前

ROUTE06エンジニア対談 - 学び続ける熱意と穏やかなリーダーシップを持つ、エンジニア岩井のキャリア観
ROUTE06 Tech Blog
こんにちは。ROUTE06 Tech Blogの編集チームです。ROUTE06のエンジニア対談を連載でお届けします。 第8回は、CTOの重岡 正さんと岩井 大志(さとし)さんです。Web開発から事業会社での自社開発まで、エンジニアとして幅広い経験を積んできた岩井さん。新しい知識をインプットしたいという意欲のもと、2022年にROUTE06へ入社しました。 現在は、バックエンド開発をメインにPjMを兼務するほか、新しいチャレンジとしてAI領域のプロジェクトにも参加しています。「ずっと学び続けられる環境は飽きない」と語る岩井さんに、エンジニアを目指したきっかけや働きやすい組織つくりで心がけているこ…
10ヶ月前

RubyKaigi 2024 協賛&参加レポート
ROUTE06 Tech Blog
ハイサイ🌺 ROUTE06でエンジニアリングマネージャーをしている沖縄生まれ沖縄育ちの @tamaseyo です。 今回は沖縄で開催された RubyKaigi 2024 の様子をお届けします。 ゆたしくうにげーさびら!(沖縄の方言でよろしくおねがいします という意味です) RubyKaigi 2024とROUTE06協賛の背景 ROUTE06は、昨年に続き今年もRubyKaigi 2024へスポンサーとして協賛させていただきました。 協賛した背景については以下の記事をご覧ください。 route06.co.jp 現地の様子 那覇空港では県外から来たRubyistをRubyKaigiのウェルカムボ…
10ヶ月前