2016年1月27日水曜日

楽に自己啓発を続ける仕組みを考えよう

今日は比較的早く帰って来れたのでインターフェース紙を読んだりC#の勉強をしている。
ついでに体力アップのために少しジョギングもできた。

しかし毎日クタクタになるまで仕事でコキ使われた後、ヘトヘトになった状態で帰宅してから新しいことを勉強するのは大変だ。そんな毎日でもできることって、下記のようにものだろうか?

・仕事の合間のスキマ時間にできることをする

・そもそも楽しくて、やりたくてやりたくてしょうがないことをやる。

そんなものがあるかといえば、ある。
ひとつは筋トレで、スクワットなどすべきかもしれない。
それとラズベリーパイだ。

過去のブログで、今の仕事の改善にはならないが10年後を見越してLinuxの勉強をするとか大きなことを言ってしまったが。さっさとラズベリーパイをいじったほうが楽しく勉強できるかも?
しかも今月号のインターフェース紙ではマイクロソフトもラズベリーパイ上で動作する環境を提供するとのこと。メニュー画面、Visual Studioで作成できるのか・・これは重大だよ。なにせ今の仕事でメニュー画面の作り方がデータとコードの分離を命題にしたようだが、出来上がったものが糞みたいな代物で、結局デバッガを使って中を必死に追わなければならないので。今のバージョンは使い物にならないとしても、将来のバージョンは期待がもてる。

自分としては、もう一回お金出すから同じような構成でソフトを自作してくれと言われても、もう二度と作りたくないのだ。

2016年1月20日水曜日

長く続けるにはモチベーションが必要

あと10年かそれ以上プログラマーを続けるためには、何よりもモチベーションが必要だと気がついた。具体的な目標やライバルを決め、その方向にガムシャラに突進するような何か。
それは定年までの残り十年をなんとか逃げ切って終わらせるような尻すぼみなものではない何かなはずだ。ではそれは何か?

・うちは下請けの会社で、親会社から、こういう製品を作ってくれと依頼されると作業するだけなので、こちらからこんなソフトを作りたいとか部品を使いたいと提案するのは困難だが、このブログで書いてきたことをまとめるとこの業界は下記のような方向に行くはずなので
少しでもそれに見合うように目標にすべきだ。

高齢なのにクビにならず、まだしぶとくこの仕事を続けているとすると、高い経験と技術を武器に仕事を進めているはずである。いくらIT業界が人手不足といっても、未経験の新人と同じレベルのソフトしか作れないようでは雇ってもらえないはずだ。だから経験と技術を武器にできるような分野を目指す必要がある。

Linuxは組み込み用OSとしては重要な選択肢になりつつある。自分の仕事でも何度か使ってるし、自分の携帯もAndoid=Linuxだ。ラズベリーパイのように安価なLinuxボードも今後どんどん発売されるだろう。

過去、組み込み系ハードは安く・小さくつくるため、最低限の機能を盛り込んだハードを製品毎に設計してきたが、ハードに詳しい技術者やハードに詳しいソフト屋は減少傾向にあり、今社内にいる年寄り技術者達の技術が継承されずに引退したら(その可能性は大だ)、今までの開発スタイルを続けたくとも、できなくなる時代が来る。

これに対しLSIの集積度はさらに向上を続けており、今後ますます小型で安価なLinuxボード(チップ??)が発売されシェアを伸ばすだろう。

その二点から推測すると、将来は組み込み系もLinuxのような汎用的なハードを中核に、周辺に物件固有のハードを付加して製品を製作する可能性がある。 

ということで、めげずに組み込み系をがんばろう。しかしキツイなぁ。

近況としては、あとC#の入門書をみながらサンプルを打ち込んで動作確認しているが時間不足。また一回の勉強時間は2時間ぐらいとらないと・・しかも酒飲んでない状態で。

2016年1月15日金曜日

今の自分の仕事の改善

今、自分の仕事が大変で、嫌になっている。

大まかにいえば他社が作成したソフトの改良だ。元のソフトを作成した他社が廃業してしまったので、仕方なくうちに回ってきたのだ。他社が作成したソフトの出来が悪くて続きの作業を任せられないから改良の仕事がうちに回ってくる場合も多い。

今回の物件は、完全に他社が作成したものではなく、自分が過去に設計・製作に関わった環境を使っていることからお鉢が回ってきたので変にヘコむことがないように心がけたいと思っている。

それにしても、このソフトは下位ドライバは良くできているのだが、その上位のアプリケーション部分のソフトは無駄に大きいし複雑で迷路のようだ。しかもコメントもドキュメントもないに等しい。手探りでソースを調査しながら、少しずつ変更しては動作確認するといった地道な作業だ。


言語はC、OSはμITRON、外部機器との通信はUARTだけなので、このブログでやろうとしている課題(C#,Java,C++,Linux)をいくら進めても今の仕事の能率アップにはならないだろう。将来のことを考えることは大切だが、今の仕事を乗り切ることも同じぐらい大切だ。それには、まったく別な対策を立てる必要がある。いくつか対策を考えてみたが・・

対策1:調査結果はドキュメント化して残す
・テキストファイルでも良い。 またソースファイルにコメントで記入する。ノートに手書き書き込んでも良いが、これは後から検索する際、人力でやらなければならないという致命的な欠点がある。それでもどこにも記録を残さないよりは良い。最悪なのは何も記録を残さないことだ。また最低でも一日一回は30分程度、全コンパイルに時間を費やしているので、その時にまとめを作成する。また全コンパイルはなるべく昼休みなどの休み時間に実施するようにも心がける。

対策2 :エディット時間の短縮を図る
・作業時間に対しソースファイルの編集時間の占める割合が大きいので、テキストエディタなどのマクロなどを作成し、エディット時間の短縮を図る。過去作成したマクロも復習する。

対策3:作業のカイゼンを計る

・比較的長期間の仕事なので、短期間の仕事ではできないようなカイゼン作業に時間を割くことができる。コンパイラの細かい仕様やICEの使用方法をよく調査し、デバッグ時間の短縮をはかるなど。

対策4:体力を維持する
俗に"IT土方"と言われるぐらい、この世界では体力は大切で、体力で乗り切った仕事は数え切れない。
体力の維持に一番効果があるのはジョギングだ。 一日おきに30分~一時間程度、ゆっくりなジョギングをするだけで体力は大幅にアップする。しかし時間がなくてできない場合もある。その場合は筋トレを行う。腕立て伏せ・腹筋・スクワット。特にスクワットは場所を選ばないしウエアも着替えなくてよいからお勧めだ。

しかし、この仕事が定年後に結びつくかという視点が考えると、非常に疑問だといわざるを得ない。
そしてこの仕事のせいで毎日深夜まで残業し、ヘトヘトになって帰宅しているため、帰宅後にも何か勉強するとかは困難だ。

それにしても、自分にしかできない重要なコア技術を持っていれば、この仕事は自分には回ってこなかった可能性があるということをよ~く肝に銘じないといけない。そういうキラーコンテンツを持っていないからこの仕事は自分にまわってきてしまったのだ。「自社(自分)には他社(他人)にないような強みがある」「だから仕事がもらえる」という流れがなければならないのに、今、そうなっていない。

2016年1月12日火曜日

組み込み系とLinux

今年は情報収集の一環として月間インターフェース紙を定期購読することにしたが、ラズベリーパイ関係の情報が多い。(トランジスタ技術とかだとまだPICがでてくるのだが・・)

Linuxは組み込み用OSとしては重要な選択肢になりつつある。自分の仕事でも何度か使ってるし、自分の携帯もAndoid=Linuxだ。ラズベリーパイのように安価なLinuxボードも今後どんどん発売されるだろう。

過去、組み込み系ハードは安く・小さくつくるため、最低限の機能を盛り込んだハードを製品毎に設計してきたが、ハードに詳しい技術者やハードに詳しいソフト屋は減少傾向にあり、今社内にいる年寄り技術者達の技術が継承されずに引退したら(その可能性は大だ)、今までの開発スタイルを続けたくとも、できなくなる時代が来る。

これに対しLSIの集積度はさらに向上を続けており、今後ますます小型で安価なLinuxボード(チップ??)が発売されシェアを伸ばすだろう。

その二点から推測すると、将来は組み込み系もLinuxのような汎用的なハードを中核に、周辺に物件固有のハードを付加して製品を製作する可能性がある。しかしながらLinuxはステップ数が巨大で(それでもWindowsよりは大分小 さいのだが・・)、障害が発生した場合、原因を究明できない場合がある。社内でもLinuxは信用できないし過去Linuxベースで作った製品でもiTRONで作り直したほうが良いという意見するある。そういった点を考えると組み込みに特化したiTRONベースでそういった標準的な製品ができればよかったのだろうが、残念ながら無い。

話がちょっと飛ぶが、今、仕事で過去に作成した製品のメンテをやっているが大変すぎる。アプリとブートローダは分離してあり、アプリはシリアル通信にてフラッシュROMにライト可能だ。アプリ側にはシリアルμITRONが移植してあり、キー入力、LCD表示、EEPROMやフラッシュROMへのリードライトなど多数のドライバやライブラリも作成した。これならどんな物件にも簡単に再利用できるろう・・と自負していたが、今メンテしてみると、ドキュメンテーションが不十分な上ソース中のコメントも不適切でいくら読んでもなにを遣っているんだかわからない。ゴミみたいだ。しかもその製品を改良するような計画はなく、なんとか新機能を追加しなければならない。最近こういう仕事が多い。

こんなことなら上で述べたように、将来はLinuxボード(チップ?)を核に、物件依存の機能を実装したほうがよっぽどよいという考えだってありうるはずだ。

組み込み系の技術を売りにしたい自分としても、いつか、どんな形かでLinuxを本腰入れて勉強する必要があるということだろう。

ではそのためには自分としてはどんな取り組みをするべきか?
・月並みだが、情報が少ないのでLinux関係の本を定期的に読む必要があるだろう。(そんな時間あるんだろうか??)
・そういう面倒なことは省略して、さっさとラズベリーパイをいじったほうが楽しく勉強できるかも?
・またPC上でLinuxを動かし基本操作程度はマスターしておいたほうが良い。

ちなみにLinuxはデスクトップパソコン用OSとしての用途ではWindowsに全くかなわない。我が家でもWindows がサポートを打ち切った古いPC上で仕方なく動かしているだけだ。

それもこれも、まずはC#のテキストを終わらせてからだ。課題、多いなぁ。

2016年1月10日日曜日

EXCELは10年後も残るだろうが・・

以前、仕事でデータ分析用のEXCELシートを作っていて色々調べたのだが、現時点ではEXCELを脅かすような製品はない。昔はビジカルクとかLotus1-2-3とかあったのだが、 全部淘汰されてしまった。マイクロソフトによるOffice抱き合わせ商法とか汚い手段もあり必ずしも正々堂々とした競争ではなかったが、ともあれ、もはやライバルはいない。

強いていえば、最近でぱEXCELの機能の簡略版ソフトであるGoogle Sheetが提供されている程度だ。(ubuntuにもなにかあったように思う)しかしEXCELほど高機能ではなく、EXCELに置き換わるものでもないだろう。
EXCELでつくったシートも巨大になるとメンテナンスが大変で、作成者以外にはメンテ不能で困っているという意見もよくみかけるが、代わりになるソフトがないのだ。

今現在、ライバルがいないということはおそらく10年後も残っているだろうから、マスターしておいて損はないはずだが、社内で見る限り、EXCELのソフトは技術者が個人的にツールやグラフやドキュメントを作るのに使用する程度のツールでしかなく、社外からEXCELシートの開発物件を受注したという話しは聞いたことがないので仕事には結びつかないだろう。

定年後、仕事でEXCELのソフトのメンテをしているかというと、やりたい仕事ではないなぁ・・いやいや、仕事の場合、自分が"やりたいこと"ではなく"できること"が重要だった。よく引き合いに出されるCOBOLの仕事だって、技術者から見れば"やりたい"仕事とは限らないだろう。むしろ、見たくもないがお金のために仕方なくやってるのかもしれない。

定年後、趣味でEXCELで何かをつくろうか・・という話になると、特に作りたいものがない。
いや、全くないとは言わない。住所録や年賀状の作成ツールぐらいは結局はEXCELで
ツールを作ったほうが良いだろうとは思っているのだが・・。

C# 勉強開始

前書きがずいぶん長くなったが、C#の勉強を開始した。

結局、勉強に使ったテキストは、日経BP社の「基礎からきちんと知りたい人のC#プログラミング入門書」を選択した。
同書で使用する言語処理系はVisual Studio2010Expressと最新のものからは大分古いがCDで添付されており、実はダウンロードできないというお粗末なオチはなかった。また自宅PCがにはすでにVisualStudio2013Expressをインストールしているので何か不都合がでたりしないかとも心配したが、問題なく動作した。

まだ最初の数ページしかやっていないが、テキストの通りに入力するとちゃんと動作する。

今回作成したプログラムと その反省
・#if 0の代わりに#if falseや#if trueを使う
・整数型変数に実数を格納するとコンパイルエラーとなる。


--------------------------------------------------------------------------
using System;
using System.Windows.Forms;
//本プロプログラムでの反省
//・#if 0の代わりに#if falseや#if trueを使う
//・整数型変数に実数を格納するとコンパイルエラーとなる。

namespace WindowsFormsApplication1 {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      int i = 1;
      MessageBox.Show(i.ToString());
//#if 0の代わりに#if falseや#if trueを使う
#if true
      Object j = 2;
      MessageBox.Show(j.ToString());
#endif

//整数型変数に実数を格納するとコンパイルエラーとなる。
#if false
      int i = 1.5;
      MessageBox.Show(i.ToString());
#else
      double k = 1.5;
      MessageBox.Show(k.ToString());
#endif
      }
  }
}

2016年1月6日水曜日

不要な本の処分

2016年 あけましておめでとうございます。

年末年始に要らない本を捨てました。
 簡単に捨てられるのは仕事に関係のない雑誌や小説です。
面白そうだから買ってみたけど大して面白くなかったようなものは、すぐ古本屋行きです。

逆に、仕事に関係のあるものは、なかなか捨てられません。
プログラミング言語の入門書のように完全に理解してしまったようなものは捨てる場合がありますが、大半のものは、大まかにしか覚えておらず、だいたいこの本のここいらへんに書いてあった程度に理解したものが多くて、それらはすてられません。完全に理解しちゃえばすてられるんだけどなぁと思うものは多いんですが、そこまで読み込むものは少ないです。

月刊誌で日経PC21みたいなものは情報の鮮度が命なので、一年以上たってしまったものは思い切って捨てますが、月刊インターフェース紙なんかは10年以上も前のものが急遽必要になる場合もありますので、これもなかなか捨てられません。

あと、最近では定年まで10年しかないという気持ちが強くなり、以前念のため買ってみたけど結局やらなかったし、今からやることもないだろうということで捨てる本が増えてきたように思います。これって終活なのかな。

あと、捨てる前にもう一度読み返してみたいが時間がとれない という本も多いですがそういう時間は結局定年までとれないのかもしれませんね。

というわけで今年もよろしくお願いいたします。