デザインパターン備忘録01

今更ながらデザインパターンを勉強しています。
その際に実務で生かせそうなことをテーマに備忘録的に記述していこうと思います。

そもそもデザインパターンとはJava開発における23種類のカタログみたいなものです。
GoFと呼ばれる4人の開発者の「経験」、「内的な蓄積」をパターン化したものと考えてもらえれば良いと思います。

前置きはこのあたりにして一回につき2つほど紹介しようと思います(続けば・・・)。

続きを読む

ひがやすを「SIerは顧客の良きパートナーとなれ」

http://jibun.atmarkit.co.jp/ljibun01/cs/200912/05/01.html




上記の記事でSeasarFWの生みの親ひがやすを氏が
今後のSIerについて語っています。
現状多く見られる人月契約では、開発が早く終わると
売上が少ないというおかしな問題を抱えています。
ひが氏も仰っているように、今後も
人月契約のビジネスが大きく変わることはないと思います。


私は、Seasarプロダクトの概要を社内で発表した際に、
「開発効率が良すぎて技術者過多になってしまうのでは?」
というデメリットを挙げさせていただきました。
技術者過多になった場合に取り残されないようにするためには、
他者には真似できない独自の技術なりソリューションなりが
必要になってくるのではないでしょうか。
そうすれば単価も上がるでしょうし。


これからは単価の安い人を大量投入して利益を上げる
というビジネスが少なくなりそうですね。


これからのSIerに必要なものは

  • コミュニケーションスキル
  • 提案力
  • 技術力

それらを学ぶためには都内で頻繁に開催されている
勉強会やイベントに出席するのが良いとひが氏はおっしゃっています。

時間的都合でどうしても参加出来ないという方は、
まず情報収集から初めて見てはいかがでしょうか?
これから勉強してみようかなという方にはクラウドがオススメらしいです。


HIKO

Google日本語入力

GoogleIMEのbetaをインストールしてみました。

面白いなと思ったのはサジェスト機能でしょうか。
携帯の予測変換みたいなものです。

色々と試してみて面白かったサジェストをご紹介。

・・・少しネタに走ってしまいました。
どのような機能でサジェストを実現しているのでしょうかね。

Googleと言えば

  • Google Wave
    • ネット上の情報共有サービス 招待してもらいましたが、英語ばかりなのでほとんどわからない・・・

等々様々なサービスを展開しています。
IT業界に身をおくものとしてはこれからも注目です。

HIKO

1時間でテトリスを作る動画

http://itpro.nikkeibp.co.jp/article/Interview/20091104/340019/

動画が上がった当初に見たのですが、記事になっていたので紹介。
詳しくは動画を見ていただければいいんですが
ニコニコ動画にしか上がっていないと思うので概要を。


概要は、C言語の開発環境を作成⇒実装⇒拡張(おまけ)
という流れで、だいたい1時間くらいでテトリスを作成する動画になっています。
さらに、肉声で解説付き(というか、コーディングの実況ですね。)です。


ゲームの実況は結構有名ですけど、コーディング実況っていうのは珍しいと思います。


個人的に凄いなと思ったのは


・障害解決が早い
・話がちゃんと出来てる


前者は経験の成せる技だと思いましたが、後者は言語をちゃんと理解していないと
難しいんじゃないかと思いました。また、業界柄、口下手な人が多いと思うので
結構判りやすく話しができる人なんだなぁと。


自分は特に感覚とか感性でやっている人間なので、尊敬するなぁと思って記事を見たら
やっぱ凄い人だったと。


何気にプログラム組んでる人にはそれ以外の人とは感じる点が違う動画だと思いますので
是非機会があったら見てみてください。




rag

小ネタ〜Javascriptでの演算〜

Javascriptで小数値の演算を行う機会はあまりありませんが、
現在参画しているプロジェクトで、メンバーが入力値の妥当性チェックの
修正を行っている時に出てきた問題です。


実は、Javascriptは小数の演算が大の苦手です。
試しに、「0.1」を10回足してみて下さい。

var num = 0.1;
var retNum = num + num + ・・・ + num;

結果は「0.9999999999999999」と表示されます。
見ての通り「0.0000000000000001」足りませんね。


これを回避する手法は、「0.1」を10倍した値を10回足して、最後に10で割る方法が一般的です。

var num = 0.1;
var retNum = num * 10 + num * 10 + ・・・ + num * 10;
retNum /= 10;

結果は「1」と表示されました。
これでこの問題はクリアされました。



しかし、ここからが問題です。
次は「100.111」に「0.001」をかけた後、「0.1」を引いてみます。

var num1 = 100.111;
var num2 = 0.001;
var num3 = 0.1;

var retNum = num1 * 1000;
retNum *= (num2 * 1000) / 1000;
retNum -= (num3 * 1000);
retNum /= 1000;

結果は「0.0001110000000000042」と表示されます。
今度は「0.0000000000000000042」多いです。


Javascriptで四則演算を行うのは、もはや限界です。
よって、もう少し違う観点で考えてみましょう。
これを回避するポイントは『小数点』です。


数値を文字列として考え、小数点を整数になるまでシフトします。
その後演算を行い、最後にシフトした小数点を元の位置に付与します。


簡単にまとめると、常に整数計算を行えるように関数を準備することで、
この問題を回避することが可能です。


このような機会がありましたら、このことを思い出してください。
多少のお役に立てば幸いです。



ATS