プログラミング
Show HN: OM Core – スプレッドシートのセル数式なしで多次元モデルを構築
Show HN: OM Core – multidimensional models without spreadsheet cell formulas (github.com)
要約
OM Coreは、構造化された財務、運用、分析モデルのための多次元モデリングエンジンのオープンソース実装です。スプレッドシートのグリッドをモデルとして扱うのではなく、OM Coreはモデルをディメンション、キューブ、グループ、ルールで表現します。グリッドやビューはモデルの投影であり、真実の源ではありません。このプロジェクトは現在アルファ版であり、開発途上ですが、スプレッドシートの限界を超える、より監査可能で拡張性のあるモデル構築を目指しています。
全文翻訳
OM Core
OM Coreは、構造化された財務、運用、分析モデルのための多次元モデリングエンジンのオープンソース参照実装です。スプレッドシートのグリッドをモデルとして扱うのではなく、OM Coreはモデルをディメンション、キューブ、グループ、ルールで表現します。グリッドとビューは、そのモデルの投影であり、真実の源ではありません。
アルファソフトウェア:OM Coreは活発に開発中です。API、コマンド名、ファイル形式、GUIの動作、モジュールの境界は、v1.0より前に変更される可能性があります。
ドキュメント
メインのドキュメントサイトはこちらです:https://cloudcell.github.io/om-docs/
まずはこちらから:
OM Coreとは何か:https://cloudcell.github.io/om-docs/start/what-is-om-core/
なぜスプレッドシートではないのか:https://cloudcell.github.io/om-docs/start/why-not-spreadsheets/
インストール:https://cloudcell.github.io/om-docs/start/installation/
クイックスタート:https://cloudcell.github.io/om-docs/start/quickstart/
コアアイデア
ほとんどのスプレッドシートモデルは、いくつかのものを混ぜ合わせています:
モデル構造
ビジネスロジック
レイアウト
プレゼンテーション
計算フロー
ユーザーインタラクション
OM Coreはこれらの懸念を分離します。モデルは以下から構築されます:
ディメンション — Time, Account, Region, Product, Scenario, Line Itemなどのビジネス軸。
キューブ — 1つ以上のディメンション上に格納されたデータ。
グループと階層 — 構造化されたコレクションと集計。
ルール — スプレッドシート座標ではなく、セマンティックなモデルアドレス上で表現された計算。
ビュー — モデルを検査および操作するためのグリッドとインターフェース。
ルールは、特定の行、列、またはコピーされた数式に依存させることなく、総利益が収益とコストから導き出されるといったビジネス関係を記述すべきです。
リポジトリの範囲
このリポジトリには現在、OM Coreを実行するために必要な完全なアルファアプリケーションスタックが含まれています。これには、モデリングエンジンと、コマンド、REPL、GUI/TUI、ランタイム、タイムライン、スクリプティング、プラグイン、ストレージアダプター、例、テストレイヤーが含まれます。一部のモジュールは内部実装レイヤーです。現在のアルファアプリケーションがそれらに依存しているため含まれています。これらはまだ安定した公開拡張APIとして扱われるべきではありません。
リポジトリの設定
.om/ ディレクトリは意図的にコミットされています。これには、現在のアルファアプリケーションに必要なツールバー設定を含む、デフォルトのOM Coreアプリケーション設定が含まれています。一時的なキャッシュディレクトリやプライベートローカル状態ではありません。これらのデフォルトが別の文書化された場所からロードされるようにアプリケーション設定システムが変更されない限り、.om/ を削除しないでください。
インストール
OM Coreは現在ソースから実行されます。
Linux / macOS
git clone https://github.com/cloudcell/om-core.git
cd om-core
./start.sh
Windows
PowerShellを使用してください:
git clone https://github.com/cloudcell/om-core.git
cd om-core
.\start.ps1
./start.sh または .\start.ps1 はGUIを起動し、別のターミナルでTUIを開くかどうかを尋ねます。
OM Coreはuvを使用してPython環境を管理します。uvをインストールし、プロジェクトルートでuv syncを実行して.venvを作成し、依存関係をインストールします。その後、startスクリプトとtestスクリプトは自動的にuv runを使用します。
特定のランタイムモードも起動できます:
# Linux / macOS
./start.sh --gui # グラフィカルインターフェースのみ
./start.sh --tui # 現在のターミナルでのターミナルインターフェース
./start.sh --runtime # ヘッドレスランタイムのみ
./start.sh --repl # 現在のターミナルでのREPLコマンドシェル
# Windows
.\start.ps1 --gui # グラフィカルインターフェースのみ
.\start.ps1 --tui # 現在のターミナルでのターミナルインターフェース
.\start.ps1 --runtime # ヘッドレスランタイムのみ
.\start.ps1 --repl # 現在のターミナルでのREPLコマンドシェル
詳細については、インストールガイドを参照してください:https://cloudcell.github.io/om-docs/start/installation/
クイックスタート
./start.sh (Linux / macOS) または .\start.ps1 (Windows) を実行するとGUIが起動します。GUIと並んでコマンドシェルを提供するTUIを別のターミナルで開くように求められます(デフォルトのYを受け入れると)。
注意:./start.sh または .\start.ps1 を初めて実行すると、uvはプロジェクトフォルダ(.venv)にPython仮想環境を作成し、uv.lockから依存関係をインストールします。
OM Coreを起動したら、組み込みのhelpコマンドを試してください:
om> help
特定のトピックに関するヘルプを求めることもできます:
om> help rule
om> help calc
最小限のOM Coreスクリプトは以下のようになります:
# Dimensions
dim Month Jan Feb Mar
# Cube
cube Sales Month
# View
view SalesView = Sales::Month
# Rules
rule Sales::Month.Jan = 100
rule Sales::Month.Feb = Sales::Month.Jan * 1.1
rule Sales::Month.Mar = Sales::Month.Feb * 1.1
# Calculate
calc
これを hello.openm として保存し、REPLまたはTUIからソースします:
om> source hello.openm
完全なウォークスルーについては、以下を参照してください:https://cloudcell.github.io/om-docs/start/quickstart/
テスト
プラットフォーム固有のスクリプトでテストスイートを実行します:
# Linux / macOS
./test.sh
# Windows
.\test.ps1
アーキテクチャ
OM Coreは、セッションスコープのランタイムレイヤー、コマンド/クエリサービスレイヤー、および複数のクライアントに分割されています。エンジンが正規のワークスペース状態を所有し、GUI、TUI、REPL、CLIはメッセージバスを介して通信するクライアントです。
なぜスプレッドシートではないのか?
スプレッドシートは高速で柔軟ですが、ビジネスロジックがセルアドレス、コピーされた数式、リンクされたタブ、および暗黙的なレイアウト規則にエンコードされているため、大規模なモデルはしばしば壊れやすくなります。OM Coreは異なる抽象化レベルを使用します。モデルを明示的にします:ディメンションは軸を記述し、キューブは値を保持し、グループは構造を整理し、ルールは計算を定義し、ビューは結果を表示します。トレードオフは意図的です:あなたは事前に多くの構造を定義し、その見返りにモデルは成長するにつれて監査、拡張、テスト、保守が容易になります。より長い説明については、以下を参照してください:https://cloudcell.github.io/om-docs/start/why-not-spreadsheets/
プロジェクトステータス
OM Coreは現在アルファソフトウェアです。v1.0より前に約束されていないもの:
安定した公開API
安定したプラグインAPI
安定したスクリプティングAPI
安定したファイル形式
パッケージ化されたデスクトップインストーラー
独立した検証なしの重要なビジネスユースのための本番準備
参照:KNOWN_ISSUES.md CHANGELOG.md SECURITY.md
法的情報
OM Coreは、特に断りのない限り、GNU Affero General Public License v3.0の下で配布されます。参照:LICENSE NOTICE legal/THIRD-PARTY-NOTICES.md legal/CONTRIBUTOR-CLA.md legal/CONTRIBUTOR-SIGNOFFS.md
OM Coreの名前はソフトウェアライセンスとは別に管理されます。参照:legal/TRADEMARKS.md
貢献
貢献は歓迎されます。特に、例、ドキュメント、および明確にスコープされたエンジンの動作に対する、小さく焦点を絞った改善です。以下をお読みください:CONTRIBUTING.md legal/CODE_OF_CONDUCT.md SECURITY.md
セキュリティ問題は、公開GitHubイシューを通じて報告されるべきではありません。SECURITY.mdを参照してください。
フィードバック
バグ:GitHubイシューを開いてください。
ディスカッション:Discordに参加してください。