サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
tech.route06.co.jp
OpenAIのAssistants APIを使用すると、独自のアプリケーション内にAIアシスタントを構築できます。アシスタントは指示を持ち、事前に定義したモデル、ファイル、ツールを活用してユーザーの問い合わせに応答することができます。ツールとして利用できるのは「コード・インタープリター」「ファイル検索」「関数呼び出し」の3つです*1。 ツールの中の「ファイル検索」を利用すると、任意のファイルを追加し、アシスタントの知識ベースを強化できます。 しかし、ファイルではなくウェブページを追加したい場合はどうすればよいでしょうか?もちろん、ウェブページをスクレピングして、その結果をテキストファイルとして追加することもできますが、スクレイピング方法の選定や実行環境の用意にはそれなりに時間がかかります。 そこでこのブログポストでは、スクレイピングする代わりに、ウェブページをフェッチした結果をhtmlファ
こんにちは。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 の変更の目玉として以下の内容が取り上げられています。 ツ
私のチームでは Event Sourcing と Hybrid-CQRS を採用してプロダクトを開発しています。なぜ Event Sourcing、Hybrid-CQRS を採用したのか、実際に開発してみてどうだったのかを共有することで、なにか参考になるところがあればと思います。 なぜ Event Sourcing と Hybrid-CQRS なのか 私の開発するプロダクトでは、多くのデータがバージョンを持ち、異なるバージョンへの結びつきがあるなど、仕様が複雑になることが予想されていました。データをどのように表現するか検討したときに、異なるバージョンが入り組んだデータを 1 つのデータモデルで Write と Read を兼ねるのは複雑すぎると判断し、データモデルを分けることにしました。 データモデルを分割する際に、同一のデータストアを使用しながらコードレベルでオブジェクトを分割するか、デ
こんにちは。hiroppyです。2023年7月に技術顧問として参加させていただき、半年経ちましたので、今回は自分からみたROUTE06社の印象と何をしているかを話したいと思います。 一言でいうと、組織が大きくなっていることが実感できた半年でした。 最初の印象 様々なスタートアップを見てきましたが、ROUTE06社はその中でも、最初から組織環境を整備しており、主に印象的だったのは以下のような要素でした。 会社全体の雰囲気の良さ 会社文化の浸透と全員が同じ方向を向いている点 業務の自動化や権限委譲 会社や個人のモチベーションの高さ 会社全体の雰囲気の良さはSlackを入ったときにすぐに分かりました。常に大量の絵文字が付いたり、#break-timeなどで気軽に集まったりして話している風景を毎日見ていたからです。特にROUTE06社はフルリモートの会社なので、コミュニケーションや信頼関係の構築は
はじめに: 弊社のとある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 Tech Blogの編集チームです。ROUTE06のエンジニア対談を連載でお届けします。 第7回は、CTOの重岡 正さんと玉代勢 靖さんです。 前職で、マネジメントと開発の現場、両方の立場からシステム開発に関わってきた玉代勢さん。今後のキャリアを考えるなかで、「やっぱりエンジニアとして働きたい」と決断し、2022年にROUTE06へ入社しました。エンジニア歴15年で、初めての転職だったといいます。 現在、エンジニアリングマネージャー(EM)からプロジェクトマネージャー(PjM)、開発と幅広く活躍する玉代勢さんに、ROUTE06へ入社しようと思ったきっかけや、プロジェクトマネジメントで大切にしていることを聞きました。 プロフィール 玉代勢 靖 TAMAYOSE Yasushi ゲーム目的でパソコンを買ったことをきっかけに、プログラミングに興味を持つ。 2007年に
ROUTE06 にて業務委託でフロントエンドエンジニアをしている 寺嶋 です。 先日、私が開発に参画している to B サービス(以下、本サービス)にて一部機能を Server-Driven UI へ移行しました。 本記事ではその移行事例について紹介します。 ※一般に公開しているサービスではないため、紹介する GraphQL スキーマの命名は汎用的なものに置き換えています。 移行の背景 本サービスには特定の項目を表として出力する画面がありました。 具体的には下記のItemDetailに対して、 type ItemDetail { itemOrder: Int! itemId: Int! name: String note: String size: Int ratio: Float memo: String } バックエンドから以下のような JSON が返却され、 [ { "__typen
こんにちは、ROUTE06 でソフトウェアエンジニアをしている@MH4GFです。 この記事では、urqlの Document Caching における additionalTypenames についての説明と、実運用でどのように扱うべきかという私見を書きます。最後に、提案する方針を後押しするために作成した Exchange(urql のプラグイン)を紹介します。 urql と Document Caching urql は、主に Web フロントエンドアプリケーションで使用される柔軟性と拡張性に優れた GraphQL クライアントです。 GraphQL クライアントライブラリにはパフォーマンスを向上させるためのキャッシュ機構が用意されていることが多いですが、urql はデフォルトではDocument Cachingと呼ばれる概念を使用します。 Document Caching は quer
Azure OpenAI Serviceを使うためにMicrosoft Azure環境を用意することがこれから増えてくると思います。その際、ウェブのフロントエンドをMicrosoft Azureで用意できると便利ですね。 Azure Static Web Appというサービスを使うと、GitHubのリポジトリと連携してフロントエンドの環境を用意でき、さらにパスワードを使った閲覧制限をかけることも可能です。 無料で使い始めることができ、パスワードを使った閲覧制限をかける場合も、1時間あたり$0.01で使い始めることができ、本番環境はもちろん、検証環境としても便利に使えると思ったので、この記事で Viteで作成したReactアプリケーションをAzure Static Web Appにデプロイし、パスワード制限をかける流れを紹介します。 Azure Static Web Appを作成する Azu
ROUTE06でソフトウェアエンジニアをしている宮城です。 oisham.hatenablog.com 早速参照したこの記事は、Meta 社 relay.dev チームの Jordan Eldredge 氏のTweetで紹介された GraphQL 成熟度モデル (GraphQL maturity model) を、ブログ著者のjunyさんの個人的な見解を加えながら和訳した記事となっています。 この記事を見かけ、とても参考になり面白かったのですが、「あなたの組織はどの程度成熟して(=使いこなせて)いますか?」という Jordan さんの問いかけに反応し、ROUTE06でのto BプロダクトでのGraphQL活用状況を紹介していきます! 対象となるプロダクト ROUTE06 ではエンタープライズ向けビジネスプラットフォーム「Plain」を開発しています。簡単にプロダクトの特徴を説明します。 エ
RemixやNext.jsなどのフレームワークを使うとウェブアプリケーションのフロントエンドとバックエンドを素早く実装できるようになりました。また、VercelやCloudflareなどのサービスを使うと成果物をすぐにデプロイし、チームメンバーやお客さまに共有できます。 ただ、業務の中では、いろいろな制約からVercelやCloudflareが使えず、AWSを使うことも多いと思います。そして同じようなことをAWSで実現するためにはノウハウが必要で、検証する時間がもったいないと思っていました。 今回紹介するArchitectというフレームワークは、AWSに関数型Webアプリケーション(FWA)をデプロイするベストプラクティスをまとめて提供しており、試したところ、これであれば、VercelやCloudflareを使っている時のような高い生産性をAWSでも発揮できる可能性を感じています。 この記
連載「3分プロトタイピング」 Streamlitを用いたAIチャットアプリ RAGを使ってAIチャットアプリケーションに知識を与える ベクトルデータベース超入門 ベクトルデータベースの登録内容を可視化してみる Jupyter Notebook, Google Colabの紹介 Pandas Dataframe Toolkitを使って自然言語でCSVを分析する 概要 ここまでの記事で、いろいろなことができるようになりましたが、今回はもう少し業務に近い内容をやってみます。 CSVファイルを読み込んで、その内容をチャットで分析するというものです。 そのために、LangChainというフレームワークが提供しているPandas Dataframe Toolkitを使ってAgentを作成します。 Pandas Dataframe とは Pandas Dataframeは、表形式のデータをPythonで
連載「3分プロトタイピング」 Streamlitを用いたAIチャットアプリ RAGを使ってAIチャットアプリケーションに知識を与える ベクトルデータベース超入門 ベクトルデータベースの登録内容を可視化してみる Jupyter Notebook, Google Colabの紹介(この記事です) AIを用いたアプリケーションを開発するためのライブラリの多くはPythonで実装されています。 それらのチュートリアルには当たり前のようにJupyter NotebookやGoogle Colabというツール、サービスが出てくるのですが、これまでPythonを使っていない人には、少しハードルがあるかなと思っています。 そこで、この記事では、そうしたチュートリアルがサクッとこなせる程度にJupyter NotebookやGoogle Colabについて紹介します。 Jupyter NotebookとGo
連載「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
こんにちは、ROUTE06でソフトウェアエンジニアをしている @ohteru です。 この記事ではROUTE06の普段の業務内容を紹介したいと思います。 概要 僕が現在携わらせていただいてるプロジェクトは仕様書をGoogleスプレッドシートで管理しています。 スプレッドシートを選んだ理由はビジネス要件として下記のものがあったからです。 外部会社に共有しやすい形式である必要がある 共同で編集できる必要がある ですがもちろん運用するにあたりいくつかの課題もあがりました。 変更した際に関係者全員に周知することは大変 バージョン管理の機能はあるが差分がわかりづらい 当初はこの課題の対応として変更があった部分のテキストの色を変え、変更があれば自動で通知されるといった通知の部分だけをシステム化しようと思っていました。 どのような方針で課題を解決するか 色々と調査していく中で一つの記事を見つけ、それを参
私はソフトウェア開発を10年以上仕事として続けています。いつからか、どうすれば不確実性を減らして早く、要求通りのソフトウェアを開発できるかを考え始めていました。特に今年の4月に、フロントエンドチームのテックリードになってからは、フロントエンドチームが対峙する不確実性が少なくなるように考え、行動することに時間を使っています。 テックリードになってから6ヶ月経ち、反省することはたくさんありますが、プロジェクトのスケジュールに大きな遅延がなく、現時点で達成すべき水準の品質を満たしているので、ある程度の成果は出せていると自己評価しています。一方で、不確実性を下げるために考えたり行動することに少し飽きているというか、もうちょっとワクワクした気持ちで開発できないか悩んでいました。 そんな時に、庵野秀明監督が不確実性を保ったまま商業アニメーションを制作することに挑戦し、成し遂げた作品が『シン・エヴァンゲ
ROUTE06 でソフトウェアエンジニアをしている @MH4GF です。 私が関わるプロダクトでは、Amplify HostingでViteを利用したSPAをホスティングしています。今回秘匿情報を安全に設定する方法に詰まったため、解決方法を共有します。 TL;DR Amplify Hostingの組み込みのパラメータストア連携では制約上使えなかったため、ビルドステップでAWS CLIで取得することにした サービスロールにパラメータストアの読み取り権限を付与する必要がある Amplify Hosting公式のパラメータストア連携 Amplify Hostingで環境変数として秘匿情報を扱いたい場合、パラメータストアのSecureString経由で設定することが公式ドキュメントで推奨されています。 Don't use environment variables to store secrets
こんにちは。ROUTE06 Tech Blogの編集チームです。 ROUTE06のエンジニア対談を連載でお届けします。 第5回は、CTOの重岡 正さんと、吉田 真さんです。 2022年にROUTE06へ入社した吉田さん。現在、CHOOSEBASE SHIBUYAのテックリードとして、同サービスのグロースに関わっています。 吉田さんは、「ユーザーが楽になること」を第一に考えるエンジニアです。システムを使うユーザーに会ったり、直接声を聞いたりしながら、開発に関わってきました。 重岡さんと吉田さんは同世代。 対談では、初めてパソコンに触れた学生時代の思い出に話が弾む場面も。 吉田さんに、これまでのキャリアやROUTE06に入社したきっかけ、エンジニアとプロダクトマネージャーの理想的な関係などについて聞きました。 プロフィール 吉田 真 YOSHIDA Makoto 1987年生まれ。岐阜県出身。
こんにちは、ソフトウェアエンジニアの@satorunです。現在はROUTE06でiOSアプリの開発をしています。 ROUTE06では、先日行われたiOSDC Japan 2023にスポンサーとして協賛させていただきました。 ROUTE06はiOSDC Japan 2023にスポンサーとして協賛します TシャツのROUTE06ロゴ 今回はオンライン/オフラインでカンファレンスに参加させていただいたので、そのレポートを書きたいと思います。 参加レポート 今年のiOSDCはコロナ後初のフルスペック開催と表現されていた通り、オフライン参加者も多く、会場はとても盛り上がっていました。私個人としては、しばらく開発から離れていたこともあり、iOSDCへの参加は2018年以来、5年ぶりの参加でしたが、楽しい雰囲気の中過ごさせていただきました。 会場の様子 オフラインの良さとして、他の参加者との交流があると
次のページ
このページを最初にブックマークしてみませんか?
『ROUTE06 Tech Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く