大復活C#学習_立ち止まってGUIについて考える

f:id:yasui_swift:20210313042355j:plain

マイクロソフト社のポスター

電車に乗っていて中吊りのポスターが気になった。

キャプションは「型にハナるな。沼にハマれ。」とある。なんのことだろう。

片隅にマイクロソフト社のマークがついていたから、宣伝であることは分かるが何を宣伝しているか理解できなかった。

家に帰って調べてみるとMS社のパソコンSurfaceProの宣伝だとわかった。新しく大学に入る若者向けたパソコンの宣伝だ。

よく写真を見ると手にパソコンを持っているので納得した。

新大学生に向け、夢中になる物を見つけ、新生活を自由で豊かにすごせと告げていると理解した。

以前持っていた自分のSurfaceProは4年で画面が黄色く変色して訳の分からない模様が出現するようになったので孫のカンくんにおもちゃとして払い下げたのでもう手元にはない。その後にLenovnoの格安ノートを購入したがこれは外れ。安かろう悪かろうの典型だった。

専門学校の講義に不可欠なので現在は持ち運び便利なFujitsuの軽量パソコンを使っている。これまで使った個人のパソコンは10台以上になる。

始まりは20代後半のシャープのPC-1500との出会い、2台目は初のデスクトップMZ-2000だった。その後にNEC98Laptop、MacNote、dynabook、MacAir(これは現役)、Let’sNote(これも現役)、Surface2、iPadmini2(現役)などなどだ。職場ではデスクトップのNECを使っていた。古くは8インチのフロッピーディスクが外付けの時代だ。

学んだ言語も記念にここに書いておこう。

初めて感激したのはハドソンのHuBasicだった。グラフィックの座標が左下に(0,0)が設定できて感動したのを覚えている。BASICで解析した多変量解析は学術誌に掲載された。なつかしい思い出だ。

その後、HTML/CSSで職場紹介のホームページを造り、JavaScriptで簡単なアニメをつくったり公開して喜んでいた。VBAは職場の業務整理に応用した。DataBaseではDbaseⅡに始まりDbaseⅣを使った。個人ではファイルメーカーを事例記録に使い統計ソフトのRも少し囓った。DOS/VMacOSも仕事で使った経験がある。

C言語の習得が喉に刺さったトゲのようで40歳過ぎたあたりで学習した。使うことが目的ではなくてなんども挫折したリベンジ目的の学習だった。

現在のC#の前はPyton、その前がSwiftだった。

行き着く先のC#の基礎学習はひととおり済んだ。

すべてを覚えるのは年齢的にもう無理なので、そう言えばあそこに書いてあったと思い出せればよいことにして、CUIによる学習はひと段落だ。

コンパイラ型言語とインタープリター型言語、静的型言語と動的型言語の善し悪しも少しは理解できた。

C#を学んだおかげでオブジェクト指向や継承とカプセル化ポリモーフィズムをはじめ新たな言語世界を体験できた。

さていよいよGUIを用いたプログラム学習に進む。ここで考え込んでしまったのである。

そもそもこのブログの立ち上げはタブレットでアプリを動かすための備忘録として書き出したのが始まりだった。

いつしか道がそれてPythonではopenCVによる画像認識へ向かい、C#ではC言語への先祖帰りとなったが、行き着く先はきっと自分のパソコンで使用するデスクトップアプリケーションの製作から、さらにスマートフォンタブレットで動くアプリを作ることだろうと気がついた。

C#の学習は学習のための学習だったけれど、突き詰めれば学習の目的はボケぼけ防止を建前としたアプリ開発とその公開だといまさらながらに気がついたのである。

究極はAndroidiOSかでモバイル・アプリを動かすことにある。

簡単なGUIアプリはすぐに作れた。遷移やグラフィックのもっと高度なものを作りたくて、インターネットを調べてみるとC#GUIの変遷がすさまじい。開発から20年足らずのC#であるが、GUIはWindosFormに始まり、.NET Framework、.NET Core、.NET 5へと移り変わり、落ち着かない。

C#GUIの最新教科書を探すがちょうどよいものがみつからない。なぜだろうと訝しくなる。webアプリケーションは比較的新しい教科書があるのだが、手頃な教則本が見つからないのだ。

C#GUIは、FormからWPF(WindowsPresentationFoundation)、UWP(UniversalWindowsPlatform)と繋がり、XML(ザムル)、Xamarin(ザマリン)がこれに参入して混沌状態と言ってよいように感じる。すでにFormと.NET Frameworkは開発が終了しているし、.NET CORE3は.NET 5への移行が始まっている。

これからC#GUIを学ぼうとするといったい何をどうすればいいのか途方に暮れてしまう心境に陥った。別の意味で「沼にはまった」感じがする。

C#でなければならない理由はなにか、とそもそも論に立ち返り考える。

AndroidGoogleのAndroidStudioかJavaの発展形のKotlinがメジャーな開発言語で、iOSはこのブログの題名でもあるSwiftがメジャーだ。

ゲームならC#とUnityが大本命だが、いまのところゲーム作りには興味がない。

GUIを離れて、プロの世界ではどの言語が主流なのかを調べると、あらたなプログラマーの募集ではC言語(++も#もないオリジナル)が第1位、第2位がJavaで、人工知能を使いたい研究職や開発業者ではPythonが主流だと書いてある。

Googleの新しい言語「Go」はまだ姿が見えない。

少なくともC#は個人用のデスクトップアプリを除くスマートフォンタブレットアプリ開発ではマイナーな位置づけなのであることを初めて知った。

さてこれからの学習をどうするか迷っているのである。

入門書も少ないXamarinに挑戦するか、まだ未体験のJavaに矛先を換えてみるか、この「沼」からどうやって這い上がるか、悩むのである。

f:id:yasui_swift:20210313072113j:plain

XamarinにASP.NET Webの教科書