Home > C# > C# 学び直し

C# 再挑戦 学び直しの道

新規作成日 2017-07-10
最終更新日

プログラミングに限らず、ほとんど全ての技術は、役に立つレベルに達しないうちに諦めると全く使うことができません。

プログラミングについては、独学で学ぶと、やっては諦め、やっては諦めの繰り返しになり、使える段階までいつまで経っても使える段階へ到達できません。

なぜ、私たちは、プログラミングを習得できないのか?

個人で使えるパソコンが登場してから、プログラミング言語が登場してから、多くの月日が流れてもプログラミングは、習得しにくい技能の1つです。様々な理由を取ってつけることができますが、独学者に限っては、以下の理由が主たる原因になっていると思います。

  • 適切な学習教材がない。あるいは、探せない。
  • 自分がパソコンを使用する状況で役に立たない。
  • わからないときに、それを解決する手段を見つけることができない。

一番容易に学べるプログラミング言語は、Excel VBA?

いろいろな意見があると思いますが、私の考える、現時点で一番学びやすいプログラミング言語の1つは、Excel VBAです。

この考えを裏付けるように、関連書籍も、他のどのプログラミング言語よりもたくさん出版されています。

Excelは、表計算ソフトです。マス目の中に、データを格納し、そのマス目(セル)の中のデータの関係を指定し、計算を行うことができます。その操作を自動化する際に使用する仕組みをマクロと呼び、Excelでは、VBAが使われています。

Excel VBAが学びやすいのは、私は、主に、3つの要因があると考えています。

  • データを変数の代わりに、セルに格納することで、データの変化を可視化できるとともに、変数の概念を理解しやすい。
  • Excelを手作業で行う作業をマクロで自動化できるので、プログラミングを行う労力に対して、作業軽減というメリットが得られる。
  • ユーザーインターフェイスに、Excelが利用できるため、実際にプログラミングする部分は少なくても、Excelの機能と組み合わせることで、少ない作業で、Excelの機能を拡張できる。

C#でプログラミングを学ぶメリット

Excel VBAを使えるひとが、または、プログラミング言語に全く触れたことがない状態から、新たにC#を学ぶメリット、あるいは、全くプログラミングのない状態からC#を学ぶメリットは何でしょうか?

私は、主に、3つの利点があると考えています。

  • 事実上、標準のWindowsプログラムの開発言語 。
  • 情報が入手しやすいプログラミング言語の1つ。
  • パソコンで操作可能な機器で、使用するためのライブラリが用意されていることが多い。
  • グラフィカルUIの実装が比較的簡単。

個人が、自分で利用するために作成する、Windows OS上で動くプログラムを開発する場合、C#を選択することが、もっとも簡単な方法ではないかと考えています。

個人プログラマーは、職業プログラマーと学習ルートが異なる

プログラミングを独学で学び、作成したプログラムを自分で使用する個人プログラマーは、職業プログラマーとは、適した学習ルートが異なると私は考えています。

その違いは、グラフィカル・ユーザーインターフェイスの位置づけです。

職業プログラマーでは、1つのアプリケーションを手分けして作成するため、グラフィカル・ユーザーインターフェイスを作成する人は限られています。

一方、個人プログラマーでは、グラフィカル・ユーザーインターフェイスがなければ、アプリケーションが完成しないため、かなり初期の段階から、グラフィカル・ユーザーインターフェイスを作成する技能が必要です。

ほとんどの日本語で読むことができるプログラミングの学習書では、コンソール・アプリケーションをターゲットとしてプログラミングを紹介しています。そのため、コンソール・アプリケーションの開発とは別に、グラフィカル・ユーザーインターフェイスを実装する方法をどうにかして習得しなければ、個人プログラマーの場合、アプリケーションが完成しません。

C#には、複数の開発プラットフォームが存在する

C#では、動作環境やUIの実装方法などの違いに応じて、複数の開発プラットフォームが存在します。

Windows VistaからWindows 10に至る間に、特に、スマートフォンやタブレット端末の対応で、多くの開発プラットフォームが登場し、そのいくつかは、既にサポートが 終了しています。そのため、新たに、C#を習得する際は、サポートが終了した開発プラットフォームを避けることが大切です。

情報を集める際は、どのプラットフォームの情報かを意識し、自分の使っているプラットフォームの情報を集めるように注意する必要があります。

以下は、C#の開発プラットフォームの一例です。

  • コンソールアプリケーション
  • フォームアプリケーション
  • WPFアプリケーション
  • .Net Core
  • Asp.Net
  • Asp.Net.Core
  • Xamarin
  • Unity C#
  • UWP

実際に習得を始める前に、サポートや開発が終了していないかどうか確認しておくことが必要です。

既存のアプリケーションの保守、改修にかかわらない限り、サポートや開発が終了しているソリューションには、興味を持たないことが大切です。

フォームアプリケーションは、今から学ぶ価値があるのか?

C#のプログラミングに関する書籍など、日本語の多くの学習資料では、グラフィカルUIには、Formアプリケーションが利用されています。

フォームアプリケーションは、ラピット・プログラミングと呼ばれるスタイルの開発環境です。Windowsで使われるそれぞれのウィンドウのデザインをコードで記述する必要があった頃、デザイナーと呼ばれるUIデザインツールでUIを作成し、そのUIとイベントを結びつけることで、アプリケーションの開発速度を向上させるソリューションです。

その中身は、Win32APIのラッパーです。

現在、既に、更新は行われていません。

問題の1つは、グラフィックカードによる、グラフィックアセラレーションの対象にならないことです。もう1つの問題は、グラフィカルUIは、WPFから登場したxamlと呼ばれるxml系の言語で記述される方法が使われていることです。

WPFだけでなく、UWPやASP.Netでもこのxaml系のUIが利用されていることから、Microsoftの開発環境のグラフィカルUIの主流は、xaml系のUIに移行したと判断できます。Formアプリケーションのスタイルに戻る可能性は、低いと思われます。

そこから考えると、逃げどころがないため、Formアプリケーションは、既存のアプリケーションの保守、改修にかかわらない限り、新たに学ぶ価値が低いと思われます。 xaml系のUIを導入している他の開発プラットフォームを選択したほうが良いと思われます。

プログラムの基本は、コンソールアプリケーション

コンソールアプリケーションは、コンソールに、プログラムの結果を数字や文字列を表示します。

コンソールアプリケーションは、プログラムの本質であり、アプリケーションを構成する複数の小さなプログラムのなかの1つを表しています。

そのため、コンソールプログラムで、プログラミングを学ぶのは、正しいのですが、退屈です。さらに、作成したプログラムは、ほぼ、間違いなく実用性はありません。

そして、何か具体的な作りたいアプリケーションを思い描いていると、そこには、延々にたどり着かないような気持ちになってきます。

しかし、現時点では、コンソールプログラムで、プログラミングを学ぶ以外の道はないと考えて良いと思います。

WPFアプリケーションで、xaml UIを理解する

WPFの登場以降、C#の開発プラットフォームのグラフィカルUIでは、xamlと呼ばれるxml表記で、UIを表現する方法が使われていることが多いです。

プログラム上で、変化しないUIは、xamlで表記し、プログラム上で変化させるUIは、C#コードで構築します。

xaml UIを使用する方法についての情報は、どこにあるか明確ではなく、一番見つけやすいのが、一番最初に登場したWPFに関する情報です。日本語の情報だけでは、不十分なため、英語の情報にも挑戦する必要があります。

基本的に、開発環境の開発チームのメンバーによって書かれた情報が系統立てられており、それ以外の情報は、ダイジェスト的な、一部のトピックの紹介の体裁になっている事が多いです。

データを格納する部分、データを処理する部分、UIを表示する部分、データの変化に応じてUIを格納する部分に明確に切り分けたプログラムを開発する方向に向かっているのは、C#の開発プラットフォームが乱立し、短期間で、サポートが終了する状況から、C#の開発プラットフォーム間での移植作業が増えたことが要因の1つと思われます。

PC上で、動作するデスクトップ・アプリケーションを作成する際の有力な選択肢です。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」