コラボスタイル Developersのフィード
https://zenn.dev/p/collabostyle
「ワークスタイルの未来を切り拓く」を理念に掲げ、リアルとデジタルの2つの働く場に向けた事業展開に留まらず、自社が率先して新しいワークスタイルに挑戦し、発信を行うことでワークスタイルの未来を切り拓いていきます。
フィード

TiDBとAmazon BedrockでRAGアプリを作る!TiUGハンズオン in 名古屋
コラボスタイル Developersのフィード
はじめにTiDBユーザーグループ「TiUG」のハンズオン勉強会に参加してきました!TiUGは、TiDBの技術や活用情報、ユースケースなどをユーザー同士で共有・交換するコミュニティです。今回は名古屋コラボベース開催ということで、実際に手を動かして学ぶ「ハンズオン形式」で行われました。テーマは、「TiDBとAmazon Bedrockによる生成AIアプリケーション」。トレンドのベクトル検索やRAGを、TiDBを使ってどう実現するかを体験してきました。!TiUGとは?TiDB(クラウド・OSS問わず)を実際に使っているユーザー、興味をもっている方などどなたでも大歓迎のコミュ...
3日前

AIをイベントの壁打ち&答え合わせに使う
コラボスタイル Developersのフィード
イベントに誰と行くかの重要性聞いたセッションの内容を即時に壁打ちするためにも、誰と行くかが重要だと考えます。セッション内容の本質やどのように自分の環境にアジャストさせていくかなど、一緒に行くからこそ即時に壁打ちができるため、投資対効果を出すことにもつながります。特に同レイヤー以上の人と参加した場合には、自分が思ってもいなかったことを気づかせてくれたり、より深く多角的な視点から物事をとらえて議論することで、自身の成長にもつながります。 AIで答え合わせをする全てのイベントに誰かと行くことができれば良いのですが、できない場合もあると思います。イベントで録音が許可されてい...
1ヶ月前

Raftアルゴリズムが実現するデータ一貫性と高可用性の仕組み
コラボスタイル Developersのフィード
はじめにTiDBが「データが消えない」「サーバーが数台故障しても止まらない」と謳えるのはなぜでしょうか?それは、分散システムの中核をなすRaft(ラフト)コンセンサスアルゴリズムにあります。Raftは、複数のサーバー間でデータを安全に複製し、リーダーを自動で選出するための「多数決のルール」です。この記事では、TiDBがどのようにRaftを利用して、高いデータ一貫性と可用性を実現しているのか、その仕組みを解説します。 Raftとは? 3つの役割で動く多数決システムRaftを理解するために、3人の司書が同じ本を3冊、常に完璧に同期させるという例えで考えてみましょう。役...
1ヶ月前

Slow Query機能で遅いクエリを特定し、インデックスで解決する
コラボスタイル Developersのフィード
はじめに「なぜかアプリケーションが遅い…」パフォーマンスの問題は、開発者にとって永遠の課題です。推測でインデックスを追加しても、根本原因が違えば効果はありません。重要なのは、データを元にボトルネックを正確に特定することです。TiDBには、そのための超強力な診断ツールTiDB Dashboardが標準で組み込まれています。この記事では、TiDB DashboardのSlow Query機能に絞って、実行に時間がかかっているSQLを特定し、インデックスを追加して解決するまでの一連の流れを、ゼロから解説します。 準備:環境構築とテストデータTiDBクラスタの起動まず、ti...
1ヶ月前

MySQLからTiDBへゼロダウンタイム移行する手順
コラボスタイル Developersのフィード
はじめにサービスを稼働させたまま巨大なMySQLデータベースをTiDBに移行するという課題を解決する**TiDB Data Migration (DM)**を実際に自分の手で試してみることにしました。この記事では、ローカルのDocker環境でMySQLからTiDBへのゼロダウンタイム移行を試みる手順を解説します。の記事には、私が実際に遭遇し、解決してきたエラーとその解決策を記録しています。 最終的な環境構成関連する全てのサービスを単一のdocker-compose.ymlファイルにまとめ、一つの共通ネットワークで管理しました。docker-compose.yml以下の...
2ヶ月前

TiDBワークショップ参加レポート
コラボスタイル Developersのフィード
はじめに先日、PingCAP社が主催するTiDBのワークショップに参加する機会がありました。TiDBはMySQL互換の分散データベースとして注目されていますが、その内部アーキテクチャがどのようになっているのか、具体的に学びPingCAP Certified TiDB Associateの取得を目指すことが目的でした。このセッションは、TiDBの全体像から各コンポーネントの役割、さらには分散トランザクションやデータ一貫性の仕組みまで、非常に濃い内容でした。本記事では、そのワークショップで学んだ内容を自分なりに整理しました。 TiDBとは?アーキテクチャの全体像TiDBは、オ...
2ヶ月前

AIエンジニア「Devin」をさらに賢くする!キラキラ(Knowledge Suggestions)の活用
コラボスタイル Developersのフィード
AIエンジニア「Devin」をさらに賢くする!キラキラ(Knowledge Suggestions)の活用Devinを使い始めた皆さん、その驚くべき能力にワクワクしていますか?今回は、Devinをさらに強力な相棒にするためのとっておきの機能「キラキラ(Knowledge Suggestions)」についてご紹介します。 キラキラ(Knowledge Suggestions)とは?Devinがコードを書く際、時々、キラキラ✨アイコンが表示されるのを見たことはありませんか?これが「Knowledge Suggestions」、通称「キラキラ」です。これは、Devinがプ...
2ヶ月前

TiDBの自動シャーディングを体感。AUTO_RANDOM使ってみた
コラボスタイル Developersのフィード
はじめにきっかけは、TiDBユーザグループ ミートアップ #5に参加し、そこでTiDBのシャーディングが自動で行われる仕組みに興味を持ったことです。特に、AUTO_INCREMENTが引き起こす「ホットスポット」問題と、それを解決する機能について、実際に自分の手で試してみることにしました。MySQLなどの従来DBでは、シャーディングは複雑な手作業でした。しかし、TiDBではシャーディングは完全に自動化されています。この記事では、TiDBがどのようにシャーディングを自動で行うかを解説し、AUTO_INCREMENTが引き起こすホットスポット問題をAUTO_RANDOMで解決する一...
2ヶ月前

TiDBでベクトル検索
コラボスタイル Developersのフィード
はじめにChatGPTのような生成AIの登場により、**ベクトル検索(Vector Search)**という技術が注目されています。これは、文章、画像などを数値のベクトル(数字の配列)に変換し、その「意味の近さ」や「特徴の類似度」に基づいてデータを検索する技術です。きっかけは、TiDBユーザグループ ミートアップ #5に参加し、そこでTiDBのベクトル検索の紹介があり、どんなものかと試してみたことです。これまでベクトル検索には専門のデータベースが必要でしたが、TiDBでもついにネイティブサポートが追加されました。この記事では、TiDBを使ってベクトル検索を行う基本的な手順を、実...
2ヶ月前

TiDB Lightning使ったデータインポートを試した
コラボスタイル Developersのフィード
はじめにきっかけは、TiDBユーザグループ ミートアップ #5に参加し、そこでTiDB Lightningの紹介があり、どんなものかと試してみたことです。「数百万行、数億行のデータをTiDBに投入したいけど、INSERT文をループで実行すると時間がかかりすぎる…」という課題を解決するこのツールに興味を持ちました。TiDB Lightningは、CSVやParquetなどのデータソースを直接TiKV(TiDBのストレージ層)に書き込むことで、従来のLOAD DATAやINSERT文とは比較にならない速度でデータをインポートします。この記事では、ローカルのTiDBクラスタに対して、...
2ヶ月前

ローカルDockerでTiDBの水平スケーリングをテスト
コラボスタイル Developersのフィード
はじめにTiDBの大きな魅力の一つは、ノードを追加するだけで性能がリニアに向上する「水平スケーリング」です。しかし、この強力な機能をローカルの開発環境で気軽に試すのは、意外と情報が少なく、多くの落とし穴があります。この記事では、docker-composeを使ったローカル環境で、TiDBクラスタを自動で構築するTiKVノードを自動で追加(スケールアウト)するsysbenchで負荷テストを行い、性能向上を定量的に確認するまでの一連の流れを、筆者が実際にハマったエラーとその解決策を交えながら、完全な手順として解説します。この記事を読めば、誰でも手元でTiDBの真価を体感で...
3ヶ月前

モバイルファースト vs PCファースト:現代のWeb開発でどちらを選ぶべきか
コラボスタイル Developersのフィード
はじめにレスポンシブデザインを実装する際、多くの開発者が直面する問題があります:「モバイルファーストで作るべきか、PCファーストで作るべきか?」この記事では、両方のアプローチを実際のコード例と比較しながら、現代のWeb開発においてどちらが最適かを詳しく解説します。 目次モバイルファーストとはPCファーストとは実装例での比較パフォーマンスの違い開発効率の比較実際のプロジェクトでの選択基準まとめ モバイルファーストとはモバイルファーストは、モバイルデバイス用の基本的なスタイルから始めて、段階的に大画面用のスタイルを追加していくアプローチです。 特徴...
3ヶ月前

MariaDB WHERE INクエリの直列分割処理で最適なチャンクサイズを実測データで検証する
コラボスタイル Developersのフィード
はじめに大量のデータを扱う際、WHERE INクエリのパフォーマンスは重要な課題です。特に、数万件のIDを一度に処理する場合、単一のクエリではパフォーマンスが低下することがあります。この記事では、直列分割処理によるWHERE INクエリの最適化について、実際のベンチマーク結果に基づいて詳しく分析します。 問題の背景 単一WHERE INクエリの問題-- 50000件のIDを一度に処理SELECT * FROM test_records WHERE id IN (?, ?, ?, ..., ?) -- 50000個のパラメータこのような大量のパラメータを含むクエリに...
3ヶ月前

10万件データで実証。データベース設計パターンの性能・保守性比較【Rust + MariaDB】
コラボスタイル Developersのフィード
はじめにデータベース設計において、パフォーマンス、拡張性、保守性のバランスを取ることは永遠の課題です。本記事では、OLTP(Online Transaction Processing)システムを想定し、10万件のデータを使用して、3つの主要なデータベース設計パターンの性能を定量的に比較し、保守性を実際のコードベースで説明します。 対象システムの特性OLTP(オンライントランザクション処理): リアルタイムでのデータ更新・参照高頻度のCRUD操作: 部屋情報の登録・更新・削除・検索複雑なビジネスロジック: 部屋の状態分析、メンテナンス管理拡張性の要求: 新しい属...
3ヶ月前

カラム型 vs JSON文字列格納のパフォーマンス比較
コラボスタイル Developersのフィード
はじめにデータベース設計において、データの格納方式はパフォーマンスに大きな影響を与えます。今回は、カラム型ストレージとJSON文字列格納のパフォーマンスを10万件のデータで比較検証しました。特に注目したのは、JSON型が実際には「JSON構造体を文字列として格納」する方式であることによる性能への影響です。 比較対象の実装方式 カラム型ストレージ(正規化されたテーブル構造)CREATE TABLE users_column ( id CHAR(36) PRIMARY KEY, name VARCHAR(255) NOT NULL, email VA...
3ヶ月前

ChatGPTを使ってRustで新しいプログラミング言語をつくり始めた話(if分岐)
コラボスタイル Developersのフィード
前回までのおさらい前回はPyroに「変数定義」を導入しました。letprというPyro独自の構文をRustのletに変換できるようにし、変数を使ったプログラムを書けるようにしました。letpr x = 10print(x) 今回のテーマ: if分岐次の一歩として、if分岐を実装しました。Pyroでは「数値が0以外なら真」というルールで判定しています。例:letpr x = 10if x { print("x は 0 以外です")} else { print("x は 0 です")} 実装のポイントAST (Stmt) に If を追加...
3ヶ月前

開発環境の性能比較:Docker vs devenv ベンチマーク
コラボスタイル Developersのフィード
開発環境の性能比較:Docker vs devenv ベンチマーク はじめに現代のソフトウェア開発において、開発環境の選択は開発効率に直接影響します。APIなどのリソース取得時間、コンパイル時間、依存関係の管理は開発サイクルに大きな影響を与えます。 なぜDockerとdevenvを比較するのか?Dockerとdevenvは異なる目的で設計されたツールですが、実際の開発現場では両方とも開発環境の構築・管理に使用されています。Dockerの主な目的:アプリケーションのコンテナ化とデプロイメント本番環境との一貫性の確保環境の完全な分離とポータビリティO...
3ヶ月前

ChatGPTを使ってRustで新しいプログラミング言語をつくり始めた話(フォルダ構成の再編と出力先の統一)
コラボスタイル Developersのフィード
目的役割別にクレートを整理して保守性を高める生成物(transpile 結果・実行バイナリ)の置き場所を統一して、開発時の混乱を防止 新フォルダ構成.├── examples│ └── main.pyro # ← 実行デフォルトを hello.pyro から main.pyro に変更└── pyro └── crates ├── pyroc # 解析(AST/Parser) │ ├── Cargo.toml │ └── src │ ...
3ヶ月前

ChatGPTを使ってRustで新しいプログラミング言語をつくり始めた話(変数宣言)
コラボスタイル Developersのフィード
はじめに本記事では、自作プログラミング言語Pyroに変数宣言機能を追加した過程をご紹介いたします。PyroはPythonライクな構文を持ち、Rustにトランスパイルして実行可能な軽量言語です。今回はPyro独自のキーワードletprを導入し、変数を扱えるようにしました。 背景前回の実装でPyroは整数リテラルと四則演算に対応しました。しかし実際にプログラムを書く際には、値を保持して再利用する仕組みが不可欠です。そこでPyro専用の変数宣言キーワードとしてletprを導入しました。例:examples/hello.pyroletpr x = 10letpr y...
3ヶ月前

ChatGPTを使ってRustで新しいプログラミング言語をつくり始めた話(四則演算)
コラボスタイル Developersのフィード
はじめに本記事では、自作プログラミング言語 Pyro に四則演算機能を追加した過程をご紹介いたします。Pyro は Python ライクな構文を持ち、Rust にトランスパイルして実行可能な軽量言語です。 プロジェクト構成プロジェクトは Cargo ワークスペースとして構成されています。pyro_lang_test/├── Cargo.toml└── crates ├── pyroc # フロントエンド(字句解析・構文解析) ├── pyrorts # Rust コード生成 └── pyroc-bin # CLI ...
3ヶ月前