今後は、義務教育でプログラミングが始まるようですが、
日本は1980年代辺りの数学に入っていたようなのをそのま
ま踏襲して言ったら物凄いIT国家になっていたような気が
するのですが、教育制度がころころ変わると、いいことには
ならないと言うのは、教育現場の混乱もそうですが、方向性
が定まっていない分裂症が行き当たりばったりで物事をして
るのと同じですから、そういう乱数で物事を決めるようなで
たらめでモノがうまくいくわけがありません。
そうした意味では、よその国よりも後発で今頃プログラミ
ング教育と言うのもなんだかなぁ?と言う気はしますが、し
ないよりはいいのでやっとまともな方向に家事霧が出来てき
たのではないだろうか?と言う気はします。
他国の取り組みでは、中国の異様なレベルは別として、幼
少期にそうしたモノに振れるという状況は日本よりも相当前
から始まっていますから【 出来る人間お総数が違っている
のと、それが苦手な人の能力レベルや知識レベルでも日本の
出来ない何かや、否定してるゴリラ向かいすぐの何かと比較
すると大きな隔たりがある 】のは確かです。
とりあえず、そうした内容から、いきなりコーディングで
はないにしても、アルゴリズムを考えるような思考及び、そ
れに準ずる構造物の理解とそれを動かすための仕組みの考案
など、【 ソフトウェア以外でも物を作る上では登場する思
考の根幹部分の育成 】を行うような教育は始まります。
まぁ、構造物と張りぼての区別がつかないような状態だと
建造物の自己のようなものが発生するためいい状態ではない
のですが、無知であれば、そこにしか行き着かないので、結
果的に【 20世紀でも駄目で現在進行形だとさらにダメな固
有種の踏襲をしても仕方がない 】というのはあります。
とりあえず、そういう末期な存在ばかり増えると問題があ
るのですが、教育自体は難しくなっていくものの、その時代
において対応しやすい個人の能力の構築と言う部分では、思
考において、そういうプリセットが幼少期及び児童の段階で
構築されることにおいての利点は追いと思います。
これは、幼少期に何かしらの運動をしてる子供が中学校の
運動部に入ってもキツイことはキツいですが、死ぬほどでは
ないのと同じで、学習と言うのも結果的には、積み重ねによ
るアドバンテージがあるのは確かです。
その為、【 幼少期には、コンピューターは愚か、卑弥呼
が支配していたという誇大妄想に逃げなくてはならないよう
な、文明格差のレベルが違いすぎる謎の生命体 】と、少な
くともマイコンや電子ブロックのある時代に生まれたオッサ
ン世代だと、後者のほうがまだマシだと言う話になります。
まぁ、そうはいっても現在のイメージでいうと、ゲーム機
の10倍の金額出してもロクな性能ではないので、現状で考え
ると【 マイコン 】 = 【 MAC Pro 】位のイメージ
でこれがアミーガ、コモドール、マッキントッシュなどにな
ると【 マルチプロセッサのブレードサーバのような価格 】
だったと言えます。まぁ、20世紀のプロセッサというのは、
IntelのEdisonよりも遅いので、アセンブラを走らせても、
性能はゲームよりも安いプロセッサのほうが速いのですが、
2000年を超えた時期の製品でもBGA製品で比較すると、
Rasberry PI3に勝てない製品は数多く存在するので、それ
を考えると【 オッサンのノスタルジーというのは既にギー
ク辞めてる証拠 】なので、既に何も知らない人と同じレベ
ルだと言っても大丈夫なレベルで何もわかりません。
その為、そういう時代だと環境の差異で問題があったそ
れでも、【 初代のiPadの価格を出して購入するよりも今の
iPodTouchのほうが性能は上 】のように、性能が違う上に
価格も安いと言う内容が存在しているわけです。
では、そこまで性能が上がると、出来る事も増える訳です
が、その中で処理能力をあまり求めないものは何か?という
と【 2バイト文字のテキスト編集 】になります。
とりあえず、YouTubeやニコ動やNetFlixで動画を見るよ
りも、ブログを更新する時のほうがリソースの消費は少なく、
電力消費も少ないはずですが、キーボードを接続して文字を
打つだけの作業(ワープロではなくテキストエディタ)だと
さらに消費電力は低いはずです。
つまり、こうした内容から考えると
【 消費電力とリソースにおいての優位性がある
作業とはプロセッサの負担が少ない物 】
になります。つまり、この条件からすると、処理が可能な
環境が多く、プロセッサの構造でいうと、省電力モードで
処理をしているような作業に該当すると言えます。
そう考えると、この作業は多くのマシンでできるものだ
と言えますが、ソースコードを書く作業についても同じこ
とが言えます。
PCにおけるコーディング
政府の目標で、昨年6月に閣議決定されたもの(なので、
実現されます。というのもITCの導入で電子黒板の導入と
かも進んでますよね。そういうな要が決まった場合、結構
早期にそういうのは導入され、その目標が年数が決まって
る場合、ロードマップなのでそれになります。)でタブレ
ットを全員が持つような時代になる(アメリカ大統領はそ
ういう端末はセキュリティーの関係で没収されるみたいで
すが。)ようなので、タブレットについても触れますが、
とりあえず、それは後に書くとして、現状でコンスタント
に作業できるPCについて触れておきます。
まず、プログラミングですが、これは
【 作りたいものがある場合にそれを構築する
ための手段 】
になります。それが動くものだと、どう動蜘蛛のかを考
える事になるので、それをどういう手順で動かせばそれ
になるかを考えます。20世紀だと1980年代位にLOGO
というカメを動かすものがあり、
【 特定の動きをするためにどういうように進ま
せればそれになるかをプログラミングして動
かすもの 】
が存在していました。以前も書きましたが、この機能に
ついてはマイクロソフトが無償提供をしているSmallBA
SICでも実装されているので、モノの挙動と考え方につ
いてはそれを試す事が出来ます。
そして、BASICについては、過去のそれとは異なり、
マイクロソフトのVisualBAICやVisualC#に構文の似て
いるSmallBASICがあるので、そうしたモノを使い記述
をしていく方法があります。
現状において、コーディングの選択肢は複数あるので
すが、SmallBASICなどのようにコーディング環境と実
行環境が揃った統合環境(IDE)は結構存在しており、
個人が複数選べる時代になっています。
以前、ここで書きましたが、MACの場合だと、元々
Object-CやAppleScriptがあるのでプログラミングは
当たり前にできる状態にあり、WINDOWSも以前書い
たように同社の開発言語に似せたスクリプト言語である
VBSを実装していました。また、ある時期までVC++
とVBを使える状態で、C++もコンパイルできていま
したからそうした事は可能なんですが、現状だと、
WINDOWSアーキテクチャでは、.NesFramework
SDKに包含されている
■ VisualBASICコンパイラ(vbc.exe)
■ VisualC#コンパイラ(csc.exe)
■ JScriptコンパラ(jsc.exe)
などが実装されています。ここでJavaScriptとSmall
BASICについいて触れていますが、後者は前述のとおり
ですが、JavaScriptの記述はJScriptに似ているのでソレ
を覚えていると使いやすいものになります。
この三種がそのまま簡素なプログラムだとコンパイル
できる代物になるのですが、OSが入ってるだけで学習が
出来ます。
あと、VC++とかから#系にシフトした時に、Sharp
Deveropと言うが登場したのですが、オープンソース
だったのでこれがクロスプラットフォームで登場してお
り、現在では、Linuxでも
■ MonoDeverop(OSS MIT&LGPL)
http://www.monodevelop.com/
を使うとC#やF#などのコンパイルが可能になっていま
す。
WINDOWSとMAC版では、Xamarin Studioとして
配布されています。
とりあえず、共通して使え鵜物としては、現在のHT
ML5時代のアプリ開発の主要言語の
■ HTML 5 + CSS 3
のマークアップランゲージと、その制御を行う
■ JavaScript
になります。現在の記述ではJQueryやJSONなどがあ
るので【 過去お記述とは相当違ったものが存在して
いる 】のですが、あれはサブセットです。
その為、WINDOWSだと標準で、バッチ処理なども
含めて複数のモノが利用できるようになっています。
とりあえず、統合環境でいうと、マイクロソフトだ
と
■ Visual Studioシリーズ
(Comminutyは無料)
https://www.microsoft.com/ja-jp/dev/
default.aspx
■ SharpDeverop(OSS LGPL)
http://www.icsharpcode.net/OpenSource/
SD/Default.aspx
対応言語
C#
Visual Basic .NET
Boo
IronPython
IronRuby
■ 外部プログラムで連携可能
TortoiseSVN
TortoiseGit
NUnit
FxCop
StyleCop
F#コンパイラ
(*)パーサにより、各言語を相互に変換できる
コンバータが含まれている。
(*)MONOコンパイラでコンパイル。2からMSBuild
対応
があり、それ以外だと、C#などが使える
■ XamarinStudio(OSS MIT&LGPL)
http://www.monodevelop.com/
や 【 Adobe Flex用の開発環境 】 である
■ FlashStudio
http://www.flashdevelop.org/community/
viewforum.php?f=11
対応言語
ActionScript(AS2,AS3)
Haxe
Loom
HTML
XML
MXML
CSS
HSS
LESS
Sass, SCSS
JavaScript
TypeScript
C++
C#
PHP
Python
があります。 あとは、JAVA開発環境として、
■ NetBeans
https://ja.netbeans.org/
■ Ecrips
http://www.eclipse.org/
があり、意外とスペックを高くしておかないとダメな
Androidアプリの開発が可能な公式からリリースされ
てる
■ AndroidStudio
https://developer.android.com/studio/
index.html?hl=ja
も存在しています。JAVA環境では、コンパイラのJDKと
ランタイムのJRE(一般的ンいソフトを動かす場合にはJA
VAが必要です。とか出る場合に必要なのははこっち。)を
iンストールする必要があります。SharpDeveropはアレ
コレとイロイロインストールする必要がある(まぁ、開発
環境なんてそんなもんです。ゲームエンジンのCocos2DX
とかもそうですし。なのでインストールして一発おkなほ
うが特殊で、親切と思ったほうがいいです。w)のですが、
VisualStudioと同じような状態になるのは魅力です。
とりあえず、今夏何時で開発化尿はいろいろあるので、
FlashStudioとMOnoDevelop系のモノとJAVAを上記の三
種からいずれかをインストールしておけばある程度大丈夫
な気もしなくもありません。
基本的にローカルで動く開発環境として考えるとVisual
Studio CCは除外されるのですが、とりあえず、蒸気のモ
ノが存在しています。
では、コーディングをする上でのソフトだとどんなのが
あるのか?と言いう話になりますが、拡張機能が多いマイ
クロソフトの
■ VisualStudio Code
https://www.microsoft.com/ja-jp/dev/
products/code-vs.aspx
があります。これは、ウィジェットやプロパティーをGUI
で追加するのではなく、コードで記述するスタイルにしたも
ので軽快な作業を重視した仕様のものになります。
こうしたコーディングはいろいろありますが、候補が表示
されるとか、色分けされて見やすいとかの利点は多いです。
その為、通常のメモ帳での作業とは異なる部分がありま
す。やってることはメモ帳での作業と同じなんですが、エ
ラーがある場合には即座に解りますし、そうした点では圧
倒的にそうした言うツールを使ったほうがいいです。
老舗
OSの源流はUNIXに繋がっているのですが、1970年代に
生まれたエディタが現在も息づいていて、Linuxだと標準で
使えるようになっています。このエディタは二つあり
■ Emacs(ウィキペディア)
https://ja.wikipedia.org/wiki/Emacs
■ Vi(ウィキペディア)
https://ja.wikipedia.org/wiki/Vi
になります。ターミナルでviと入力すると作業できるので
それを使って作業する方法もあるのですが、WINDOWSも
使うのが怪しい状態の人間が、TurboLinux出であったとき
には訳も解らず相当ひどい絶望感にさいなまれたものです
が、田舎で損亜物を使ってる人間はおらず、そういう分野
での知識においては周囲が野生に追い返したほうがいいゴ
リラレベルでしたから(小説も書けないがワープロだけ持
ってる系の何かの系統の巣窟とか機材依存症の末期な現実
逃避が酷い無能の系統)理解に至るまで相当かかりました
が、結果的にマクロが何があるのか知らないので、相当イ
ロイロな事が出来る物なのは確かです。
と言うか、老舗ですが個人的に全く使いこなせてないエ
ディタがこの二つになります、gcc走るし便利なんですが、
【 あまりにもテキストエディタと振る舞いが違いすぎる 】
ので、最初に触るとしっかりとヘシ折れる事請け合いです。
まぁ、テキストエディタ気分でPowershell開いてるよう
なもんですから根本的に間違ってると言う話もありますが、
色々できる便利ツールであるのは確かです。
これについてですが、WINDOWSだとNTEmacsとかが
あり、VIMもフツーに配布されているのですが、
【 Linuxでは定番のアーカイバの展開後にコン
パイルして使うスタイル 】
ですから、とりあえず、ゴリラではムリなんですが、VIM
に関してはコンパイル済みのものが配布されているようです。
VIMでは、
■ いまさら聞けないVim(1): インストール、
そしてはじめの一歩 (1/2)【 @IT 】
http://www.atmarkit.co.jp/ait/articles/
あと、Emacsは
■ GNU Emacs
があり、
■ Emacsの使い方 基本のキー
に使い方が書かれていますが、やはり特殊です。
こんな感じで様々なモノが使えますが、統合環境だと、
Booとかも入ってるものもありますが、RubyやPython
など(2系と3系で全く違うので注意)のように個別で
追加しないとダメなモノもありますがコーディングにつ
いては、単独でコードだけ処理するものと、GUIの生成
とレイアウトやプロパティーの調整などをGUIでダイレ
クトに行えるIDEの二種類があります。
スマホやタブレットでもコーディング
前述のソフトウェアだと、ノートPCやタブレット端末も
対象に入るので、お絵かきタブレット系で売られているよ
うな安価な物から、低価格なスレート製品まで含まれるの
ですが(この場合IDEだとインタプリタ言語に限定されそ
うな気がしますが)、スマホやタブレットでもIDEやコー
ディングが行えるものがあるようです。
■ スマホでプログラムをコーディング!Android
の無料コードエディタ(sounansa.net)
http://sounansa.net/archives/1257
こうして見てみると、JavaScript/C++/HTML/PHP/
JAVA/Pythonなどがコーディングできるものがあるようです。
iOSもそんな感じで、
■ iPadでアプリが作れる!?iPadを利用した
開発環境まとめ(コード部)
https://blog.codecamp.jp/ipad_application
を見ると、LUAなどの環境もあるようです。
アプリでも、先ほど書いたVimがあり
■ VimTouch
https://play.google.com/store/apps/details
?id=net.momodalo.app.vimtouch&hl=ja
■ vim
コーディング環境もいろいろあるようです。
とりあえず、スマホとかの場合サーバサイドでの処理が発生
するので、コード記述は大丈夫だけどコンパイルなどを考えた
場合、ローカル環境で動くWINDOWSアーキクチャやMACを
う買う選択になります。(市販のモノを購入する場合。)
あと、自作PCだといきなりVIとかNetBeansとか入ってる
ディストリビューションのあるLinuxを選び、MonoDevelop
などを入れると既に何でもできてしまいそうな状態ですから、
そうした利点もあります。
とりあえず、オフラインでという事になると、スマホは...。
と言う感じですが、そういったアプリも登場しています。
また、
” 気軽に未開の地でコーディングする場合でも
PCが動けば大丈夫と ”
言う条件だと
【 エコにコードエディタと.netFrameWorkで個別
にコンパイルするとか、コンパイルが不要な開発
言語を使う 】
などになりそうですが、コーディングと言うソースコードを書
くだけと選択肢は相当広くなっていると言えます。
こうした条件で考えると、コーディング環境を前提にすると、
ローカルで作業できるPCのほうがよく、低価格なモノだと小さ
なプログラムであればWINDOWS 10だと大丈夫という事に
なりそうです。
デスクトップでないと厳しい20世紀とは異なり、様変わり
した感じはありますが、まず、コーディングは別としてもビル
ドを行ってアプリケーションを作るなどの選択肢が個人でも無
償で行えるだけでなくIDEの選択が複数ある事がVisualBASIC
を買うだけで数万円していた時代とは相当変わったなぁと感じ
る訳ですが、コーディングをしては知らせるまでの状態におい
ても、動かせるものが違ってきているというのも今と昔の大き
な違いではないかな?と思います。
とりあえず、ゲーム開発用のプラグインやGL関連のプラグ
インなどもPCのIDEでは実装可能なんですが、以前も書きま
したが、【 ゲームエンジンでのゲーム開発同様に、ソフト
を動かす実行環境としてのPCが必要になるので、完成品を当
たり前に動かせるような実行環境は前もって用意しておく必要
があり、それに見合った開発環境にしておくこともも重要で、
実行環境よりも開発環境のスペックを高くしておかないと物は
作れない 】ので、その辺りには気を付けたほうがいいと言え
ます。
Android端末はPCよりも低スペックでメモリー実装量も少
ないのですが、AndroidStudioが快適に動く条件で考えると、
■ 仮想化対応の近年のプロセッサ
(XDbit及びVT-x対応)
■ 16GB以上のメモリー
■ 数十GB以上の空き区画は必要
■ 64bitのプロセッサ
■ 64bit版のOS
となります。あとGLSLで動かす場合には、グラボがないと厳
しいのでIGP環境でそういうのをデスクトップでCore i7とか
で組んでおいてグラボを追加するか、もしくは、Core i5で組
んでゲーミングデスクトップのVR仕様のようなのを組む感じ
になります。ただ、これがUnityやUnrealEngineのゲーム開
発とかになると全くスペックが足りないので、作るゲームの品
質を追いかけるとそれ相応のハードウェアになる訳です。そう
した内容から必要な機能及び、使う処理系は何であるのかで実
装するパーツの構成が変わってきます。
ソースコードを書くだけだと問題はないのですが、実行環境
ありきのコーディングで、コンパイルの有無がある物の、実行
できないことには意味がなので、それが可能な状態である条件
を満たしておく必要はあります。