Morph

Morph 1.0

ワークスペース - ローンチウィーク#1

2024-10-28
三橋 啓多
三橋 啓多
共同創業者 COO

本日から、Morphの初めてのローンチウィークが始まります!これから5日間にわたって、今回のローンチに含まれる機能のご紹介の解説記事を投稿したり、オフライン・オンラインでさまざまなイベントを開催します!

10月29日から31日まで、サンフランシスコで開催されるODSC Westに参加し、31日にはブース出展を行います!

また、10月31日にはProduct Huntでのローンチも行います!

さて、初日となる本日は、Morphのメイン機能であるワークスペースについてご紹介します。Morphを通じて、より迅速で直感的なビジネスデータ活用が実現できる理由をお伝えします。

データ管理 + VS Code + アプリ画面 を一箇所で

Morphのワークスペースは、4つのタブとサイドバーから構成されています。

  • Code … Morph上でデータパイプラインやデータアプリを構築するためのコードを開発するエディター画面です
  • Data … MorphのビルトインのPostgres、DWHなどの外部データベースへの接続、SaaSへの接続を管理する画面です
  • Page … Morph上で構築したデータアプリを表示する画面です
  • Job … データパイプラインのスケジュール実行を管理・監視する画面です。
  • サイドバー … 今開いているタブに応じたAI機能やサポート機能が表示されます。

一つずつ詳しくみていきましょう!

慣れ親しんだコードエディター

Morph上で構築されるデータパイプラインやデータアプリは全てコードによって管理されます。そのためコードエディターは最も重要な機能の一つであり、あなたがデータアプリの開発者であるならば、最も多くの時間を費やす場所に違いありません。

私たちのサービスに統合されたコードエディターはVS Codeベースであり、最も多くの人々が慣れ親しんだ体験を実現しています。

拡張機能や設定を通じて、あなたのお気に入りのコード編集体験をそのまま再現することができます!

開発の裏側

この体験を実現するために、私たちはクラウドコードエディターの先駆者である Codesandbox, Stackblitz, Coder, Replit を観察し、多くを学びました。 この場を借りて、クラウドでの開発体験を前進させんとする全てのチームに賛辞を送りたいと思います!そして、私たちもデータの分野でそのムーブメントに加わります!

データ接続と認証管理

データパイプラインやデータアプリを構築する最初のステップは、データソースとの接続であることは間違いないでしょう。そのため、私たちはデータ接続の機能をとても大切にしています。

多くのBIツールやデータアプリツールでも同様の接続機能は存在しますが、Morphのデータ接続の特徴は、認証情報の管理の手軽さです。

実際にデータアプリを構築して運用しようとすると、最もストレスに感じるのはデータ接続の認証の管理です!経験のある方であれば共感いただけるのではないでしょうか。

Morph上でデータ接続を設定すると、認証情報は安全な場所に保管され、その認証情報が有効である限り自動で使いまわされます。

接続時の認証方式がOAuthである場合はリフレッシュトークンを用いたアクセストークンの更新も自動で行います。そのため、SQLデータベースだけではなく、SaaSサービスへの接続もとても簡単に行うことができます!

これらの機能により、認証情報の管理が大幅に楽になり、データパイプラインやデータアプリの構築作業に集中することができます!

SQL プレイグラウンド

SQLデータベースとの接続が完了すると、Morphの画面上からSQLを発行することができます。そして、SQLプレイグラウンドで色々な実験を行い、理想的なクエリが完成したら、ボタンひとつでSQLファイルに変換することができます!

ビルトイン のPostgres

データ接続が完了したら、その後はデータの変換や整理をSQLやPythonを使って構築することになると思います。

たとえば、Snowflakeからデータを持ってきてパイプラインを構築し、その結果をまたデータベースに格納したいと思ったらどうしましょう?

もう一度データウェアハウスに戻しますか?それも素晴らしい選択肢です。Morph上で、SQLやPythonを使って、柔軟なリバースETLを構築することも可能です。

しかし、ちょっとしたデータベースが欲しい時もあるはずです。いわゆる分析用のデータマートですね。そんなときのために、MorphにはビルトインのPostgresが搭載されており、自由にお使いいただけます。

開発の裏側

MorphのビルトインPostgresは、サーバーレスPostgresであるNeonを用いて実現しています。

Neonは、まだ我々がデータワークスペースではなくBaaSのアイデアを追いかけていた時から注目し、研究している素晴らしいオープンソースプロジェクトであり、アイデアをピボットした後も重要な要素として使い続けられることを嬉しく思います。Neonは、VercelやRetoolなどの素晴らしいプロダクトでも使われています。その絶え間ない技術的な進化とコミュニティへの貢献に、この場を借りて敬意を表したいと思います。そして、Morphを通じて「データマート」というNeonの使い方をユーザーに届けていきたいと思います!

Page: アプリ画面

データの変換や可視化を含む、データパイプラインの構築が完了したら、それをアプリ化してチームメンバーに共有する時です。

Morphでは、マークダウンベースの記述方式で、インタラクティブなデータアプリを簡単に構築することができます。

私たちはプリメイドのコンポーネントを提供することで、SQLやPythonの結果をブラウザ画面に持ってくることを、本当に簡単に実現できるようにしました。

ページタブを開くことで、データアプリとして使用することができます!

開発の裏側

このマークダウンベースの記述方式は、マークダウン形式をReactで拡張する、MDXというパッケージを用いることで実現しています。MDXは、Nextjsを用いて構築された多くのブログやウェブサイトで使用されています。私たちは、この素晴らしい発明に謝意を示すとともに、Morphのデータアプリ体験を構築するために開発したいくつかのツールを近いうちにオープンソースにすることでコミュニティに還元したいと思っています!

サイドバー: Copilot ++

サイドバーにAIチャットを常駐させるアイデアは、Microsoftが示したAI時代のユーザー体験の指針であり、多くの場合非常に有効です。これは、AIへのアクセスが容易になるだけでなく、現在のユーザーのコンテキストをAIに伝えるために非常に有効です。

この点は、AIだけでなくGUIによるユーザー体験においても効果的です。

Morphのワークスペース内のサイドバーは、今ユーザーがどのタブにいるのか、あるいはどのファイルを開いているのかに応じて、AIの機能を切り替えたり、適切な補助画面を表示したり、ヘルプドキュメントへのリンクを表示したりと、動的に切り替わります。

Morph フレームワーク

Morphの根幹は、なんといってもSQLとPythonによるデータ処理の構築体験にあります。大量のデータタスクのリクエストに応えるエンジニアの仕事の負荷を軽減するために、SQLとPythonによるデータパイプラインを簡単に構築するためのフレームワークを提供し、ワークスペースにプリインストールされています。

MorphのSQLやPythonは、他のSQLやPythonの結果を参照することができ、それをチェーンすることができます。これらの依存関係は自動的に解析され、Canvasによってデータの流れを可視化したり、Morph AIに適切な文脈を伝えて、AIによるサポートの精度を改善します。

実際のコードは以下のようになります。

SQL:

{{
    config(
        name = "get_aws_cost",
        connection = "snowflake"
    )
}}
select
    product_code,
    year,
    month,
    unblended_cost as amount
from
    aws_cost

Python:

@morph.func
@morph.variables("start_date", default="2024-07-01")
@morph.variables("end_date", default="2024-07-31")
@morph.variables("product_code", default=None)
def aws_cost_sunryse(context: MorphGlobalContext) -> pd.DataFrame:
  data = context.data["get_aws_cost"]
  fig = px.pie(
        data,
        names='ServiceName',
        values='amount',
        title='Total Cost by ServiceName',
        color_discrete_sequence=px.colors.sequential.Blues,
        labels={'TotalCost': 'Percentage'}
    )
    # Update the layout to show percentage inside the pie
    fig.update_traces(textposition='inside', textinfo='percent')
    return fig

全てをコードベースで管理しながらも、さまざまなユーザー補助機能を提供

このように、Morphのワークスペースでは、ユーザーが構築するものの全てをコードベースにすることで、従来のBIが抱えていた学習コストの高さや、属人性の高さ、保守性の低さといった課題を解決しようとしています。

一方でそれは、非エンジニアユーザーにとっては難しさとのトレードオフを意味します。私たちは、ワークスペースに統合された様々な補助機能や、Morph AIによるサポートによってその難解さを軽減しようと試みています。今の時点でも、非エンジニアユーザーにとっても十分使える状態であると確信していますが、今後のアップデートでもこの点を重視して改善を続けてまいります。

おわりに

さて、初めてのローンチウィークの初日の投稿ということで、少々長くなってしまいましたが、本日の発表は以上になります!

明日は、データアプリの構築機能である Page について紹介します。お楽しみに!