twentyhq/twentyって何?コスプレイヤーあるあるで学ぶ新CRMツール!


twentyhq/twentyって何?コスプレイヤーあるあるで学ぶ新CRMツール!

twentyhq/twenty

2025-07-18

コスプレイヤーさんにとって、イベントでの交流、衣装の管理、撮影の計画って、めちゃくちゃ大事だよね?それを「ソフトウェアエンジニアのあるある」に置き換えると、twentyhq/twentyはまさにそんな感じ!

「イベントでの交流」= 顧客との関係構築 (CRM)

コスプレイヤー
イベントで名刺交換したり、SNSで繋がったりして、新しい友達やフォロワーを増やすのが楽しいよね!

twentyhq/twenty
これまでのSalesforceみたいに、企業が顧客情報を管理したり、営業活動を記録したり、サポートを提供したりするのに使うんだ。顧客との関係をしっかり築くことで、ビジネスを大きくしていくのに役立つよ。まさに「顧客と仲良くなるためのツール」って感じ!

「衣装の管理」= プロジェクト管理・タスク管理

コスプレイヤー
あのキャラの衣装はどこに仕舞ったっけ?この小道具、まだ作ってない!ってなっちゃう時ない?ちゃんと管理しておかないと、撮影当日に困っちゃうよね。

twentyhq/twenty
顧客とのやり取りやプロジェクトの進捗をしっかり管理できるよ。例えば、「A社への提案資料、まだ途中だっけ?」とか、「B社からの問い合わせ、誰が対応するんだっけ?」みたいな情報を一元的に管理できるから、誰が何をすべきか、パッと見てわかるようになるんだ。

「撮影の計画」= 自動化・効率化

コスプレイヤー
撮影のスケジュール調整、スタジオの予約、カメラマンさんとの打ち合わせ、メイクの準備…って、やることいっぱい!もっと効率よく進められたら、その分、もっと素敵な写真が撮れるのに!

twentyhq/twenty
定型的な作業を自動化したり、情報を連携させたりすることで、これまで手作業で時間がかかっていた部分を大幅に効率化できるんだ。例えば、「新しい顧客が登録されたら、自動でウェルカムメールを送る」とか、「特定の条件を満たしたら、担当者にタスクを割り当てる」みたいなことができるようになるよ。

つまり、twentyhq/twentyは、これまで企業の「顧客関係管理(CRM)」で定番だったSalesforceの「もっと使いやすくて、もっと柔軟なオープンソース版」みたいな存在なんだ!コミュニティの力で進化していくから、新しい機能がどんどん追加されて、私たちエンジニアにとってもワクワクするプロジェクトだよ!

さて、ここからはちょっと技術的な話になるけど、安心してね!コスプレイヤーさんが衣装を自作する時のように、イチから作っていく楽しさをイメージしながら見てみてね。

twentyhq/twentyは、Webアプリケーションとして動くから、動かすための「土台」が必要になるんだ。

コスプレ衣装を作るのに布やミシンが必要なように、twentyhq/twentyを動かすにはいくつか必要なものがあるよ。

Node.js
JavaScriptを動かすための実行環境。最新のLTSバージョンがおすすめだよ。

npm または Yarn
JavaScriptのパッケージ管理ツール。

Git
twentyhq/twentyのコードをダウンロードするために使うよ。

Docker および Docker Compose (推奨)
データベースなどの依存関係を簡単に動かすために使うと便利だよ。

まずはtwentyhq/twentyのソースコードを自分のパソコンにダウンロードするよ。GitHubからクローンするんだ。

git clone https://github.com/twentyhq/twenty.git
cd twenty

次に、プロジェクトが使うライブラリやツールをインストールするよ。

# npmを使う場合
npm install

# yarnを使う場合
yarn install

さあ、いよいよtwentyhq/twentyを動かしてみよう!開発環境で試す場合は、Dockerを使うと簡単にデータベースなども立ち上げられるよ。

Docker Composeを使う場合 (一番簡単でおすすめ!)

twentyhq/twentyのプロジェクトには、Docker Composeの設定ファイルが用意されていることが多いよ。これを使えば、必要なサービス(データベースなど)をまとめて立ち上げられるんだ。

docker-compose up -d  # -d はバックグラウンドで実行するオプション

データベースなどの準備ができたら、アプリケーション本体を起動するよ。

npm run dev # または yarn dev

これで、通常は http://localhost:3000 などでtwentyhq/twentyの画面にアクセスできるようになるはずだよ!

twentyhq/twentyは、React, JavaScript, GraphQLを使っているから、これらの知識があると、より深くカスタマイズできるよ。

例えば、新しい「顧客情報」のフィールドを追加したい場合、GraphQLのスキーマ定義を修正したり、Reactのコンポーネントを修正したりすることになるんだ。


新しい顧客情報フィールドを追加するイメージ (擬似コード)

twentyhq/twentyの内部構造はかなり複雑なので、ここではあくまで概念的な説明になるけど、イメージを掴んでみてね。

GraphQLスキーマの定義を更新
graphql/schema.graphql のようなファイルで、顧客エンティティに新しいフィールドを追加するよ。

type Customer {
  id: ID!
  name: String!
  email: String!
  # 新しく追加したいフィールド
  favoriteCosplayCharacter: String
}

type Query {
  customers: [Customer!]!
  customer(id: ID!): Customer
}

type Mutation {
  createCustomer(name: String!, email: String!, favoriteCosplayCharacter: String): Customer!
  updateCustomer(id: ID!, name: String, email: String, favoriteCosplayCharacter: String): Customer!
}

Reactコンポーネントの修正
顧客情報を表示・編集するReactコンポーネント (例
src/components/CustomerDetail.jsx) で、この新しいフィールドを表示したり、入力フォームを追加したりするよ。

import React, { useState, useEffect } from 'react';
import { useQuery, useMutation, gql } from '@apollo/client';

const GET_CUSTOMER = gql`
  query GetCustomer($id: ID!) {
    customer(id: $id) {
      id
      name
      email
      favoriteCosplayCharacter # 新しいフィールド
    }
  }
`;

const UPDATE_CUSTOMER = gql`
  mutation UpdateCustomer($id: ID!, $name: String, $email: String, $favoriteCosplayCharacter: String) {
    updateCustomer(id: $id, name: $name, email: $email, favoriteCosplayCharacter: $favoriteCosplayCharacter) {
      id
      name
      email
      favoriteCosplayCharacter # 新しいフィールド
    }
  }
`;

function CustomerDetail({ customerId }) {
  const { loading, error, data } = useQuery(GET_CUSTOMER, { variables: { id: customerId } });
  const [updateCustomer] = useMutation(UPDATE_CUSTOMER);

  const [name, setName] = useState('');
  const [email, setEmail] = useState('');
  const [favoriteCharacter, setFavoriteCharacter] = useState(''); // 新しいステート

  useEffect(() => {
    if (data && data.customer) {
      setName(data.customer.name);
      setEmail(data.customer.email);
      setFavoriteCharacter(data.customer.favoriteCosplayCharacter || '');
    }
  }, [data]);

  const handleSubmit = async (e) => {
    e.preventDefault();
    await updateCustomer({
      variables: {
        id: customerId,
        name,
        email,
        favoriteCosplayCharacter: favoriteCharacter, // 新しいフィールドを送信
      },
    });
    alert('顧客情報が更新されました!');
  };

  if (loading) return <p>読み込み中...</p>;
  if (error) return <p>エラーが発生しました: {error.message}</p>;

  return (
    <form onSubmit={handleSubmit}>
      <label>
        名前:
        <input type="text" value={name} onChange={(e) => setName(e.target.value)} />
      </label>
      <br />
      <label>
        Email:
        <input type="email" value={email} onChange={(e) => setEmail(e.target.value)} />
      </label>
      <br />
      <label>
        好きなコスプレキャラ:
        <input type="text" value={favoriteCharacter} onChange={(e) => setFavoriteCharacter(e.target.value)} />
      </label>
      <br />
      <button type="submit">更新</button>
    </form>
  );
}

export default CustomerDetail;

ポイント

twentyhq/twentyは大規模なプロジェクトなので、すぐに全体を理解するのは難しいかもしれないけど、まずは「どこをいじればどう変わるのか」を少しずつ試してみるのが大事だよ。

公式ドキュメントやコミュニティの情報を参考にしながら進めるのが、コスプレの作り方動画を見るように、一番の近道だよ!

困ったことがあったら、GitHubのIssueやDiscussionで質問してみるのも手だよ。オープンソースプロジェクトの醍醐味だね!

twentyhq/twentyは、企業にとっての「Salesforce」のように、顧客との関係を深め、業務を効率化するための強力なツールだよ。そして、私たちソフトウェアエンジニアにとっては、React, JavaScript, GraphQLといったモダンな技術を学びながら、コミュニティと一緒にプロダクトを成長させる楽しさを味わえる、まるで「みんなで最高の衣装を作る」ようなワクワクするプロジェクトなんだ!


twentyhq/twenty




開発効率を数十倍に!Bundler/Test Runner/Package Managerを統合した「Bun」徹底解説

今回は、密室殺人事件ドラマのコントのように、すべての謎を一つで解決してしまうような、オールインワンのJavaScriptツールキット、それが「Bun(ブン)」です。Bunは、ウェブ開発の現場で日々直面する様々な課題を、一つのツールで高速かつ効率的に解決するために設計された、新しいJavaScriptランタイムです。


「情報を探す時間」を消滅させるAIパートナー:MineContextの技術スタック(PythonによるRAGとElectron/ReactによるUX)

「落ち着け、相棒!見ろ、このキーワードだ. ..volcengine/MineContext、electron、react、python. ..そして『コンテキストアウェアなAIパートナー』だと!?これはただの事件じゃない、ソフトウェア開発における『生産性の殺人事件』だ!」


[React/TS対応] 視覚的構築から即時API化へ:FlowiseAI導入ガイドとサンプルコード

今日は、あなたのAIエージェント開発を劇的に変える「FlowiseAI」について、ソフトウェアエンジニアであるあなたが、どう活用し、どう世界を変えるのかを熱く語りましょう!「FlowiseAI」は、AIエージェントやカスタムLLM(大規模言語モデル)アプリケーションを視覚的に構築できるオープンソースのツールです。これは、開発のパラダイムシフトですよ!


【脱・手作業】Reactエンジニアよ、動画編集もコードで「自動課金」せよ!Remotion入門

まさにRemotionは、私たちが普段ウェブサイトを作るのと同じ感覚で、Reactのコンポーネントを組み合わせて「MP4動画」を錬成できるライブラリです。ゲーム課金に例えるなら、「ガチャの演出をポチポチ手で作るんじゃなくて、スクリプトを組んで全パターンの排出アニメーションを自動生成する」みたいなチート級の効率化が可能になります。


ドラッグ&ドロップで設計!ノードベースUI構築ライブラリ「React Flow / Svelte Flow」入門と活用事例

お悩みはさておき、ご質問のxyflow/xyflowについて、ソフトウェアエンジニアの視点から、分かりやすく丁寧にご説明しますね!これは、「React Flow」や「Svelte Flow」として知られる、ノードベースのUI(ユーザーインターフェース)を構築するための、めちゃくちゃ強力なオープンソースライブラリのことなんです。


ガシャポン攻略法:TanStack RouterでReactのルーティングを制覇する

TanStack Routerは、Reactアプリケーションでルーティングを管理するための、強力で型安全なライブラリです。単にページを切り替えるだけでなく、もっと複雑な要件にも対応できる、まさに「ガシャポンの攻略法」のようなライブラリです。


ReactでiOS/Androidアプリを同時開発!Expoの基本とサンプルコードを彼女との会話で解説

彼女がそう言って、キラキラした目で試着室から出てきました。 「うーん、似合うと思うよ。でもさ、それってさっき見てたのとちょっと違うデザインじゃない?」僕がスマホをいじりながら返事をすると、彼女は少し頬を膨らませました。 「もう!ちゃんと見てる?今日、デートだって言ったでしょ?」


「DBの構造、見つけたり!」drawdbで実現する設計の見える化とコミュニケーション革命

あなたのおっしゃる drawdb-io/drawdb というツールは、データベース設計を行うソフトウェアエンジニアにとって、すごく便利で強力な味方になってくれます。この記事では、それを 「DB図作成のスペシャリスト」 と呼んで解説していきますね!


freeCodeCamp:あなたのキャリアを変える無料プログラミング学習の決定版!

突然ですが、あなたはこんな風に思っていませんか?「プログラミングを学びたいけど、何から始めたらいいか分からない…」 「スキルアップしたいけど、お金がかかるのはちょっと…」 「実戦で使えるコードを書きたいけど、どこで経験を積めばいいの?」もし、一つでも当てはまるなら、今日の放送はあなたのためにあります!


サヨナラ属人化!Markdown対応知識ベースで爆速開発チームへ変貌

「うおおおお!またこのバグ!?」「え、この仕様どこに書いてあるの…?」「前に誰か解決してた気がするんだけどな…」皆さん、よくある光景ですよね?炎上プロジェクトでは、情報が散乱し、ナレッジが共有されず、同じような問題に何度もぶつかることが日常茶飯事です。そんなカオスを打開し、チームを救う切り札となるのが、今回ご紹介する「爆速知識ベース」です!