投稿

ライブラリの設計思想

ライブラリの設計思想をまとめた資料は、 後世の保守・開発プログラマにとってとても有益になるので、 極力実装者が残しておくべき。 「このAPIはこういった処理をするものだ」という規定があれば、 新たなフィーチャーを実装するにあたり、 複数の実装方法が考えられるときは、 まず回帰すべきは設計思想だと強く思う。 今携わっている仕事はこういったものが皆無であり、 実装者も退職or他部署で働いてたりする。 ソースコードを熟読して感じ取ること、 コミットログから何らかの思想を感じ取ることで、 最適な実装方法を見つけようと努力している。 加えて、 ライブラリの初期の開発者は、 拡張性しやすいソースコードにすべきである。 複数のデバイスを同時にハンドリングするデバイスドライバ等を書くにあたっては、 決め打ちでデバイスタイプをハードコーディングすることは避けたい。 IS_SAMPLE_DEVICE( devType )のようなマクロを用意し、 マクロに追記するだけで拡張できるような仕様にすべきだ。 将来を見通してSDK、ライブラリを用意することは、 熟練した、経験豊富なエンジニアにならできることだと思う。 私のようなへっぽこエンジニアがそういった達人プログラマーに近づくにはどうしたら良いんだろう。

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

今日は必死こいてある機能を実装しようと、 すごく間違った方向に頭を使った。 「機能を実装しろ」という司令に対し、 そのまま実装するだけの人は単なるコーダー。 淘汰されるに違いない。 今日の俺はまさにコーダー。 機能実装云々以前に、 この機能はOS側で提供すべきなのか、 アプリ側でAPIを呼んでもらうことで実装すべき機能なのか。 と同時に実際にユーザーがどうその機能を使うのか? 一歩立ち止まってそういったことを考える必要が有ることを知った。 考えてみるとシステム側で提供すべき機能ではなく、 アプリ開発者が実装すべき機能だったなんてオチ。 OS側の人間がサポートすべきことは、 どんなアプリでも共通な処理をAPIで、 使いやすい形で柔軟にカスタマイズできるような形態で提供すること。 ちょっと学んだな。

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

会社が自分に求めているものって何だろう. おそらくそれはネットワーク技術のプロフェッショナルとして, 無線関連の開発業務に従事すること. また,米国の開発部隊との連携を円滑にするために, ときには現地に出向き直接やり取りする必要もあると思う. 上記業務を遂行するにあたり必要な要素と, 現状の自分との差分をとり, 足りていないものをリストアップし, その差分が最小になるような戦略を練ることにする. 考えられるものは以下のものである. 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と絡めて知識を得ていきたい. ...

シェルスクリプト学習帳

シェルスクリプト入門 してみる. 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 ---------------------------...

Nexus7の人柱に、俺はなる!!

イメージ
ついに買いましたNexus7!! 初期設定すげぇ簡単すぎて怖くなるレベルでした。 だって、クレカ登録してGoogleアカウント同期するだけなんだもの。 個人情報を掌握した企業の強さ。。。 クレカ登録したら2000円分のGooglePlayで使えるマネーが貰えちゃうのでかなり得した気分。 ネット上のコンテンツに金を払うっていうのにはまだ抵抗があったけど、 この2000円で勢いづいて電子書籍とか買ってしまうかも。 電子書籍で思い出したがLPICがLINUX教科書をフリーダウンロード始めたとのことで、ダウンロードしてみた。 EPUB形式とPDFで配布してます。 →  http://www.lpi.or.jp/linuxtext/text.shtml ここで落としたEPUBはUSB経由で電子書籍としてNexus7に入れました。 明日の通勤時にでも読んでみよー。 さらに適当にいじくってみた。 無線屋さんの私は、NFCだBluetoothだって機能を弄りたくなるわけで。。。 Bluetooth機能使ってこんな使い方もできちゃうんです。 いわゆるキーボード付きタブレット端末を想起させる使い方。 ちなみにこのキーボード、結構話題になってる奴なんです。 http://getnews.jp/archives/247873 http://weekly.ascii.jp/elem/000/000/095/95683/ このキーボード、安い、軽い、電池もちいい、堅牢。 子供向けのDSソフトに付属する品なので、かなり堅牢に作られてます。 タッチできる液晶って意外と便利かも、マウス要らんし。 MSのSurfaceはこれよりスタイリッシュになると思うし更に期待してしまう。。。 ついでにWiiリモコンともペアリングしてみた!! WiimoteControllerっていうandroidアプリであっさりペアリングできます。 WiiリモコンとGalaxy S2とはペアリングできなかったけど、Nexus7はできた。 このアプリの開発者は、Wiimote for AndroidみたいなSDKとして配布して欲しい。 Wiiリモコンとタブレット端末の可能性を世界中の開発者に広めていただきたい! なんか夢広がるー

英会話学校の価格破壊

Skype英会話が流行っている。 昔の人は従来型の、部屋を構えて正社員の講師が一対一で教えるスタイルを想起するかもしれないが、今はSkype一つで家から英会話ができてしまう時代。 これはもう一過性のものではなく、今後のスタンダードになると思われる。 最大の要因は価格差。 私は、マンツーマンを謳った従来型の英会話学校を2社ほど回った。 プランとして提示されたのはどちらも1回(50分)あたり8000円程度。 一方でSkype英会話の方は1回(25分)200円程度。 分単位で比較して、20倍も価格差がある。 Skype英会話が出せるこの価格競争力は人件費と固定費が劇的に低いということがある。 明らかなことではあるが以下の3点は明確な差になっていると思う。 - 店舗を構える必要がない - フィリピン人のアルバイト講師は給与が安くて済む - 予約システムが使いやすい(Web上ですべて済む) また、受講者側にもメリットがある。 - 時間がフレキシブル(24:30まで講義がある) - 圧倒的安さ まだまだサービスの悪さがあったり、講師の当たり外れがあるところがあるが、 低価格で、夜遅くに英会話をしたいニーズを完全に掴んでいると思う。

Androidのソースコードを落としてくる作業

低レイヤーのドライバ等を実装する身としては、Androidのソースコードから学ぶものが多いはず! そんなきっかけで今日はAndroidのソースコード落とす方法の備忘録。 殆どここ↓みればわかるんだけど http://greety.sakura.ne.jp/redo/2012/02/windowsandroid.html とりあえずまとめてみる。 うちのPC環境はWindows7 + Cygwinな環境です。 gitインストールしたあと、以下のコマンドを実行して超待つだけ!超! $ mkdir android_source $ cd android_source $ git init $ git clone https://github.com/OESF/OHA-Android-4.0.3_r1.0.git ツリーまるごと落とすのでかなり時間かかります。