ノーコード・ローコードのあれこれ

# はじめに
ノーコード・ローコードで開発を行う企業が日本でも増えてきました。(ローコードの[公式コミュティ](https://www.x-rad.jp)もあるみたい:smiley:)
そこで、現時点（2020/02/28）でのノーコード・ローコードの違いや状況、またプラットフォームやツールの紹介をします。
間違いや、意見があればコメント大募集です:bangbang:

# ノーコード・ローコードの概要
ノーコード・ローコードとは、コードを書かない、または少ないコードでアプリケーションを開発することです。
様々な開発プラットフォームやツールを組み合わせることで、「ノーコード・ローコード」を実現させます。
ノーコード・ローコードの目的としては、従来のプログラミング言語に関する知識を開発者に求めるのではなく、ビジュアル開発アプローチを提供することで開発者だけではなく非開発者も効率的にアプリケーションを作成して生産性を向上させることを目的としています。また、開発プラットフォームをサービスとして提供されることにより、環境構築とインフラストラクチャに悩むことなくアプリケーションを開発することができます。
そして、2019年頭に世界最大のプロダクトランキングサイト[ProductHunt](https://www.producthunt.com/)の創業者であるRyan Hoover氏が、[The Rise of “No Code” - NoCodeの繁栄 -](https://medium.com/@rrhoover/the-rise-of-no-code-e733d7c0944d)という記事で以下のことを言っています。
**「webの進化により静的サイトを超え、ちゃんと機能するアプリケーション構築まで拡大されていっている」**
また、海外では活発的に活動されていてノーコードで受託開発を行うビジネスが生まれたり、下記のサイトのようにNoCode系のツールの紹介や、それらを使ってさまざまなサービスを作る方法がまとめられているサイトがあります。(海外サイトですが:sweat:)

- [NoCode](https://www.nocode.tech/)
- [Zeroqode](https://zeroqode.com/)
- [MakerPad](https://www.makerpad.co/)

# ノーコードとローコードの違いについて
前提としてはノーコードはプログラムコードがゼロで、ローコードは少ないプログラムコードでシステムを構築できるという違いがあります。
また、こちらの"[ノーコードとローコードの違いは？](https://mendix.buildsystem.jp/mx-blog-understand-no-code-vs-low-code-development-tools/)"の記事では以下の説明がされています。

### ノーコード  
ノーコードプラットフォームは、小さなアプリケーションを構築するのに適したシンプルなツールで 基本的な機能のユースケースの解決に最適とされています。また、専用のものであったり機能が限られている傾向があります。 企業規模にシステムが拡大する際に次のような課題があるとされています。

- アーキテクチャーに関する考慮：  
 ほとんどのノーコードプラットフォームでは、パブリッククラウドへの展開が必要で、プライベートクラウドまたはオンプレミス環境に展開する柔軟性はありません。
- 拡張性：  
ユーザーエクスペリエンスに重点を置くことができず、レガシーなシステムに接続できません。 サードパーティーのソリューションや自社製システムのカスタム統合をベンダーがサポートしていません。
- ガバナンス：  
ノーコードツールを使用して構築されたアプリはスタンドアロンの性質があります。
そのため、データガバナンスとして複数バージョンのものが組織全体に点在、管理されていない様々なデータ構造、管理されていないレベルのデータ品質などの課題が挙げられます。

### ローコード
拡張性のあるアーキテクチャ、再利用可能なオープンAPIを使用してプラットフォームの機能を拡張する機能、クラウド環境やオンプレミス環境にデプロイできる柔軟性がある為、IT組織のテクノロジーガバナンス要件とかなりシンクロする傾向がある。
また、アプリケーション開発をサポートし、以下のような目的のために、より多くのユースケースに活用できます。

- 部門と企業にまたがる、生産性や運用効率がアップするアプリケーション。
- マイクロサービス、コンテナを使用したコンポーネントベースの開発、既存のミッションクリティカルなアプリケーションを継続的にリリースして新たなアーキテクチャを実現する、レガシーシステムの近代化
- ユーザーエクスペリエンスアプリケーションは、ユーザーフレンドリーで導入の最適化を支援するように設計され、コーポレートブランドの一貫性を保証する役割も果たします。
- AIや顔認証（機械学習、ブロックチェーン、音声認識、）などをオープンソースコミュニティで利用できるだけでなく、クラウドで提供されるサードパーティのスマートサービスを活用できます。

## 違いについてのまとめ
上記で「ノーコード・ローコードの違いについて」説明しましたが、簡単に説明するとノーコードのツールは機能制限があるため広範囲のシステムに向いておらず、逆にローコードのプラットフォームは拡張性が高く、他のソフトウェアとの統合機能も豊富なので広範囲のシステムに向いております。
また、ノーコードの実装としては様々なツールを組み合わせることで実装する方法とローコードプラットフォームで簡単なシステムを構築する際にノーコードで実装できます。ローコードの実装としてはプラットフォームは複雑なビジネス要件、または広範囲なシステム時にカスタムメイドのコンポーネントやプラグインを作る必要性があり、その時にコーディングが必要になります。

# ノーコード、ローコード ツール紹介
さて、上記では説明が多かったのでここからは様々なプラットフォームなどの紹介をしようかと思います。

## ノーコード
ノーコードは複数のツール、プラットフォームを利用することでシステムを構築可能です。ツールに関しては下記で紹介する以外にもたくさんありますが今回は一例として紹介いたします。
また、以下の記事は、様々なツールを利用することでノーコードでシステムを構築した事例です。
[【翻訳】外注したら約400万円かかるシステムを、コーディングなしで自前でつくったお話](https://note.com/__shinji__/n/ncdf02e005abb)


###Webサイト、ECサイト、Webアプリ等の制作プラットフォーム・サービス
####[Webflow](https://webflow.com/ecommerce)
CMS駆動型サイトとしてWebサイトを制作できる直感的なウェブサービスです。
会員制のブラウザ上で画面を制作します。
####[Shopify](https://www.shopify.com/tools)
ECサイト制作プラットフォーム。
####[Bubble](https://bubble.io/learnmore)
ノーコードでWebアプリを作れるプラットフォーム。
887のプラグインで拡張可能で、独自プラグインも構築可能。
似ているサービスとして、`WordPress`があります。
####[Sheet2Site](https://www.sheet2site.com/)
Googleスプレッドシートからウェブサイトを作るサービス。
####[Scapic](https://scapic.com/)
ブラウザ上にAR/VR/3D体験を組み込めるサービス。

###モバイルアプリ制作プラットフォーム・サービス
####[Thunkable](https://docs.thunkable.com/)
iOS, Androidアプリの両方対応ビジュアルプログラミングプラットフォーム。

###その他、ツールやプラットフォーム
####[Voiceflow](https://www.voiceflow.com/)
ノーコーディングで、Amazon AlexaとGoogle Assistant用の音声アプリを作成できるサービス。
####[Zapier](https://zapier.com)
750種類以上のサービスを組み合わせ、各サービスにアクションとトリガーを登録できるタスク自動化ツール。
####[Airtable](https://airtable.com/)
Excel・Googleスプレッドシートのような「スプレッドシート」と、Accessのような「データベース」を組み合わせたユニークなクラウド型のWebデータベースサービス。
データ(プロジェクト・スケジュール)の管理、データの集計、データ共有など様々な使い方ができるツールです。
####[Octane AI](https://octaneai.com/)
ショップ向けFacebook Messengerボットなどを作成できるボット制作プラットフォーム。

### 大手クラウドベンダー関係
####[AppSheet](https://solutions.appsheet.com/)
AppSheetのアプリを利用することでモバイルアプリとしても活用できるアプリを制作するプラットフォーム。
Googleスプレッドシートをもとにアプリを制作します。また、様々なサードパーティサービスに接続可能です。
米国時間で2020年1月14日にGoogleが買収することが発表されました。

####[Microsoft Power Platform](https://powerplatform.microsoft.com/en-us/)
名前の通りのMicrosoftのプラットフォームです。
1つの連携アプリケーション プラットフォームでイノベーションを実現できるように`Power Apps`、`Power BI`、`Power Automate`、`Power Virtual Agents`でサポートしています。Azure、Dynamics 365 および Office 365のカスタマイズや拡張、新しいカテゴリのアプリをビジネスに合わせて構築できます。

- [Power Apps](https://powerapps.microsoft.com/ja-jp/)
簡単にデータに接続したり、Excel 仕様の式でロジックを追加したり、Web、iOS、Android デバイスで実行したりできるアプリを、ノーコードで構築できます。

- [Power BI](https://powerbi.microsoft.com/ja-jp/)
ノーコードでBIを実装できます。
AIやETC機能を含み、分析レポート、リアルタイムダッシュボードでデータを可視化することができます。

- [Power Automate](https://japan.flow.microsoft.com/ja-jp/)
ノーコードでビジネスロジックを実装できます。一つのトリガーに複数のアクションを設定でき、数百もの一般的なアプリおよびサービスに接続できます。

- [Power Virtual Agents](https://powervirtualagents.microsoft.com/en-us/)
ノーコードでチャットボットを簡単に構築して、顧客や従業員と会話することができます。
Power Automateを使用してカスタムワークフローを構築するか(ノーコード)、Microsoft Bot Framework(コード必要)を使用して複雑なシナリオを作成することができます。

##ローコード
####[Retool](https://retool.com/)
Webベースでアプリを構築するツール。
連携できるデータソースはPostgreSQL, MySQLや、Salesforce、Slack等のAPIなど多岐に渡って可能です。
(JavascriptやSQL等でアクセスするので、多少は開発技術が必要です)
用途としては、BI 的なダッシュボードやデータソースに対してCRUDする登録ツールなどに活用できます。
詳しくは、以下の記事が参考になります。
[【SUGEEEE】 Retool でローコードに業務用アプリ作って簡単に業務改善](https://note.com/northsand/n/n24f925aa8dea)

####[OutSystems](http://www.bluememe.jp/outsystems/product/p11.html)
OutSystemsはポルトガルのOutSystems社が提供するローコード開発基盤です。
OutSystems Service Studioという専用の開発ツールを使用して、ビジュアルなモデルを記述することで、動作するWebアプリケーションを開発できます。

####[Mendix](https://www.mendix.com/)-([Japan情報サイト](https://mendix.buildsystem.jp/))
Mendixはドイツのシーメンス社（2018年にオランダのMendix社をシーメンス社が買収）が提供するローコード開発基盤です。Mendix Modelerという専用の開発ツールを使用して、ビジュアルなモデルを記述することで、動作するアプリケーションを開発できます。

####[GeneXus](https://www.genexus.com/ja-JP/japan/products-japan/genexus-v16-jp)
GeneXus はウルグアイのGeneXus S.A社が提供するローコード開発基盤です。
最大の特徴は抽象モデルからモデルを自動生成する機能に長けていることです。
概念的なデータ構造やビジネスルールを記述すると、それに対するモデルを自動生成します。


####[Monaca](https://ja.monaca.io/)
Monacaは、Web上でモバイルアプリを作ることができる開発環境です。Webブラウザを通して操作するので、手元に開発環境を用意することなく開発ができます。また、最大の特徴としてはWebアプリとネイティブアプリの双方の特徴を持ったハイブリッドアプリが作れます。（現在BETA版だが、Windows、MacOS、Linuxのアプリも可能）
開発についてはHTML/CSS/JavaScriptで開発を行い、以下のフレームワークがテンプレートで準備されています。UIフレームワークについてもOnsen UIを標準搭載しています。  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222088/8af7e52f-c480-d43a-0c3b-fd109ea5a88e.png)
※Monacaは、GUIツール等でのデザイン作成がないのでデザインからコーディングをします。また、フレームワークの知識が必要になります。ですので個人的にはローコードではないかな〜という印象です。
ただ、環境の構築やハイブリッドなアプリを開発しやすい開発環境を準備されているので紹介しました。

####[intra-mart](https://www.intra-mart.jp/)
intra-martは、NTTデータ イントラマートが提供する業務プロセスのデジタル化に特化したローコード開発アプリケーションプラットフォームです。豊富なAPIコンポーネントを組み合わせながら、大規模かつ複雑なアプリケーションもビジュアルに短期間で開発が可能です。最大の特徴として、ERPやCRMといった既存システムやクラウドサービスと柔軟に連携することで、従来のシステムを有効活用しながら開発生産性を高めることができます。

####[kintone](https://kintone.cybozu.co.jp/)
kintoneは、サイボウズが提供するクラウドサービスの業務アプリ開発プラットフォームです。直感的なUI/UXで、100種類以上のプラグイン群を利用することでIT以外の現場の非開発者でも容易に業務アプリケーションを開発期間やコストを抑制して開発することが可能です。クラウドサービスで価格も低価格のため、中小企業でも導入しやすいことも特徴に挙げられます。

####[Pleasanter](https://pleasanter.org/)
Pleasanter(プリザンター）は、国産オープンソースのWebデータベースとしてエクセルやメールなどのデータを一元管理することができます。位置づけとしてWebデータベースとされてますが、マウス操作で簡単にアプリの作成も可能となっています。 
そして主に、業務アプリケーションの作成に特化されています。
その他特徴としては、API機能、スクリプト機能(UI操作)、スタイル機能(UIデザイン)などで標準機能で実現できない内容も独自でカスタマイズ可能となります。また、SQL Server、PostgreSQL(2020年5月対応)が対応されていてSQLの拡張機能も準備されています。

#まとめ
ここ数年で、海外ではノーコード・ローコードの活動が活発になってきました。また、日本でも社内の業務改善などで様々なツールを駆使してノーコード・ローコードでのアプリケーション開発が活発になっています。
ノーコードでは様々なツールを使用することでコーディングの知識がなくてもアプリケーションの実現が可能だと感じました。しかし、コーディングの知識がなくてもプログラム(アプリケーションのロジック)を考える能力は必要だと思います。
また、ノーコード・ローコードのプラットフォームやツールはGUIの使い方、ツールごとにできることを理解しないと実現したいアプリを構築出来ないので、コーディングの勉強工数は必要ないものの使い方などの勉強工数は必要だと思いました。
個人として大変だなぁと思ったことは、本記事で紹介したツールやプラットフォームは海外製で公式ドキュメントがほとんど英語だったことです。
日本のドキュメントやブログで説明されているものは一部でしたので勉強工数が一段と時間が掛かりそうだなと思いました。