Hatena::ブログ(Diary)

御手洗特急途中下車

2012-04-02

iPhoneのアラートビューとアクションシート

| 22:57 |

IBでレイアウトして作らない系のやつ

アラートビュー

// アラートビューを作成
UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle:@"タイトル"
                      message:@"実行しますか?"
                      delegate:self
                      cancelButtonTitle:@"Cancel"
                      otherButtonTitles:@"OK", nil];

// アラートビューを表示
[alert show];
/**
 * アラートのボタンが押された時に呼ばれるデリゲート
 */
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 1) {
        // ラベルにOKと表示
        myLabel.text = @"OK";
    } else {
        // ラベルにCancelと表示
        myLabel.text = @"Cancel";
    }
}


アクションシート

// アクションシートの作成
UIActionSheet *actionSheet = [[UIActionSheet alloc]
                              initWithTitle:@"タイトル"
                              delegate:self
                              cancelButtonTitle:@"キャンセル"
                              destructiveButtonTitle:@"赤いやつ"
                              otherButtonTitles:@"普通のやつ1", @"普通のやつ2", nil];

// アクションシートの表示
[actionSheet showInView:self.view];
/**
 * アクションシートのボタンが押された時に呼ばれるデリゲート
 */
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    switch (buttonIndex) {
        case 0:
            myLabel.text = @"赤いやつ";
            break;
            
        case 1:
            myLabel.text = @"普通のやつ1";
            break;
            
        case 2:
            myLabel.text = @"普通のやつ2";
            break;
            
        default:
            break;
    }
}
トラックバック - http://d.hatena.ne.jp/Kojo_Sugita/20120402

2011-05-28

イングロリアス・バスターズを見てみた

| 20:05 |

いつもは観賞メーターに感想を書くのですが、長すぎて書ききれなかったのでここに書いておきます。

イングロリアス・バスターズ

まず最初にこの素晴らしい映画を撮ったクエンティン・タランティーノ監督に謝罪の意を表明したい。この映画を見るまで最近のタランティーノは才能が枯渇したよねー。と申しておりました。殴られた記憶もろくにないくせに申し訳ございませんでした。

さて、イングロリアス・バスターズは「ナチスに家族を殺されたユダヤ系の少女」と「ドイツ占領下のパリに潜入し、ナチスの軍人を始末する部隊"バスターズ"」の2つの軸を持つ群像劇である。

この映画からテーマを読み取ることは難しい。(あるいは無いのかもしれない。)

なぜならばイングロリアス・バスターズはナチス・ドイツを題材にしているが、いわゆる「戦争映画」の下敷きを敷いていない一風変わった構成になっているからだ。

主人公の一人であるショシャナ(メラニー・ロラン)に焦点を当てれば復讐劇であるが、もう一人の主人公であるアルド・レイン中尉(ブラピ)に焦点を当てるとまた違ったジャンルとなる。そしてこの映画は悲劇でもなければ喜劇でもない。

だかといってイングロリアス・バスターズは決して中途半端な作品ではない。まだ見ていない人のためにネタバレは差し控えるが、ストーリーが練り込まれており、映画としての「見せ方」も素晴らしい。そして登場人物の粋な言葉のキャッチボールは涎モノである。いや、お見事。

私はタランティーノ作品の中ではパルプ・フィクションが最も好きだ。今まで見た映画の中でBEST10を決めるとしたら、その中にパルプ・フィクションは必ず入れる。

このイングロリアス・バスターズはパルプ・フィクションに勝るとも劣らない傑作である。

トラックバック - http://d.hatena.ne.jp/Kojo_Sugita/20110528

2011-03-27

以前使用していたC言語のシンプルな拡張数学ライブラリ

| 01:24 |

以前使用していたC/C++用の拡張数学ライブラリ(といってもかなりシンプルですが)を公開します。

コードはANSI-Cで書いています。幾何学系が多めですが、行列演算等は(他のライブラリを使用していたため)サポートしていません。

ベクトル配列で表現しています。

ソース

https://github.com/kojo-sugita/mathex.h

サポートしている機能

関数概要
Summation総和を計算する
SumOfSquares平方和を計算する
SumOfProduct積和を計算する
Average平均値を計算する
Variance分散を計算する
UnbiasedVariance不偏分散を計算する
Covariance共分散を計算する
StdDev標準偏差を計算する
Max最大値を求める
MaxInt最大値を求める(int型配列)
Min最小値を求める
MinInt最小値を求める(int型配列)
MaxMin最大値と最小値を求める
Factorial階乗を計算する
Permutation順列組み合わせの総数を計算する
Combination組み合わせの総数を計算する
Distance2点間の距離を求める
DivideInternally2D2点p1,p2からなる線分をm:nに内分する点を求める (2次元)
DivideExternally2D2点p1,p2からなる線分をm:nに外分する点を求める (2次元)
Triangle_CenterOfGravity3点p1,p2,p3からなる三角形の重心を求める (2次元)
ToVecto2点を結ぶベクトルを求める
VectorSumベクトルの和を求める
VectorDifferenceベクトルの差を求める
Normベクトルの長さ(ノルム)を計算する
InnerProductベクトルの内積を計算する
IncludedAngle2つのベクトルのなす角を計算する
UnitVector単位ベクトルを求める
NormalVector3D3次元の法線ベクトルを求める
CrossProduct3D3次元ベクトルの外積を計算する
VectorSimilarity2つのベクトルの類似度を計算する
NormalizedVectorDistance正規化距離を計算する
IsDepthOnLine3D3次元空間上の点p1と点p2を結ぶ直線上に点pが存在するかを判定する
CalculatePlane3D3次元平面を作成する
CalculatePlane3D_Using3Depths3点から3次元平面を作成する
ToLineCanonicalForm直線の方程式標準形から一般形に変形する
ToPlaneCanonicalForm平面の方程式を標準形から一般形に変形する
ToPlaneGenericForm平面の方程式を一般形から標準形に変形する
DistanceLineToDepth点と直線との距離を返す
DistancePlaneToDepth点と平面との距離を返す
IsCorrectPlane2つのベクトルからなる平面がよい平面かを判定する
Arg第1象限から第4象限までの偏角を求める
ZenithAngle天頂角を求める
Sigmoidシグモイド関数を計算する
pi円周率を求める
to_deg弧度法表記を度数法表記に変換する
to_rad度数法表記を弧度法表記に変換する
logn任意の整数を底とする対数を計算する
cbrt_newtonニュートン法で立方根を近似する
frac除算を計算する


バグがあったらごめんなさい。使用する際は自己責任でお願いします。

もっと複雑なことをしたい場合はGSLがおすすめ。

トラックバック - http://d.hatena.ne.jp/Kojo_Sugita/20110327

2010-09-12

HTML5+JavaScriptで画像処理 ハーフトーニング

| 14:59 |

HTML5とJavaScriptでハーフトーニングをしてみました.

実行ページ

http://jstap.web.fc2.com/test/html5/halftoning/halftoning.html

※ 濃度パターン法は低速なので注意してください.

ソース

http://github.com/kojo-sugita/Halftoning

ハーフトーニングとは多値階調を持つ画像を2値(あるいは少ない階調)で表現する方法のことである.

マンガのスクリーントーンやモノクロプリンタで出力された画像などがまさにソレで点の密疎で濃淡を表現する.

今回実装した手法は以下の3通り.いずれも基本的な手法である.


濃度パターン法 (density pattern method)

画像の1画素に対して複数画素からなる2値表現のパターンを割り当てて濃淡を表現する手法.

例えば1画素を4×4のパターンを割り当てると擬似的に17階調の表現ができる(下記図参照).

f:id:Kojo_Sugita:20100912143459p:image

割り当てる濃度パターンを4×4,現画像をN×M画素とすると出力画像は4N×4M画素になる.

実行結果

f:id:Kojo_Sugita:20100912143503p:image

※ 前述のとおり画像サイズが大きくなるため一部抜粋


ディザ法 (tither method)

ディザパターンと呼ばれるN×Nの行列を用意しておく.

ディザパターンの値と現画像の各画素の輝度値を比較し,その大小関係でその画素を白にするか黒にするかを決定する.

f:id:Kojo_Sugita:20100912143502p:image

1. 画像をN×N画素(ディザパターンのサイズ)のブロックに分割する

2. ブロック内の各画素がディザパターン内の対応画素値×16 + 8以上なら白,未満なら黒を割り当てる

実行結果

f:id:Kojo_Sugita:20100912143501p:image


誤差拡散法 (error diffusion method)

ある画素の輝度値と,その画素を2値化した値との誤差を周辺画素に分散させ,誤差をキャンセルするように未処理画素の輝度値を修正しながら2値化していく手法.

fを対象画素の輝度値,gを出力画素の輝度値とする.

1. 誤差eを以下のように決定する.

 f > 128 のとき・・・g = 255

 f <= 128 のとき・・・g = 0

 e = f - g

2. 誤差eを周辺画素に分散させる.

 f'(x + 1, y) = f(x + 1, y) + (5/16)e

 f'(x - 1, y + 1) = (x - 1, y + 1) + (3/16)e

 f'(x, y + 1) = f(x, y + 1) + (5/16)e

 f'(x + 1, y + 1) = f(x + 1, y + 1) + (3/16)e

実行結果

f:id:Kojo_Sugita:20100912143500p:image

誤差拡散法が一番それっぽい結果になっていることが分かる.

トラックバック - http://d.hatena.ne.jp/Kojo_Sugita/20100912

2010-06-25

トラックバック - http://d.hatena.ne.jp/Kojo_Sugita/20100625

2010-05-04

HTML5 + JavaScriptで画像処理 (エッジ検出)

| 00:29 |

古籏一浩のJavaScriptラボ ― 第14回 HTML5のcanvasで作る画像フィルター

を読んで、Canvasで画像の輝度値を編集できることを知ったので、ためしに実装してみることに。

GUIや画像の端の処理などかなり手抜きだが、FirefoxGoogle ChromeOperaで動作することを確認した。

処理はかなり重く、私の非力なマシンは実行するたび悲痛なファンの音を上げるほどである。。。でもしょうがないよね(´・ ω・`)

ちなみに3種類のブラウザで最も実行速度が早かったブラウザはOperaであり、もっとも遅いブラウザはFireFoxだった。

HTML5 + JavaScriptによるエッジ検出

http://jstap.web.fc2.com/test/html5/filtering/filtering.html

実行結果

f:id:Kojo_Sugita:20100505001856p:image

ソースコード

2011/04/24追記

以下は古いソースコードです。最新は https://github.com/kojo-sugita/Image-filtering をご覧ください。

HTML

<p><b>オリジナル画像</b></p>
<img src="./lena.png"></img>
<br>
<input type="button" name="edge" value="エッジ検出" onClick="EdgeDetector()">
<br>
<p><b>エッジ画像</b></p>
<img src="./lena.png" style="display: none">
<canvas id="myCanvas" width="256" height="256">canvasに対応したブラウザーで実行してください</canvas>

JavaScript

/**
 * エッジ検出
 */
function EdgeDetector() {
  var _canvasW = 256; // 横幅256ピクセル
  var _canvasH = 256; // 縦幅256ピクセル
  var canvas = document.getElementById("myCanvas");
  var context = canvas.getContext("2d");
  var imgObj = new Image(_canvasW, _canvasH);
  imgObj.src = "http://jstap.web.fc2.com/test/html5/edge/lena.png";
  context.drawImage(imgObj, 0, 0);

  var grayImage = new Array(_canvasW * _canvasH);

  for(var y = 0; y < _canvasH; y++){
    for(var x = 0; x < _canvasW; x++){
      var pixelData = getPixel(canvas, x, y, _canvasW, _canvasH); // ピクセル値を取得する
      var R = pixelData.R;
      var G = pixelData.G;
      var B = pixelData.B;

      // グレースケール化
      grayImage[y * _canvasW + x] = ToGrayscale(R, G, B);
    }
  }

  /* Sobelフィルタ */
  var filter = new Array();
  filter[0] = 1; filter[1] = 0; filter[2] = -1;
  filter[3] = 1; filter[4] = 0; filter[5] = -1;
  filter[6] = 1; filter[7] = 0; filter[8] = -1;

  /* 空間フィルタリング */
  var resultImage = SpatialFiltering(grayImage, _canvasH, _canvasW, filter, 3);

  /* セット */
  for (var y = 0; y < _canvasH; y++) {
    for (var x = 0; x < _canvasW; x++) {
      var I = resultImage[y * _canvasW + x];
      setPixel(canvas, x, y, I, I, I, 255, _canvasW, _canvasH);
    }
  }
}

/**
 * 空間フィルタリング
 */
function SpatialFiltering(grayImage, height, width, filter, size_f) {

  var init = Math.floor(size_f / 2);
  var from = - init;
  var to = init;
  
  var resultImage = new Array(height * width);

  for (var k = 0; k < resultImage.length; k++) {
    resultImage[k] = 0;
  }

  for  (var i = init; i < height - init; i++) {
    for (var j = init; j < width - init; j++) {
      var sum = 0.0;
      /* フィルタリング */
      for (var n = from; n <= to; n++) {
        for (var m = from; m <= to; m++) {
          sum += grayImage[(i + n) * width + j + m] * 
            filter[(n + init) * size_f + m + init];
        }
      }
      resultImage[i * width + j] = Math.floor(Math.abs(sum));
    }
  }
  return resultImage;
}

/**
 * RBGをグレースケールにして返する
 */
function ToGrayscale(R, G, B) {
  R = Math.floor(R * 0.299);
  G = Math.floor(G * 0.587);
  B = Math.floor(B * 0.114);
  return R + G + B;
}

// GetPixel
// 戻り値はオブジェクトのプロパティでR,G,B
function getPixel(srcCanvas, x, y, canvasW, canvasH){
  if (window.opera) {
    var gContext = srcCanvas.getContext("opera-2dgame");
    var rgbStr = gContext.getPixel(x, y); // ピクセル値を取得する
    var R = eval("0x"+rgbStr.substring(1,3));
    var G = eval("0x"+rgbStr.substring(3,5));
    var B = eval("0x"+rgbStr.substring(5,7));
    return {R:R, G:G, B:B};
  }

  var imagePixelData = srcCanvas.getContext("2d").getImageData(x, y, 1, 1).data;
  var R = imagePixelData[0];
  var G = imagePixelData[1];
  var B = imagePixelData[2];
  return {R:R, G:G, B:B};
}

// SetPixel
function setPixel(srcCanvas, x, y, R, G, B, A, canvasW, canvasH){
  if (window.opera) {
    var gContext = srcCanvas.getContext("opera-2dgame");
    var rgbaColor = "rgba("+R+","+G+","+B+","+A+")";
    gContext.setPixel(x,y, rgbaColor);
    return;
  }
  var context = srcCanvas.getContext("2d");
  var pixelImage = context.createImageData(1, 1);
  pixelImage.data[0] = R;
  pixelImage.data[1] = G;
  pixelImage.data[2] = B;
  pixelImage.data[3] = A;
  context.putImageData(pixelImage, x, y);
}

2010-03-21

HPを移行しました

| 23:13 |

管理しているHPのURLを変更しました。

ブックマークをしてくださっていた方はお手数ですが、ブックマークの変更をお願いします。


LaTeXコマンド集 - LaTeXのコマンド集。卒論やレポート作成のお供にどうぞ

 新URL http://www.latex-cmd.com/

C tips & reference \n - C言語のTips集とリファレンス

 新URL http://www.c-tipsref.com/

トラックバック - http://d.hatena.ne.jp/Kojo_Sugita/20100321

2010-03-13

2月に読んだ本と見た映画

| 03:35 |

2月は新しい職が決まった月でした。


読んだ本

2月の読書メーター
読んだ本の数:2冊
読んだページ数:453ページ

箱男 (新潮文庫)箱男 (新潮文庫)
読了日:02月18日 著者:安部 公房
業界No.1エージェントが教える 転職メソッド―自己分析・企業分析・職務経歴書・履歴書・面接業界No.1エージェントが教える 転職メソッド―自己分析・企業分析・職務経歴書・履歴書・面接
読了日:02月01日 著者:小畑 重和,川野 晋太郎

読書メーター


見た映画

2月の鑑賞メーター
観た本数:7本
観た時間:750分

イエスマン “YES”は人生のパスワード 特別版 [DVD]イエスマン “YES”は人生のパスワード 特別版 [DVD]
典型的なアメリカンコメディで展開も先読みできる。だけど面白い。すべてを肯定するその姿勢は見習うべきところがある。それにしてもズーイー・デシャネルがかわいい。
鑑賞日:02月27日 監督:ペイトン・リード
ストレンジャー・ザン・パラダイス [DVD]ストレンジャー・ザン・パラダイス [DVD]
多分合う合わないがはっきり分かれであろう大きな展開のない雰囲気映画。少なくとも徹夜明けに見る映画じゃなかった。眠い。
鑑賞日:02月26日 監督:ジム・ジャームッシュ
黒猫白猫 [DVD]黒猫白猫 [DVD]
至高のコメディ。文句のつけようがない。 にぎやかな東欧のノリが最初から最後まで続き一度も映画のテンションが下がらない。 先読み可能な一本筋のストーリーではあるものの、中弛みせず、始終見ている側を楽しい気分にさせてくれる。 登場人物全員が生き生きとしていて魅力的なところもすごい。
鑑賞日:02月23日 監督:エミール・クストリッツァ
デッドマン スペシャル・エディション [DVD]デッドマン スペシャル・エディション [DVD]
雰囲気とジョニデの演技を楽しむ叙事詩的な映画
鑑賞日:02月21日 監督:ジム・ジャームッシュ
ラン・ローラ・ラン [DVD]ラン・ローラ・ラン [DVD]
ローラがひたすら走る映画。スタートからゴールまで3パターンのストーリーが用意されている。ローラ役のフランカ・ポテンテがまったく可愛くない。また、ハイペースで走る描写が多用されるわりにローラの息が全く切れていないなど引っかかる部分も多かったが、映像手法や細かい演出はよい。
鑑賞日:02月21日 監督:トム・ティクバ
いまを生きる [DVD]いまを生きる [DVD]
鑑賞日:02月13日 監督:ピーター・ウィアー
コーヒー&シガレッツ [DVD]コーヒー&シガレッツ [DVD]
鑑賞日:02月11日 監督:ジム・ジャームッシュ

トラックバック - http://d.hatena.ne.jp/Kojo_Sugita/20100313

2010-02-01

1月に読んだ本と見た映画

| 01:34 |

読んだ本

1月の読書メーター
読んだ本の数:9冊
読んだページ数:2016ページ

親指の恋人〔文庫〕親指の恋人〔文庫〕
20歳の男女が心中したという既成事実が冒頭に示され、そこに至るまでの詳細なプロセスが全体にわたって書かれている。 作者としては「現代格差社会」と「若者の自殺」をテーマに本作を書いたのだろうが、あまりにも通俗的であり展開も使い古されている。 特に、主人公らの心情変化の表現が乏しいため、どうしても薄っぺらな印象を受けてしまう。石田が片手間に書いた小説に思えてしょうがない。
読了日:01月22日 著者:石田 衣良
当て屋の椿 3 (ジェッツコミックス)当て屋の椿 3 (ジェッツコミックス)
読了日:01月17日 著者:川下 寛次
飛ぶ男飛ぶ男
阿部公房の未完の遺作。未完なため結末を迎えることなく物語が幕を閉じるが、それでも十分楽しめる。
読了日:01月16日 著者:安部 公房
カルプス・アルピスカルプス・アルピス
ご都合主義というかストーリーが少し出来すぎている気がするけど、胸に響く文章がいくつもある。何より作品がまとっている雰囲気が美しい。嶽本野ばらは独特の文体から敬遠する人も多いが、本作はクセも少なく読みやすいので、野ばら嫌いな人にもオススメ。
読了日:01月12日 著者:嶽本 野ばら
灰色のピーターパン―池袋ウエストゲートパーク6 (文春文庫 い 47-10)灰色のピーターパン―池袋ウエストゲートパーク6 (文春文庫 い 47-10)
IWGPシリーズの第6作目。風営法や在留外国人に対しての思想はともかくとして、読みやすく集中して一気に読める一冊。疾走感がよい。それにしてもタカシはいつまでGボーイズのキングをやるつもりなんだろう?
読了日:01月11日 著者:石田 衣良
HUNTER×HUNTER NO.27 (ジャンプコミックス)HUNTER×HUNTER NO.27 (ジャンプコミックス)
読了日:01月11日 著者:冨樫 義博
屍蝋の街屍蝋の街
腐蝕の街の続編である。が、そのことを知らずに本作から読んでしまった・・・近未来クライムアクションとしてよく出来ていると思う。
読了日:01月06日 著者:我孫子 武丸
転職面接必勝法転職面接必勝法
読了日:01月03日 著者:細井 智彦
きつねのはなし (新潮文庫 も 29-2)きつねのはなし (新潮文庫 も 29-2)
京都奇譚集。一話目の表題作は秀逸、二話目もオモチロいのだが三話目以降がいまひとつだった。三話目は物語前中盤の伏線らしき部分を回収しきれておらず、読み終わった後に残尿感を感じた。四話目は構成がぶつ切りで読み難い。太陽の塔や、夜は短し歩けよ乙女も構成面で荒さが目立ったがそれを補うユニークな文章とストーリーの面白さがあった。しかし、本作四話目はそれがない。総評としてはイマイチ。個人的に大好きな作家のため次回作に期待したい。
読了日:01月03日 著者:森見 登美彦

読書メーター


見た映画

1月の鑑賞メーター
観た本数:8本
観た時間:1205分

ほしのこえ [DVD]ほしのこえ [DVD]
私がNHKデジタル・スタジアムで「彼女と彼女の猫」を見たのは10年ほど前のことである。 ガイナックスに影響を受けたであろう映像構成とクォリティの高さに衝撃を受けたことを覚えている。 TUTAYAで何気なく手に取った本作が「彼女と彼女の猫」の新海誠の作品ということを知り、 問答無用でレンタルした。 個人制作のため、仕方ないといってしまえばそれまでだが、キャラデザ声優同人臭いのが少し気になった。 一方で背景美術が美しく、細部まで手抜きのない映像は一人で製作したとは思えないレベルである。
鑑賞日:01月31日 監督:
ターミネーター:サラ・コナー クロニクルズ 〈セカンド・シーズン〉 コレクターズ・ボックス1 [DVD]ターミネーター:サラ・コナー クロニクルズ 〈セカンド・シーズン〉 コレクターズ・ボックス1 [DVD]
鑑賞日:01月17日 監督:
パリ、テキサス デジタルニューマスター版 [DVD]パリ、テキサス デジタルニューマスター版 [DVD]
子供が可愛すぎて、妻が美人過ぎる。まあ、それはいいとして主人公に共感できない。特に面の皮の厚さと計画性の無さには脱帽させられる。が、見た後の余韻が楽しめるという点では素晴らしい。
鑑賞日:01月11日 監督:
ユージュアル・サスペクツ [DVD]ユージュアル・サスペクツ [DVD]
カイザー・ソゼというunknownな存在が非常にいい味を出しており、途中まではすごくワクワクしながら見ることができた。ただし、ミスリードが露骨すぎて根拠無しにカイザー・ソゼの正体が予想可能だったため、ひっくり返された感がなかったのが残念。面白かったが、自分にとって突出した映画ではない。
鑑賞日:01月10日 監督:ブライアン・シンガー
コーチ・カーター スペシャル・コレクターズ・エディション [DVD]コーチ・カーター スペシャル・コレクターズ・エディション [DVD]
鑑賞日:01月05日 監督:トーマス・カーター
テルマ&ルイーズテルマ&ルイーズ
男根主義へのアンチテーゼ
鑑賞日:01月03日 監督:
ソウ5 DTS【アンレイテッド】エディション [DVD]ソウ5 DTS【アンレイテッド】エディション [DVD]
犯人が既知だったためか特にスリルも無く、前作までを刈り取って、次回作へ向けて種まいて終わった感じ。
鑑賞日:01月02日 監督:ディヴィッド・ハックル
ナイト・オン・ザ・プラネット [DVD]ナイト・オン・ザ・プラネット [DVD]
タクシードライバーにまつわる群像劇ローマの話が特に面白かった。
鑑賞日:01月01日 監督:

トラックバック - http://d.hatena.ne.jp/Kojo_Sugita/20100201

2010-01-31

Javaを使う理由

| 23:18 |

 人気プログラミング言語ランキングでJavaが1位を獲得した。

これは私にとっては意外な結果であった。(個人的にはCだと思っていた)

 さて、最近あるソフトウエアハウスの営業役員の方(仮にAさんとしよう)とお話をさせていただく機会があり、

そこでJavaの話題が出た。東海三県ではJavaの案件が多いそうだ。

なぜJavaが多いのか。Aさん曰く3つの理由があるそうだ。

理由

1. 既存の資産活用が可能

 一時期オブジェクト指向言語の代表例としてJavaがもてはやされたため、多くの企業がそれに乗っかった結果、資産が多く残ったため

2. マシンパワーが必要

 Javaを快適に動作させるにはそれなりにマシンパワーが必要となるため、ハードウエアの買い替え需要が発生する(SIerとしては美味しい)

3. オフショア開発

 中国にはJavaプログラマが多く存在しており、オフショアに出しやすいため


Aさんの話を聞く限り、何かしらのソリューションとしての言語選択ではなく、

環境がJavaを使う理由となっているようだ。

特に2については「なんじゃそりゃ」と言わざるをえない。

是非Javaプログラマの方にJavaの優位性を示してもらいたいものだ。

MTMT 2010/02/04 01:47 Java VMによる汎用性、これに尽きると思う。

トラックバック - http://d.hatena.ne.jp/Kojo_Sugita/20100131