Visual Basic 初級講座 [改訂版]
VB.NET 2002 VB.NET 2003 VB2005 VB2008 VB2010 VB2012 VB2013 VB2015 VB2017 VB2019

第47回 終わりに

2021/11/21

この記事が対象とする製品・バージョン

VB2019 Visual Basic 2019 対象です。
VB2017 Visual Basic 2017 対象です。
VB2015 Visual Basic 2015 対象です。
VB2013 Visual Basic 2013 対象です。
VB2012 Visual Basic 2012 対象です。
VB2010 Visual Basic 2010 対象です。
VB2008 Visual Basic 2008 対象です。
VB2005 Visual Basic 2005 対象です。
VB.NET 2003 Visual Basic.NET 2003 対象です。
VB.NET 2002 Visual Basic.NET (2002) 対象です。
VB6対応 Visual Basic 6.0 × 対象外です。

 

目次

1.学んだこと・学んでいないこと

 

1-1.プログラミング言語

初級講座はこれで終わりです。ここまで読んでいただいた方本当にありがとうございます。第1回で宣言したようにVisual Basicを体系的に説明して、一通りの知識を身に着けるという目標は達成できたかなと思っています。

しかし、プログラミング初心者の方で、この初級講座を読み通した方はまだ知らないこと・できないことがたくさんあると感じられていると思います。

初級講座で学んだことは何で、学んでいないことは何なのか少し整理してみましょう。

 

第1回で説明した図が役に立ちます。プログラミング言語とフレームワークの関係を示した図です。

プログラミング言語とライブラリの関係

プログラミング言語はそれ自体にはほとんど何の機能もなく、具体的な機能はフレームワークやライブラリで実現するということを説明しました。

初級講座学んだのはこの図の左側の「プログラミング言語」です。初級講座ではプログラミング言語であるVisual Basicを体系的に説明したのであって、右側のフレームワークやライブラリは必要に応じて適宜説明したにすぎません。

画像処理のアプリケーションを作りたい人は、フレームワークの画像処理機能を知る必要がありますし、データベースのアプリケーションを作りたい人はフレームワークのデータベースの機能を知る必要があります。そもそも初級講座では画面の作り方もほとんど説明しませんでした。

だから、初級講座を終えた段階で、初心者の方はまだ知らないこと・できないと感じていることがたくさんあるので当然なのです。

 

1-2.フレームワーク

今、フレームワークに命令を出すプログラミング言語の方は一通り勉強したので、みなさんはフレームワークの機能を自由に呼び出せる知識が身についているはずです。次はいよいよみなさんが興味のある機能をフレームワークでどう実現するのか、フレームワークを勉強していくとよいでしょう。

 

.NETの標準のフレームワークには膨大な機能があります。機能の一覧はここにあります。

.NET API ブラウザー | Microsoft Docs

とはいえ、この一覧からやりたいことを探すのは難しいですね。もっと簡単な一覧があればよいのですが…。たとえば、ゲームが作りたい人はこれ、データベースアプリが作り人はこれ、スマホアプリが作りたい人はこれ、というような具体的なやりたいことと対象の機能があるフレームワークの機能の一覧です。

残念ながらそのような一覧は私は見たことがなく、今後も誰かがそのような一覧を作る望みは薄いです。技術の変化がとても速いので、「これを使え!」という確定的なことは言いにくい状態ですし、誰かがそのような一覧を頑張って作ってみたとしても1年くらいで時代遅れになってしまうかもしれません。

たとえば、画面が作りたい場合フレームワークのどの機能を使えばよいか?これだけでもう難問です。画面を作るためのフレームワークの機能は2021年11月現在でもWindowsフォーム、WPF, WinUI3、MAUI、ASP.NET、Blazorなど5,6個は候補が上がりますし、ちょっと古い候補も含めるともっとあります。

 

ここから先は、自分が作りたいプログラムに積極的に挑戦してみることをお勧めします。まずはインターネットで検索したり、Microsoftのドキュメントを眺めたりして、とっかかりを得ましょう。はじめはわからないことが多く、うまく行かないと思いますが、プログラミング言語の知識はあるのが強みです。試行錯誤しているうちにフレームワークの中で興味がある部分の機能がわかってくるでしょう。わからなければVisual Basic 中学校の掲示板を利用して質問してみるのも手です。

こうやっているうちに少しずつフレームワークのいろいろなことに詳しくなっていくと思います。

 

なお、以前の初級講座では、Windowsフォームでの画面の作り方ともかなり説明していました。Windowsフォームでの画面作りに挑戦する場合は参考になると思います。

 

2.Visual Basic の将来

2-1.Visual Basic のトレンド

みなさんが学んだVisual BasicはTIOBEの言語ランキングでは(2021年11月時点で見て)ここ1年、6位に位置しています。2021年11月のランキングから上位の言語を抜粋してみましょう。

言語 レーティング
1 Python 11.77 %
2 C 10.72 %
3 Java 10.72 %
4 C+ 8.28 %
5 C# 6.06 %
6 Visual Basic 5.72 %
7 JavaScript 2.66 %
8 Assembly 2.52 %
9 SQL 2.11 %
10 PHP 1.81 %
11 古いVisual Basic 1.56 %

出典:https://www.tiobe.com/tiobe-index/

TIOBEのランキングは、言語の流行を表しています。機能の優劣などを表しているわけではありません。

C#とVBはどちらも.NETのメイン言語なので、合計すると .NET言語が 11.78 %ということになり、1位のPythonとほぼ伯仲するという状況です。

VBとC#は驚くほど似ているうえに、フレームワークはまったく同じで、そのうえ、Visual Studioを使うという点でも同じです。(最近では、Visual Studio Codeという名前は似ていますが、別のツールを使うことも少しづつ増えているように感じます。)

また、VBは歴史がある言語で.NETになってからでも20年経ちますし。その前の古いVisual Basicはいまだに11位にランクインしているロングセラーです。(この古いVisual Basicには多分Excelなどで使うVBAも含んでいると思います。)

ですから、世の中にはVBで作られたシステムが既にたくさんあります。

 

2-2.マイクロソフトは VB を改良しない

これをみると、VBを使っているということはそれほを悪くないトレンドになっているなと評価することもできそうです。

しかし、将来についてはそう明るいわけではありません。私は最悪、マイクロソフトが今後Visual Basic をサポートしないという状況もあり得ると思っています。

どういことでしょうか。マイクロソフトはここ20年近くVBとC#の両方に投資を続けてきましたが、今では明確に C# に投資しており、VB の方は据え置きされています。C# の方には新機能が次々と追加されているのに対し、VBへの新機能の追加はここ2年くらいはなかったように思います。一応、C#やフレームワークの進化に最低限ついていけるような改善はされていますが、だんだんとC#・フレームワークとの差が広がっており、ASP.NET Core WebアプリはVBでの開発はきわめて限定的ですし、Span<T>構造体のようにVBからは利用できない要素をもつフレームワークの機能も登場しています。

C#に追加されたinit専用セッターという機能については、VBからはこれを呼び出せる機能が追加されているので、VBが完全に立ち止まっているというわけではありません。(参考:Visual Studio 2022でのVisual Basicの新しいこと)

2020年3月に公開されたMicrosoftのブログには「we do not plan to evolve Visual Basic as a language」(私たちは言語としてのVisual Basicの改良を計画しません。)とはっきり記載されています。

このブログにはVisual Basicを改良しないことに決めたと書かれているわけではなく、あくまで2020年3月時点で計画がないと書いているだけですから、今後どうなるかはまだわかりませんが、ちょっと嫌な感じがすると思いませんか?

クラウドに目を向けるとAWSのLambdaは標準状態で C# が動作しますが、VBは動作しません(参考)。GCPのCloud FunctionsはC#だけでなくVBも標準で動作するようです。マイクロソフトのAzure Functions は C# が前提となっています。(ひょっとするとVBを動かす方法があるかもしれませんが、普通にやろうとするとC#になります。)

このように、C# なら対応しているけど、VBは対応していないというのが最先端の分野で起こっていることです。

メモ メモ  -  でも、そんなに困りません
ただ、この分野に携わっているVBプログラマーは別に困っていないと思います。C#で書けばよいからです。何度か触れているようにVBとC#はよく似ているのでたいして困りません。それに、おそらくこのレベルのプログラマーのほとんどは必要であればPythonやNode.jsでプログラムを書くこともできると思います。

 

2-3.どうすれば?

Visual BasicはTIOBEのランキングを見てもわかるように、そこそこのトレンドとなっています。

Visual Studio 2022・.NET 6 でもVisual Basic を使用できます。

つまり、ちょっと暗いことも書きましたが、別にVisual Basic 自体が使えなくなるという状況が発生しているわけではありません。

フレームワークはC#でも共通なので、VBを通して習得したフレームワークの知識はC#でもそのまま活用できます。

また、1つのプログラミング言語に習熟すると他のプログラミング言語を学ぶハードルはとても下がります。2つ目のプログラミング言語はきっとかなり楽に習得できますよ。そして、VBの場合、2つ目のプログラミング言語に C# を選択すれば、ものすごく低い学習コストでC#を使うことができるようになります。

メモ メモ  -  近い言語と遠い言語があります
プログラミング言語が変わっても、プログラミングの概念は同じようなものなので2つ目のプログラミング言語は学習コストが下がります。たとえば、はじめてのときは「変数」や「クラス」とは何か、「コレクション」・「ラムダ式」とは何かという概念から理解する必要がありますが、2つ目のプログラミング言語ではこれらの概念はもうわかっていて、その記述方法を学ぶだけだからです。
もっとも、言語が違うと概念も少しづつ変わるので、概念が100%そのまま通用するというわけではありません。VBに登場しない概念(たとえば、ポインター)が出てくる場合もあります。そういうわけで、VBに近い言語と遠い言語があり、近い方が習得しやすいです。C#が最も近く、次にJava、そしてPython、JavaScriptという感じでしょうか。Go, C++あたりは少し遠いかもしれません。でも、関数1つ書くくらいならこのあたりの言語はどれも似たようなものです。

ということなので、ゆっくりでもよいので C# との二刀流を目指し、適材適所で使い分けができるようになるのが良いでしょう。

C# のように VB以外の言語をやってみると、浮彫的に VBの理解も深まっていくもなのです。(だから、仮にVBが最高のトレンドの言語であるとしても私はC#や他の言語との二刀流をお勧めします。)

趣味でやっている方々はVB中心で、時折C#を混ぜながら、フレームワークの知識の幅を広げていくのが良いと思います。

仕事でやっている方は、もう少し積極的にC#も織りまぜならがプログラミングしてみるというのが良いと思います。新しい仕事が来たら「この件は、C#でやってみますね。」などと提案してみましょう。C# + Azure Function, C# + Cloud Run(GCP) などクラウドと組み合わせるのも素敵です。

 

そして…、Visual Basic の初級講座の執筆が終わった私は、次に C# の初級講座に取り掛かるつもりです。その前にまたはそれと並行してVisual Studio 2022 に対応した修正やサンプルの追加などいくつか別のこともやりますが、よろしければ C# でもお付き合いください。

 

3.感想

ここからは技術的な内容ではなく私の感想になります。

私はプログラミングは楽しいと思っていて、この楽しさをまだ知らない人たちに伝えたいという動機でこの初級講座を書きました。

説明を書くのはなかなか難しく、なんとかやりおおせたとは思っているものの、ちょっと退屈なものになってしまったなと反省しています。

この手の学習は、少し習得したら、その知識を使って何か作ってみるということを繰り返していると、楽しみながら学ぶことができるものです。ところが、この初級講座では、次々と新しい知識を説明していく方式になっており、その知識をもとに何かちょっとした機能のあるプログラムを作ってみるということがほとんどありませんでした。知識を仕入れて理解していくということ自体の楽しさを提供したいなというアプローチだったのです。やり終わってみると、思ったよりもつまらないものになってしまった、やはりもっと何か具体的なものを作りながら説明するアプローチの方が良かったのではないかと心配しています。

 

良かったことは何かと考えれば、プログラミング言語の知識を一通り説明したことです。説明していないこともまだまだありますが、これだけ体系的にVBの知識を説明しているものは他のWebサイトはもちろん書籍にもなかなかないのではないかと思います。

それだけに、この初級講座を読み切った皆さんのVBに対する理解度は高いのではないでしょうか。実のところ、プロの現場のプログラマーでも、良く知らないで適当にプログラムしているプログラマーが一定数存在します。本当です。今はネットで検索するといろいろ情報がでてくるのでコピペしてなんとかそれっぽいプログラムを作ることもできてしまうのです。もちろん、このようなプログラムはあとで何かボロが出ることもしばしばで、書いた本人が理解していないので、ちょっと問題がおこるとすぐにお手上げということになってしまいます。運よくたいした問題も発生せずに動く場合もそこそこありますけど、爆弾を抱えているようで私は怖いです…。

この初級講座ではこうならないように順をおって知識を段階的に説明しました。実戦という意味では経験不足かもしれません。

 

4.最後に

最後までこの初級講座にお付き合いいただいて本当にありがとうございます。

ここで得た知識や経験はVB以外のプログラミング言語や、プログラミング以外のみなさんの仕事や生活でも何かしらお役に立てるのではないかと思います。

楽しいプログラミングライフはまだまだこれからです。ここからはみなさんが作りたいゲームやアプリケーションの作成にぜひ挑戦してみて下さい!

 

メモ メモ  -  後から追加した回

後から追加した回の一覧は次の通りです。読み飛ばしてしまった方もいるかもしれませんので参考にしてください。

第20-2回 クラスの継承

第20-3回 ジェネリック

 第28ー2回 インターフェース