あなたがここに辿り着いたということは、おめでとう。あなたも私と同じく「"4D"って何?」と問う探究者の一人なのでしょう。
ITエンジニアは様々な技術に触れますが、4D(4th Dimension)ほど初見で何がなんだかわからない技術も珍しいです。その主な理由は「何でもできすぎて、どこに分類していいのかわからない」こと。
2023年11月28日現在、Qiitaには「4d」タグのついた記事は(たった!)8記事あり(しかも半分くらいは違う「4D」の記事)、その中に有識者の方が書いた4Dの基本的情報の解説があります。
4Dがどんなものか想像できない人には、Access + VBA + SQL Server + Visual Studio + Phpという説明をします。つまり、プログラムと実行環境とデータベースとIDEその他が全部一体化しちゃっています。
他のサーバー、ミドルウェア、その他製品と比べてどこが良いかと言うと、、、
開発のスピード
環境構築・配布の容易さ
でしょうか。
無茶苦茶ですね。そんなことが可能なのでしょうか? しかし、どうやらその通りなようです。
4Dはローコード開発実行環境? ではない
私は現在株式会社治郎吉商店様の「4Dアプリ開発ガイド」をチュートリアルとして学習を進めており、何度か通読して触った現在の感触としては 「これはローコード開発実行環境なのでは?」 と感じています。
過去に触った技術の中で一番似ているな、と感じたのは「RPGツクール」でした。あれもゲームを作るためのローコード開発実行環境と呼べますが、同じようにGUIを駆使して、あまり実コードを意識せずにアプリをサクサク作っていけるのが4Dの強みなようです。
実際、普段使う際には独自言語としての4D言語でプログラミングを行いますが、プラグインを作る際にはC言語で実装することになります。また4D言語は一般的なコーディングよりも短めの行数・文字数でフロントエンドからバックエンドまで実装できるようです。
テンプレートなら一瞬で実装できるし、そもそも非エンジニアが業務システムを作る、ということまで想定することもできると。
約1ヶ月後の追記:
もう少し深く学んだ結論としては、「ローコード開発実行環境」は流石に違うかな、という印象になりました。バリバリコードを書くので。
「データベース特化型のオールインワン言語&環境」という印象が強くなりました。入出力フォームやストラクチャー(テーブル定義)をGUIで設置して管理したりしつつ、4D言語でもSQLでも制御できます。4Dサーバーを立ててそこに多数の4Dクライアントからアクセスもできます。
4Dの歴史と規模間
歴史に関しては意外と深く、1984年に初期版がリリースされました。
ChatGPTに4Dについて質問すると、日本での圧倒的知名度の低さに反して流暢に答えてサポートしてくれるのですが、これは英語版Wikipedia記事などが充実していることに由来するのでしょう。
4Dは世界的に展開している技術であり、日本よりも他国でのシェアの方がかなり大きいようです。しかし日本支社もあり、日本語版のHPもあります。
キャッチコピーは「4D: ビジネスアプリ向けの速いプラットフォーム」。
4Dの気になる点
現在の印象:- バック/フロント共に凝った独自性のある開発には向かない
- 大規模開発にも向かない
しかし、これは「ローコード開発」と捉えれば利便性・迅速性・展開性とトレードオフなのはごく普通のことであり、用途さえ適合していればメリットのみを享受することもできるでしょう。
- "4D"という名称があまりに検索しづらすぎる
最大の問題点はこれなのでは? 「4D」でも正式名称の「4th Dimension」でも、単に「4次元」という一般名詞であるためありとあらゆる関係ない検索結果が引っかかりまくります。「CINEMA 4D」という全然関係ないグラフィックソフトの方が知名度も高いようです。
技術開発において技術情報を一意に検索困難、というのはわりとデメリットなので、それは困るなぁと感じているところですね。「どの4Dを指しているか」をすぐに識別する唯一の方法は、アイコンが青地に白文字の4D公式アイコンとなっているかどうかです。
現状、一番マシな問題解決手法は有識者に聞くか、文脈から既にどのソフトウェアを指すか理解させてあるChatGPTをコーチにして教わり、検証のためにググったり実装で試したりする方法でしょうか。
まぁしかし、本来の用途であるシンプルな実装のためならあまり困ることもなく、多機能ではあるのでその最初の頃に説明書代わりにするイメージですね。言い換えれば、公式ドキュメントで事足りるはずでもあります。
公式ドキュメント:
https://doc.4d.com/4Dv20/index.ja.html
まとめ
"4D"とはなんぞや? というところまではなんとなく見えてきたので、実装部分について今後は試していく予定です。ただ、エター記事あるあるに名を連ねないためにも特にQiitaで書く予定はないと明言しておきます。そもそも技術的にはシンプルで、GUI使ってやれる範囲の方が多いぐらいなので、わざわざQiita参照するまでもなさそうですしね。1ヶ月ぐらい後の追記:
「GUI範囲のが多い」は大嘘。次の記事は、書けたら書きたいですね。