IT技術の進歩は目まぐるしいもので、昨年覚えたことが今年にはもう通用しなくなっていたりすることもあります。

弊社では、一時の流行やファッションに流されず、先進的で将来性があるかを考慮し、なるべく特定のベンダーや環境に依存せず汎用性があって、ビジネス的にも安定して長く通用するIT技術を採用していきたいと考えています。

主に使用するプログラミング言語

弊社で使用する主要なプログラミング言語は C#, Ruby, C/C++ です。(2015年現在)

以下、言語だけでなく使用するフレームワークについても触れながら解説します。

C#

C# はマイクロソフトの.NETのための言語であり、Windows系のプログラミングでは欠かせない知識となっています。

IT技術者は、マイクロソフトといえば大嫌いだという人が多いかもしれません。僕も嫌いでした。ところがC#はよく出来ています。Delphiの流れを組むオブジェクト指向言語で、コンパイル系言語とスクリプト系言語のいいとこ取りをしたような機能が充実しており、とても使い勝手が良いです。C#、日本でも もっと評価されてもいいと思うのですが、マイクロソフトの評判の悪さが先行しているためでしょうか。(笑

今のところデスクトップアプリの開発ではC#一択ですが、Web開発にもC#を活用しています。エンタープライズ系に限らず小規模サイトでもASP.NET MVCを積極的に利用し、WebAPIを使ったモバイル連携や、AngulerJSを使ったMVVMパターンも取り入れています。Webシステムの開発では、なるべく汎用的に、ベンダーロックしないよう注意しながら、採用する技術を選定しています。(例えばFlashやSilver lightなどは採用しません)

また、.NETの進化が最近になって加速してきており、これまでのWindows専用技術から打って変わって、汎用的でオープンな技術に生まれ変わろうとしています。進化の停滞しているJavaよりもダンゼン将来性を感じます。→参考:マイクロソフトのIT技術戦略について

Ruby

Ruby は、まつもとゆきひろ氏が開発された国産のプログラミング言語です。

LispやPerl、SmallTalkなどに影響を受けて開発されたスクリプト系の言語で、純粋なオブジェクト指向言語です。

Perlのような暗号的な記述を減らし、とても簡潔で直感的な記述が可能な言語です。Rubyでのプログラミングは、書いていて楽しくなるような不思議な魅力があります。

また Ruby on Rails の登場でWebフレームワークの世界に革命が起こりました。PHPやJavaなど、Web系で先行していたフレームワークも世代交代が発生し、Railsを真似たようなものが主流に変わってきています。

弊社では Rails以外にも、Linuxデーモンの開発やバッチ処理などにもRubyを活用しています。

C/C++

C/C++ は、システムプログラミングはもちろんのこと、組み込み系などでパフォーマンスを求められる際に使用することが多いです。

スマートフォンなどのモバイルデバイスや、マイコン制御などでは、限られたリソースの中でいかに効率よくプログラミング出来るかが求められます。Androidスマートフォンでは通常Javaで開発しますが、それではパフォーマンスが出ない場合(例えばゲームの思考ルーチンなど) にJNIを使ってC++コードと連携させたりします。

もちろん、出来るだけ新しいC++規格(現在はC++11)を使います。

また、C言語は今となってはあまり実用的ではない言語かもしれませんが、すべてプログラミング言語の基礎でもあり、他の高級言語の理解のベースにはC言語のポインタや構造体の理解が必要不可欠であると考えていることから、新人研修や教育的な意味合いで重要視しています。

逆に推奨しない言語は?

VB(Visual Basic)とPHPです。

いずれも学習コストが低く、入門者にとって取っ付き易い言語かもしれません。

VBは、OfficeマクロとしてのVBAがあるため、業務系システムの開発ではよく使われます。ところが同じ.NET系の言語であるC#よりも記述性が悪く、.NET化以前の過去の遺産を引きずっており、また初学者が多い文化圏であるため、あまり良いプログラムが生産されないことが多いと感じています。

PHPはほとんどWeb専門であり、他の分野への汎用性がありません。言語的にも、オブジェクト指向は後付けでしかなく、多くのPHPプログラマはプロセス指向であり、やはりあまり良いプログラムが生産されるとは言いがたい文化圏ではないかと思います。なおPHP向けのRails風のフレームワークなどが登場してきていますが、それを使うぐらいなら最初からRuby on Railsを使えばよいと考えます。

これらの言語は、お客様の要望や既存システムとの兼ね合いなど特別な事情がない限り、自社提案のシステムでは採用しない方針です。

エディタは?

VimかEmacsを推奨しています。特にどちらが好きということもない場合は、Vimを習得して頂いています。

Vimを使えるようになると、より少ないキー入力でプログラミングできるため、圧倒的に効率が上がります。

Xcodeや Eclipse、VisualStudioなどのIDEを使用する場合でも、プラグインを導入することによってVimのキーバインディングが使用できるため、覚えておいて損はないです。(Emacs用のプラグインがありますが、Ctrlを多用するため、既存のショートカットキーとバッティングが発生し、あまり使い勝手がよくならないこともあります)