九州のベンチャー企業で、システム屋をやっております。「共創」「サービス」「IT」がテーマです。

戦略的言語とは

»

勝ち逃げ先生のコラム

稼ぐエンジニアは知っている!戦略のキホンのキ

のコメントに、
「面白いコラムでした。勝ち逃げ先生の戦略では、どの言語が狙い目と
 お考えでしょうか?」
という投稿がありました。このコメントにコメントしたかったのですが、
話が長くなりそうでコメント欄を荒らしそうだったので、コラムとして
別出しにしました。

このコメント主さんがどのような方で、どのような意図で質問をされた
かはわかりませんが、もしかしたら若きエンジニアが将来のことを考え
たいのではと思い、経験談を少し。

2000年頃、予算額100億円の大規模システム開発に携わりました。
企画、構想段階からの参画のため、アーキテクチャを検討し開発言語を
決めなければなりません。時はVB全盛期。その手軽さ故、技術者も多く、
コスト的、生産性にも有利です。しかし一方でランタイム問題というも
のがあり、OSなどのバージョンが上がるたびにVBアプリは動かなくな
るため、3000台のPCすべてにランタイムを入れなおさなければなりま
せんでした。そこで、"Write once, run anywhere" を標榜していた
Javaを採用することにしました。ところがJavaで開発したアプリは、当
時のPCスペックが低いこともあり、非常にもっさりと動作し、VBアプ
リを使い慣れていたユーザには不評でした。
加えてアプリの配布を集中管理して効率化しようと、Applet形式にして
いたのですが、これもまだ社内ネットワークが貧弱であったりセキュリ
ティシステムと相性が悪く、うまくいきませんでした。
そこでアーキテクチャを見直し、当時はまだ珍しかったサーバサイドJava
でのWebシステムに変更しました。Webシステムなので操作性は貧弱に
なりますが、そこは業務系システムと割切り開発をつづけ、無事カット
オーバーすることができました。
このシステムは20年たった今でも現役で働いております。

次に2007年頃、自社商品システム開発の企画に携わりました。この頃
になるとWebシステムの認知は上がってきたのですが、まだシステム
は社内にサーバをたてLAN上で使うことが主流でした。しかし商品は現
場作業を行う企業向けなので、屋外で利用することが前提となります。
そこでアーキテクチャはサーバサイドJavaを使ったWebシステムとし、
レンタルサーバーを借りてインターネットを経由して利用できるように
しました。ところが利用現場はやネットが使えるとは限りません。携帯
電波も入らない辺鄙な場所もあるのです。そこで付属機能としてPCアプ
リも提供し、スタンドアロンでも動作するし、ネット環境に入るとサー
バと通信を行って同期をとる、という仕組みにしました。そして、この
PCアプリはC♯で開発しようとしたのですが、この選定に会社から待った
がかかったのです。曰く、「サーバ商品とスタンドアロン商品で言語を
変えるのか?(統一しろ)」
Javaアプリがもっさりとしているのは先の大規模開発で経験済み。サー
バ側を.NETに統一するという案もありはしますが、そうなるとサーバ
OSなどをWindowsにしなければならなず、オープン系が使えるJavaよ
りコスト高になってしまいます。ということで、クレームは聞かなかっ
たことにしてJava+C♯で押し通し、商品開発を継続しました。この商品
も今でも現役で、時代の流れ乗ってHT版機能や、携帯、スマホ、タブレ
ット、クラウドなどとバリエーションが増えております。

言語にはそれぞれ成り立ちや特徴があります。したがって、開発される
アプリやシステムが、どのような用途のものかによって、使われる言語
が決まります。このことを踏まえると、どの言語を習得するかは、何を
開発したいか、ということから考えるのがよいでしょう。

また、市場の観点から考えることもできます。新規開発案件ではほぼ採
用されることはありませんが、既存システムの保守という観点からは
COBOLの技術者も需要があります。意外とまだVBアプリを捨てきらい
ない企業も多く、その保守や機能拡張のためVB技術者が重宝されてお
り、そのニッチに特化したVB専門の開発会社もあると聞いたことがあり
ます。ただ、そこの技術者は皆、高齢で自分達が働けるだけ働ければよ
いと考えているようです。もし、このような専門家者に何も知らずに新
人がはいると不幸かもしれません。

加えてWeb系業務システムは一つの言語だけでは成り立たず、例えばメ
インのJava、DBアクセスのSQL、画面のHTMLやJavaScriptなど複数
の言語を使いこなす必要があります。まあ、商品開発時にJavaで統一し
ろと言われたのですが、そもそもWeb系は複数の言語で統一されている
わけなので、C♯ひとつ増えたところであまり関係ない気がします。

周囲の技術者を見ていても、マルチンガルであることはそんなに苦痛で
はないようです。必要に応じて、言語を使い分けていく。一つの言語を
習得したのちに、バリエーションを増やしていく、という考え方もあり
ますがWebシステムは前述の通り複数の言語がセットなので、それらを
並行して身に着けてゆく、という考え方でもよいのかもしれません。ひ
とつのシステムを構成する複数の言語は、それぞれ用途が違うものなの
で。あとは、C言語だとメモリ管理や、Javaだとオブジェクト指向など、
言語の習得に加え、その周辺の知識も身に付けていくことも大切です。
ただの単語や文法の違いだけではなく、その背景を知らないと、良い作
文はできないので。

とりとめのない話になりましたが、今回はこの辺で。

Comment(4)

コメント

DxD

最近「良い言語とは乗り換えやすい言語である」と思うようになりました
これ「に」乗り換えるんではなくこれ「から」乗り換えやすい言語です

例に上がっているJAVAもそうなんですが、メジャーアップデートで切り捨てられる機能にがっつり依存してたりすると、結局乗り換えるのと変わらないコストがかかってしまいます
乗り換えないとWin10の時よろしくセキュリティガーと「脅迫」してきますからね

末永く使える言語・環境なんて今は存在しないと思うので、脱出しやすさと言いますか広義でのロックインをしない方向で考えた方がいいように思います

おたみ

ズレたコメントと知りつつもあえて。。。


鍛えておいて一番損のない言語は「自然言語」かなと。


日本国内で仕事をするならもちろん日本語でのコミュニケーションは必須で、OSS のドキュメントなどは英語が大半なので英語の読解ができれば有利。
海外を視野に入れるなら英語での会話や作文も必要になるでしょう。


開発言語を何種類扱えても、仕様の伝達/確認など意思疎通がしっかり行えないと炎上の確立が上がるんじゃないかと思います。

コメントを投稿する