「ネイティ」を含む日記 RSS

はてなキーワード: ネイティとは

2020-12-30

[]12月29日

ご飯

朝:なし。昼:ベーコンエッグ人参の炒め物。夜:寿司。間食:プリン

調子

むきゅーはややー。お仕事はじゅうれんきゅー五日目。

相沢沙呼『マツリカ・マトシリカ

学園ミステリの第三弾。今までは短編連作だったが今作は長編

やられた!!!!!

作者お得意のドエス女性の肉体や洋服にまつわるクドイ描写に隠された絶妙ロジックには参った。

前作や前前作、シリーズ違いの他の作品などで、ずーーっとドエス女性の太ももや足や胸や制服描写特に意味もなくし続けていたのは、この明かされて見たらなんてことなシンプルロジックトリックを隠すためのカモフラージュだったんだろう。

これが一般的な他の作者だった場合、間違いなく真相へはあっさりたどり着けただろう。

けれど相沢沙呼だけは違う、相沢沙呼の女体描写意味があるなんて思ってもなかった。

これが叙述トリックサプライズ系のどんでん返しなら気付けたのだろうけど、犯人特定ロジック物理トリックに使われると流石にやられた。

途中の多重解決じみたパートも読んでいて楽しいし、シリーズキャラたちの魅力的なシーン(特に今回は満を辞しての登場となる小西さん)も数多く、早く続きが読みたい。

若干ハーレムもののように取り巻き女性キャラが増えてきているが、主人公気持ちが一途なのも読んでいて安心できた。(欲情はしてるけど、気持ちはね)

グラブル

ガチャピン8日目。10連。虹なし。

虚空武器コンプリート

次はどの武器を集めようかなあ。

ポケモンHOME

ミラクル交換日記28日目。

ヒトカゲタマザラシアサナンユキカブリウリムームックルネイティキテルグマヒポポタス、チェリネ。

2017-10-02

[]10月1日

○朝食:ハヤシライス

○昼食:なし

○夕食:しらすサラダカレーうどん、ご飯(納豆二つ)

○間食:チョコアーモンド

調子

はややー。

休みですので、掃除したり、ゲームしたり、散歩したりしていました。

これで、今月の中頃ぐらいかプレイしていた、ケムコADVシリーズは一通りプレイし終えた。

シリーズ外の文章を読む作品もあるみたいだけど、アンドロイド端末は持ってないので、ここら辺で一旦区切りとしよう。

来週もお仕事頑張るぞいや。

今月は、東京出張とかがあるので、体を壊さないように気をつけないとなあ。

スイッチ

レイジングループ

暴露モードエキストラシナリオ、家庭用追加シナリオ、全てクリア

面白かった!!!!!

ケムコADVシリーズの中でも、なんならADVジャンルオールタイムベスト、いや、ゲームとしてのオールタイムベスト級の超超超超面白い作品だった。

昨日も書いたけど、とにかくあのキャラの「狂気」が凄まじかった。

要所要所の「滾る!」展開は、過去作品も負けてないと思うけども、

この作品はこの滾りに「狂気」が味付けされていて、そこがもう、今まで味わったことがない、すごい面白さになってる。

こう、普通の滾る展開を楽しんでるときって

「ふえええ、こんなのもう無理だよお」と絶望してからの、

「え? ここから踏ん張るの? がんばえー、まけるなー、がんばえー!」

と、キャラクタ精神性に滾ったり、

「ええ!? こんな抜け道が! しゅごいー! がんばえー!」

と、キャラクタの頭の良さに滾ることが多いし、

レイジングループもそういう一面があるんだけど、

それらと同じぐらい

「え? すごいけど、こいつ狂ってる…… こわい……」

と思わせられるのが、もうなんか途轍もなく面白かった。

何がすごいって、この「滾る展開」が合計で五回ぐらいあって、

毎回毎回、その狂気に底知れなさを感じるところ。

クリア終えた今でも、底が見えないあのキャラはとにかくすごかった。

ただ、5本目のエキストラシナリオと、暴露モードでのオチを、ネットレビュー過去作品キャラが出るぞ、と読んでいたので知っていたせいで、

予定調和になってしまったのが残念。

いや、こんなのレビューを読む僕が悪いし、僕自身ネタバレガンガンするタイプから仕方ないんだけど、

クローズドサークルもの重要キャラ後出しはない」

「なのに、顔と名前で知ってるキャラはいない」

という段階で、どの作品の誰が登場するかわかっちゃうし、中盤のあのキャラ異能手続きが明らかになったところで、もう時系列含めてこの謎解きは一直線な感じだよなあ。

繰り返しになるけど、だからそこをばらすレビューはよくない、とかそういう話じゃなくて、

ネタバレって難しいなあ、というお話です。

ヒューマン・リソース・マシーン

面白いDLソフトはないかなーとストアを探して見つけた、パズルゲーム

ノベルゲームが続いたのでゲームゲームしたのがプレイたかったんだけど、

パズルゲームというよりは、プログラミングなノリ。

イメージ的には、Scratchをよりシンプルにした感じかな?

今、16面だけど、if文の判定式に否定を使えないのが非常に面倒臭い、けど中々ハマる。

さすがに、それなりにプログラミング仕事をしているので、ただクリアするだけならそこまで悩まずにできるけど、

ステップ数を縮めたりするのはかんり苦労しそう。

い、いや、その、ほら、業務世界は、その、なんていうの、読みやすさ? 大事やん? その、なんというか、ほら、ね? おれおれコードでおれおれしたロジック読むの嫌じゃん? だからそのシンプルしか書かない的な?

ごめんなさい、言い訳だね、まずは普通にクリアすることを目指して頑張るぞいやー。

ポッ拳

アミーボとデイリー

3DS

ポケとる

マンスリーは、メガスキル三個、ライフ10スキルパワーL、メガスキル二個、で打ち止め。

ネイティネイティオマンキーキノココ捕獲

2016-01-26

用語辞典

イエローオーシャン

まれたばかりの新しい市場世間に受け入れられる前に汚されてしまう事。綺麗な海が小便で汚される事を意味する。

例:「WinnyのせいでP2P業界イエローオーシャン化した」

ホワイトオーシャン

手付かずの市場が、魅力の無いせいでずっと手付かずの儘放置されている事。

例:「男性ブラジャー市場は未だホワイトオーシャンだ」

ポケモンネイティブ

まれた時から世の中にポケットモンスターが有った世代アイドルAKB48ゲームアイドルマスターの様な人物の多い娯楽を好む。三国志より水滸伝派。

ポケットモンスターネイティとは関係無い。

2014-12-17

英語ネイティブはこう言う、ネイティブはこう言うゆって英語本出してる某セインがいるけど、

日本語ネイティブはこう言うって感じで考えてみると、

たとえば、タクシー運転手が行き先を尋ねる時に

ネイティブでない日本語が「おまえ、どこいく?」で、

ネイティブ日本語が「どちらへ?」とか「どちらへ行かれますか?」だとしても、

日本人相手に「おまえ、どこいく?」って日本語でいってくれるだけありがたいじゃない。

英語だって「where to?」か、「where are you going?」がネイティブ英語で、

「where?」がネイティブじゃない英語になるん。。。かな、わからんけど。

それでも「どこへ行きたいですか?」の意味を伝わるきっかけにはなるじゃない。

英語ネイティブ英語ノンネイティブに対して、

英語が通じるかどうかを放置して、ネイティブかどうかを押しつけるって、

どういうノリなんですかね。

同じ英語ネイティブの人でも、微妙に言い方が違うだろうし。

日本語ネイティブだって、人によって違うはず。方言が混じればなおさら

にも関わらず、一英語ネイティブ人が、

これが英語ネイティウだ!って看板かかげちゃうのは、

英語ネイティブ人達から見てもどうなんですかね。

日本人日本語ネイティブはこう言う!とか看板にしてるやつがいたら、

ちょっと日本語ネイティブとして、何様だ、と言いたい。

2011-05-20

英語学習者による英語学習法のレビュー

英語を今まさに学んでいるのである一連の記事に反応してみる。

背景:英語専攻の大学生TOEICスコアで750点程度。

・発音について

ネイティヴに通じる英語になる「たった6個の正しい発音」

http://diamond.jp/articles/-/12268

めちゃくちゃに見えて実は有効そうです

英語圏ネイティブでも"th"の音を省略したり他の音に置き換えたりしてる地方はあります。例えば、確かロンドン労働者階級の人の言葉だったか['em](them)みたいなのはハリー・ポッターの登場人物ハグリットが連発してますハワイピジンと呼ばれる方言みたいなものでは"the"は"da"になります

少し外れるけれど、インド人の英語は訛りがきついことで有名。それでも通じる英語です

以上のことから、とりあえず話すだけなら訛りなんてのはさほど気にしなくて良いのです外国語学部英語科の学生でもカタカナ発音してる奴はいます。そしてネイティブ先生英語onlyな講義についていけています。

勿論こんなことをいつまでもやっていては、本当に音を聞き分けられるようにはならないだろうとは思いますが。

一番良いのは、学習初期にある程度発音を勉強してしまうことです学習に掛かるコストはいつ始めても変わらないので。お手軽なところでは英語耳が役に立ちます

本当に英語勉強したい方には、やはりいつかは音韻論を齧ってみることをお勧めします。

・文法について

http://diamond.jp/articles/-/12269

要約:SVOだけ覚えればOK

これはほとんど賛成。

とりあえずは、5文型と時制さえ覚えれば良いというのが私の持論です

私は高校時代にNEXT STAGEという参考書を買わされた口ですが、そいつは今でも折れ目なし書き込みなしの綺麗な状態を保っています。単語帳も嫌いでほとんどやりませんでした。ただ高校時代は毎日英語の授業があって英語を読まざるを得ませんでした。それで、卒業時点TOEIC600点程度の英語力は確保できました

高校レベルまでの辞書片手に新聞読める程度の英語力であれば、参考書と睨めっこしてる暇があるなら実際の新聞なり教科書なり試験の問題文なりを読むほうが遙かに勉強になりますほとんどの人は英語を読める(話せる)ようになる為に勉強しているのであって、英語学の学者になる為でも文法用語という日本語を覚える為でもないかです

ただし、参考書というのは参考にするには(当たり前ですが)かなり役に立ちます。知らない言い回しには良く出くわしますが、そういう時にこそ素晴らしい索引のついた参考書が一冊あると便利です

・総括

とりあえず勉強を始めてみても裏目に出ることは(あまり)ない。得るものが沢山あるのは確か。

最後に。

英語勉強煮詰まったら、ロシア語フランス語ドイツ語スペイン語など、とにかく他の言葉をほんの少し齧ってみることをお勧めします。

英語の簡単さは神。

2011-05-18

ダイヤモンド英会話記事がひどすぎる件について

http://diamond.jp/articles/-/12268

ネイティヴに通じる英語になる 「たった6個の正しい発音」 ほとんどの日本人が間違えている「6個の発音」|30分で英語が話せる|ダイヤモンドオンライン

まず、ダイヤモンドにこの程度の英会話の記事が載っているという点で糞。

次に、ダイヤモンドの読者がこの程度の英会話の記事でマンセーしてるという点で糞。

そして、大してダイヤモンドの記事を読まない人間ブコメ適当マンセーしてるという点で糞。


ダイヤモンドを読むような年齢でこの程度の英会話記事をありがたがってる時点で、程度が知れるから英会話に手を出すのはやめときなww

まず英語カタカナに転写してる時点で糞なんだけど「わかりやすい!www」「素晴らしい!ww」とかいマンセーっぷりwww

こいつらがまともに英語話せることはないんだろうなあと思うと優越感が湧いてくるんですがwww

ダイヤモンドってある程度経済に疎い人間が背伸びして読むものかと思ってたけど、本格的に厨房向けに路線変更したのかな?www



まあ、掲載元がどうあれ、あれをマンセーしてる時点英語話せるようになることはないからww日本に閉じこもってろってジャップwww

2011-04-28

ある日本人女性はな

(某所でたまたま見かけた日記翻訳したものです。支障があったら消します)

こんにちは、みなさん。

ここを利用してしばらく経つけれど、私がどういう人なのか、言ってなかったので、生い立ちについて書きます

まず最初に言っておきたいのは、私が日系アメリカ人ということです。でも、そう言えるのかどうか。というのも、私はアメリカで生まれたわけじゃなくて、国籍日本からです。私の姉と私は岡山で生まれました。そしてそのあと、東京に移って、6歳までそこにいました

私の両親はしばしばアメリカ旅行したこともあって、私たち姉妹アメリカンスクールに入れられました。そして私が6歳の時に、私たち家族アメリカに永住するために移り、それ以後は私はアメリカ学校教育を受けました。今はアメリカ大学に通っています。

どうして両親が私に日本語を教えなかったか、きっと疑問に思われるでしょう。両親はもちろんそうしようとしました。でも、身につかなかったのです。私たちが住んだ州には日本人ほとんどいませんでした学校では私たち姉妹けが日本人した。私の友達にはアメリカ人以外には中国人韓国人いました。でも、私と同年齢くらいの日本人といえば、姉しかいなかったのです

私たち以外には日本人はいなかったので、私たちは次第に日本語を話さなくなりました。私たちが内気だったこともあって、アメリカ人友達日本語で話しかけたりするようなこともありませんでした。それで、私は英語は話せますが、日本語は話せないのです

私が住んでいるこの州は素晴らしいところだと思いますが、州内の大学に進んだ後、私はひどく孤独になりました高校生までは私は誰とでも友達になりましたから自分学校でただひとりの日本人だということを意識しませんでした。でも、大学では学生たちは彼らの集団ごとに固まる傾向があります中国人友達中国人ですし、アメリカ人友達アメリカ人です。もちろん例外はありますが、ごくわづかです

私の大学には百人もの中国から交換留学生がいます。韓国から来ている人たちもいます。彼らは素晴らしい人たちですが、私は当然ながら日本人学生も来ていることを期待しました。でも一人もいませんでした

私には親切な中国人友達いますが、私がいたとしても、彼らはつい中国語で話してしまうのです。何を言っているのか分からないので、私は泣きたくなってしまいます。時々、むしろまったくひとりきりの方がどれだけ楽かと思ってしまいます。

ハワイカリフォルニアだったら、日本人日系人もたくさんいるので、そういう孤独は感じないのでしょうが、私の住んでいる州ではそういうわけにはいきません。家族がここにいるのでこの州が好きです日本であろうが、アメリカであろうが、家族がいる場所が私の故郷です。結局、自分を何と呼ぶべきなのか、私にもわからないのです

日本語ネイティヴのように話せないとしても、私は日本人でしょうか。

英語を話すから私はアメリカ人でしょうか。

国籍アメリカでなくても、私は日系人でしょうか。

私自身まったくわかりません。

私は自分が Japanese であることを誇りに思っています。でも、日本語を話せないこと、知らないことが無数にあることをとても恥ずかしく思っています。

2010-11-26

ポケモン「☓☓の○○」リスト俺得


2010-03-30

http://anond.hatelabo.jp/20100223093500

もちろん,英語の授業の時,ですよ.

普段,友だちと喋るときに

いちいちネイティヴっぽく発音してたら

伝わらないでしょーが!!

2010-03-27

中学生の頃 クラスで俺だけ

英語の発音をネイティヴっぽくしてた。

クラスのみんなに笑われた。

英語の教師も苦笑いしてた。

時は移り、当時おれを笑ってたやつらは

高卒スーパーレジ打ちとかライン工とかになってた。

一方、おれはAランク大を卒業してTOEIC691.

こういう小さなことの積み重ねで人生が決まっていくのよね。

2010-03-05

ttp://sofusha.moe-nifty.com/series_02/2010/03/post-eac7.html

たとえば『マトリックス』では、裏切り者、つまり悪役側のサイファーという人物がこんな言葉を口にします。

 「俺はな、このステーキが存在しないことは知ってるんだよ。口に入れると、マトリックスが俺の脳味噌に、これが肉汁たっぷりで最高にうまいと教えてくれるんだってこともな。9年かかって俺がなにを理解したか、アンタわかるか? 無知の至福さ。」

 現実よりも仮想現実を選択するという判断が「悪役」のものであるということ。この描写が象徴するように、「現実>仮想」あるいは「三次元二次元」という価値観は、もはやハリウッド映画強迫観念ですね。虚構産業の自浄作用のようなものでしょうか。まあそれはともかく。

  『アバター』で、主人公ジェイクは、あらゆるハリウッド映画伝統に逆らって、なんと仮想現実に生きることを選択します。この部分、あまりにもあっさりと描かれているので気づかれにくいようですが、これは二重の意味画期的なことです。

 前衛映画ではありません。超娯楽大作の主人公が、地球(=現実世界)に還らず、仮想空間パンドラ)のヒロインと生きることを選ぶということ。なんともオタク的な「ネイティリは俺の嫁」宣言です。すいませんわかりにくかったですね。これは一般には、漫画アニメキャラクターリアル恋愛感情を喚起されてしまった漢(おとこ)たちが口にすべきテンプレートとされています。

 さらにいえば、キャメロンはこの映画で「もう現実とか仮想とか区別しなくてもよくね?」と提案しているようにもとれます。アメリカでは本作を観た観客のなかに、「パンドラから帰りたくない」という思いが高じて、うつ状態におちいった人々がすくなくなかったと報じられています。もしこれが事実なら、キャメロンの目論見は見事に当たったといえるでしょう。なにしろハリウッド映画に連綿と受けつがれてきたプラトニズム(イデア現実>虚構)の伝統を、根底からくつがえしちゃったんですから。

2010-02-23

えいごごごご。

中学生のころ、

クラスおれひとりだけ

英語の発音をネイティヴっぽくマジメにやってた。

クラスのみんなに笑われた。英語の教師も苦笑いしてた。

時は移り、

当時おれを笑ってたやつらは高卒工場ライン工とかになってた。

一方、おれはAランク大を卒業してTOEIC700.

こういう小さなことの積み重ねで

人生が決まっていくのよね。

-----

700点って結構いい点数のはず。

とある旧帝大だけど、

うちの学生の平均点(630点くらい)より上だし。

2010-01-08

Avatarポカホンタス

ディズニージェームズ・キャメロン監督

ポカホンタスアバター

16072154ジョン・スミスジェイク・サリーをのせた船は緑あふれる「新世界」,北アメリカ衛星パンドラに到着した。入植者たちはラトクリフ総督クオリッチ大佐の指揮のもとアンオブタニウム を掘っていた。ジョン・スミスジェイク・サリーは新たな領域の探索を開始し,ポカンホンタスネイティに出会う。はじめは彼を信じていなかった彼女も,グランドマザー・ウィロー魂の木メッセージを受けて,しだいに動揺を克服する。ふたりは一緒にすごし,ポカホンタスネイティは,ジョンジェイクにすべての生命は尊く,自然生命の輪につながっていることを教えた。その他にも彼女は狩りや,作物の手入れドラゴンの飼い慣らし方や,文化について教えた。彼女の父はパウアタン首長族長のエイチュカンで,彼女は真面目で偉大な戦士,ココアツーテイ結婚することになっていたが,彼女はそれを望んでいなかった。そのころ入植地では,原住民は野蛮な未開人だと考えている人々が,アンオブタニウム のために原住民への攻撃を計画していた。ココアツーテイ嫉妬心からジョンジェイクを殺そうとするが,後に入植者たちに殺されてしまう。入植者たちが攻撃の準備をすすめていたことで,ジョンジェイクインディアンナヴィたちに批難され,死刑を宣告される。処刑の寸前で入植者たちが現れる。パウアタン首長族長エイチュカンは殺されかけ,ラトクリフ総督クオリッチ大佐ジョンジェイクを負傷させるが,ラトクリフ総督クオリッチ大佐は拘束される。ポカホンタスネイティは命を危険にさらしながらジョンジェイクを救う。ジョンジェイクポカホンタスネイティついに絆で結ばれる。ふたつの文化は違いを乗り越える。

元文

2009-06-19

小学校英語を教えろと主張する人が、日本語の乱れを嘆いていた

小学校から英語教育を施し「話せる」英語を習得させるべきだ

という意見を、自分の周りでは結構よく耳にする。

その辺りの是非を語るつもりはないし

語ることが出来るほどの知識も経験も無いわけだが

昨日、それに関連して面白い出来事があった。

Aさんは小学校から英語を教え(代わりに算数と理科国語時間を削る)

大学に入学するまでにはネイティスピーカー英語で会話できる

というレベルまで国が指導するよう教育改革するべきだ! という意見の持ち主。

このAさんと、昨日食事をする機会がありレストランに足を運んだのだが

比較的若いバイトのウェイターが注文を復唱した際、

「以上でよろしかったでしょうか?」

という、聞く人が聞けばパブロフの犬の如く"噛み付く"言葉を口にしてしまったのだ。

Aさんはウェイターが下がった後に、案の定言葉の乱れについて嘆いていたわけだが

そんなことはこの際どうでもよく、この「以上でよろしかったでしょうか?」

という言い回しは案外興味深いと思う。

「以上でよろしかったでしょうか?」

という言葉違和感を感じる人は、"かった"という部分に反応して

「よろしいでしょうか」に訂正してほしいと感じることが多いようだ。

だが、"かった"という過去形を持ち出すのは、英語感覚から考えると結構自然な発想で、

過去形という時制をして、現在のことであっても相手との距離感等をかもし出す事で

丁寧婉曲の表現として提示することが出来る。

現代では、どんどんと英語圏の文化が日常に取り入れられているし

そういうものに敏感な若い人達ならば無意識的に敬語表現の一環として

よろしかったでしょうか」と口に出してしまうのは必然的なことじゃないかと思ったりした。

そう考えてみると他にもいろいろと思い当たる節があって

「私的には~」→「I guess」

「ていうか」→「or(should I say )」

みたいに、若者言葉というのは英語感覚を反映していることが多いように感じる。

小学校から英語を「正しく」「使える形で」教えていくと

恐らく今以上に日本語は乱れていくと思う。

早期英語教育の必要性を訴える人は、日本語の変異を受け入れられる器が必要だろう

2009-05-17

http://anond.hatelabo.jp/20090517140025

×キャスティングボート

キャスティングヴォート

これ豆知識な

ネイティヴだからこういう表現見るとガクッとする

×シリコンバレー

シリコンヴァレー

×ベンチャー

○ヴェンチャー

これ豆知識な。

ネイティヴだからこういう表現見るとガクッとする。

2009-04-29

lang-8 を利用する日本人

lang-8 を利用してそろそろ一年になるが、いろいろコツが掴めてきたので書いておく。

1.長文アウト

添削する側になれば分かるが、長文は添削するのに手間がかかる。よって敬遠される。たくさん添削されるためには、長文は避けたほうがいい。

2.短文アウト

と言って、短文では大した内容のことも書けず、よって英語力も身につきにくい。挨拶ばかりしていてもどうしようもないんだ。

3.日本人は親切

アクセス数や被添削数の上位を見ればわかるが、日本語で書いている外国人ほど上位に来やすい。つまり日本人は積極的に添削をしてあげているということだ。もともと日本で始まったサービスなので日本人比率が高いということもあるが、最近英語話者の方が比率としては増えているらしいが、英語話者は面倒くさがりだ。英語ばかりでなく日本語で記事をたまに書けばすぐに分かるがアクセス数が全然違う。

効率よく相互添削するためには、他人を添削してあげた記録がない人は避けよう。

4.まだ添削されていない記事にはコメントをつけるな

添削もされておらずコメントもついていない記事はその書かれた言語ネイティスピーカーのページにはトップ表示される。それを見て、多くの人は添削されていない記事を添削してあげるわけだ。しかし添削されていないにもかかわらずコメントをつけると、少なくとも一件は「添削された」表示になってトップ表示の順位が下がってしまう。

そうなるとより「添削されにくく」なってしまう。未添削の記事にコメントをつけるのはよって迷惑行為である。

5.礼儀知らずは避けろ

添削されてお礼コメントもない人はそもそも相互添削もしてくれない。時間リソースは有限なので、そういう人は無視して避けるのが吉。

6.議論は避けろ

相互添削目的なのだから書かれている内容は極端にいえばどうでもいいのだ。とは言っても、もちろん何を書いてもいいというわけでもなく、議論になりそうなテーマは避けよう。

2008-09-07

しねばいいのに

って英語ネイティヴだとなんて言うんだろ?

Wish you would die. みたいな感じ?

2008-02-27

Joel On Software私訳

訳してみた。あらためて、和訳はものすごく時間を要する作業だということがわかった。もうしないと思う。

注意:以下は意訳、適当訳、稚拙訳であり、誤訳を多々含んでいることは確実であり、Joel氏が本当に以下のように述べているとは限りません。

なぜMicrosoft Officeファイルフォーマットはこんなにもややこしいのか (そしてその対処法を幾つか)

Tuesday, February 19, 2008

先週、MicrosoftOfficeバイナリフォーマットを公開したが、このフォーマットは殆ど正気でないように見える。Excel 97-2003ファイルフォーマットは349ページのPDFファイルだ。でも待って、それで全部じゃない。このドキュメントには次の面白いコメントが書いてある。

それぞれのExcelワークブックは1つのcompound fileに収められている

つまり、Excel 97-2003ファイルはOLE coumpound documentで、それは結局、1つのファイル内にあるファイルシステムである。これは、理解するのにあと9ページはスペックを読まなくちゃならないぐらいには十分に複雑だ。そしてこれらの「スペック」は、普通我々が考えるようなスペックというよりは、Cデータ構造みたいに見える。これ全体が階層的ファイルシステムなのだ。

もしあなたが週末を、Wordドキュメントブログインポートしたり、あなたの個人的な財務データからExcelフォーマットスプレッドシートを生成するような気の利いたコードを書くのに使おうと思ってこれらのドキュメントを読み始めたなら、このスペックのややこしさと長さがそんな気をあっという間に失せさせるだろう。普通プログラマはこのOfficeバイナリファイルフォーマットについて次のような結論を下す:

この4つ全てについて、きみは間違っている。ちょっとだけ掘り下げて、これらのファイルフォーマットがどうしてこんなに信じがたいくらいに複雑なのか、なぜMicrosoftの悪いプログラミングを反映しているのではないのか、そしてそれを回避するためにあなたに何ができるか、を明らかにしよう。

理解すべき最初のことは、これらのバイナリファイルフォーマットはちょっと違ったデザインゴールを持って設計されたということだ。たとえばHTMLとは。

これらはすごく古いコンピュータで速く処理できるようにデザインされた。Excel for Windowsの初期のバージョンでは、1MBのRAM、20MHz動作の80386が Excelを快適に走らせることができるための妥当なものだった。このファイルフォーマット内には、ファイルを素早く開いたり閉じたりするための最適化が沢山仕込まれている:

これはライブラリを使うことを想定して設計されている。もしあなたがバイナリインポートするものを1から書き上げたいと思ったら、Windows Metafile Format (何か図を描く場合) や OLE Counpound Storage みたいなものをサポートしなくてはいけなくなる。もしあなたが Windows上でやるのなら、そうしたことをたいしたことのない作業にするためのライブラリサポート存在する... そういったフィーチャーを使うことは(元々)マイクロソフトチームのためのショートカットだった。でもあなたが全部を自分でスクラッチから書くなら、全部の作業を自分自身でやらなくてはいけない。

オフィスはcompound documentsに対して広範囲のサポートを持っている。例えば、スプレッドシートWord文書に埋め込んだりできる。完璧Wordファイルフォーマットのparserは、同じように、埋め込まれたスプレッドシートで何かインテリジェントなことが出来るべきだろう。

それは相互協調性(interoperability)を意識してデザインされてはいない。仮定されていたのは、WordファイルフォーマットWordからのみ読み書きされなくてはいけない、ということで、それは当時においては十分に合理的なものだった。これは、Wordチームのプログラマファイルフォーマットをどう変更するかについて決定を行う場合にはいつでも、彼らが気にするのは (a)何が高速か (b)Wordコードベースにおいて最小の行数になるのは何か、だったことを意味する。SGMLHTML-interchangeableといった標準ファイルフォーマットのようなアイデアは、最初にインターネットドキュメントの相互交換を実現するまで現実のものにはならなかった。それはOfficeバイナリフォーマットが最初に考案されてから10年後のことだったのだ。ドキュメントを交換するのにインポーターエクスポーターを使うことができるという仮定が常にあった。実際Wordは簡便な交換のために設計されたRTFと呼ばれるフォーマットを持っており、そのフォーマットは殆ど最初のころからあり、今も100%サポートされている。

それはアプリケーションの全ての複雑さを反映していなくてはいけない。 全部のチェックボックス、全部のフォーマッティングオプション、そして全部の、Microsoft Officeのフィーチャーは、ファイルフォーマットのどこかで叙述されていなくてはいけない。Wordパラグラフメニューにある、"Keep With Next" と呼ばれるチェックボックス、これはパラグラフを、その後ろのパラグラフと同じページに置くのに必要な場合は、次のページに移動させるもの(?)だが、これもファイルフォーマットの中に無くてはいけない。そしてこれはつまり、あなたがWordドキュメントを正しく読み込める完璧Wordクローンを実装したいなら、そういったフィーチャーを実装しなくてはいけないということだ。Wordドキュメントをロードする競争力のあるワードプロセッサを作っているのなら、ファイルフォーマットからそのビットをロードするコードを書くのには1分しかかからないかもしれないが、ページのレイアウトアルゴリズムをそれに対応させるのに何週間もかかるかもしれない。もしあなたがそうしない場合、カスタマーがあなたのクローンWordファイルを読み込んだら、全部のページがぐちゃぐちゃになってしまうだろう。

それはアプリケーション歴史を反映していなくてはいけない。 このファイルフォーマットに見られる多くの複雑さは、古く、複雑で、愛されず、めったに使われないフィーチャーを反映している。それらはファイルフォーマットのなかに後方互換性のためにまだあり、そしてMicrosoftにとってその辺りのコードを残しておくことには何らコストはかからない。しかしあなたがこれらのファイルフォーマットをparseおよびwriteする一貫した完全な仕事をしたいと思うなら、Microsoftインターンが15年前にやったのと同じことを全て、またやらなくてはいけない。要点は、何千人年の仕事が今のWordExcelには費やされてきたのであり、これらのアプリケーション完璧クローンを作りたいと本当に欲するなら、あなたは何千人年を費やさなくてはならないことになる、ということだ。ファイルフォーマットは単に、アプリケーションサポートする全てのフィーチャーの簡潔なサマリーなのだ。

手始めに、小さな例を一つ、深く見てみよう。Excelのワークシートは色々なタイプのBIFFレコードの集まったものだ。私はスペックの一番最初のBIFFを見てみたい。1904と呼ばれるレコードだ。

Excelファイルフォーマット仕様のこのレコードについての記述は非常に曖昧なものだ。そこでは単に、1904レコードが「1904日付システムが使われているかどうか」を示すレコードだ、と述べているだけだ。ああ、使えない仕様書の典型的な一例だ。あなたがExcelファイルフォーマットで何かしている開発者で、そしてファイルフォーマット仕様にこう書いてあるのを見つけたなら、あなたがMiocrosoftは何かを隠しているのだと結論付けたとしても無理はない。この情報の断片は十分な情報をあなたに与えはしない。あなたには幾ばくか外部の情報が必要で、私は今ここで、それを提供しよう。Excelワークシートには、2種類ある。日付のエポックが1900/1/1のもの(これには、Lotus 1-2-3 との互換性のために故意に入れられた閏年に関するバグがあるが、ここでそれについて述べるのは退屈すぎる)、および、1904/1/1のものだ。Excelは両方をサポートしているが、それはExcelの最初のバージョンMac版であり、それは単に簡単だったという理由でOSエポックを使っていて、しかしWindows版のExcel1-2-3ファイルインポートできなくてはならず、そしてそれは1900/1/1をエポックとして採用していたからだ。あなたが涙ぐむのも無理はない。歴史のどの時点においても、プログラマが正しいことをしなかった、という時はないのだが、しかし現実にあなたが手にしているものはこれなのだ。

1900と1904のファイルタイプは両方とも世の中には広く存在しており、それは通常、ファイルWindowsMacのどちらで作られたかによる。一方のタイプから他方のタイプへ黙って変換するのはIntegrity的に問題があるので、Excelファイルタイプを変換することをしない。Excelファイルをparseするためには、あなたは両方を扱わなくてはならない。それはファイルからこのbitをロードするだけの問題ではなく、あなたが日付表示と両方のエポックを扱うparsingのコードまで書き直さなくてはいけないということを意味する。実装には何日かかかるだろうと私は思う。

実際、あなたがExcelクローンの作業をするなら、日付の扱いについて、あらゆる種類の微妙ディティール発見することになるだろう。Excelは日付の値をいつ変換するのか? 表示の整形はどうやっているのか? なぜ1/31は今年の January 31と翻訳され、また一方で1/50はJanuary 1st, 1950と翻訳されるのか? Excelソースコードと同じだけの量のドキュメントを書かないがぎり、振る舞いに関しての微妙ビットを全て完全に記述することはできない。

そしてこのレコードは、あなたが扱う何百もあるBIFFレコードの最初の1つに過ぎず、しかももっとも単純なものなのだ。他のレコードの殆どは、より多くのプログラマーを涙に暮れさせるぐらいには十分複雑だ。

唯一導き得る結論はこれだ。

MicrosoftMicrosoftOfficeファイルフォーマットリリースしたことは大変有用なことだが、しかしそれでOfficeファイルフォーマットインポートしたり保存したりするのが楽になるということは全く無さそうだ。それらは狂気じみて複雑で、リッチアプリケーションで、そしてあなたは人気のある20%の部分を実装して80%の人々を幸せにするというくらいのことしかできない。バイナリファイル仕様によってなされるのは、多く見積もっても、著しく複雑なシステムリバースエンジニアリングにかかる時間を何分か削減するくらいだろう。

オーケー, 私はいくつか回避法を教えると約束した。良いニュースは、殆どの良く知られたアプリケーションにとって、Officeバイナリファイルフォーマットを読み書きしようと試みることは誤った決定だということだ。あなたが真剣に考えなくてはいけない代案が2つある。Officeそのものにそれをやらせるか、書き込むのが簡単なファイルフォーマットを使うかだ。

ヘビーな仕事Officeにやらせよう。WordExcelは実に完全なオブジェクトモデルを持っており、COMオートメーションの手段が可能で、これであなたは何でもプログラムでやるようにできる。多くのシチュエーションでは、Office内のコードを再利用するほうがそれを実装しようとするよりも良い。ここにいくつか例がある。

  1. Webベースアプリケーションがあって、それが既存のWordファイルPDFフォーマットに出力するようにする必要がある場合、それを実装するにはこうする: ファイルを読み込んでからWord 2007のビルトインのPDFエクスポーターを使ってそれをPDFとして保存する、数行のWord VBAコードだ。あなたはこのコードIISで動作しているASPASP.NETコードから直接呼び出す。これでうまくいく。最初にWordを立ち上げるときは数秒かかる。2回目はCOMサブシステムによりWordはまたあなたがそれを必要としたときのためにメモリ中にキープされている。それは通常のWebベースアプリケーションにとっては十分に速い。
  2. 上と同じ。ただしあなたのWebホスティング環境Linuxだった場合。フルライセンスWordインストールされたWindows 2003サーバを買う。そしてその仕事をする小さなWebサービスを構築する。C#ASP.NETでの半日の作業だ。
  3. 上と同じ、ただしあなたがよりスケールさせたいと望む場合。ステップ2で構築した全部のボックスの前にロードバランサーを置きなさい。コードは必要ない。

この手のアプローチは、全ての種類の一般的なOfficeタイプについての、サーバ上であなたがやりたいと思うであろうアプリケーションで、うまくいくだろう。例えば:

これらのケースの全てにおいて、Officeオブジェクトインタラクティブ動作でないことを教えてやる方法があり、だから表示をアップデートするのに煩わされたり、ユーザ入力を促す必要はない。ところで、このようなやりかたでいく場合には、gotchas(?)がいくつかあり、そしてそれはMicrosoftは公式にサポートしているものではない。だからあなたがそれを始める前にはKnowledge baseの記事を読むように。

書き込むファイルにはもっとシンプルフォーマットを使いなさい。単にOfficeドキュメントプログラムで生成したいなら、殆どいつでもOfficeバイナリフォーマットよりももっと良いフォーマットWordExcelでも問題なく開くことができるようなフォーマット存在する。

いずれにせよ、全てのOfficeファイルを完全に読み書きできるような、文字通りのOffice競合製品を作ろうとする(その場合には、何千年もの作業があなたに予約される) のでない限り、Officeバイナリフォーマットの読み書きをするというのは、何であれあなたが解決しようとしている問題を解決するためのもっとも労働集約的な方法だ。

2007-08-18

大量のデータを処理するプログラムプログラム自体が大規模じゃない)なら別にJavaでもいいじゃない、って言ったら何かポカーンって顔されちゃった。

いつもおいらC++賛美してるってのもあるんだろうけれど……。

何か馬鹿扱いされそうで不安で、その場で言えなかったから増田に投稿。

Javaは中間コードC++ネイティコードってことは、JavaC++との差はVMにあるはず。ということは、実行において、VMネイティコード翻訳する分の遅延とVMそれ自体の分のメモリ消費が上積みされる分、Javaが不利になっているはず。

大量のデータを処理するプログラムは、データVMには直接は関係しないし、VM最近は賢いらしいからメモリネイティコード展開したらそれを出来る限り使い回すだろうから、よほど複雑な処理でない限り、データを処理している間はC++と(変換された機械語の優劣は除いて)差は殆ど無いはず。

故に、処理するデータが膨大になればなるほど(ただしメモリ資源が貴重になるほどひどい環境や処理でないことを仮定する)コード変換の時間なんかの割合が相対的に小さなものになっていって、その結果Javaの実行効率は良くなると思う。逆に、極めて少ない処理の場合、Javaはアホの子になっちゃうと思う。

でも本当の所は知らないので、えろい人教えて下さい。

 
ログイン ユーザー登録
ようこそ ゲスト さん