2013年1月8日火曜日

開発者である前にユーザーであれ。



今日は必死こいてある機能を実装しようと、
すごく間違った方向に頭を使った。

「機能を実装しろ」という司令に対し、
そのまま実装するだけの人は単なるコーダー。
淘汰されるに違いない。
今日の俺はまさにコーダー。

機能実装云々以前に、
この機能はOS側で提供すべきなのか、
アプリ側でAPIを呼んでもらうことで実装すべき機能なのか。

と同時に実際にユーザーがどうその機能を使うのか?

一歩立ち止まってそういったことを考える必要が有ることを知った。
考えてみるとシステム側で提供すべき機能ではなく、
アプリ開発者が実装すべき機能だったなんてオチ。

OS側の人間がサポートすべきことは、
どんなアプリでも共通な処理をAPIで、
使いやすい形で柔軟にカスタマイズできるような形態で提供すること。

ちょっと学んだな。

2013年1月4日金曜日

ネットワークエンジニアとして学ぶべき要素


会社が自分に求めているものって何だろう.

おそらくそれはネットワーク技術のプロフェッショナルとして,
無線関連の開発業務に従事すること.
また,米国の開発部隊との連携を円滑にするために,
ときには現地に出向き直接やり取りする必要もあると思う.

上記業務を遂行するにあたり必要な要素と,
現状の自分との差分をとり,
足りていないものをリストアップし,
その差分が最小になるような戦略を練ることにする.

考えられるものは以下のものである.
1. Wifi(TCP/IP)      : 俗にいうインターネット接続
2. Bluetooth           : ワイヤレスコントローラの入力
3. プログラミング    : 見通しの良い効率的な実装 ( C/C++, Python, Shell )
4. Fandamental      : エディタ(Emacs, Eclipse), 英語, ハードウェア(電気電子的な内容)
5. 経営的判断          : VA案件会議等でのアイディア出し

1-3は開発資料の読み込みや実際の仕事で学習する.
教材としては,

- マスタリングTCP/IP 入門編 第5版
Bluetooth技術解説ガイド
C++のためのAPIデザイン
- 新版 明解C++


4-5は意識的にやって行かないと身につかない.
エディタは常にEmacsを使う勢いで,自宅ではCocoaEmacs,会社ではNTEmacs.
英語は従来通りRarejob使う.また,ことあるごとに積極的に米国の開発部隊にコンタクトをとる.

ハードウェア的な知識は,どういった部分が必要かが不明確であるため,
問題に出くわした時に調べるスタンスで学習する.
経営関連は,業界のこと,技術のことを浅く広く知るようにする.
技術については自分の業務範囲的に狭く深くなりがちなので幅広いことに興味をもつこと.
現状では,スマートフォン周りのグラフィクス(OpenGL等)をGPUと絡めて知識を得ていきたい.

最後に,日々の習慣としてやって行きたいことのリストを書く.
- Rarejob    : 25分
- Blog更新   : 学んだことのアウトプット,一日考えたこと
- 技術書       : 一日10ページ


2013年1月1日火曜日

シェルスクリプト学習帳


MacBookAirのターミナルで複数ターミナルシェルを立ち上げる.
emacsでソースを書いて,もう一つのシェルで実行する仕組み
command+"}"でウィンドウの切り替え
変数,if,case,forの文法事項のおさらい.

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
ソースコード:

#!/bin/sh

echo "veriables ------------------"
PARA1="sample1"    # no space should be inserted around "="
PARA2=sample
echo ${PARA1}
echo ${PARA2}
echo $$            # process ID
echo $@            # list of all the arguments
echo "arg1 = $1"   # designated argumment

echo "if ---------------------------"
if [ $1 -gt $2 ]
then
    echo "$1 is grater than $2"
elif [ $1 -eq $2 ]
then
    echo "$1 is equal to $2"
else
    echo "$1 is smaller than $2"
fi

echo "case --------------------------"
case "$1" in
    "1") echo "$1 is one";;
    *)   echo "default";;
esac

echo "for ---------------------------"
for arg in $@
do
    echo "arg is ${arg}"
done

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

実行結果:
$ ./sample.sh 1 2 3 
veriables ------------------
sample1
sample
453
1 2 3
arg1 = 1
if ---------------------------
1 is smaller than 2
case --------------------------
1 is one
for ---------------------------
arg is 1
arg is 2
arg is 3