2015年4月23日木曜日

ARMはじめました

最近、本業が忙しくてブログの更新が滞っている。CPUに、かの有名なARMを使った組み込み系装置の仕事だ。方向性としては、定年後につながる可能性のある仕事なのでがんばんなきゃ!と思い、ARMのことを解説した本を買いに新宿高島屋横の紀伊国屋に行った。以前はここに資料が豊富にあり、事が足りたのだが、いつの間にか組み込み系の本は少なくなってしまったので、しかたなく秋葉原の本屋に移動した。驚いたことに、ARMにも個人の電子工作向け?のDIP-8pinタイプが登場しており、電子工作の本がでまわっていた。ラズベリーパイとかmbedとか名前は聞いたことがあったがそれらもARMとのこと。もはや個人的に組み込み系をやるんでも選択肢はPICだけではなくなったということだ。また、ラズベリーパイにいたってはLinuxも搭載とのこと。もしや、将来、Linuxの内部構造ぐらいは知っていることが組み込み系技術者の常識となる日がくるのだろうか??

そう思っておそるおそるネットで調べてみると、Linuxのカーネルソースを読むのは非常に困難で、誰にでもできることではないとのことだった。・・・なるほど。

ともあれ、本業をそっちのけにしてまでC#をやるのは本末転倒なので、しばらく本業をがんばることにし、ブログ内容も当面、組み込み系に方針変更するかも。結局、仕事と関係の薄いことをやろうとしても、、時間不足な上に必要にぜまられていないのでモチベーションも高まらないという制約がある・・という好例でなった。

さて、携帯はとうとう新SIMが来て、すこしずつ新機能を使い始めている。申し込みをしてから一週間後のある朝、10時頃圏外になり翌日の10時には新SIMが郵送されてきたので、通話できなかった期間は24時間程度だった。その携帯のCPUもARMなんだよね。

2015年4月11日土曜日

プログラミング言語の入門書を選ぼう

過去、C#の勉強をしたことがあるが実は教本選びに失敗して一回挫折している。

入門に使う教本は、当然ながら入門用に書かれた本でなければならない。大筋としては、開発ツールの入手(ダウンロード)→統合環境起動→”hello world”程度の簡単なアプリケーションの作成→だんだんといろんな機能を紹介する といった流れで記述されている本だ。ところが自分はページ数が多い方が丁寧に解説されているんだろうと思いこみ中身を確かめず買ってしまい、ふたを開けてみれば全機能を羅列した百科事典みたいなやつで勉強にならなかったのだ。そこでめげずに違う本を買うべきだったのだが、大枚はたいた後だったので、他の本を買うのが悔しくて買えずENDだった・・。

反省として、
①インターネット上で書評が簡単に検索できるので、ぜんぜんだめと書かれているものは除外する。
使用する言語処理系がCDで付属していることを確認する。入門書で使用するコンパイラのバージョンが古くて入手不能なものやコンパイラのインストール自体が困難なもの(GCC系のものに多いので注意!!)はやめたほうが良い。 書店には、そういう詐欺みたいな本があたりまえのように置かれている場合がある。ひどいものになると、統合環境の使い方はオンラインヘルプなど別なものを参照してくれ なんてのもある。統合環境が複雑でその解説が重要なのに!!

上記①と②は必須である。
さらに

③実物がたくさん並んでいる書店へスマホ持参で出向き、書評を確認したり言語処理系が添付されているかどうかを確認しながら、じっくり一時間程度は立ち読みし、内容をよく確認する。
 
それでもはなっから読者をだますつもりで書かれているものは一時間ぐらい立ち読みしてもわからない場合もあるのだが・・
 
④テキスト選びに失敗したら、さっさと古本屋に売り払い、別なテキストを買いなおす。いちいちめげない。テキストへの投資は結局数万円程度かかることを覚悟する。
 
また、お目にかかったことはないが、個人的に買えないような高価にものも困る。ちょっと脱線するが、かつてC++の勉強をしたときも、色々な困難があったが、
①オブジェクト指向の機能が複雑で覚えるのが大変。
②しかもウインドウを制御をする仕組みが難しい。OSから受信したメッセージを処理するとか。
③MFCをおぼえるのが大変(MFCの仕様が必ずしも適切でないことが関係あり)

とどめに、DRAWイベントを受信したら、アプリケーションの再描画を自分でやらなければならない。ということがわかって、そんなのやってられるか!!と腹を立ててしまったのだった。

継承とかカプセル化などのオブジェクト指向の文法は難しく、まじめにそれを解説をすると何百ページも費やしてしまうので、サラッとしか解説しない本もある。これはオブジェクト指向の言語に共通する問題だ。

とする。C#のテキストを買いに行こう。

2015年4月8日水曜日

勉強する言語を選定しよう

まだiPhone→Android切り替え作業中だが新しいSIMが来るのは一週間先と連絡がきたので他のことをやろう。

以前の投稿したように、趣味・仕事どちらでソフト開発するにしても、WEB系、Androidスマホ、パソコン系の全てで、入門レベルで良いからソフトを開発しておいたほうが良いし、特にパソコン用ソフトは、仕事では簡単なツールを自作することは多々ある・・にもかかわらずウインドウが出るソフトは作れなくなって久しく、早急になんとかしたいと思っている。今回は、今後勉強するパソコン用の言語を選定してみる。

実はこのブログを立ちあげる際、まっさきに、今どんな言語が人気があるかネットで調べたのだ。

旧世代の遺物のように思われたCOBOLですら、いまだに過去の資産のメンテのためにバリバリ使われているときく。だからC言語だってすぐにはなくならないさ・・と思いつつ、ネット上で各言語のシェアを調べてみて・・驚いた。

TIOBE Softwareから、2014年12月のTIOBE Programming Community Index (PCI)が公開された。TIOBE PCIは、複数の検索エンジンの検索結果から対象となるプログラミング言語がどれだけ話題になっているかをインデックス化したもの。2014年12月にお けるインデックスは次のとおり。


順位     プログラミング言語     インデックス値     推移
1     C     17.588%     ↓
2     Java     14.959%     ↓
3     Objective-C     9.130%     ↓
4     C++     6.104%     ↓
5     C#     4.328%     ↓
6     PHP     2.746%     ↓
7     JavaScript     2.433%     ↑
8     Python     2.287%     ↑
9     Visual Basic .NET     2.235%     ↑
10     Perl     1.826%     ↑
以下略

C が一番上?! しかも、C++やc#を抑えて?! 信じがたい。いや上記は検索された言語であって、コーディングされた量ではないし新規システムで採用された本数でもないから、それこそCOBOLみたいに過去開発されたソフト=レガシーのメンテとしての需要が多いということか?
 自分は20年以上、ワークステーション(死語?!)や組み込み系プログラマとしてCとアセンブラを使ってきたがウインドウを制御するプログラムを作るには向 かないし、WEBプログラミングもできず、不便に思っている一人だ。やがてC++やC#などに取って代わられ、ゆっくりとシェアは低下していくのだろう。それでも一旦デファクトスタンダードになったものは簡単にはなくならないのだろう・・と思っていたから意外だった。
調べた見たところ、ここ10年ほど、1位Java、2位Cの順だったのが、最近入れ替わったのだそうだ。Javaは仮想化された環境で動作するものなので、コンピュータがどういう仕組みで動作しているかを理解するのに向かないので、コンピュータの仕組 みを理解するためにC言語は学習される場合があるとのことだった。

 C#とJavaは習得しやすく人気がある。
日経XXなどみてもC#は推薦されている。社内での物件でもC#が増えている。ちなみにJavaもウインドウが表示可能で学習が容易、そしてWindows上で動作可能だが、Windows上のアプリ開発ではC#の方が便利だとのこと。


Objective-CはiPhone用なので自分には無関係だが、最近ではSwiftに置き換えられている。VisualBasicは6.0は 仕事で使ったことがあり、EXCELではVBAと名前を変えて使われているが、.NETとの互換性はなく、どちらかというとC#に近いのでC#をやればよ い。その他のWEB系言語(PHP,JavaScript,Python,Perl)はJavaをやった後で考えればよいと思う。


というわけで勉強する言語の優先順序は、まずC#、次がJava とする。
中だるみを防ぐため、学習期間一か月と決めているので、一か月でできる程度のことをやってみよう。JavaやC#をマスターした後にはまた違う視点から作成が立てられるかもしれない。



C++について少し書いておこう。
C++はいまだに重要な言語ではあるが習得が困難なので安易に手を出すべきではないと思う。
過去社内で、C++を使っているプロジェクトを横目で見ていたが、習得するためには血反吐を吐くような厳しいOJTを乗り越えなければならないイメージがあった。個人的にも何度かC++の勉強をトライしたことがあるが失敗に終わっている。あれから大分たったので、多少は状況は改善されているんじゃないかという望みももっていたが、ネット上で調べると今でも相変わらずのようだ。仕事で仕方なく覚えるのでも困難なものを趣味で覚える場合、時間不足という制約も追加されるので、ますます困難だ。

 C++をマスターするには他の言語を覚えるとの違い、テキストを読んで自習するとか"がんばる"程度の根性論では無理で、何か作戦が必要なのだ。本件、別な項に自分なりの作戦を記述しておいたので参考にしてほしい。

しかしながら、100人に一人になるためには、なにかしら困難のあるものをやり遂げる必要があるので安易にできないと言うべきではない。

機能を競うならC#でも良いだろうが、性能を競う場合は習得が困難なことで有名なC++をマスターする必要があるだろう。特にフリーソフトの世界は競争相手が非常に多くレベルも高いと予想する。
念のため、自分が日常的に使用しているフリーソフト・シェアウエアの記述言語を調べてみた

・秀丸→ 非公開。ちなみに、これなしには仕事が成り立たないぐらい毎日使い込んでいる。
・FireFox→ C++
・7zip→ C++
・WinMerge→ C++
・Linux→ C
・Tera Term→  ほとんどC,一部C++
だいたい予想通りだ。考え方をガラッと変え、性能は競わない分野で、C++以外の言語を用いてできることを探すという手もあるが・・。


最後に、
世界で最初のCの教本の共著者であるコンピューターサイエンティスト、ブライアン・カーニハンによれば

「大抵の言語は死に絶えることはない。少なくともある一定のレベルまで受け入れられた言語は死に絶えない。今でもCは他の言語より特定の問題を解決するのに役立っており、無くなることはない」

という言葉がある。いや、いつかは無くなるんじゃないの?などと思ったりもするが。

以上

2015年4月6日月曜日

iPhoneからAndroidに機種変更しよう!! Part 1

前回までで、iPhoneは仕事と無関係な上、趣味でもソフト開発不能のため落選と決まった。偶然だが今iPhoneを使っていて毎月の利用料金が高いので格安スマホ(=Android)への乗り換えを考えていた矢先だったので、早速切り替えることにした。

とある予定の無い日曜日の午前中から作業開始。
事前に、格安スマホに乗り換えたほうが良い人 の条件に合っていることは調査済み。
その条件とは・・
(1)電話をほとんどかけない
 音声はほとんど使っていない。

(2)毎月のデータ通信量が少ない
 毎月のデータ量は2GB以下。

(3)キャリアサービスを使わない
 キャリアメールは使用していない。SMSは使用しているがこれは格安スマホでも使えるとのこと。

(4)機種の性能にこだわらない
・今使っている端末より劣るのはいやだなぁと思っていたが、それは問題なさそうだ。

また、日ごろiPhone使っている機能もAndroidで使えるか確認した。
インターネット(WEBブラウザ)→OK
・メール(SMS)→OK
・Google検索・Gdrv・Gmail・Map→OK
・Line→OK
・twitter→OK
・時計・アラーム
・音声通話→OK
・youtube→OK。むしろ対応アプリがたくさんありすぎてよくわからないが。
・カメラ
・メモ帳
・その他いくつかのアプリ

自作アプリが実行可能であることも確認した。安い端末ではできないなんてことになったらシャレにならない。これはDropBoxが使えればできるらしい。パソコンと手持ちのiPhoneにインストールしてみたが問題なく使えた。

ハード的なスペックも今使っているiPhoneと比べて劣るものではないと判明
ディスプレー解像度 1136x640ドット→ 1280x720
CPU                         デュアルコア1.25GHz→クアッドコア1.3GHz
ROM/RAM                16GB/1GB→8GB/1GB
カメラ(アウト)             800万画素→800万画素
Bluetoothe                Ver4.0
GPS                         搭載→搭載・・いや、GPSの性能ってチップによりまちまちだけどね・・
Wi-FI                        IEEE802.11 a/b/g/n→ IEEE802.11 b/g/n
                   ”IEEE802.11a”がなくなったが、古い規格なので問題なし
バッテリー容量 1507mAh→2300mAh

携帯番号を移行するためSoftbankに電話した。回線が混雑していて15分ぐらいまたされた後、ようやく係と話ができたとおもったら途中で切れてしまい、もう一回。結局1時間ぐらいかかってしまった。その他の注意事項も頭に入れた後、夕方から電車に乗り新宿の大型量販店へ乗り込んだ。

事前に買う機種は決めていし店頭で確認したことも洗い出していた。
・文字の打ちやすさ
・動作の滑らかさ
・持ちやすさ
   いずれも問題なし。なのに係員に買うことを告げるまでに15分ぐらいためらってしまった・・

・今使っているiPhoneのデータのAndroidへの移行
  アドレス帳しか移行できない上に1500円かかるとのことだったので、まず自分でやってみてだめならお願いすることにした
・iPhone下取り価格→値がつかないとのことだった・・
・カバー→取り扱いなしとのこと。

購入し終え、寄り道せず即座にかえる。なんとか今日中にSIMの購入手続きをし、Wi-Fiの設定までしたい。SIMは無くてもWi-Fiは接続できるんだろうな?

家に戻ってきて一休みしたら、SIMカードの購入にかかった。
SIMカードは端末を購入した店ではデータ通信専用のしかなく、音声がまったく使えないのは不都合だったのでネット通販で購入することにした。またガイドブックに紹介されていたIP電話(050Plus,楽天でんわ)はいずれも回線品質に問題があり評価が低いのでNG

通常回線での着信があった場合は無条件で050plusの回線は途切れるのでご注意を!
ということで、「050plus」は評判通り音質が悪いので、無料期間中はイイですが課金
されるタイミングで解約するのがベストでしょう!

・・それってダメってことじゃないか。

続いて自宅のWi-Fiを設定した。久々だったので少し手間取ってしまったが開通した。
続いてGoogleやTwitter,Facebookのアカウント設定をした。

今後の課題
・iPhoneのデータの引き継ぎ
  可能ならアドレス帳以外のものもバックアップを取りたい。フリーソフトで可能らしい。
・SIM到着後の電話の開通
・知人・友人らへ端末が変わったことを連絡するなど?

夜、Wi-Fi開通を記念しネット配信の動画を見て、寝た。

以上。疲れた

2015年4月4日土曜日

今、自分に何ができるか・何をすべきでないか

これまで、ソフトの実行環境として、パソコン・WEB系・スマホ・組み込み系があることを述べた。定年までにそれら全部をマスターしておけば万全だが、時間も金も能力も有限で、無理なことは明白だ。そこで今回は、マスターできる見込みがあり、定年後の趣味や再就職に役に立つものが何かを考えてみる。

評価ポイント
・開発マシン:自分としては使い慣れたWindowsが好ましく、次点Linux。
・開発ツール:何よりも開発ツールは個人で入手可能なものであること。個人向けに販売されていないものや個人で買えないほど高価なものはNGだが、後に取り上げる開発ツールは無料で入手可能なので問題ない。
・将来性:将来、廃れているものはNG。
・自分の仕事や強みとの関連:過去の経験上、仕事と関連がある方が習得が容易である。逆に仕事と全く関係がない場合、いったん覚えても忘れてしまう可能性すらある。また、自分の強みは組み込み系OS・ドライバ・ハード回りなのでそれと関連するものはポイントが高い。
・競争相手が少ないこと
  趣味でも仕事でも、「他に人がまだ作っていないものを作る・他の人が作れないものが作れる」ことが重要だ。結果として、競争相手が少ないカテゴリを選ぶことは重要となる。

また、趣味で作る場合に限って言えば
・作りたいソフトがあること
・出来上がったソフトを世間に公開する場があること

以上を踏まえて選択肢を評価していくと

(1)スマホ
スマホにはiPhoneとAndroidがあるが、iPhone用アプリの開発をするには開発マシンであるMACを持っていない・未経験な独自OSと独自言語を覚えなきゃいけない・仕事と無関係。スマホの将来性は有望なものの、iPhoneは廃れていたり技術の変化が激しくて追従できない可能性があるなど、自分には不利要因が多いので、iPhoneは完全に落選となる。簡単なものを何かつくりたくてもスタートラインにすら立てない。
同じスマホでもAndroidだと状況はマシになる。開発マシンはWiindowsでOK。OSは組み込み用として業界標準のLinuxがベースとなっており、自分も若干経験がある。また、Linuxの世界はオープンソースで、OSやドライバをカスタマイズする話は良く聞くので、自分の強みを生かせるかもしれない。言語は未経験ながら業界標準のJava。Androidも将来的には廃れてしまうリスクはあるが、それでもLinuxとJavaは業界標準なので覚えるメリットはある。できて間もないカテゴリなので、競争相手は比較的少ないと予想する。
趣味で開発する場合、今現在は特に作りたいものがないが、作ったソフトは世間に公開する手段があるし、Androidスマホに入れておけばいつでも他人に自慢できるかと思うとそれも愉快かもしれない。
しかしながら、Androidアプリ開発入門の本・記事を見てみると、Javaの基本的な知識は持っていることが前提となっているようなので、まずPCブラウザ上でJavaを勉強すべきだろう。

(2)WEB系
開発マシンはWiindowsが使えるから問題なし。言語はたくさんあるが第一にはJavaを勉強することになるだろう。しかしながら自分の仕事や強みとは全く縁がない。特にJavaの場合、仮想マシン(VM)上で動作するため、ハード周りを意識することはないだろうし、VM用のドライバ作成もないだろう。しかも競争相手は多い。以前にも書いたとおり、定年後の仕事でWEB系をやることはありえないだろう。
将来性については、シェアは増加方向だが、主な用途は業務系ソフトなので、このカテゴリで100人に一人になる策は想像もつかない。しかしながら前にも述べたようにAndroid用のソフト開発につながる可能性があるのでPC上でJavaを勉強しておくことも有意義であろう。
趣味での開発と考えると、今現在はつくりたいものはない。作ったものを世間に公開する手段は未調査。

(3)パソコン(PCアプリ)
パソコン用OSとしてはWindowsまたはLinuxの二つがあるが、Linuxについては不勉強なのでWindowsに絞って評価する。開発マシンはWiindowsで問題なし。将来性は、シェアは下がるものの2025年まではなくならないだろう。開発ツール(言語)は豊富だが、何を選択すべきかは熟慮する必要がある。自分の仕事は組み込み系でありパソコン上で動作する製品の開発はないが、開発能率を上げるため簡単なPCツールをが自作できたらなぁと感じることは多々ある・・にもかかわらずウインドウが出るソフトは作れなくなって久しく、早急になんとかしなきゃならんと思っている。(以前はVBとかC++Builderで作っていた時もあったのだが・・)
ただし、自分との強み(OS・ドライバ・ハード周り)との関連性を見ると、ハード周りはアクセスできず、OSはブラックボックスで手出しできない。ドライバ作成は不可能ではないが、非常に困難なことで知られているので、100人に一人になることはきわめて困難だろう。

趣味でPCアプリを開発する場合フリーソフトのように、出来上がったものを公開する場はある。ただし、パソコン用のフリーソフトの世界は競争相手は非常に多くレベルも高い。直感だが、習得が困難で悪評高いC++を習得しないと、張り合えるものは作成できないだろう。C++の勉強は個人的に何度かトライしたことがあるが失敗に終わっている。また作りたいものは今のところ思いつかない。
早急にウインドウが出せる言語を習得したいということと、時間はかかっても良いからC++を習得したいという矛盾については、今後策を考えよう。

(4)組み込み系
自分の仕事自体が組み込み系主体なので、この方向で再就職口があればベストだ。また少しだが趣味でHWを開発した経験もある。開発マシンはWindowsが使用でき、言語は自分には使い慣れたC言語とアセンブラ。カテゴリ自体も消滅する危険性がない。少子高齢化で若者が少ない上、ハードに詳しい技術者は減っていることを考えると、このカテゴリでなら100人に一人を目指すことも不可能ではないと思う。その場合、ソフトの開発よりもハードの勉強に重点をおくことになるだろう。
反面、趣味で組み込み系ソフトを開発するには不利な面も多い。たとえば組み込み系用のフリーソフトって聞いたことがない。これは物件毎にハードが異なることが原因だ。また、自分はハード設計のプロではないので、趣味で組み込み用のハードを作成することも困難だ。ちょっと以前なら”不可能”だったが、最近ではPICという、外部に簡単な回路をつけるだけで動作可能で安価な組み込み用CPUがあり、簡単な回路は自作したことがある。ネット上ではPICを使用した電子工作例がたくさん検索できるので、それらを参考に、理論的には多少怪しくとも,回路を作りソフトを作成することもできなくないだろう。しかしながら、世間様に公開できるクオリティのハードを作るのは困難だろう。

また、以前述べたような「ライフワーク的な壮大なテーマを一つ持っていて、長期間作り続ける」ためには必然的に巨大なソフトを動かせる環境でなければならない。つまりROM/RAM領域も大きくなければならない。 ちなみに現時点で一番メモリ容量が大きいPICはPIC32MXでROM512KB,RAM32KBで、メモリ容量は今後さらに大きな製品がでることが期待できると思う。ソフトが大きくなってメモリが不足するよりも前に自分のハード設計能力不足に苦しむだろう。

今なら聖地・秋葉原にも近いので部品の調達も簡単。
そういえば作りたいものもいくつかある上に本もたくさん買い込んでいた・・・

というわけで、まとめると
自分が勉強できるソフトの実行環境は、パソコンかWEB系かAndroidスマホか組み込み系であり、iPhoneは失格。
・Androidをやる前にPC用のブラウザ上でJavaをマスターするべき。
・仕事との関連の強さでは、
   組み込み系>パソコン>>Android>WEB系 

・将来100人に一人になれる可能性
   組み込み系>>Android>パソコン>>WEB系

また、趣味・仕事どちらでソフトを作るにしても、WEB系、スマホ、パソコン系とも、入門レベルで良 いから広く浅くソフトを開発しておく必要があるだろう。面白そうだからという理由もあるが、仕事で再就職先を見つける際、職歴を尋ねられて、組み込みオンリーだというと、業界の進歩に取り残されているんじゃね?と思われて 不利なはずだからだ。あと、将来をもっと正確に予測するためにも、それらの知識を有しておくべきだ。ザックリだが、どれも一ヶ月ぐらいをメドに入門書を買ってやってみるべきか。一ヶ月以上ということになると中だるみする可能性がある。

ただし、入門レベルを超え、エキスパートを目指す場合、仕事とは別に余暇を利用して勉強するスタンスでは、時間不足という大きな制約があるので、それ専門のプロには太刀打ちできないことを肝に銘じておく必要がある。可能なら、ある程度作れるようになった後は、自分から希望してその方向のソフト開発プロジェクトには入ることを提案したほうが良い。また、仕事でやるようになった後も、自分の強みである、組み込み系・OS・ドライバ・ハード周り とリンクした展開にできるようにすべきだ。つまり、パソコン+組み込みとか、WEB+組み込み、スマホ+組み込み など。

ともあれ、手持ちの情報が少な過ぎる。趣味でソフトを作るにしても仕事で作るにしても今より情報をもっと集め、じっくり考える必要がある。
 以前は日経XXとかインターフェース誌とか一生懸命読んでいたのにやめてしまったが、もう一度読んでみよう。
・平行して、WEB系、スマホ、パソコン系とも、入門程度の開発を実施する
 新しい言語を勉強し、何本か小さいソフトを作ってみる。

情報収集に疲れたら、ソフトを作るというスタンスだろうか。

 

2015年4月3日金曜日

定年後、どんなソフトを開発しているのだろう? part2 仕事でソフト開発する場合



今回は定年後にまだ仕事でソフト開発を続ける場合について予想してみる。

最近IT業界は深刻な人手不足で、未経験者や経験の浅い技術者ですら雇用されているときく。
以前はプログラマ30才定年説などもあったので定年後もプログラムを作るなんて想像もできなかったが、最近では風向きがかわり、COBOLなど一部分野では50才、60才の高齢プログラマも珍しくないとのこと。うまくすれば自分も定年後もこの仕事を続けられるかもしれない。

ただし、趣味と違って、何を作ってもよいというわけではない。自分でベンチャー企業を起こし新たな技術・分野を開拓し製品を作っていくなら別だが、普通 は世の中で需要のある仕事を受け、消化していくスタイルになる。つまり、定年の頃の世の中の需要を予測し、そちらに向かって進路をとる必要があるというこ とだ。
では10年後、IT業界はどうなっているのだろう?
自分などは、まず、この業界自体が消滅する可能性はないのか?と疑ってしまうのだが
ネットで検索すると、IT業界自体は10年後も発展しているし、なくならないらしい。

でも、ちょっと前までプログラマ30才定年説とかオフショア開発によって業界自体が縮小するなんて言われていたじゃないか。それらはどうなってしまったんだろう?

プログラマ30才定年説は、wikiによれば

俗にIT土方とも呼ばれデスマーチと なった場合は徹夜が続いたり体力が必要となってくる。そのため、プログラマとしての限界は30~35歳前後であるという説が存在した。これは「プログラマ 35(30)歳定年説」と呼ばれる。現在では経験豊かなプログラマにも一定の需要があり、プログラマ定年説はもはや過去のものとなっている


また、オフショア開発が普及しない理由は ”「品質の悪さ」に尽きるといえる”とのことだ。
やっぱりか・・という気がしてならない。

http://itpro.nikkeibp.co.jp/article/COLUMN/20130712/491006/?ST=china&P=1

他の記事では、言葉の壁があって、日本の物件は中国やインドに出すのは難しいという意見もあった。

少し脱線するが、10年後に消える仕事に関する記事もあった。人工知能=コンピュータにとって換わられて消える職種がかなりあるらしい。

幸いなことにこのリストにはIT業界は入っていなかった。20年ほど前、将来、プログラムの作成自体もコンピュータがやるようになってプログラマは不要になるという説があったが、まだ大丈夫なようだ。

つい先日ホーキング博士が、人工知能について、

「人工知能が自分の意志をもって自立し、そしてさらにこれまでにないような早さで能力を上げ自分自身を設計しなおすこともあり得る。ゆっくりとしか進化できない人間に勝ち目はない。いずれは人工知能に取って代わられるだろう」

と語っていたが、それが現実になってしまうのか・・・

話を元に戻すが、IT業界自体は10年後も発展しているし、なくならないらしい。
ただし、定年を迎えてしまった高齢なプログラマを雇ってもらえるとは限らない。これについてはネットをいくら検索しても確たる答えは得られなかったので、自分なりに考えてみることにした。

先に述べた最近のIT業界の人手不足の原因は以下のとおりだ。
(1)スマホやタブレットが普及してWEB系ソフトの仕事が急増した
(2)2015年から2017年ごろにかけて大型プロジェクトがピークを迎える。これはIT業界では2015年問題と呼ばれている。
「2016年までは大型案件が続くため、多くの企業が人材不足を感じているようだ。しかし、それらが完了した2017年以降、「技術者のだぶつき」が発生する可能性についてはあまり議論されていないようだ。」とのこと

(3)少子高齢化+IT業界全体がブラックという悪評が定着し、IT業界に就職する若者が減少している
(4)若者の離職率が高い。業界全体に新人を育てず、使い捨てにしているor育てようとしてもすぐに転職しちゃう
(5)以前はオフショア開発とかも騒がれたことがあったが、言葉の壁などで成功していない
(6)これまで不景気のため仕方なく非正規労働者として安くこき使われていた技術者が、景気回復により、非正規労働者として働かなくなってしまった。

と いうわけで、WEB系は好調なようだ。つい最近Facebookの社長だか会長が、プログラミングを覚えれば一生仕事には困らない なんて甘いことを言っているのもみかけたが、これも良く見るとWEB系のプログラミングができるなら・・という話だった。しかしながらネット上では、「人材不足であって人手不足ではない。仕事できない人は余っている。」とか「単に低賃金で働いてくれる人 が少ない という意味では?」という意見もあるので注意は必要だ。

これに対して自分のキャリアだが、過去、組み込み系のソフト開発を主体にしてきており、強みはリアルタイムOSの仕組みを熟知していること・ドライバ作成・ ハード周りに強いことなどだ。今後の仕事も組み込み系だろうし、WEB系はカラッキシだ。今後、忙しい仕事の合間を縫って WEB系の勉強をすると仮定したとしても、並ぐらいにはなれても、武器になるレベルに達することは困難だろう。つまり、自分の定年後の仕事としてはWEB系はあきらめるべきなのだ。

また先に述べたように、未経験の人材でも雇ってもらえ るってのはおそらく若い人だけなので自分は当てはまらないだろう。そう考えると、組み込み系以外の仕事をとることは困難になる。では組み込み系の将来はどうなっているのだろうか?先細っていくのだろうか??

もしかすると組み込み系のシェアは増加傾向かもしれないが、定年を迎えた年寄りは雇ってもらえないかもしれない。残念ながら調査不足でそこいらへんはわからなかったが、上記(1)~(6)を元に想像力を働かせて推論すると、

・まずスマホ・タブレットの仕事が増えることは組み込み系とは関係がない。
・組み込み系でもPICなどを使用した小規模な製品は減り、ラズベリーパイに代表されるLinuxボードのシェアが増加しする
・2015年問題は一時的な話で、それ以後はまたしても技術者のだぶつきがあるかもしれない。
・IT業界の評判が悪くて若者が敬遠していても、他の仕事もなければ若者も仕方なく戻ってくるんじゃなかろうか。
・少子高齢化と若者の離職率が高い件は組み込み系にも関係がある。これに加え、幸か不幸か最近ではハード回りに詳しい技術者は減少傾向なので、高齢でも技術力があれば再雇用される見込はあるんじゃないかと思 う。

10年後にこの業界がどうなっていか・自分はどんな仕事をしているべきか・自分がどう在るべきかを予想するのは難しいが、高齢なのにクビにならず、まだしぶとくこの仕事を続けているとすると、高い経験と技術を武器に仕事を進めているはずである。いくらIT業界が人手不足といっても、未経験の新人と同じレベルのソフトしか作れないようでは雇ってもらえないはずだ。だから経験と技術を武器にできるような分野を目指す必要がある。
ある本の受け売りだが、
・100人に一人になれることを目指す。他人と同じことをやっていたのでは生き残れない。

うーん、難しいなぁ。