サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
衆院選
tech.route06.co.jp
こんにちは!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月25日 参加レポート セッションレポート Keynote: Rails Way, or the highway Capybara+生成AIでどこまで本当に自然言語のテストを書けるか? モノリスでも使
ROUTE06 では GitHub の管理に Terraform を導入しました。今回はその導入の背景、実際に導入してどう変わったのか、導入方法について紹介したいと思います。 Terraform とは Terraform は、IaC(Infrastructure as Code)ツールの一種です。 インフラの設定をコードとして管理することで、設定の変更履歴が明確になり、誤った設定によるトラブルを防ぐことができます。 なぜ GitHub を Terraform で管理するのか ROUTE06 では、全社的に GitHub を使用しています。そのため、GitHub の管理は非常に重要です。 Terraform 導入前には、以下のような課題がありました。 手動での設定変更時にミスが発生する 設定変更の履歴が追いにくい 重要な変更(リポジトリの作成や Organization へのユーザー招待など
技術の世界では、今日の王者も昨日は挑戦者でした。その最も象徴的な例の一つが、AppleのiPhoneです。Tony Fadellの著書「Build」は、このiPhoneの開発秘話を通じて、革新的な製品開発の本質に迫ります。今回は、この書籍から得られる洞察を、現代の挑戦者たちに向けて紐解いていきます。 トニー・ファデル / BUILD ―真に価値あるものをつくる型破りなガイドブック― 私はiPhoneが発表された当時、あまりテクノロジーに関心がなく、可処分時間のほぼ全てを吹奏楽に充てていました。その後テクノロジーに興味を持ち、プログラミングを仕事にするようになった時にはiPhoneは圧倒的な強者になっていたので、開発初期にApple社内からも批判されていたことにはとても驚きました。 iPhone:挑戦者の物語 2007年、スマートフォン市場はBlackBerryが君臨していました。ビジネスパ
近年 Bubble や Webflow、日本だと STUDIO などのノーコードプラットフォームが注目を集めています。これらのツールは、プログラミングの知識がなくてもユーザーが思い思いの UI を構築できる機能を提供し、アプリケーション開発の民主化に貢献しています。 このようなノーコードでユーザーが自由に UI を組み立てる仕組みはどのように構築されているのでしょうか。一見複雑に見えますが、基本的な考え方を理解すれば独自のエディタを構築することも不可能ではありません。アーキテクチャの中核となるのは、動的な UI コンポーネントを表現するスキーマ定義と、それを実際の UI 要素に変換する仕組みです。この過程では、データのバリデーション、データ型の絞り込みと UI コンポーネントの動的生成、そしてそれらの適切な配置が重要な役割を果たします。 本記事では、ユーザーがブラウザ上で UI を自由に構
こんにちは。ソフトウェアエンジニアの id:masutaka26 です。最近は社内プロダクトの OSS 化を推進する活動をしています。 先日、GitHub の Issue テンプレートを調査しました。その中で Supabase が参考になったので共有します。 1. New Issue からの導線 コラム: Issue テンプレートはどこにある? 2. Discussions のカテゴリ設計 Categories Most helpful まとめ 1. New Issue からの導線 これが Supabase の Issue テンプレートです。 🔗 https://github.com/supabase/supabase/issues/new/choose New Issue on supabase/supabase ②に興味を惹かれました。いずれも GitHub Organization
概要 OktaとGitHub Enterprise CloudをSAML連携させるために、Oktaのアプリ統合カタログにある「Github Enterprise Cloud - Enterprise Accounts」を使ってSSO(シングルサインオン)を実現しました。 実現できたこと プライベート環境と仕事環境の切り分けが可能になった GitHubでは、Enterprise Managed Usersという仕組みを利用している場合を除き、個人アカウントを使用して会社のGitHub環境に参加します。そのため、GitHubにログインすれば、時間や場所、デバイスに関係なく仕事環境にアクセスすることが可能です。しかし、これは労務管理とセキュリティの観点で問題がありました。 SAML連携後は、個人アカウントに従来の認証方法でサインインした後、仕事環境へアクセスするためにOktaで追加認証を行う必要
こんにちは、ROUTE06 でソフトウェアエンジニアをしている@MH4GFです。 私が関わるリポジトリでの共通言語を日本語から英語に変えることになり、既存のコードベースに散在する日本語文字列を一括で変換する方法を模索しました。 最終的に jscodeshift と OpenAI API を組み合わせて一括置換することで解決できました。今回はその手法について紹介します。 スクリプトの概要 早速、主要なコード部分と詳細な説明を示します。 #!/usr/bin/env zx import OpenAI from "openai"; import jscodeshift from "jscodeshift"; // コマンドライン引数の解析 const argv = minimist(process.argv.slice(2), { boolean: ["dry-run"], alias: { d
ソフトウェア開発の世界は日々進化していますね。その中で、私たち開発者が使うツールは、まさに職人の道具のように大切なもの。常により良い方法を探し求めているのは、皆さん同じではないでしょうか。 そんな私たちの前に現れたのが、Zedです。このエディタ、一見するとただの新顔に思えるかもしれません。でも、その中身は、私のようなVimmerの心をしっかりと掴みました。なぜならZedは、Vimの精神や操作感を大切にしながら、現代のテクノロジーを駆使して作られているからです。 私は1年ほど前からZedを使い始め、すぐにルックやデザイン、全ての動作が期待通りかつ、速く完了する様子に魅了され、使い続けています。 筆者のZedのキャプチャ 機能的にはVSCodeが優れているし、AI Code EditorのCursorも盛り上がっていますが、もっと速く、たくさんコードを書きたい開発者の方にはZedという選択肢が
Yjsは、リアルタイム共同編集を実現するためのアルゴリズムとデータ構造を提供するフレームワークです。Notion や Figma のように、1 つのコンテンツを複数人で同時に更新する体験を提供することができます。 Y.Map, Y.Array, Y.Text といった共有データ型を提供し、それらは JavaScript の Map や Array のように利用できます。さらにそのデータに対する変更は他のクライアントに自動的に配布・同期されます。 Yjs は Conflict-free Replicated Data Types (CRDT) と呼ばれるアルゴリズムの実装であり、複数人が同時にデータを操作してもコンフリクトが発生せず、最終的に全てのクライアントが同じ状態に到達するように設計されています。 クイックスタート Y.Map がクライアント間で自動的に同期されるコード例を見てみましょ
ROUTE06 でソフトウェアエンジニアをしている @MH4GF です。 GitHub のマージキュー(Merge Queue)を私のチームでの開発フローに取り入れてから数ヶ月経ちました。マージキューは非常に便利ですが、挙動の理解やセットアップに難しさがあると感じています。いくつかの課題の対処ができ安定した運用ができてきたので、この記事ではセットアップでつまづきがちな点を紹介します。 マージキューとは マージキューは 2023 年 7 月に一般公開された比較的新しい機能で、簡単に説明すると「プルリクエストのマージ前にマージ先ブランチを取り込んだ上で CI を実行し、通ることを確認してからマージする」機能です。 複数人で GitHub を利用した開発をしていると、main ブランチの取り込み漏れにより「プルリクエストでの CI は通るものの、マージ後の main ブランチの CI は失敗する
こんにちは。ROUTE06の技術広報Bです。TSKaigi 2024の参加レポートをお届けします。 TSKaigi 2024とROUTE06協賛の背景 TSKaigi 2024とROUTE06が協賛した背景については以下の記事をご覧ください。 route06.co.jp ROUTE06のメンバーも現地&オンライン参加 ROUTE06からは、数名のメンバーが現地に参加し、またオンラインからも視聴させていただきました。 現地で交流していただいた皆様、ありがとうございました。 ROUTE06 池田の登壇「TypeScriptが学生のエンジニアコミュニティ参加を促進する」 弊社 Software Engineer 池田の登壇がありました。 登壇者:株式会社ROUTE06 / Software Engineer 池田 仁俊(Noritaka Ikeda) タイトル:TypeScriptが学生のエンジ
Pull requestのタイトルや説明文を書いている時、「これ絶対AIでできるよな」と感じたことがある開発者は少なくないと思います。 もちろん変更の経緯や背景など、コードの差分からは読み取れない情報もありますが、コードの差分からわかることはAIが書いてくれるといいですよね。 この願いを叶えてくれるのがCodiumAIが提供しているPR-Agentです。GitHub Actionで実行でき、OpenAIはもちろんAzure OpenAIやAmazon Bedrockも使えます。 PR-Agentはすでにいろいろなところで取り上げられています*1 *2 *3ので、このブログ記事では、これまでにあまり紹介されていないPR-AgentでLLMとしてAzure OpenAIで使う方法と、使ってみた感想を紹介します。 どうしてPR-Agentを使うのか コードレビューをできるAIエージェントはいくつ
ROUTE06 でソフトウェアエンジニアをしている @MH4GF です。私が関わるプロダクトでは認証や認可に Amazon Cognito を使っており、 React で実装したフロントエンドアプリケーションから Amazon Cognito との接続には AWS Amplify が提供している Auth ライブラリを利用しています。 AWS Amplify は 2023 年 11 月に v6 のメジャーバージョンがリリースされたのですが、Auth ライブラリにはいくつかの破壊的変更が含まれていたので、このブログで移行方法の一例を紹介します。 AWS Amplify JavaScript v6 での変更点 https://aws.amazon.com/jp/blogs/mobile/amplify-javascript-v6/ v6 の変更の目玉として以下の内容が取り上げられています。 ツ
はじめに: 弊社のとあるEDI(電子商取引)関連のプロダクトでは、Ruby on Railsを利用してGraphQL APIを提供しています。 その開発活動の中で最近、コードの品質と整合性を維持するためのツールとして rubocop-grep を利用し始めました。 この記事ではその具体的な活用事例についてお話しします。 目次 rubocop-grepとは 最初のユースケースと、基本的な使い方の説明 複数のルールをディレクトリごとに設定するための工夫 ほかにどのようなユースケースがありそうか まとめ rubocop-grepとは rubocop-grep は、rubocop の拡張ツールです。 プロジェクト独自のコーディングルールを、正規表現を用いて簡単に定義することができます。 この手の問題は、今までもカスタムCopを書くことで解決することはできましたが、カスタムCopはASTの知識やRu
チームでReactを使って開発していると、コードレビューをする際に、「この書き方はしない方がいいが、それを説明するには800文字くらい必要。図も描きたい。でもそれらを準備する時間はない。」ということが度々ありました。 また、フレームワークやライブラリの技術選定をする際、マネージャに「どうして技術選定が必要なのか」を説明する必要がありました。ROUTE06のマネージャはエンジニアリングへの造詣が深い方が多いので、対立構造になることはありませんが、説明するためには1000文字くらい必要で、やはり図も描きたい。時間はない。と同じ気持ちになることがありました。 参考情報として紹介できる情報がないか探してみると、「とりあえずこうすればOK」というベストプラクティスについては検索エンジンやSNSですぐに見つかります。ただ、どうしてその方法がベストプラクティスなのか、仕組みや原理を説明している情報は少な
こんにちは、ROUTE06 でソフトウェアエンジニアをしている@MH4GFです。 この記事では、urqlの Document Caching における additionalTypenames についての説明と、実運用でどのように扱うべきかという私見を書きます。最後に、提案する方針を後押しするために作成した Exchange(urql のプラグイン)を紹介します。 urql と Document Caching urql は、主に Web フロントエンドアプリケーションで使用される柔軟性と拡張性に優れた GraphQL クライアントです。 GraphQL クライアントライブラリにはパフォーマンスを向上させるためのキャッシュ機構が用意されていることが多いですが、urql はデフォルトではDocument Cachingと呼ばれる概念を使用します。 Document Caching は quer
RemixやNext.jsなどのフレームワークを使うとウェブアプリケーションのフロントエンドとバックエンドを素早く実装できるようになりました。また、VercelやCloudflareなどのサービスを使うと成果物をすぐにデプロイし、チームメンバーやお客さまに共有できます。 ただ、業務の中では、いろいろな制約からVercelやCloudflareが使えず、AWSを使うことも多いと思います。そして同じようなことをAWSで実現するためにはノウハウが必要で、検証する時間がもったいないと思っていました。 今回紹介するArchitectというフレームワークは、AWSに関数型Webアプリケーション(FWA)をデプロイするベストプラクティスをまとめて提供しており、試したところ、これであれば、VercelやCloudflareを使っている時のような高い生産性をAWSでも発揮できる可能性を感じています。 この記
連載「3分プロトタイピング」 Streamlitを用いたAIチャットアプリ RAGを使ってAIチャットアプリケーションに知識を与える ベクトルデータベース超入門 ベクトルデータベースの登録内容を可視化してみる(この記事です) 前回の投稿では、ベクトルデータベースとベクトル検索の概要を説明し、Qdrantというベクトルデータベースを使って、文章のベクトル計算をした結果を登録して簡単なベクトル検索アプリケーションを実装しました。 ベクトルデータベースに登録したデータは、384次元のベクトルデータで、人間が見ても理解することは難しいデータでしたね。 // ベクトル化前 タイムマシーンはダメだった:自作のタイムマシーンに飛び乗った主人公が過去にタイムスリップするが、予期せぬハプニングが次々と発生。歴史改変を恐れて必死で元に戻そうと奮闘する滑稽な時空冒険。 // ベクトル化後 [ 3.2279573
連載「3分プロトタイピング」 Streamlitを用いたAIチャットアプリ RAGを使ってAIチャットアプリケーションに知識を与える ベクトルデータベース超入門(この記事です) 前回、前々回とAIアプリケーションのプロトタイプを作る時に便利な2つのフレームワーク: StreamlitとLlamaIndexを紹介しました。 この記事では、本格的なAIアプリケーションを作成するときに必要になることの多い、ベクトルデータベースを紹介します。今回も説明が長くなりますが、コード部分は3分で試せることを目指しています! ベクトルデータベース、ベクトル検索とは ベクトルデータベースとはどのような技術か、AWSのドキュメントがわかりやすく説明しているので引用します。 ベクトルデータベースは、ベクトルを高次元の点として保存および取得する機能を提供します。 これらには、N 次元空間の最も近い近傍を効率的かつ高
連載「3分プロトタイピング」 Streamlitを用いたAIチャットアプリ RAGを使ってAIチャットアプリケーションに知識を与える(この記事です) ベクトルデータベース超入門 前回の投稿でStreamlitを使ったAIとチャットするアプリケーションの雛形を作成しました。 tech.route06.co.jp あのアプリケーションにくまモンについて聞いてみるとこんな回答が返ってきます。 くまモンについて教えてください それっぽいけど違いますね。今回は、このように特定のキャラクターや事象について正しい情報をAIに返してもらう方法を紹介します。説明が長くなるので3分を超えてしまいますが、コードは3分で書けるようになっていますので、早速やってみましょう。 AIに知識を教える3つの方法 まず、AIにキャラクターなどの「知識」教える3つの方法について紹介します。 プロンプトエンジニアリング Retr
連載「3分プロトタイピング」 Streamlitを用いたAIチャットアプリ(この記事です) RAGを使ってAIチャットアプリケーションに知識を与える ベクトルデータベース超入門 大規模言語モデル(LLM: Large Language Model)を用いたアプリケーションを作る際、まずはChatGPTのようなチャットUIを再現して、独自コードであったり、独自データを組み合わせたいことは多いと思います。 ただ、チャットUIを0から作るのは結構時間がかかります。そこで、この記事ではStreamlitというフレームワークを使ってよくあるAIとチャットするアプリケーションの雛形を3分*1で用意したいと思います。 Streamlitとは Streamlitは、PythonでWebアプリケーションを簡単に作成できるフレームワークです。GUIの作成が簡単で、コード量も少なくて済むため、AIとチャットする
こんにちは。ROUTE06 Tech Blogの編集チームです。ROUTE06のエンジニア対談を連載でお届けします。 第6回は、CTOの重岡 正さんと青木 治人さんです。 2022年6月に、開発未経験からROUTE06に入社した青木さん。 独学でプログラミングを学んできたという主体性と、目の前のことすべてが成長の機会と捉える学びへの貪欲な姿勢が強みです。 現在は、新卒で入社したメンバーのピアメンター*1として、ともに成長していくチーム作りにも励んでいます。 青木さんに、エンジニアを目指したきっかけやプログラミングの勉強方法、ROUTE06で経験を積んでいく楽しさについて聞きました。 プロフィール 青木 治人 AOKI Haruhito 1992年生まれ。兵庫県在住。 大学では生物学を専攻し、新卒で大手ファーストフード会社へ入社。大阪・兵庫で複数店舗を管理するエリアマネージャーとして、店舗経
こんにちは。ROUTE06 データエンジニアの id:masutaka26 です。8/16 に入社したので、入社から 3 ヶ月経ち、会社にも慣れてきました。 初投稿である今回の記事では、ROUTE06 に入社して素直に変だと思った、会社の取り組みや習慣をまだフレッシュな気持ちが残っているうちに紹介します。 1. 入社 1on1 マラソン 早速出て参りました。全く聞き慣れないであろう「入社 1on1 マラソン」です。(*^^*) ROUTE06 に入社したら、全ての正社員と 1on1 する必要があります。私は入社前に聞き流してしまったようで、入社後聞いた時は「これから 50 人と 1on1 するなんて正気ですか?」と思いました。 私は 1 回 30 分を毎日 2~3 セッティングして、8/21 ~ 9/25 で完走しました。期間は自由で、数ヶ月かける人もいるそうです。 初見の方と話すのは苦手
北欧神話の世界で、村を作りながら新大陸を開拓する『NORTHGARD』というストラテジーゲーム*1を遊んだ時に、とても印象的な体験をしました。村人が増えて食料やお金も整って、いざ遠征するぞと準備を始めた時に、村人の士気が急に下がり始めたのです。食料やお金を用意したり、手当たり次第に介入しても士気は下げ止まらず、隣の村からの侵略を受けて占領されてしまいました。 何回かやり直してわかったことは、村がある程度大きくなった時には、家や酒場のような憩いの場がとても重要になるということでした。そして、憩いの場は、士気が下がり始めてから作り始めても効果はなく、村は崩壊します。とはいえ、最初に憩いの場を作ってしまうと限られた食料やお金がなくなり村は力を失います。 この例はいろいろと単純化していますが、遠征を「大胆さ」や「挑戦」、憩いの場を「思いやり」や「信頼」と置き換えることでチームでのソフトウェア開発に
こんにちは!ROUTE06でPlain API チームに所属している @FunamaYukinaです。 先日初のオフライン開催となったKaigi on Rails 2023に現地参加してきましたので、そのレポートをお届けします。 会場の様子 会場の浅草橋ヒューリックホール&カンファレンスでは、多くの参加者で賑わっておりました。 会場で配られていたKaigi on Rails 2023 のノベルティ 今回ROUTE06はスポンサー協賛させていただきました。 また、今回のKaigi on Rails 2023 初日の夜に参加者さん同士が交流できる場として、スポンサー企業の株式会社マイベスト様、株式会社YOUTRUST様と一緒に『Startup Drinkup at Kaigi on Rails 2023』を開催しました。 Startup Drinkup at Kaigi on Rails 20
私はソフトウェア開発を10年以上仕事として続けています。いつからか、どうすれば不確実性を減らして早く、要求通りのソフトウェアを開発できるかを考え始めていました。特に今年の4月に、フロントエンドチームのテックリードになってからは、フロントエンドチームが対峙する不確実性が少なくなるように考え、行動することに時間を使っています。 テックリードになってから6ヶ月経ち、反省することはたくさんありますが、プロジェクトのスケジュールに大きな遅延がなく、現時点で達成すべき水準の品質を満たしているので、ある程度の成果は出せていると自己評価しています。一方で、不確実性を下げるために考えたり行動することに少し飽きているというか、もうちょっとワクワクした気持ちで開発できないか悩んでいました。 そんな時に、庵野秀明監督が不確実性を保ったまま商業アニメーションを制作することに挑戦し、成し遂げた作品が『シン・エヴァンゲ
こんにちは、ソフトウェアエンジニアの@satorunです。現在はROUTE06でiOSアプリの開発をしています。 ROUTE06では、先日行われたiOSDC Japan 2023にスポンサーとして協賛させていただきました。 ROUTE06はiOSDC Japan 2023にスポンサーとして協賛します TシャツのROUTE06ロゴ 今回はオンライン/オフラインでカンファレンスに参加させていただいたので、そのレポートを書きたいと思います。 参加レポート 今年のiOSDCはコロナ後初のフルスペック開催と表現されていた通り、オフライン参加者も多く、会場はとても盛り上がっていました。私個人としては、しばらく開発から離れていたこともあり、iOSDCへの参加は2018年以来、5年ぶりの参加でしたが、楽しい雰囲気の中過ごさせていただきました。 会場の様子 オフラインの良さとして、他の参加者との交流があると
ROUTE06 Software Engineerの@yoshida-m-3です。 KPT (Keep Problem Try)やYWT(やったこと、わかったこと、次やること)など、振り返りの手法は様々ですが、今回ロールプレイングを取り入れた振り返りを行いました。 ロールプレイング振り返りとは ロールプレイング振り返りとは、自分以外のロールの人になりきって振る舞い、振り返りを行うことです。 例えば、ソフトウェアエンジニアの場合は、プロダクトマネージャーやプロダクトオーナーなどになりきり、振り返りを行います。 今回のロールは現在関心の強い以下の4つを選択しました。 エンジニア プロダクトマネージャー プロダクトオーナー ユーザー 目的・ねらい 他の人のロールになりきることで、新しい視点や気付きを得ること。 そして、相手の立場になり相手の気持ちを理解することで、自分の役割に戻った時に相手の気持
プロダクトセキュリティのお手伝いをしている wonda-tea-coffee です。 このたびROUTE06ではGitHub Advanced Security(以下GHAS)を導入することになりました。 👉 あわせて読みたい: 全社プロダクトのセキュリティ向上: SASTツールを選定した話 それに際してGHASとは何か、またどんな運用を予定しているのかについて社内向けに資料を作成しました。今回はその資料を社外向けに一部修正して紹介します。 GHASとは GHASはGitHubのEnterpriseプランに追加することができるセキュリティ機能に特化したアドオンです。 docs.github.com 以下ではGHASが備える機能について紹介します。 Code Security GitHub上のコードの脆弱性をスキャンする機能です。 docs.github.com GUI操作のみで手軽に有効
次のページ
このページを最初にブックマークしてみませんか?
『ROUTE06 Tech Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く