Diary プログラミング学習

第4週 学習対象の言語と作成するアプリを決める

前回は、どのようなプログラミング学習サイトを作るのか、漠然としていますが、自分の中で方向性はまとまった気がします。

今週は、プログラミング学習の対象言語と、学習の題材を決める作業を行いました。

プログラミング学習の対象言語を決める

私が一番得意なのがC言語だったので、C言語で電子工作を題材にすることは決めていましたが、これだけだと、対象者が限られてしまうため、その他に、少しですが開発経験のあるC++、C#、PHPも学習の対象の言語にしようと思います。

対象者を広げるためには、rubyも学習対象にしたい言語でもありますが、mrubyしか開発経験がないため、難しいかもしれません。

将来的には、頑張って勉強して学習対象にしたいとは思っていますが、今回は対象にしないことにします。

あとは、C言語を使った電子工作と合わせて、スマホと連携できるとよいと考えているので、swiftやjavaも学習の対象にしようと考えています。

ただ、こちらも、ほとんど経験がないため、私自身も勉強しながらになりますが、なんとかできるように頑張りたいと思います。

少し迷っていますが、VBAも含めようと考え中です。私自身、開発としての経験はありませんが、開発過程で自動化やチェックツールとしてVBAで作成することがあるので、簡単なものでも作れるようになると、開発に役立つかなと思っていますので、VBAも学習対象にしようか考えています。

整理すると、プログラミング学習サイトで学べる言語としては仮ですが、次のようにしようと思います。

  • C言語
  • C++
  • C#
  • PHP
  • swift
  • VBA

swiftとjavaが開発経験がないので、両方を覚えながら作るのは現実的に無理があると判断しました。javaは今回対象外として、私自身勉強して、できるようになったら、そのとき考えたいと思います。

学習の題材を考える

なるべく興味のあるものを題材にしたいと考えていますが、なかなかアイデアがでないため、前回考えた、実務に役立つような、スキルアップに繋がりそうで、個人でも作れるような簡単なものにしたいと思います。

なかなか具体的な仕様までは決められませんでしたが、開発言語毎にどんなものを作るかだけは決めたいと思います。

C言語

C言語の多くは組み込み系の開発が現実的だと思うので、電子工作としてロボットやラジコンカーなどのようなものがよいかなとは考えていました。

実務に役立つように、スイッチ入力、LED出力、モータ制御、センサ入力、通信を取り入れたいと思っています。

ロボットは、制御が大変なのと、コストがかかるので、ラジコンカーなどにしようと思います。

ライン上を自動走行するものと、コントローラやスマホなどで操作できるようなものを今は考えています。

また、どのような形のラジコンカーにするかですが、当ブログのC言語入門でも使用した市販の電子工作のロボットカーのキットを使うことを考えていましたが、あまり面白みがないなと思ったので、LEGOブロックで作れないかなと思っています。

また、どのような形の自動車にするかですが、既存のロボットカーのキットを使うことを考えていましたが、あまり面白みがないなと思ったので、LEGOブロックで作れないかなと思っています。

マイコンは、ARMか、ルネサスで迷ったのですが、私自身が得意なルネサスのRL78マイコンにしようと思います。

需要はないかもしれませんが、はじめは、得意なマイコンを使用した教材を作成したら、ARMマイコンなどについても考えてみようと思います。

組み込み系の開発になるため、マイコンの知識が非常に重要となってきます。このため、ハードウェアや、アセンブラ言語の知識も必要なので、すごく難しい講座になってしまう可能性がありますが、スキルアップに繋がるので、このあたりについても学習対象にしたいと考えています。

C言語としては、このような教材にしていくことにします。

あとは、マイコンですが、私が得意なマイコンの1つであるルネサス社のRL78系にする予定です。

RL78マイコンの学習サイトができたら、ARM系マイコンでもできるようにしていきたいと考えています。

C++、C#

C++とC#は、言語の違いがありますが、同じものが作れるので、あえて違うアプリにする必要もないかなと考えました。

Windowsデスクトップアプリや、ゲームなどが考えられますが、ゲーム開発は、私自身が経験がなく、無知なので、勉強して、できるようになれば、そのとき考えてみたいと思います。

現実的には、Windowsデスクトップアプリになるかと思います。

興味が持てそうなものが思いつかなかったので、C言語のコーディングルールをチェックするツールにしたいと思います。

これだと、コーディングで気を付けるべき点などが理解でき、スキルアップに繋がりそうな教材になるかなと考えました。

C++やC#、PHPのコーディングルールをチェックするツールでもよかったのですが、私がC言語が得意なこともあって、ルールを考えることができるC言語にしました。

もちろん、将来的には、C++やC#、PHPなどにも対応できるようなものにする予定です。

具体的な内容は、仕様を作るときに考えたいと思います。

PHP

これは、前回どのようなサイトにするかについて考えていたときに、プログラミング学習サイトに進捗管理を取り入れるとしたので、この進捗管理表を学習の教材にしようと思いました。そうすると、プログラミング学習サイトの作成と、PHPの学習する教材の作成を並行して進めることができるため、よいかなと考えました。

PHPの学習では、HTML、CSS、JavaScript、DBの知識なども必須になります。

このあたりは、知っている前提で考えるか、教材にこのあたりの知識も取り入れるかは考え中です。

こちらも、具体的な内容は、仕様を作るときに考えたいと思います。

swift

これは、ラジコンカーのコントローラー用アプリを作るために、学習の対象にしましたが、それだと、電子工作も必要になってくるので、その他のアプリも考える必要があると思っています。

スマホのアプリがよいのですが、ゲームは開発経験がないので、難しいですし、便利なツールでも、アイデアが出てこないです。

家計簿とか、スケジュール帳などがいいのかもしれませんが、あまり開発経験がないので、もう少し勉強してから考えたいと思います。

現時点では、家計簿がよいかなと思っています。

VBA

VBAをメインで開発するというよりは、開発工程で補助ツールとして使うことを想定しているため、開発で使用できるようなものを考えたいと思います。

または、事務で使えるような帳票の作成のようなものでもよいかもしれません。

今週、考えていましたが、よいアイデアが浮かばなかったので、一旦、PHPと同様に進捗管理をVBAで作成するのがいいのかなと思いました。

他にもっと開発に使える便利ツールがよいのかもしれませんが、PHPの教材と仕様を同じにできるため、一旦は進捗管理にします。

まとめ

学習の対象にする言語と、どのようなものを作るのか、方向性は決まりました。

  • C言語:LEGOブロックを使ったラジコンカーを制御する
  • C++/C#:C言語のコーディングルールチェッカー
  • PHP:進捗管理表
  • swift:家計簿
  • VBA:進捗管理表(PHPと同じような仕様)

具体的な仕様や設計、実装を行っていると、いつまで経ってもプログラミング学習サイトのプロトタイプが完成しないので、一度、いままで考えてきたプログラミング学習サイトの概要を整理して、Git Hubにアップしようと思います。

今週はここまでとします。

次週ですが、いままで考えてきたプログラミング学習サイトの要件定義書を書き始めようと思います。それから、要件定義書などをGitHubで管理していこうと考えていますが、Git Hubを使用して開発していたことは1度しかないため、復習も兼ねて、GitHubの勉強もしようと思います。

なにかご意見、ご要望等ありましたら、コメントいただけると幸いです。

-Diary, プログラミング学習