ソフトウェア開発が導入されて以来、一般ユーザーにとってアプリ開発は完全に謎めいた存在でした。プログラミングは大変な作業であり、時には最もシンプルなものでさえ実装に数週間かかることもあることは周知の事実です。恐ろしい話に聞こえませんか?
まあ、構築が難しくて費用もかかるにもかかわらず、ほとんどのアプリケーションには共通点が一つあります。それはユーザーエクスペリエンスデザインです。お気に入りのアプリケーションをいくつか見てみましょう。何かパターンに気づきましたか?そうです、ボタンはどれも似たような見た目で、画面は最大で2つに分割され、メニューは画面の端から引き出されています。

上記をすべて考慮すると、もしあなたが中小企業を経営していて、アプリケーションの構築が必要で、予算が足りないという場合、信じられないかもしれませんが、自分で作ることができます!しかし、具体的にどのように、そして時間と費用をかける価値はあるのでしょうか?
様々なアプリケーションが類似していることを考えれば、商用製品の要件をすべて満たすアプリケーションを作成するのは難しくないはずですよね?確かにそうかもしれませんが、実際にはそうではありません。
注文を受け付けたり、レストランのメニューを確認したりするためのアプリケーションを作成する場合、テキストボックス、画像、お問い合わせフォームをいくつか追加するだけで十分です。ここで「ノーコードプラットフォーム」の出番です。
これらのプラットフォーム(apprat.ioなど)は、開発ツールというよりは、設計ツールの一種です。通常のコーディングでは、開発者の役割はアプリケーションの動作を記述することです。ノーコードでは、ユーザーはアプリの動作を定義するのではなく、その動作方法を定義します。
確かに、これは今日の世界では限界とみなされる可能性があり、最終的な成果物がプロフェッショナルに見えないと思うかもしれません。しかし、これまで見てきたように、今日のほとんどのアプリには多くの共通点があります。ノーコードプラットフォームでは、すべての構成要素を組み合わせて、このようにアプリケーションを構築できます。
操作方法も素晴らしいです!ある程度の技術的な知識が必要そうに思われるかもしれませんが、実際には様々な種類のブロックをドラッグ&ドロップするだけで、しかも説明すべき点がたくさんあります。さらに、プロ仕様のテンプレートが多数用意されているのも魅力です。
クロスプラットフォーム開発
これは、アプリビルダーやapprat.ioのような「ノーコード」ソリューションに付随するメリットの一つです。この記事を書いている時点では、モバイル開発とWeb開発の両方に使用できる実用的なプログラミング言語は存在しませんが、過去にはそのような成果を達成しようとする試みが何度かありました。
アプリビルダーはこの点で大きな進歩を遂げました。AndroidやiOSのアプリケーションを構築できるだけでなく、WebViewGoldなどのツールを使用すれば、通常のWebアプリやプログレッシブWebアプリも作成できます。
複数のプラットフォームで同じツールセットを使用して開発を行うと、最終製品に様々な影響が生じる可能性があります。主にパフォーマンスと表示の問題です。すべてのプラットフォームが同じカラーフォーマット、フォント、ジオメトリをサポートしているわけではなく、最も重要なのは、同じアーキテクチャを使用しているわけではないことです。十分なテストを行えば、達成可能な結果は依然としてかなり良好です。
「ローコード」か「ノーコード」か?
「ローコード」と「ノーコード」という言葉を同じ意味で使うことを耳にすることがよくありますが、この2つは少し異なる意味合いを持ちます。いわゆる「ノーコード」環境では、複数のプラットフォーム向けにアプリケーションをゼロから構築し、公開することができます。つまり、開発のすべてのフェーズがカバーされているということです。
対照的に、「ローコード」は、その名の通り、アプリケーションを完成させるために少しのコードが必要です。これは、アプリケーションのあらゆる部分にコードを書かなければならないという意味ではなく、開発は可能ではあるものの、完全にはできないという意味です。
はい、アプリケーションを作成することは可能ですが、そのアプリケーションは多くの動作が不足しているだけでなく、スタイルにも問題があります。これは完全なアプリケーション開発ツールキットというよりは、プロトタイプソリューションに近いものです。最終的には、熟練した開発者が開発に携わる必要があるからです。
ただし、これは「ローコード」を使わないべきだという意味ではありません。実際には、ローコードソリューションを利用し、1人または少人数の開発者チームに報酬を支払う方が、最初から開発者を雇うよりもはるかに費用対効果が高いのです。

「ノーコード」で何が達成できるのか?
最近まで、専門家は「ノーコード」をアマチュア向けのおもちゃだと考えていました。しかし実際には、このようなプラットフォームでどれだけ多くのことができるかに、きっと驚かれることでしょう。
画像、動画、テキスト要素を追加するオプションもありますが、それほど魅力的ではありません。しかし、興味深いのは、これらの要素のあらゆるプロパティを変更でき、ピクセル単位で正確に制御できることです。
例えば、画像を丸くしたい場合、ボックスにチェックを入れるだけで簡単に設定できます。角を丸くしたいですか? 量を指定して変更を適用するだけです! 画像に少しノイズが欲しい場合は、塩コショウで対応すれば、おそらくこの作業の方向性がお分かりいただけるでしょう。
しかし、「退屈な」要素以外にも、より高度なオプションが用意されています。あらゆる種類のメニュー、ボタン、チェックボックス、スライダー、その他様々なインタラクションが用意されています。
また、これらのモダンでスタイリッシュなタイプのタイポグラフィ、カラー スキーム、テンプレートがツールにバンドルされており、簡単に使い始めることができることも言及する価値があると思います。
これらのアプリは静的である必要はなく、魅力的な結果を生み出し、他のサーバーと通信することができます。一部のプラットフォームは、YouTube、Spotify、Genius、Twitter、Amazon、PayPalなどの一般的なAPIとの優れた整合性を提供しています。
アプリケーションの他のコア要素も備わっており、プッシュ通知(ニーズに合わせてカスタマイズも可能)や、収益化を可能にする Google の広告サービスとのシームレスな統合も含まれています。

ゲームを作ることもできます!
はい、その通りです!信じられないかもしれませんが、BuildBoxやConstructなどのソリューションはここ数年で進化を遂げており、一方は「ノーコード」、もう一方は「ローコード」ソリューションとなっています。
Construct の仕組みは非常に魅力的なので、まずはその仕組みについてお話ししましょう。ゲームロジックの設計と実装はすべて、あらかじめ用意されたコンポーネントをドラッグ&ドロップするだけで行えます。興味深いのは、ゲームロジックを実現する方法がこれだけではないということです。複数のプログラミング要素を視覚的に組み合わせることで、あらゆるゲームメカニクスを作り上げることができます。
BuildBoxはアプリビルダーと同様の動作をするため、「ローコード」ソリューションではなく「ノーコード」ソリューションです。ただし、より限定的なアプローチです。テンプレートを選択し、それに従ってゲームを構成するだけです。つまり、典型的なゲームジャンルの1つを使用し、わずかにカスタマイズするだけです。
例えば、プラットフォームゲーム、ジャンプゲーム、無限スクロールゲームなどが欲しいとしましょう。それらはすべて揃っています。しかし、新しいジャンルを発明することは決して選択肢ではありません。
さらに奇妙なのは、悪名高い「カラースイッチ」など、史上最も人気のあるゲームのいくつかが同じ技術を使って作られているということです。残念ながら、この種の3Dエンジンはまだ開発されていません…
それで、落とし穴は何ですか?
「ノーコード」は確かにさまざまな種類のアプリケーションを処理できますが、それでも制限があり、完璧なソリューションではないことは確かです。
汎用性
少なくとも現時点での最大の問題は、主に新しい機能を発明したり、さまざまなデバイス向けにアプリを拡張したりするときに、汎用性が欠如していることです。
従来の開発では、グリッドやスケーリングシステムを記述することで、異なる解像度やキャンバスへの要素の追加/削除時にレイアウトのスケーリングや変更を自動化できます。「ノーコード」プラットフォームではこれを処理できますが、この単純な操作を実行するには多大な労力が必要であり、画面全体を様々な解像度で再スタイリングする必要があります。
コードはあなたの所有物ではない
「ノーコード」のもう一つの特徴は、ソースコードにアクセスできないことです。例えば、ニーズにより適したプロバイダーを見つけたとしても、アプリケーションの移行はもはや選択肢ではなく、すべてを作り直す必要があります。
確かにソースコードにはアクセスできますが、おそらく内部で何が起こっているのか全く理解できないでしょう。表示されるのは、コンピュータで生成された複雑なスパゲッティコードだけで、適切なドキュメントは一切ありません。たとえ自分で何かを理解したとしても、インデントが全く存在せず、数千行に及ぶワンライナーになってしまう可能性が高いでしょう。
「ローコード」はこの点で異なります。これは、コードを取得して自分で完成させるように設計されているからです。しかし、この機能にはそれほど魅力的な価格設定はありません。
技術スタックを制御できない
この種のツールにおける最後の全体的な問題は、開発者側での制御が不十分であることです。アプリの動作はわかっても、それがどのように実行されるのかは分からず、これはアプリのセキュリティと安定性の両方に大きな影響を与える可能性があります。
これにより、重大なエラー、場合によっては致命的なエラーが発生する可能性があります。ユーザーのデータが暗号化されていない可能性や、サーバー内部のセキュリティ問題によってアプリケーションが動作しなくなる可能性、あるいはマルウェアが侵入される可能性も考えられます。確かに、これらはすべて発生する可能性は極めて低いですが、何が起こる可能性があるかを認識しておく必要があります。
制限要因は何ですか?
ドラッグ&ドロップソリューションは、限られた数のオブジェクトのみをサポートするように設計されているため、まだ実装できない機能が多数存在します。そのため、この種の開発では、コスト削減のために機能を犠牲にせざるを得ないケースが多くあります。
しかし、それが不可能な場合はどうすればいいでしょうか?プロジェクト全体を一からやり直すか、ソースコードを購入する必要がありますが、これは多くの場合非常に高額になります。
データベースの操作もほぼ不可能です。たとえ可能だとしても、アクセスは厳しく制限されており、管理もかなり制限されています。裏でどのようなスタックが使われているのか全く分からない、ということはお伝えしましたか?
しかし、結局のところ、データベースの利用を検討している本格的な企業は、より高価で多用途な従来のオプションを選択するだろうと私たちは考えています。
最後に、システム情報にアクセスして取得するオプションはありません。この場合、MODの作成、カスタマイズソフトウェアの作成、そしてあらゆる科学的な作業は不可能です。複雑な数学やアルゴリズムのシミュレーションも同様です。
では、「ノーコード」がプログラミング分野を席巻するのでしょうか?
「ノーコード」開発は比較的簡単に習得でき、わずか数週間でプラットフォームの真のマスターになれるでしょう。しかし、その一方で、限界も存在します。前述したように、この方法では実現できることも数多くありますが、実現できないこともたくさんあります。
メリットは?カスタム開発よりもはるかに低コストです。4人の開発者に1時間あたり最大150ドル支払う代わりに、月額わずか30~40ドルで済みます。節約した分でどれだけのものが買えるか想像してみてください!
しかし、プラットフォームを選ぶ際には注意が必要です。最終製品に求める機能を正確に調査することを強くお勧めします。具体的には、アプリケーションの構想を描き、必要なコンポーネント(ほとんどではなく)をすべて書き出し、プロバイダーがそれらを備えているかどうかを確認する必要があります。このステップを怠ると、せっかくのお金が無駄になってしまいます。もしかしたら、隣人が開発者を雇ったのは愚かだったのかもしれません。
一般的に言えば、レストラン、クラブ、タクシー会社といったあらゆる種類のビジネスアプリケーションは、このようなソリューションを使って簡単に「プログラミング」できるでしょう。しかし、電子バンキング、ソーシャルネットワーク、複雑なシステム、トラッカー、その他あらゆる革新的なアプローチは、到底不可能です。結局のところ、誰かが過去に構築したコンポーネントを使わなければならないのです。
この発言は「ノーコード」がなぜ有用なのかを明確に説明していますが、過去の恐竜が消え去ることはありません。熟練したプログラマー、データベースマネージャー、ゲームデザイナー、ウェブデザイナーの存在が役立つ場面はまだまだたくさんあります。
でも、少なくとも今の時代、テクノロジーに詳しくない人でも、大金を使わずに自分のビジネスをマーケティングできる選択肢があるんです! 1年か2年後にはどうなるか誰にもわかりません。apprat.ioやWebViewGoldのようなソリューションは、すでに有望視されています。