MAD Designer for macOSは、Mobile Analytics Document(.mad)の作成、クエリ設計、レイアウト編集、データ更新、印刷、およびエクスポートを行うネイティブAppKitデスクトップアプリケーション(macosx SDK、MACOSX_DEPLOYMENT_TARGET = 12.0)です。iOSアプリやヘッドレスエンジンを支えているものと同じファーストパーティのObjective-Cフレームワーク群およびユニバーサル静的Cライブラリ(Compressor)をリンクしています。
macOS上で作成または編集されたすべての.madファイルは、iPad/iPhoneアプリ、Linux上のmad CLI、およびmad-action GitHub Actionとバイト単位で互換性があります。
brew install --cask mthomason/tap/mad-designer
/Applicationsへ配置した場合は、初回起動前にターミナルで一度xattr -cr "/Applications/MAD Designer.app"を実行してmacOS Gatekeeperの検疫属性を解除してください。)開かれた各.madドキュメントはネイティブのNSDocumentウィンドウ(MADMacDocument / MADMacWindowController)で動作し、ウィンドウツールバー中央のWorkspaceセグメントコントロール(Cmd+1、Cmd+2、Cmd+3)によって3つのレポーティングステージを切り替えます:
Cmd+1)
MAD Queryワークスペース(MADMacQueryViewController)は、RptqQueryに保存されるリレーショナルクエリグラフを構築します。ワークスペースバーのトグルで、クエリの2つの排他的なビューを切り替えることができます:
RptqDatabaseSchemaTable)にインポートされたすべてのテーブルをカラム数とともに表示し、現在クエリに参加しているテーブルにはチェックマークを付けます。任意のテーブルをダブルクリック(または+ Add Table to Queryをクリック)するとキャンバスに追加されます。MADMacQueryCanvasView): 各クエリテーブルを、ドットグリッドキャンバス上のドラッグおよびリサイズ可能なカード(MADMacQueryTableCardView)として描画します。ヘッダー色はMTGraphが計算したトポロジカルなルート/子関係に応じて色分けされます。MADMacQueryLinksOverlayView): あるテーブルカードのカラムから別のテーブルカードのカラムへドラッグすると結合(デフォルトはLEFT OUTER)が作成され、滑らかな3次ベジェ曲線、方向矢印、およびピル型バッジで描画されます。結合バッジをクリックまたは右クリックすると結合インスペクタポップオーバーまたはコンテキストメニューが開き、結合タイプ(INNER、LEFT OUTER、RIGHT OUTER、FULL OUTER、CROSS)の変更、結合方向の反転、またはリンクの削除が行えます。WHERE述語(Filters (WHERE))、GROUP BY/ソート順(Groupings (GROUP BY)——対応するGroup HeaderおよびGroup Footerレイアウトバンドを自動的に用意します)を編集でき、Arrange Tablesでトポロジカルなカード自動配置を実行できます。SELECT文を直接貼り付けたり編集したりできます。MADSQLParser、MADSQLStatementResolver、およびMADSQLQueryCompilerを介して検証し、ポータブルなRptqQueryオブジェクトグラフへコンパイルするとともに、元のSQL文をRptqQuery.sqlSourceTextに保持します。Cmd+2)
MAD Designerワークスペース(MADMacDesignerViewController)は、ユーザーがリサイズ可能な3ペイン分割ビュー内でレポートのパラメトリックなバンドと要素をレイアウトします:
Align Left、Center、Right、Top、Middle、Bottom)およびSize to Fit。100%にリセットできる連続Zoomスライダー(50%–250%)。MADMacDesignerMinimapView): すべてのレポートバンド、縮小表示された要素ブロック、および現在のスクロールビューポート矩形をリアルタイムの比率で俯瞰表示します。ミニマップ内をクリックまたはドラッグすると、任意のバンドへジャンプして選択できます。Report Header、Page Header、任意のGroup Header / Group Footerバンド、Report Detail、Page Footer、およびReport Footerを、要素数、ポイント単位の高さ、改ページインジケータとともに一覧表示します。行をダブルクリックするとセクションの表示/非表示が切り替わります。RptqQueryFieldカラムのフィルタリング可能なリストです。任意のフィールドをキャンバス上のセクションバンドへ直接ドラッグ(またはダブルクリック)すると、バインドされたデータフィールド要素(RptqDocumentElementLabelDataField)が作成されます。MADMacDesignerCanvasView):
RH、PH、GH、DTL、GF、PF、RF)、およびセクションの高さをリサイズするための下部ドラッグハンドルを備えた、左上原点(flipped)でズーム可能なNSViewキャンバスです。Shiftクリックによる複数選択、8点リサイズハンドル、スマート整列ガイド、グリッドスナップ、ダブルクリックによるインラインテキスト編集、セクションをまたぐドラッグ&ドロップ(-moveElement:toSection:atOrigin:)、および単一・一括プロパティ編集全体にわたる完全なNSUndoManager(Cmd+Z / Cmd+Shift+Z)のUndo/Redoをサポートしています。1 · PAGE & SELECTED SECTION: 対象のPaper(用紙)サイズの設定、アクティブなバンドバッジの表示、Fit Heightボタン付きのセクションHeight (pt)編集、ならびにSection VisibleおよびPage Break Afterの切り替えを行います。2 · SELECTED ELEMENT INSPECTOR: 要素が選択されているときに表示される4つのコンテキストカード:
Cmd+D)、または削除(Delete)します。table.column)、集計関数(SUM、COUNT、AVG、MIN、MAX、STDDEV、VARIANCE)とスコープ(ReportまたはGroup)、通貨フォーマット、またはバーコード体系(zint)を設定します。X、Y、W、H)、枠線の幅/色、パディング、およびマージンを設定します。Cmd+3)MAD Viewerワークスペース(MADMacViewerViewController)は、ライブデータソースに対してクエリを実行して更新し、結果セットをローカルのSQLiteテーブルキャッシュ(MADDataTableFast)にマテリアライズ(実体化)して、ページ分割されたレポートを描画します:
MTPaper): US Letter、US Legal、US Tabloid、A3、A4、A5、B4、B5、JIS B4、またはJIS B5に合わせてレポートを即座に再ページ分割・再描画します。Cmd+R): ドキュメントに登録されたデータベースドライバを介してクエリを実行し、.maddb / .mdcacheコンパニオンSQLiteキャッシュを構築し、2パスのグループ化と集計を計算してページキャッシュを再構築します。100%へのリセット、ズームイン、およびページ送り(Previous、Page N of M、Next)。Cmd+P)とExport(Cmd+E): NSPrintOperationによるネイティブ印刷、または登録されている全7種類のエクスポータを選択できるフォーマットピッカー付きのNSSavePanelを開きます:
.pdf) — MADReportExporterPDFによるネイティブCoreGraphics / AppKitベクターPDF.html) — 絶対配置によるページ再現HTML(MADReportExporterHTML).html) — レスポンシブでリフロー可能なセマンティックHTML(MADReportExporterHTMLFlow).csv) — RFC 4180準拠の明細行エクスポート(MADReportExporterCSV).json) — スキーマ契約+明細行データ(MADReportExporterJSON).json) — 階層化されたセクション、グループ、および評価済み要素(MADReportExporterJSONReport).txt) — 等幅テキストテーブル(MADReportExporterText)PDFView内にドロップシャドウ付きの鮮明なページを描画し、下部ステータスバーに描画済みページ数、キャッシュされた行数、および用紙寸法を表示します。MADMacDocumentController): ファイルを指定せずにアプリを起動すると、.madドキュメント(com.everydayapps.productivity.madおよびcom.thomason.report.mad)でフィルタリングされたmacOSのOpen Reportパネルが表示され、左下バーにはプライマリのNew Documentボタンが配置されます。Finderで任意の.madファイルをダブルクリックすると、直接ワークスペースウィンドウで開きます。.madアーカイブを開くと、MADStoreConverterによってストアがその場でポータブルSQLiteスキーマ(MADStoreSchema)へ自動変換されます。Cmd+N): New Documentをクリック(またはメニューからFile → New Document…を選択)すると、データベース接続アシスタント(MADMacConnectionWindowController)が開きます:
.sqlite3 / .dbデータベースファイルを参照するか、サーバーのホスト、ポート、任意のSQL Serverインスタンス名、データベース名、ユーザー名、パスワードを入力します。.madファイルにインポートされ、MAD Queryワークスペースで開かれます。認証情報はMADKeyChainを介してmacOSキーチェーンに保存されます。AppKitiOSのUIをMac Catalystでラップするのではなく、MADは14個のフレームワークのうち12個をmacosx向けにネイティブコンパイルし(SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"、MACOSX_DEPLOYMENT_TARGET = 12.0)、その上に専用設計のAppKitドキュメントアーキテクチャ(Mac/Source/)を構築しています:
| レイヤー | コンポーネント | macOSでの役割 |
|---|---|---|
静的Cライブラリ(Compressor) |
sqlite3, zlib, openssl, bzip2, libpng, libarchive, freetds, mariadb, postgres, zint |
.xcframeworkバンドル内のユニバーサル(arm64 + x86_64)macosxスライス。./Compressor/build.sh --verify --all --platforms ios,simulator,macosxで検証。 |
| コア&ドライバフレームワーク | MADFoundation, MADDataStructures, MADCocoaExtensions, MADFileManager, MADAPI, MADSqlite3, MADTds, MADTdsClient, MADMySQL, MADPostgres, MADBarcodes, MAD |
共有Objective-Cモデル、ポータブルSQLiteストア(Rptq*)、SQLパーサー/コンパイラ、ワイヤデータベースドライバ、zintバーコードレンダラー、MADDesignerLayout Undo/Redoエンジン、およびMADPrintPageRenderer / MADReportExporterPDF。 |
ネイティブAppKitフロントエンド(Mac/) |
MADMacAppDelegate, MADMacAboutWindowController, MADMacDocumentController, MADMacDocument, MADMacWindowController, MADMacConnectionWindowController, MADMacQueryViewController, MADMacDesignerViewController, MADMacDesignerCanvasView, MADMacViewerViewController |
ネイティブNSDocumentライフサイクル、About / Overview / Acknowledgementsウィンドウ、ツールバー&メニューバー、ビジュアルクエリキャンバス、ミニマップ&インスペクタ付き3ペインレポートデザイナー、およびPDFViewレポートビューア。 |
マルチプラットフォーム移植におけるアーキテクチャ監査および不具合修正ログの詳細は、docs/project/MAD_MACOS.mdに記録されています。
Reports.xcworkspaceを開き、共有スキームMAD Designer MacとデスティネーションMy Macを選択してRun (Cmd+R)を押すと、ネイティブmacOSアプリをインタラクティブにビルドしてデバッグできます。
任意のフレームワークのユニットテストスイートをmacOS上でネイティブ実行するには、以下を実行します:
xcodebuild test -workspace Reports.xcworkspace -scheme MAD \
-destination 'platform=macOS,arch=arm64' \
-derivedDataPath ~/Library/Developer/Xcode/DerivedData/Reports-cozeiyczmvgrbeapplwfuygymqci
スタンドアロンスクリプトMac/build.shは、macOS向け全12フレームワークのコンパイル、Mac/build/MAD Designer.appのアセンブルと署名、エンドツーエンドのヘッドレス+AppKitスモークテストスイート(Mac/Tests/MADMacSmokeTest.m)の実行、および配布用.zip/.dmgアーカイブのパッケージ化を行います:
./Mac/build.sh # build 12 macOS frameworks + MAD Designer.app
./Mac/build.sh --no-frameworks # rebuild only MAD Designer.app (fast iteration)
./Mac/build.sh --smoke-test # build and run the end-to-end macOS smoke suite
./Mac/build.sh --package # package MAD-Designer-macOS.zip and MAD-Designer-macOS.dmg
このページは英語原文の日本語翻訳です。内容に相違がある場合は、英語原文が優先されます。