私はインフラ系エンジニアなので、ネットワーク、サーバー関係の知識は仕事で使う関係上それなりには身に着けています。Linux系のサーバーも多く扱うので、UNIXの知識も必要ですが、FreeBSDから始めたお陰でそこそこの知識と経験は積むことができました。多くはLinuxでもそのまま使えました。
簡単なシェルスクリプトを書いて定期的に実行する処理を自動化したりということは、見よう見まね+独学で覚えられそれなりの蓄積が出来ていますが、それ以上の複雑な「プログラミング」については、何度チャレンジしても初心者レベルすら越えることが出来ませんでした。例えばより柔軟な事が出来るPerl等も使っては来ましたが、意味が分からない部分が有りながらコピペで対応するなど、ずっとなぜかわからないけど越えられない壁が有ったのです。
そんな私ですが、フリーで仕事をする事になり、プログラミングが苦手だと言ってられない状況になりました。20年以上前にMacintosh環境でC++に取り組んだ時期がありましたが、そこでのつまづきがずっとトラウマになっていました。しかし覚悟を決めて取り組んでみたところ、なんとか初心者レベル(何らかの成果は残せるレベル)には到達出来ました。そういう人は結構多いと耳にするので、私の経験を記してみようと思います。
Visual Studio(C#)による学習
結果から言うと実はこれが一番私にはしっくり来る方法でした。言い換えれば私にとって救世主的な言語&開発環境でした。プログラミングに苦手意識を持っている人にはイチオシです。Microsoft社がWindowsユーザー向けに作った統合開発環境なので、使い方はWindowsアプリケーションの多くと共通しています。既存の様々なWindowsアプリの操作と同じ感覚で、WindowsアプリケーションのGUI(見た目)を作れます。Windowsアプリを作る為のWindowsアプリなのです。
具体的なプログラミング手法の第一ステップ、はフォーム上にテキストボックスやボタン、ラジオボックス等を配置したりする見た目のプログラミングを主にマウス操作で行います。この作業に至ってはプログラミングしているという意識は無くても大丈夫です。せいぜい配置したオブジェクト毎にプロパティを調整する位しか複雑なことはありません。(後々これもプログラミングしている事なのだと理解出来るようになります)
しかし実際の処理部分のプログラミングとなると、ある程度ソースコードを書かなくてはなりません。しかし変数の概念や四則計算、IF文位を理解出来ているならば、簡単なソースコードは書けます。それに加えて先に記したGUI部分の作成で使用したオブジェクトの各種プロパティ値を取り出したり、操作したりするちょっとした文法を覚えるだけで大丈夫です。
例えば計算した結果をTextBoxに表示させるには、該当するTextBoxのTextというプロパティに値を送るだけです。これでテキストボックスに計算結果が表示されます。この結果を目で確認した時に、「プログラミングってこういうものなのだったのか!」と難しく考えすぎていた事に気付かされた瞬間でした。
正直言ってこんなにあっさりとプログラミングが出来るとは思いませんでした。勢いがついたらどんどん色々な機能を追加したくなります。何個かWindowsアプリを作ってみたところ、いつの間にかトラウマになっていた「プログラミングが苦手」という意識が消えかかっていました。
次は中級を目指して更なる方法(VSの場合は使えるオブジェクトを増やすこと=ライブラリの活用)を身に着けていこうと思っていますし、諦めずに地道に続ければ着実に色々な手法を身に付けることが出来ると思います。つまり学習すればするほど簡単(シンプル)に実現出来るようになると思います。.NETによる開発はそういう事を可能にするものなのですから当然ですね。
PHPによる学習
嬉しい事にPHPは文法的なものがC#に似ていると感じます。もちろん違いはありますが感覚的に理解出来る違いなので、全く受け付けたく無いという拒絶反応は私の場合は起きませんでした(Perlは超苦手です)。PHPの一番の特徴はWebアプリケーションを作りやすい点でしょう。つまりHTMLとの親和性が高いというか、言い換えるとごちゃまぜにしてもPHPとして動いてくれる点が良い点でもあり悪い点でもあるのでしょう。私はこの良い点を享受する事にしました。PHPはWeb系専用と割りきって使います。
Webアプリの場合、HTMLのフォーム文でGUIを作ることになります。幸いXHTML+CSSはソースコードは学習済みだったので、VS C#で覚えた超基本レベルをPHPの文法に置き換えてみただけですが、 ヒアドキュメントという手法を使うと、出力したいHTML文の中に変数を埋め込めるので、かなりイメージがしやすい記述が可能です。ヒアドキュメントはテンプレートのような使い方が出来る概念ですね。
PHP(Pear)
それとPHPにはPearと言う拡張ライブラリがあり、かなり多くの便利な関数?が使えるようになります。私は大手ショッピングサイトのAPI用のライブラリを使ってみたのですが、本来ややこしい手続きを処理しなくてはならないところが、引き数として渡してやるだけで全部処理してくれるという便利さを知りました。こういうライブラリの中身は将来的に学習教材として使えると思いますが、現在は「何かを作る」という経験を増やしていくことが重要と考えているので、作りたいWebアプリケーションをどんどん作ってみる事にします。
それと、WordPressをずいぶん前から使っているのですが、WordPress用のプラグインを作成する手法をいくつか覚えたのでWordPressを一種のフレームワークとして活用し、機能を拡張実装して行くことで単なるブログシステムでは無く、情報収集&表示ツールとして活用する方法も覚えました。恐らく労力的にはかなり省力出来ていると思います。なにしろ見た目の部分はほぼWordPressに任せられますからね。
JavaScript
実はXHTML+CSSを覚えた後で、結構早期からJavaScriptを学習していました。見た目を気にしないのであれば、別にCSSのスキルは要らないでしょう。JavaScriptは、Webブラウザに色々な処理をさせられるので、所謂Webアプリケーションよりも手軽な手法で作成出来ます。しかもかなり強力ですし、今となってはHTML5では必須の技術となっています。JQueryというJavaScriptの強力なライブラリを使える点ももちろん使わない手は無いと思います。
JavaScriptで厄介なのは、特殊文字のエスケープ処理等が結構シビアで煩わしい点です。しばらく記述しないとこのルールを忘れてしまうので、いつもバグだらけのソースを書いてしまい動くようにするのに時間がかかります。自分なりのノウハウ帳を作るなりして構文や注意点をまとめて行く必要ありだなと、JavaScriptに関しては痛烈に思いました。 もちろん他の言語でも同じなんですけどね。メモ帳とWebブラウザさえあれば開発出来るので、WindowsだろうがMacだろうがLinuxだろうが関係ありません。最も手軽で強力な言語だなと思っています。Webブラウザが使われている限り無くならない技術ではないでしょうか。
余談ながら、私がJavaScriptに興味を持ったのは全然別目的がきっかけでした。Macromedia製のFireWroksという画像処理アプリケーションが、JavaScriptで記述した機能拡張を実装することが出来たからです。FireWorksには操作した手順を記録する仕組みが合った為、それで記録した内容を元にJavaScriptでループ処理をしたりして、自動で一定幅のガイドラインを引かせたり、画像をパズル状に分解したり、結合したりという横着な機能を実装していました。またDreamWeaverにも同様の手法で機能拡張を実装出来たので、主に退屈なルーチンワークとなるテキスト処理を機能追加したものです。残念ながら今の仕事では画像処理を自動化するメリットは無いので、JavaScriptを使うとなればやはりWebサイトの案件になりそうですが。
最後に
思いつくままつらつら記しただけなので、読みづらい文章になっていると思いますが、自分にとってこれらの言語がどうだったのか、そしてVisual Studioがプログラミングというものの理解を一気に結びつける役割を果たしてくれたのが私にとっては救いでした。20年以上ずっとプログラミングに対するトラウマが取り除けませんでした。それをVSを使って学習をした事でトラウマがなくなりかけているからです。
人それぞれタイプが違うので、これは万人に言えることではありませんが、私の様な苦手意識が染み付いて閉まっている人の場合、最初はイメージ的にプログラミング手法を捉えることが出来る手法(Visual Studio)がお勧めです。幸い現在はMicrosoftが無償版を配布してくれています。ちょっとしたツール的なプログラムを自分で作れるし使わない手は無いですね。


コメント