弊社のソフトウェア開発で主に使用しているC#には型があります。
型にはメンバー情報や許可される演算の種類など決めることで、
目的に必要な型を選んで使用する事ができます。
コンパイラによってタイプセーフ(型安全)が確認できることも、
大きなメリットですね。

一般的に型とは、何かをつくるもとになるもの、という意味です。
プログラムには開始処理があって、
データを取得する処理、解析する処理、結果を出力する処理、
終了する処理、どんなプログラムでも大きな処理の流れはだいたい同じです。

その処理一つ一つを大きな型として捉えることができるようになると、
プログラム全体を見渡せるようになり、
ステップアップに繋がったように思います。

変換・無変換キー

梅の花も満開を過ぎて、
日中は暖かい日差しを感じる事も多くなってきました。
私も最近、桃の花の枝を買って帰りました。
つぼみが開くのが楽しみです。

キーボードの変換・無変換キーですが、
スペースキーの隣で非常にアクセスのいい好立地にあるのに、
機能としてはいまいちでもったいない感じがします。

私はソフトでキーマッピングを変更して使っています。
例えば無変換キーはこんな感じです。
無変換 + J : カーソルキー左 (連打で高速移動、長押しでHome)
無変換 + L : カーソルキー右 (連打で高速移動、長押しでEnd)
無変換 + I : カーソルキー上 (連打で高速移動、長押しで先頭へ)
無変換 + K : カーソルキー下 (連打で高速移動、長押しで最後尾へ)
無変換 + U : BackSpace
無変換 + O : Delete
無変換 + Space : Enter
などなど。

うまく利用するとマウスへの手の移動が減り、
楽に入力することができます。
道具が自分の手に馴染んでいく感じが心地良いです。

自分の能力を知るということ

要求される内容に対して、
1. そもそも実現が可能かどうか
2. 実現するためにどの程度の日数がかかるのか
プログラミングを始める前に、これらの情報が必要となります。

知識や経験が豊富にあればよいのですが、
自分が今までにやったことがない事だと、非常に苦労します。
これらを見誤ると開発のリスクとなり、
納期などに重大な影響を与えてしまいます。

自分の能力を知るということは、
自分に必要な工数を正しく見積もることができる、
という側面を持っていると思います。

未知の事柄は当然調べなければなりませんが、
調べた結果を自分の知識レベルに落とし込み、
実現までの道のりを描くことができるよう、
意識しながら技術を向上させていきたいと思います。

プログラミング原則

プログラミング原則というものがあります。
有名なものをいくつか紹介します。

KISS
Keep It Simple, Stupid.”
常にシンプルに。
シンプルなコードは理解し易く、メンテナンスが容易です。

DRY
”Don’t Repeat Yourself.”
同じことを繰り返さない。
同じ処理は共通化することでコード量が減り、メンテナンス性も向上します。

YAGNI
You Aren’t Gonna Need It.”
それ、必要にならないよ。
不要なコードはバグの原因になります。書くのは本当に必要なコードだけ。

原則と言われるように、
誰にでも当てはまる基本的な考え方だと思います。
プログラミングとは常に複雑さとの戦いなので、
シンプルなコードを心がけています。

KISSの最後のSが”Stupid”(愚か者)というのは、
ちょっと無理やりな気もしますが面白いですね。

キーボード

社内で使っているキーボードを、新しく買ってもらいました。
今までメンブレンかパンタグラフ式のキーボードしか使ったことがなかったので、
初めてのメカニカルキーボードです。

どれにしようか悩みましたが、
口コミを参考にして、シンプルで掃除のし易いものを選びました。
肝心の使い心地も良く、コードを打つのが楽しくなります。

そのうちに他のキーボードも試してみたくなり、
今度は自宅用に静電容量式のキーボードを買ってしまいました。
コトコトと上品な感じの音がして、
こちらも非常に使いやすいと感じています。

学生の頃、自分に合う書きやすいペンを見つけようとして、
たくさんのペンを買って試した事を思い出しました。
キーボードはペンのように簡単には買い替えできませんが、
毎日手に触れるものなので、愛着を持って大切に使っていこうと思います。

ソフトウェアのローカライズ

ソフトウェアのローカライズとは、外国の言語にも対応することを言います。
弊社のソフトウェアもローカライズを行う場合があります。

英語が主ですがローカライズを行う際、
どのような単語や表現を使うべきか気を付けています。
あまりにも長い単語を使うと、デザイン的にもはみ出してしまったり、
2行で表示されたりしてしまいます。

例えば「輝度」という単語に対して、
一番しっくりくる英単語が「Brightness」だった場合、
英語表示の場合は文字数が多く、
場合によってはスペースが足りなくなってしまいます。

自分のスマートフォンを英語表示に切り替えてみると、
狭い画面の中でどのような表現がされているのかとても参考になりました。
適切な表現とアイコンで、使いやすいソフトウェアを開発したいと思います。

コメントもコードの一部

他者の書いた古いソースコードの修正したり、機能追加をしたり、
メンテナンスする機会がありました。
思った以上に時間を費やしてしまったのですが、その主な原因は、
①処理の大きな流れが見えてこない
②なぜその処理を行っているのかが分からない

というものでした。
時間が経ったり、当事者ではない人が読んだりすると、
その開発者がどのような考えでその処理に至ったのか、
なかなか理解できない事を実感しました。

コードのコメントには「なぜそうするのか」など、
コードからは読み取れない情報を記入するべきだとあります。
一方、何でも書けばよいわけではなく、
余計なコメントは可読性を損なってしまいますが、
それでも無いよりはあったほうが助かります。

メソッドやクラスを定義するときと同じように、
使う側の相手の気持ちになって、使いやすいように、
読み手の気持ちになって、処理の理由がわかりやすいように、
適切なコメントを考えたいと思います。

 

使いやすい携帯端末

電話とメール専用に「Xperia SX」という端末を使っています。
ディスプレイは3.7型で、本体も95gのかなり小さな端末です。
いつか後継機が出たら買い替えようと思いつつ、6年が過ぎてしまいました。

バッテリーも待ち受けだけなら昔のガラケー程度は持つし、
何よりポケットにも無理なく収まるので、お気に入りなのです。
ちなみにその前に使っていたものは「Xperia ray」という端末で、
これも3.3型の小型のものでした。

スマートフォンの機能がどんどん多様化・複雑化する中で、
アドレス帳やスケジュールやメールなどの個人情報、
それに鍵やお財布などの重要な機能は、
その他の雑多なアプリを含む端末とは切り離して所持したいと思っています。

ただ私のような考えはあまり一般的ではないのでしょうか、
小型の端末が発売される気配すらありません。
そろそろ新しいバッテリーの入手が難しくなりそうです…
小型のスマートフォンの発売を切に願っています。

RS-232C

産業界ではまだまだRS-232Cは現役です。
通信内容が単純でノイズにも強く、扱いやすい為です。

COMポートの通信内容を詳細に調べる必要があったので、
Microsoft純正のCOMポート監視ソフト「Portmon」を使いました。
残念ながら普段使用している64bit環境のOSには対応しておらず、
別の開発環境を準備して確認する事となりました。

少し前なら当たり前のようにできていた事が、
最新の開発環境では使い慣れたものが使えなかったり、
逆に不便だったりすると、とても残念な気持ちになります。

書籍による学習の大切さ

書籍を買ってC#を勉強しています。
インターネットでも多くの情報が手に入る時代ですが、
断片的ではなく、系統立てて学習するには書籍が必要だと感じます。

C#は時間をかけて成熟してきた言語ですので、
今はあまり使われない古い記述方法や作法などもあります。
インターネットでザッピングして情報を集めると、
同じ内容でも様々な記述方法が混在してしまうので、
整理して、自分なりのコードに変換できる能力が必要だと思いました。

それにしてもC#の本はどれも重いです…
電子書籍は購入も持ち運びも手軽ですが、実際の書籍に比べると使いにくいです。
慣れれば、もっと便利に使いやすくなるのでしょうか?