誰でもソフト開発「ノーコード」…。

誰でもソフト開発「ノーコード」 米IT大手が熱視線
https://www.nikkei.com/article/DGXMZO60479010Y0A610C2TJ1000/

※ 正確には、「コーディングなしに」だ…。

※ ちょっと昔(むかし)には、VBとかで「オブジェクト」を操作して、プログラムを作成するものが流行った(Delphiなんかも、この系統…)。

※ 最近は、もはや「オブジェクト(orコントロール)」の操作すら必要で無くなり、「行みたいなもの(まあ、オブジェクトの一種だと思うが…)」を、「ドラッグ&ドロップ」したり、挿入・削除したりするだけで、ちゃんと「動作する」プログラム(アプリ)が、作れてしまう…。そういう世の中に、なった…。

※ 特に、今般の「コロナ禍」においては、医療関係従事者や病院関係者、ソーシャル・ワーカーみたいな相談員…と言った、いわゆる「プログラマー」では無い人達が、必要に迫られて、早急に、何らかの「対策ソフト・アプリ」を作成する…、ということが加速した…。

※ 台湾では、IT担当大臣自らが、「どこでマスクや医療関係用品が購入できるのか、在庫はどれくらいあるのか」が分かる…、というアプリを開発したそうだ…。それにひきかえ、我が日本国においては、どうだった…。「ハンコ」を押しに、出社しなければならない…、という体たらくだった…。そして、「ハンコ押しロボ」が、開発された…。どうも、方向性が違っている気がするが…。

『【シリコンバレー=佐藤浩実】プログラミング言語の知識がなくてもソフトウエアを開発できる「ノーコード/ローコード」と呼ぶ技術への関心が高まってきた。米マイクロソフトの開発基盤の利用者は半年で7割増え、米グーグルや独シーメンスは関連企業の買収に動く。エンジニア不足の処方箋として期待され、新型コロナウイルス対策に生かす例も増えている。』
『■350万人が利用
マイクロソフトが5月下旬に開いた年次開発者会議。サティア・ナデラ最高経営責任者(CEO)は「350万人が『パワー』を使って日常的にアプリを開発している」と誇った。』
『パワーはソースコードを書けなくても「パワーポイント」や「エクセル」を扱うような感覚でソフトを作成できるサービスだ。IT(情報技術)エンジニアが集う「GitHub(ギットハブ)」の利用者が5千万人いるのに比べれば少ないが、この半年でユーザーは1.7倍に増えた。

マイクロソフトは3年ほど前から「ノーコード/ローコード」の開発基盤の整備を始めた。「大々的に公開したのは2019年から」と、担当するコーポレート・バイス・プレジデントのチャールズ・ラマナ氏は語る。5月に関連技術を持つ英企業を買収するなど、ここに来て投資の積み増しも鮮明だ。』
『■グーグルなど買収ラッシュ
グーグルは1月、プログラミングなしのアプリ作成を支援する米アップシートを傘下に収めた。シーメンスも米社を買収。米新興のアンコルクが3月までに日本円で約140億円を調達するなどM&A(合併・買収)や大型の資金調達が相次ぐ。

世の中にある多くのソフトは今も、プログラミング言語を学んだエンジニアがコードを書いて作っている。「傍流」の開発手法にIT大手が力を入れ始めたのは、世界の企業が進めるデジタルトランスフォーメーション(DX)の一助になるからだ。』
『■ITエンジニア不足に対応
金融や製造業、小売業まで、ITでビジネスモデルや業務を見直す動きは盛んだ。一方で熟練のエンジニアは不足し、日本だけでも30年までにIT人材が80万人不足するとの予測もある。ギャップを埋めるため、専門知識がなくても短期間でソフトを作れるサービスへの関心が高まっている。

新型コロナも転機になる。医療現場などで急にデジタル対応が必要になる場面が増えたためだ。

米ワシントン州の病院は病床の空きや人員配置といった情報を医療関係者が共有できるアプリを「パワー」で制作した。開発を担当したケビン・ブルックスさんは「急速な変化を把握して患者に対応することができた」と話す。米ニューヨーク市はアンコルクのサービスを利用し、感染者らが健康状態を登録するシステムを3日で構築した。』
『■クラウド連携で普及期に
「ノーコード/ローコード」をうたうサービスの歴史は長く、01年設立の米アウトシステムズや05年設立の米メンディックスが先駆けだ。当初は、作ったソフトの拡張性や外部データとの連携に制約があり、ソフト開発の主流にはならなかった。

米ガートナーのジェイソン・ワンVPアナリストは近年脚光を浴びるようになった背景について、「クラウドや(様々なデータをつなぐ)APIといった技術と組み合わせて使えるようになったから」と話す。マイクロソフトやグーグルが触手を伸ばす背景には、開発者の裾野を広げ自社のクラウドの利用を促す狙いもある。

ガートナーは24年までに、企業で使う業務アプリの65%が「ノーコード/ローコード」の開発手法を用いて作られるとみている。技術者不足が利用に拍車をかける。

一方、日本の大企業はシステムをゼロから作りこむことを良しとし、簡易な開発手法の採用に難色を示す向きもある。変化の速度が早まるなか、柔軟にツールを使いこなす意識改革が必要だ。』

96%が屈辱の「初級以下」判定、AtCoderのプログラミング実力判定試験の深層

https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00001/03494/?P=1

『一般受験者ではエントリーが半数以上を占めているのだ。初級は約3割で、中級はたったの4%。未認定も1割以上いる。一方で上級やエキスパートは1人もいない。つまり、「一般受験者では初級以下96%」という衝撃的な結果になった。』

※ ここで出てきてる「一般受験者」とは、全くの「素人さん」では無いだろう…。そういう方面に興味と関心があって、ある程度プログラミングの経験も積んで来て、「腕試し」したくなったんで、参加した人達だ…。それで、「箔」を付けて、あわよくば、「在宅で」プログラミングの受注を受けたり、「副業」にしたりしようとする思惑がある人達…、と見た方がいい…。つまり、「在宅プログラマー予備軍」とでも言うべき人達…、と見た方がいい…。

『プログラミングの実力を測るのは難しい。対象者が書いたプログラムを人の目でチェックするには、時間も手間もかかり、評価者に高いプログラミングの能力が求められるからだ。かと言って一般的な試験問題では、プログラミングの知識を測ることはできても、プログラムを書く力を測るのは困難だ。
 この問題に真正面から挑戦しているのが、様々なプログラミングコンテストを運営しているAtCoderである。受験者にプログラムを書かせて実力を自動判定する新型の検定試験「アルゴリズム実技検定」を始めた。』
『この検定は、1からプログラムを作成する能力を問うものだ。同社によると「知識型ではない」「受験者が得意なプログラミング言語を選べる」「アルゴリズムの実力を測る」といった特徴を持つという。オンラインで参加する形式なので、自宅など好きな場所で受験できる。』と言うことだからな…。

そうでなければ、わざわざ自腹を切って、おそらくそんなに安くは無い「検定料」を払って、貴重な時間を割いて、「検定」に参加したりはすまい…。

そういう人達にして、こういう状況だぞ…。

政府は、「小学生から、プログラミング教育を行う!」とか、力んでいるが、どういうことになるのかな…。

マシン語の話し

 ※ Javaの話しとか、サイバー攻撃の話しの記事を読むとき、ある程度は理解しといたほうがいいと思われるのは、「マシン語」とか、「コンピューターが、動作する仕組み」とかの話しだ。                          『2段階方式で脱Java、JACICがオラクルと特別契約』
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00001/01412/?P=1

  それで、以下の投稿は、今年の3月に作ったものなんだが、まあ今でも役に立つところはある、と思われるので、紹介しとく。                  http://www.sankei.com/world/news/180316/wor1803160018-n1.html 
         
 『韓国の仲介で、米朝首脳会談が行われるような流れになってる感じだが、その裏で北朝鮮は活発に韓国にサイバー攻撃を行っていた訳だ。韓国の出方を探って、交渉を自国に有利に運ぼうという作戦だろう。
 その手口なんかをちょっと詳しく解説してるのが、以下の記事だ。このサイトは、ウイルス・マルウエアやダーク・ウェブ(ウイルスやマルウエアを有料で販売したりしてる、危ないサイト)、それらの作者への匿名でのインタビュー記事なんかが載ってるんで、結構参考になる。
(『北朝鮮のサイバー攻撃グループ「APT37」が活発化』
 https://the01.jp/p0006529/ )

それで、これらの記事に出てくるちょっと専門的な用語について、説明しておく。                                     
※ https://tech.nikkeibp.co.jp/it/article/lecture/20070820/279875/  画像は、ここからお借りした。

「コンパイル」:本来は、「翻訳する」とか「置き換える」、ってな意味だ。
 コンピューターは、結局CPU(Central Processing Unit 中央演算装置)で電子の0(電子がない)と1(電子がある)の情報(電子があると、電流が多く流れる。電子がないと、電流が少なく流れる。電子の有る無しを、電流の流れに置き換えて(交流の山と谷を、1と0と判定して)操作してるだけのもんで、8bitとか16bitとか32bitとか64bitとかいうのは、一度に処理できる「0と1の個数」を指している。
 8bitだと、一度に00101100みたいな8個の0と1の羅列を処理できるっていう話しで、16bitだとこれが16個という話しになる(bitというのは、1組の0と1という単位。デジタルの2値って、このこと)。32bitは32個、64bitは64個の0と1の羅列…という話し(32個の箱や64個の箱の中に、それぞれ0または1が入ってる、というイメージ)。
 だから、コンピューター(CPU)は、そもそもがこういう0と1の羅列しか取り扱えない。8bitのマシンは、00101100とか00101000とかしか取り扱えない。こういう、CPUで処理させようとする0と1の羅列を、「マシン語」という。
 コンピューター(CPU)の処理は、大体が指定されたデータの場所(アドレスという)のデータに対して、一定の処理をする(「命令」)という形になる(※ こういう0と1の羅列を、「データの場所」と「命令」に分けて取扱う(データの場所と命令を、混在させて取扱う)という仕組みを思いついた人が、フォン・ノイマンって人だ。まあ、天才の一人だな。イギリス国籍のユダヤ系の人だ。それで、このタイプのコンピューターを「ノイマン型」と言う)
 大体において、8bitの場合は上位4bitが「データの場所」を指して、下位4bitが「命令」を指していたり、レジスタ(CPU内部のデータを一時置いておく場所。まあ、高速メモリってな感じのもんだ)を2本使って、8bitの「データの場所」+8bitの「データの場所」計16bitのデータの場所という風に扱う場合もあるようだ。
 こんな風に、同じ0と1の羅列でも、それがどんな意味か、どういう「データの場所」の指定なのか、どういう「命令」なのかは、そのCPUで違う(CPUの設計・製造メーカーが、それぞれの設計・製造思想に基づいて設定してる)わけだよ。
 それで、このマシン語は、0と1の羅列で「00101100」とか「00101000」みたいなもんだから、これでプログラムを作るのは大変だ。まあ、初期の頃はシコシコやったらしいし、これでプログラムを作れる名人みたいな人もいたらしい(今でも、ソニーのプレステは、どっちかというとこのマシン語寄りでプログラムを作ってるという話しだ。そっちの方が、真似されにくいんで、わざとそういう風にしてるという話しも聞いた。だから、今でもXboxでは作り出すことが難しいタイプのゲームを作ることができて、競争力を保持してるという話しを聞いたことがあるぞ)。
 しかし、プログラミングの生産性は上がらないし、当然ミスも多くなる(0と1の1個でもミスったら、アウトだ)。いくら何でも酷くね、って話しになった。
 それで、登場したのが「プログラミング言語」だ。もう少し人間にも分かりやすい言語で書いて、それを「マシン語」に置き換えたらいいんじゃね、っていう発想だ(この、マシン語への翻訳・置き換えをコンパイルと言い、コンパイルするソフトを、コンパイラと言う)。
 最初に登場したのは、「アセンブリ言語」だ。
 例えば、「mov A B」(AをBに、移動する(move)する)、「comp A B」(AとBを比較(compare)する)、「add A B」(AにBを加える(add)する)みたいな感じで記述した。
 使われた記述が、「mov」「comp」「add」のような英単語を省略したようなもんなんで(英語圏の人にとっては)理解しやすいもんだったが、「A B」の部分が、前述した「レジスタ」に限定されていた(各CPUの内部に一般のプログラマーが自由に使える、高速メモリってな感じのものー(「汎用レジスタ」と言う)が設置されているんだが、CPU毎にバラバラ(前述のように、各CPUメーカーが、それぞれ勝手に設計・製造してた。今でも、そう)なんで、CPUが異なるマシンに向けて移植が大変だった)。また、命令がCPUのできる処理とほぼ1対1対応だったんで、あまり複雑な処理を記述するのに向かなかった。アセンブリ言語をマシン語に変換するソフトを、アセンブラ(コンパイラと対をなしてる感じだな)というらしいのだが、オレは使ったことはない。大体、アセンブリ言語も本で読んだことがあるだけだ。
 それで、1973年(たかだか、45年前の話しだ)に開発されたのが「C言語」だ。
「#include
int main(void)
{
printf(“Hello, world!\n”);
return 0;
}」
ってな感じのもんだ。
 ざっと意味を説明しようとしたんだが、長くなったし、あまり興味もなかろうと思うんで、省略する。
 上記の記述のプログラムをコンパイルして実行すると、使っているマシンのディスプレイに「Hello World!」って表示される。
 上記の記述をコンパイラでコンパイルすると、マシン語に変換されて、各CPUで実行することができる、ってわけだ。』