最近、なぜかアクセス数が増えているのですが、どうも、リピーターが来ているようなのですが、
何か書こうかと思っていたところ、某クラブの部長から『最近ネコ感がたりない』とご指摘受けたので、うちのシマを紹介します。
盆踊りを踊っているようですが、おもちゃに飽きてそのまま寝てしまったらしい。

こちらはふつうに寝ているところですが、どうもこの猫は丸まって寝ないようだ。
忙しさにかまけてブログの更新を怠っておりますが、毎年恒例のイベントなので感想がてら最近の英語学習(悩み)の記録もします。ちなみにテストは8/25でこれをアップしたのは8/26です。
今年の案内士の試験ですが、少し変化がありました。
1つは英語の問題に一部マークシートが取り入れられ、50点分がマークシートで残りが筆記となりました。
全体的な問題の構成は去年から変わっていないかと思いますが、設問で漢字を書く必要がないとか、単語の問題が選択式になり、難易度は少し下がるのでは?とは思いました。漢字が掛けなかったり、単語のスペルに無頓着な私にとってはありがたい変更だったりまします。一方で並べ替えは単語の数が増えて難易度があがったような気がします。
もう1つは、アンケートがつきました。『今後の案内士制度の参考にする為』的なことを言っておられました。このあたりは好感が持てるのですが、『英語の問題の難易度は?』的な質問については当の受験者から聞いてどのように参考にするのか興味があるところです。後、『資格を取った後就業しますか?』的な質問があり、いわゆるペーパー通訳案内士について気にかけるようになったみたいです。
ちなみに通訳案内士ですが、働くというか稼ぐのは難しいようで、その辺りの話は、
http://blog.goo.ne.jp/guide289/e/5c72d3ad5b81103fa10ad97903b0e88d
が詳しいですね。
さて、肝心の試験の手応えですが、去年よりは出来たと思うけど、結果はどうだろうという感じです。
もっとも、最近、英語に関しては実践が少ないなと思っていまして、例えば情報処理の試験の場合、普段から仕事でプログラムを組んだり、サーバーをセットアップしたり、実務をおこなった上で試験を受けるわけですが、英語の場合、読みは確かにするのですが、その他のスキル(聞く、話す、書く)は勉強オンリーなのでこのあたりの実践不足を強く感じる次第です。最近、たまたま外国の方と話す機会があったのですが、こんにちは、どういたしまして、ぐらいしか言えず、『これで結構な金額を投入したんだな・・・』と思うと少し凹む次第です。
その読みの方も専門分野の場合はまだましですが、テストになるとしばしば誤読をするので、このあたりも精進が必要だとおもとります。
つまりまだまだ道半ばといったところで、今後も精進します。
補足、以下、多くの方には関係ない話ですが、このブログにちょっとしたフアンがつきまして、表面的な言葉尻を間違ってとらえて変な書き込みをされ、『テストになるとしばしば誤読をするので』とか書くと変なことを書かれないとも限らないので、面倒ですがちょっと補足します。
私が英語の文章を読んだときにしばしば誤読するということですが、当然ですが、日本語の文章ではわりとまともに読んでいるつもりです。もちろん人間ですから間違いはあるでしょうが、例えば、
http://www.ohfuji.name/?p=1902
のコメント欄ではCMPさん、επιστημηさんと特に大きな誤解もなく議論ができているかと思います。
ちなみに、2013-2-11 の私の発言を捉えて、誤解に基づく非難をしている人がいるのですが、いい加減な判断で余計なことを書かないでもらいたいものです。細かい点については機会があれば別途書きます。
例年4月以降は、仕事にゆとりができるのですが、今年は忙しく(アベノミクスとは関係はなく)、せいぜいゴールデンウィークにメインマシンをWindows8にした程度で、いろんなものができずじまいで滞っているのですが、これ以上放置する訳にもいかないので0.85をリリースします。
主な変更点は以下のとおりです。
・バグフィックス
・パフォーマンスアップ
・Windowsの開発環境をVisualStudio2008 → VisualStudio2012
本来なら0.85というキリのよい数字なので、ロードマップで示している機能(リソースの解放機能)を入れようかと思っていたのですが、アーキテクチャの改修は進んだのですが、時間的な問題でリソースの解放機能は入れずじまいになりました。
ただ、アーキテクチャの改修のおかげでパフォーマンスがさらにアップしました。
また、OSのバージョンアップ(Windows7→Windows8)に伴って開発環境が変わりました。このあたりは別途レポートしたいのですが、多分しばらくは無理でしょう。
例によりベンチマークを行ってみました。
◆Windows上でのJavaScript vs ADP
■マシン
・CPU Core i7-980X(3.33GHz HT OFF / Turbo Boost OFF)
・メモリ 48GB(DDR3-1600 8GB × 6)
・OS Windows 8 Pro (x64) 電源管理:高パフォーマンス
■結果
28のフィボナッチ数を求める時間
IE 10(JavaScript) | 35ミリ秒 |
FireFox 22(JavaScript) | 70ミリ秒 |
ADP 0.82(32ビット) | 202ミリ秒 |
ADP 0.85(32ビット) | 171ミリ秒 |
JavaScriptとの対決ですが、桁が違うので更なる改善が必要ですが、少し気になるのが、FireFox22で、
以前、測ったときはFireFoxは圧倒的な強さを見せたのですが、ここに来て失速がみられます。なにが要因なのか興味深いところではあります。
ちなみにテスト環境を整備していて気が付いたのですが、CPUのHTがONの状態のときのJavaScript(IE,Firefox共に)パフォーマンスが1.5~2程度低下していました。JavaScriptを高速で動かしたい場合は、HTはOFFの方がよいかもしれません。
◆CentOS6.4上でのPHP,Java,ADP
■マシン
・CPU Core i7-980X(3.33GHz HT OFF / Turbo Boost OFF)
・メモリ 24GB(DDR3-1066 4GB × 6)
・ホストOS Windows 2008R2(Hyper-V)
・ゲストOS CentOS 6.4(実行環境)
■テストコード
テスト1:28のフィボナッチ数を求める
PHPソース(Test1.php) Javaソース(Test1.java) ADPソース(Test1.p)
テスト2:10万までの素数を求める
PHPソース(Test2.php) Javaソース(Test2.java) ADPソース(Test2.p)
テスト2のPHPのコードですが、
Stackoverflowさんのコードを使わせて頂きました。
■結果(timeコマンドのuser部分を抜き出した)
Linux(CentOS6.4 x64)上でのPHP(5.3.3)、Java(1.6)、ADP(0.85)の比較
| テスト1 | テスト2 |
PHP(5.3.3) | 201ミリ秒 | 33.5秒 |
Java(1.6) | 44ミリ秒 | 5.0秒 |
ADP(0.82) | 186ミリ秒 | 3.7秒 |
ADP(0.85) | 157ミリ秒 | 2.4秒 |
OS以外は、
以前のテストと同様の環境ですのでPHP、Java、ADP 0.82はあまり変化はありません。ADP 0.85は順当にパフォーマンスが上がっていることが解るかと思います。
ADPの開発が滞っていますが、思わぬところで話が進んでしまい、今年最後の記事になります。
社会人であり、技術者でありのコメント欄で結合について話が盛り上がったのですが、『私がHitAndBlowを作ったらどんなコードになるか?』ということで作成してみました。Visual C++ 2008で動作確認しました。
επιστημηさんの真似だと芸がないので、出題者・回答者をそれぞれ人間・コンピュータから選べるようにしました(大掃除をさぼったので嫁に怒られながら作りました・・・)。
それにしてもC++のコードは人によって個性が出ますね。
#include
#include
#include
#include
#include
#include
#include
using namespace std;
class HABReferee {
vector answer;
vector blowtable;
public:
bool prepareAnswer(const vector &answer_) {
blowtable.assign(10, false);
for ( size_t i = 0; i < answer_.size(); i++ ) {
if ( blowtable[answer_[i]] ) {
return false;
}
blowtable[answer_[i]] = true;
}
answer = answer_;
return true;
}
bool submitAnswer( const vector submit, int &hit, int &blow) {
if ( answer.size() != submit.size() ) return false;
hit = 0;
blow = 0;
for ( size_t i = 0; i < submit.size(); i++ ) {
if ( answer[i] == submit[i] ) {
hit++;
} else if ( blowtable[submit[i]] ) {
blow++;
}
}
return hit == submit.size();
}
};
static vector inputNumbers(int N) { // N桁の数値の入力を行う(違った場合はやり直し)
vector result;
string str;
do {
result.clear();
cin >> str;
for ( size_t i = 0; i < str.size(); i++ ) {
if ( isdigit(str[i]) && str[i] != '0' )
result.push_back(str[i] - '0');
else
break;
}
} while ( result.size() != N );
return result;
}
class HABContributor { // 出題者(人間)
public:
virtual vector prepareAnswser(int N) {
cout << "各桁が1~9である" << N << "桁の数を入力してほしい。各桁で数が重複するのは避けてくれ" << endl;
return inputNumbers(N);
}
};
class HABContriburerComputer : public HABContributor { // 出題者(乱数生成)
public:
virtual vector prepareAnswser(int N) {
vector digits;
for ( int i = 1; i < 10; i++ ) {
digits.push_back(i);
}
vector result;
srand((unsigned int)time(0));
for ( int i = 0; i < N; i++ ) {
vector::iterator itor = digits.begin() + rand() % digits.size();
result.push_back(*itor);
digits.erase(itor);
}
return result;
}
};
class HABSolver { // 回答者(人間)
public:
virtual void prepare(int N) {}
virtual vector getAnswer(int N) {
cout << "答えを予想してくれ" << N << "桁の数だ。" << endl;
return inputNumbers(N);
}
virtual void giveHint( int hit, int blow) {
cout << hit << "Hit" << " / " << blow << "blow" << endl;
}
};
class HABSolverComputer : public HABSolver { // 回答者(コンピューター)
HABReferee checker;
vector> candidate;
public:
void recur(vector &answer, int N) {
if ( N == 0 ) {
candidate.push_back(answer);
} else {
for ( int i = 1; i < 10; i++ ) {
if ( find( answer.begin(), answer.end(), i) == answer.end() ) {
answer.push_back(i);
recur( answer, N-1);
answer.pop_back();
}
}
}
}
virtual void prepare(int N) {
vector answer;
recur( answer, N);
}
virtual vector getAnswer(int N) {
cout << "答えは";
for ( int i = 0; i < N; i++ ) {
cout << candidate.back()[i];
}
cout << "かな?";
return candidate.back();
}
virtual void giveHint( int hit, int blow) {
HABSolver::giveHint( hit, blow);
checker.prepareAnswer(candidate.back());
for ( vector>::iterator i = candidate.begin(); i < candidate.end(); ) {
int ahit, ablow;
checker.submitAnswer( *i, ahit, ablow);
if ( ahit != hit || ablow != blow ) {
i = candidate.erase(i);
} else {
i++;
}
}
}
};
class HABGame {
int N;
HABReferee referee;
HABContributor *c;
HABSolver *s;
public:
HABGame(int N_, HABContributor *c_, HABSolver *s_) : N(N_), c(c_), s(s_) {};
void play() {
// 出題者から問題をもらいレフリーに渡す。
while ( !referee.prepareAnswer(c->prepareAnswser(N)) )
; // 規格にあったものが出てくるまでループする
bool endflag = false;
int hit;
int blow;
s->prepare(N); // 回答者に準備をさせる
while ( endflag == false ) {
// 回答者から回答をもらい判定する。
endflag = referee.submitAnswer( s->getAnswer(N), hit, blow);
// 回答者にヒントを言う。
s->giveHint( hit, blow);
}
}
};
int main()
{
HABContributor hc;
HABContriburerComputer cc;
HABSolver hs;
HABSolverComputer cs;
HABContributor *c;
HABSolver *s;
string str;
while ( true ) {
cout << "メニュー" << endl
<< "1:出題者(Human) vs 回答者(Human)" << endl
<< "2:出題者(Human) vs 回答者(Computer)" << endl
<< "3:出題者(Computer) vs 回答者(Human)" << endl
<< "4:出題者(Computer) vs 回答者(Computer)" << endl
<< "0:終了" << endl;
cin >> str;
switch( str[0] ) {
case '0' :
return 0;
case '1' :
c = &hc;
s = &hs;
break;
case '2' :
c = &hc;
s = &cs;
break;
case '3' :
c = &cc;
s = &hs;
break;
case '4' :
c = &cc;
s = &cs;
break;
}
HABGame g(3, c, s);
g.play();
}
return 0;
}
さて、『
社会人であり、技術者であり』をリリース(?)してから
思わぬところで炎上しまして、『質問に答えろ!』という声が出てきたのでFAQではないですが、質問&回答をまとめます
なお、このページについては適宜、編集します。
2012/11/23 まとめおよび質問回答を幾つか追加
2012/11/23 『みながわ氏=三浦氏という主張の根拠は?』に幾つか追加
2012/11/18
コメント欄での指摘を受け『社会人であり、技術者であり』を修正
2012/11/16 『みながわ氏=三浦氏という主張の根拠は?』を追加
2012/11/14 『「ある人物をモデルにした小説を書くのであれば、その人物がやってもいないことを盛り込んではいけない。盛り込んだ場合は、誹謗中傷となる」場合がある』を追加
現状(2012/11/23)のまとめ
現状、
この小説の最終話とみながわさんとの関係についての解釈で以下の4パターンが出てきているかと思います。
1.無関係。三浦さんは不特定のお客サイドのマネージャということ
→こちらについては例の炎上事件を知っているかどうかによって異なる面もあるようですが、最終話の後半部分については後から見ても多くの類似点があり、無関係というのは厳しいでしょう。これについて『三浦さんはみながわさんのモデルだがイコールではない』という、どう返信して良いか分からないコメントもありましたが、『モデル』と言っている時点で既に無関係ということではないでしょう。
2.みながわさんに批判的なだけ
→こちらについては、小説後半部分の記述
『たまに別のWebサイトのコメント欄に、オブジェクト指向批判を書くこともあった。当然、技術的な裏付けも何もない、思い込みによる批判だから、正論で完膚なきまでに叩きのめされてしまう。正面から議論を展開できるだけの知識がないから、スリービーチさんにできることは、「その日本語はおかしい」とか「若い人はすぐに感情的になるから議論にならない」などと、負け惜しみを書くことだけだった。』
をみてみますと、
『思い込みによる批判』とか『負け惜しみを書く』、『人の話を聞かない』とかはその人の人格を表しているでしょうから批判を逸脱しているでしょう。また、
『そのささやかな幸せがいつまでも続くといいね。』
ですが、皮肉と取るにしても、趣味が悪いかと思います(と私も思います)。
その他、いちいち挙げませんが、貶めていると取られても仕方がない表現がありますでしょう。
3.最終話の後半部分はみながわさんを貶めていると取られても仕方がないので蛇足
→こちらについてはほぼ同意なのですが、私の意見は少し異なります。
4.最終話の後半部分が本当に言いたかったことで、その前は最後を言うための布石
→以下は、あくまでも、私(および数名)の方のこの小説の解釈になるのですが、注意して書けば、『1』や『2』に受け取れるような小説にもなったはずです。それなのに、なぜ、『3』と解釈できるような作品となったのでしょうか?
私はこの後半部分が、この小説が一番言いたいことではないのか?と解釈しています。
この小説を要約すると、
『人の話を聞けないオブジェクト指向を否定している人が、オブジェクト指向が分からないのでプロジェクトに失敗し、オブジェクト指向を否定するブログを始めたが、人の話を聞かない為に炎上して誰からも相手にされなくなる。やっぱり人の話(オブジェクト指向は良い)はちゃんときこうね。』
という風に解釈できます。この小説はみながわさんに『あなたはこういう人なんですよ』ということが言いたかったのか、というふうに私は受け取りました。
そう考えると
『そのささやかな幸せがいつまでも続くといいね。』
の文章が持っている、ある種の陰湿なニュアンスが伝わってくるかもしれません。
事実を元に、素直にそのまま表現し、きちっとした批判を行えば、まっとうな小説になったかと思います。が『プロジェクトに失敗した』とか『オブジェクト指向を知らない』等、虚実入り乱れた表現や、『2』で示しましたとおり人格否定と受け取れる書き込みがあれば、そのまま捨て置くのは厳しいかと思います。
理由はともあれ、こういう小説はダメでしょうというのが私の主張です。
もう止めませんか?
現状 (2012/11/22現在)、議論は進んでいます。ので、まだ止めません。私の意見とほぼ同じ意見の方も出てきていますし、私には同意しないが、最終章については蛇足だという人の書き込みも見られるようになりました。
ということで、まだまだ止めれません。
お前の対応に問題があるんだよ
当初、私にとっては問題点が明らかだったのですが、どうも私の言い方等がまずいようで炎上しました。ちなみに、実際に何処が悪いか聞いてみたのですが、具体的な回答は頂いていません。
作者に質問を丸投げした件については『ごちゃごちゃ言うより作者に聞いた方が早いだろう』という判断で聞いてみました。今後も作者への質問は当然、行います。
もっとも、私の表現等至らない面があり対応できることでしたら対応します。
ただし、聞いてもいない人がいきなり割り込んで来て『こうしろ!』とかいうコメントには当然お答えできません。ので、個別に返信しない限り、そのようなご意見はすべて『ご意見はありがたく頂戴しますが、対応は出来ません。』という事に致します。
ブログの内容が変わっていますよね?
当初、私にとっては問題点が明らかだったのですが、どうも私の言い方等がまずいようで炎上しました。
ブログの書き方については、具体的にアドバイスをされた方がいらっしゃったのでその方のご意見を取り入れてブログの文章は修正しました。
といっても私が言いたい事は変わっていないかと思います。
何時までやるのですか?
みながわさんが止めてくれと言うか、リーベルGさんから何らかの対応があるまでか、私が力つきるかです。
あなたは関係ないのでは?
こちらのコメント欄でリーベルGさんは以下のようにおしゃっています
『私自身は基本的にコメントの内容に制限をかけるつもりはありません。誰かが間違っていると思い、そのメッセージを伝えるのに、このコメント欄が最適だと思えば、何を書いていただいてもかまいません。』
ので、このコメントをすること自体は問題ないでしょう。それこそ、問題があれば、リーベルGさんまたは@ITさんが対応するでしょう。
みながわ氏=三浦氏という主張の根拠は?
まず、
http://ja.wikipedia.org/wiki/名誉毀損罪
から
『被害者の氏名を明確に挙示しなかったとしても、その他の事情を総合して何人であるかを察知しうるものである限り、名誉毀損罪として処断するのを妨げない(最判昭和28年12月15日刑集7巻12号2436頁)。』
とあります。『処断するのを妨げない』という言い回しが分からない方がいるかと思いますので、ニュアンスを言い換えますと『処断する場合がある』ということになります。
つまり多くの人が高慢と偏見のモデルはみながわさんと判別できている時点で、
高慢と偏見の三浦マネージャ = みながわさん
としてよいでしょう。
高慢と偏見のモデルはみながわさんと判別できる理由ですが、『高慢と偏見』の最終話は、『実はオブジェクト指向ってしっくりこないんです! 』の本文およびコメント欄のパロディとなっています。
以下、『高慢と偏見』の最終話と『実はオブジェクト指向ってしっくりこないんです! 』との類似点を示します。
高慢と偏見最終話の三浦氏のブログのタイトル | みながわさんのブログのタイトル |
SEのサバイバル入門 | システムエンジニア 生き残りの極意 |
過酷なSE業界を生き延びるノウハウを伝授する | システムエンジニアとして長期に活躍した経験に基づく極意、ノウハウを教えます |
|
高慢と偏見最終話 | 実はオブジェクト指向ってしっくりこないんです! -本文- |
staticを使えば、わざわざインスタンスを作る必要などない | 「メンバー関数をstatic宣言すればインスタンス宣言をしなくてもいい」ということ知ってからは、メンバー関数を従来のファンクションのように使っている。 |
独自にクラスを作る必要などない。クラスは使うものだ。作るものではない | 「自分でクラスを作ってオブジェクト指向っぽいことをしている」なんてことはまったくない。 |
オブジェクト指向など、実業務では使いものにならない! | オブジェクト指向は、結局のところホントにモノ(オブジェクト)に使われている記法、例えばGUI コンポーネント、データベース、ファイルなどであって、プログラムのアルゴリズムとは無関係のものである。 |
|
高慢と偏見最終話 | 実はオブジェクト指向ってしっくりこないんです! -コメント欄- |
私はT大学大学院卒だ | 私は学部は東北大学で大学院が東工大です。 |
あなたはSIerだろう。私は客側の人間だ。客の言うことは絶対だ | 私はIS部門の人間なんです。SIerの客なんですよ。私に嫌われたらどうなりますか? |
|
高慢と偏見最終話のポリモーフィズムの間違い | みながわさんのブログのポリモーフィズムの間違い |
ポリモリズム | ポリフォーフィズム、 |
*みながわさんは何回かポリモーフィズムの言い間違いをしていますが、これをもじっているとみられます |
今のみながわさんのコラムのタイトルとサブタイトルは違うものになっていますが、当時のみながわさんのコラムのタイトルとサブタイトルは、
こちらで確認できます。
特にコメント欄の2つの発言が当時、有名になりました。色々引用されましたね。
ここまで類似点があるということは偶然ということはありえずに意図的に書かないかぎり無理かと思われます。
また細かい表現が変わっているので『フィクションです』となるという主張もあるようですが、これは言い訳の為にしかやっていないし、『炎上事件を知っている人は容易にみながわさんのブログのことを指している事がわかる』という風に解釈せざるを得ないのではないでしょうか?
他にもみながわ氏=三浦氏を伺わせるような内容はあるのですが、とりあえず幾つかあげておきます。
「ある人物をモデルにした小説を書くのであれば、その人物がやってもいないことを盛り込んではいけない。盛り込んだ場合は、誹謗中傷となる」場合がある
高慢と偏見(http://el.jibun.atmarkit.co.jp/pressenter/2011/02/post-6b95.html)
のコメント欄のespreさんへの回答です。
espre 2012年11月14日 (水) 13:02
>>警鐘であり『フィクション』というのなら、少なくとも、
>>>みながわさん、にしても、三浦マネージャーにしても、『人の話を聞く』とは、とても言えない、というのが、私の感想です。
>>というふうに、みながわさんと三浦マネージャを読み手に結び付けさせるようなコラムを書いてはダメでしょう。
>これが最大の疑問なのですが、なぜダメなのでしょうか?
>多くの新聞の社説やコラムは特定の個人をイメージして風刺
>する文章を掲載しています。これらも全てダメなのでしょうか?
まず、以下のページを参照してください。
『事実をフィクションとして書いたら名誉毀損やプライバシー侵害になりますか?』
http://www.bengo4.com/bbs/142497
つづいて、以下のページを参照してください。
http://oshiete.goo.ne.jp/qa/900590.html
さらに、以下のページ
http://president.jp/articles/-/2673
さらにさらに、
http://www.cyber-eraser.jp/category/1467828.html
さて、説明致します。
まず、名誉毀損罪(
http://ja.wikipedia.org/wiki/名誉毀損罪)というのがあります。
これは、刑法第230条
『公然と事実を摘示し、人の名誉を毀損した者は、その事実の有無にかかわらず、3年以下の懲役若しくは禁錮又は50万円以下の罰金に処する』
とあります。少し噛み砕きますと、
公然・・・インターネット
事実を摘示し・・・『話を聞かない』、『ダメなシステムを作った』
人の名誉を毀損・・・例の人の社会的地位やSEとしての評価を落とした
事実の有無・・・・真実でも真実でなくても
となるでしょう。
つまり、
大原則として、公に向かって、個人に対しての誹謗中傷を行ってはだめ(本当のことでも嘘のことでも)でしょうというふうに解釈できるでしょう。
ここまではOKですか?
続いて
刑法第230条の2
『前条第1項の行為が公共の利害に関する事実に係り、かつ、その目的が専ら公益を図ることにあったと認める場合には、事実の真否を判断し、真実であることの証明があったときは、これを罰しない。』
平たく言えば、
書いた内容が真実であり、それがみんなのためであればOKということになるでしょう。
>多くの新聞の社説やコラムは特定の個人をイメージして風刺する文章を掲載しています。これらも全てダメなのでしょうか?
多くの新聞の社説やコラムはこの230条の2の範囲
・公共のため
・真実
の範囲でやっているということです。
ちなみに真実性の証明は、刑法第230条の2の要請です(法律に書いてある)。
というわけで
「ある人物をモデルにした小説を書くのであれば、その人物がやってもいないことを盛り込んではいけない。盛り込んだ場合は、誹謗中傷となる」場合があるということになるでしょう。
わかりましたでしょうか?