はてなキーワード: Windowsとは
設置が終わり、テストをすることになり、パソコン担当の先生を呼び出してもらい、一斉に電源を入れることになった。
先生のパソコンから遠隔操作で生徒のパソコンのデスクトップを見たり、一斉に同じサイトを表示できるようになっているのだ。
Windowsなんて、ちょっと細工すれば、人のデスクトップが丸々見えるのであり、遠隔操作するための技術も織り込み済みだ。
知っている人にとってはどうでもいいことだし、勘のいい生徒は、先生がどのような状態で、教えているのかもわかるのだろう。
ちょっとふてくされた顔をしたジャージを着た30台の先生がやってきた。
この先生は、パソコン担当で、学校にある生徒用のパソコンと職員用のパソコンのメンテをしながら、副担任をしているようだった。
「ちょっとふてくされた顔をしたジャージを着た30台の先生」が何に対して「しぶしぶ「わかりました」というような表情を見せた」のかがわかりにくいので追記をお願いできますか?
おいらは、地方のシステム屋。主に保守っぽいサービスをしている。
公官庁とか学校にまとめてパソコンを納めたり、修理に行ったりする。
スーツを作業着がわりにして、パソコンを運んだり、配線を接続したり、起動テストをしたり、ネットワークの接続を確認したりするのが主なお仕事だ。
職員用の玄関のインターホンから、教務主任の先生を呼び出してもらった。
最近の学校は、常時施錠されていて外部の人は、オートロックの鍵を開けてもらわないと入れないようになっている。
当然、防犯カメラも付いている。
暴漢が押し入って、生徒の命にかかわる事件が起きたのだから仕方がない。
昔は出入りの業者も「毎度!毎度!」って、気軽に営業に行けたのが信じられないくらいものものしい。
最近の学校はどこも空き教室がパソコンルームになっている。昔の視聴覚室のすごい版だ。
「インターネットを使うときは先生といっしょに使うこと!」とパソコン委員会の生徒が作ったポスターが何枚も貼られていた。
設置が終わり、テストをすることになり、パソコン担当の先生を呼び出してもらい、一斉に電源を入れることになった。
先生のパソコンから遠隔操作で生徒のパソコンのデスクトップを見たり、一斉に同じサイトを表示できるようになっているのだ。
Windowsなんて、ちょっと細工すれば、人のデスクトップが丸々見えるのであり、遠隔操作するための技術も織り込み済みだ。
知っている人にとってはどうでもいいことだし、勘のいい生徒は、先生がどのような状態で、教えているのかもわかるのだろう。
ちょっとふてくされた顔をしたジャージを着た30台の先生がやってきた。
この先生は、パソコン担当で、学校にある生徒用のパソコンと職員用のパソコンのメンテをしながら、副担任をしているようだった。
詳しくはわからないが、任期付きの臨時雇いのようだった。来年にはいなくなっているのだろう。
パソコン担当の先生は、しぶしぶ「わかりました」というような表情を見せた。
抵抗するパソコン担当の先生は、「わかりました。で悪いんですか。」というと、間髪いれずに教務主任が顔を近づけながら続けた。
「はいっ!よろこんでっと言え!はいっ!よろこんでだ。生徒の教育に悪いだろっ!」
こんなところまで、居酒屋の企業文化が浸透してきているのかと思うとそら恐ろしかった。
このエントリは、ニコニコ動画で大変な人気ジャンルであるゲーム実況を実際にやってみて思ったことや、
自分の実況プレイ動画と他の人の実況プレイ動画を見比べてみて思ったことを元にまとめたエントリです。
「ゲーム実況の是非」などの議論が目的ではなく、いざするとなったら何をするべきか、
何をしないべきか気づいたことをざっとまとめただけのものであり、私が気づいていないだけで
もっと極意のようなものがあったりするのかもしれませんが、「すぐに出来る」ことをまとめてみました。
こういうエントリを書くにあたってやれ売名だのやれお前程度が言うなという内容と関係ない部分にだけ
言及されるていくのをを防ぐ目的ですので、どうかご了承ください。
以下のまとめは
・実況プレイ歴:友人に誘われて一緒にプレイした動画数本程度+マインクラフト実況動画
・メインはマインクラフト実況動画、最初は100再生以下から現在の再生数は平均して5000程度
程度の動画を投稿してきて気づいたことに基づいており、半分は私的な覚書です。
(とにかく、「4桁の人に見てもらう」のが目標だとお考えください。それ以下が底辺だとかそういう話ではありません)
「再生数を伸ばすコツ」について言及すると「再生数目当ては邪悪、不純」というような意見が必ず出ますが、
やる以上多くの人に見てもらってコメントしてもらった方が面白いのは当然のことだと思います。
ここをごまかして「再生数別に伸びなくていいし・・・」と腐っているよりかは、投稿動画が何にせよ
再生数をガツガツ稼ぐ目標を持ったほうが動画を制作するモチベーションも保ちやすいとおもいますし、
こうした情報を交換し合うことははるかに有益だと思いましたので今回このエントリを書かせて頂きました。
ただゲームをプレイするだけの実況動画は数えきれないほど多くの人がアップロードしています。
それこそ発売日に真っ先に動画をアップロードするような速度でもなければまず先を越されていると考えた方が良いでしょう。
例えば先発の誰かが「(ゲーム名) 実況プレイ」というような動画をアップロードしていた場合、
自分のネームバリューや固定ファンが居なければ先発の誰かを追い越すのは非常に難しくなります。
基本的には先行性=パワーです。
ここででてくるのが、実況内容に個性をもたせることです。
例えば、仲の良い友人どうしで普段実況プレイをしているならばそこをウリに持ってくる、
あるいは一人ならばゲームプレイ部分に変化を持ってきて最高難易度をプレイする、または特定のキャラのみでクリア、
装備を縛ってクリアを目標にするなど、とにかく「他の動画との違い」は大きなアドバンテージになります。
上述した、私も実況プレイ動画をうpしているマインクラフトなどでは特に目標の無いプレイ動画は溢れかえっていますし、
「街を作る」という目標での実況プレイ動画も全て目を通すことが困難な程に存在しています。
ここで今から同じような実況動画をうpしても見てもらえるかどうかはなかなか怪しいですので、
こうした大体同じ事をするゲームであってもプレイ目標で大きく差別化を図っていくといいでしょう。
余談になりますが、ことマインクラフト動画においては「街を作る!」と言って普通にサバイバルでプレイを開始し、
資材を集める動画を数パート、建物を一つ二つ作って頓挫というパターンが非常に多く
これに対する期待値は相当に低く見積もったほうがよさそうです。
また、序盤の準備期間などは皆同じ流れになりますので、ザクッと大胆にカットしたりクリエイティブを使う、
ある程度街の概形ができてから動画を投稿するなどの手段を講じたほうが見てもらいやすくなるように感じます。
(ここでは例としてマインクラフトを出しましたが、他のゲームでも同様にぐだぐだと「普通の」プレイは良くないですね)
動画のタイトルを読んだ時に、短く簡潔で、ひと目でそれとわかるタイトルが理想です。
「(ゲーム名)実況プレイ」などは同じようなものが無数にありますので良くないネーミングと言えるでしょう。
ここで有効なのがうえにある「企画をきちんと練る」であり、企画が存在していればそのまま動画の
タイトルに持ってくることもできますし、きちんとしたタイトルを決められるようになります。
凝ったタイトルをつけてみるのもいいかもしれませんが、できるだけサムネとタイトルの組み合わせで
どのような動画かをわかるようにしてみた方がいいかと思います。
また、タイトルには絶対にネガティブ・ワードは使わない方が良いです。
動画のタイトルで予防線を張って言い訳しても仕方がありませんし、タイトルだけでクリックを躊躇させます。
後ろ向きに言い訳全開のタイトルをつけて動画のつまらなさをアピールしてはいけません。
例えばですが、お店に並んでいるパンで「おいしくないパン」と書いてあったら手に取りませんよね?
ここでいうネガティブ・ワードは「ぐだぐだ(gdgd)」などのド直球の他に、
「平凡」「普通」などの他の多くの動画と同じであることを過剰アピールするようなものも含みます。
※「初心者」「へたれ」というワードもこれに近いのですが、トライ&エラーを上手く料理出来る場合に限り
試行錯誤を楽しんでもらうという目的で使うことができますので、場合によります。
サムネイル設定もただ適当に動画の中から生成したものではなく、インパクトを与える物を設定しましょう。
絵を描いたり、何かめぼしい素材がある場合はそのイラストなどを動画に挿入しておき、そこをサムネにすると良いです。
(ニコニコ静画にあるイラストはフリー素材と思って使えとか言ってるんじゃないですよ!)
別にイケボじゃなくても、かわいい声じゃなくてもそれなりに聞いてもらえる方法として一番重要なのが、「喋り方」です。
喋り方と言われても、ピンと来ないかもしれませんが、以下の2つを想像してみてください。
A「あー・・・木を切ります・・・この原木を切るのにね・・・えー・・・MODを・・・」
B「はい、木を切っていきます!原木切るのにMODを入れてありますが・・・」
ちょっとあまりにも作為的誇張が過ぎますが、明らかにBの方がテンポの良い喋り方に聞こえるかと思います。
一人実況でかなりやってしまいがちなのですが、「あー」とか「うー」とか「えー」とかが多く、
しゃべっている内容もボソボソとして聞き取りづらい、話のヤマもオチもどこかわからないということがよくあります。
(実際、私がはじめの頃に投稿した動画でもコレがひどく聞けたものではないです)
・多少無理してでもテンションを上げる
・これから何をするかを明確にする
・声を張る
これらを可能な限りやってみると、多少は聞き取りやすくなり、見ている人にも伝わりやすくコメントしてもらえます。
実を言うと私も声にコンプレックスがかなりあり、あまり大きな声を出すのが得意ではなくついボソボソと
話す癖がついてしまっていたのですが、実況動画収録中には別の人格がしゃべっているとでも思って
とにかく自信を持って、聞き取りやすいように喋ると話しやすくなります。
声を張って収録ができない場合は、カラオケボックスなどのいくらでも声を張って良い環境にノートPCごと持ち込んで収録したりする手もあります。
また、「何を話していいかわからなくてついあーとかうーとか言ってしまう」という場合は、
事前に実況動画中である程度「何を話していくか」というプロットをメモ書きしてから収録するといいです。
こうしたメモ書きを容易することが実況動画概念に反するというご意見もあるかもしれませんが、
「実況動画中に適当に話せる」人は頭の中でこの組立ができているというだけなので
「あー」「うー」は大体どこのゲームでもゾンビくんのセリフですので、自分が言う必要はありません!
気をつけてはきはきしゃべるようにするだけで、かなり聴きやすくなります。
実況動画を見ていて気になる要素として多いのが、声をマイクで録音する際に入ってしまっているノイズ。
しゃべっている間もそうでない間もずっと「ジー・・・」「ザー・・・」というような低いノイズ音がかなりの音量で
しゃべっている方は気にならないかもしれませんが、この音がずっと入っていると不必要に
視聴者の耳を疲れさせてしまう他、よりボソボソした喋りに聞こえてしまってダブルパンチになってしまいます。
これはある程度はマイクで録音したときに絶対に入ってしまうものです。
後から除去することもできますが、2で挙げたように「ぼそぼそ、小声で」しゃべっていると
除去が非常に難しくなりますので、できるだけ声を張ってはきはきとしゃべるようにしたほうがここでもお得です。
一応、マイクノイズはフィルターをかけることで除去してくれるソフトもありますが、これにより
声の成分もカットされ、なんだか聞きづらい声になってしまうこともありますので、最終手段と考えてください。
まずは、
・サウンドカードを使う
などの手段により大幅に軽減できます。
マイクはそれほど高級品である必要はありませんが、マイクと口の距離は遠すぎず近すぎずの推奨距離を保ちましょう。
遠すぎると室内のノイズを拾い、上のような音が入る他、近すぎても声の感じが変わってしまったり、
やや大きな声を出したときに割れてしまったりしますので加減が必要です。
ヘッドセットタイプのマイクを使用する場合は、マイクを口の前に持ってこないことも重要です。
(デフォルトでこの位置に来る製品が非常に多く設計からしておかしいという場合があるのですが・・・)
口の前に持ってくると、息(鼻息)でグオーッという音が入っていて恥ずかしかったり、
リップノイズなどが入って聞きづらくなってしまいます。口の前ではなく、頬の横ぐらいの位置に
マイク部が来るようにしておくとこれらのノイズを拾いにくくなります。
また、ウインドスクリーン(スポンジなどでできた丸いやつ)をマイクの先端部につけることでも
こうしたノイズを軽減してくれます。ついていない場合はティッシュを丸めてセロテープで止めたり、
ストッキングの切れ端などを巻き付けることでも効果があります。
ノイズ源になるPCのクーラーファン(本体)やエアコン、扇風機などを
出来るだけ離す、停止させるなどしてノイズ源を減らすのも意外と有効です。
サウンドカード(USBタイプのものが3000円程から買えます)は特に劇的な効果がありますので、
もしお金に余裕がある場合は使ってみると音質を驚くほど改善することができます。
Aviutlは基本編集習得までに少し時間はかかりますが、無料で使えるうえに大変に多機能で
多くの編集が可能になっていますので、是非使っていきたいところです。
編集に慣れたら拡張編集などを使ってスマートな演出もサポートしてくれますので、
単純な動画を切り貼りする作業から、ワイプ画面を入れる、早送り&カット、
拡大などの演出や文字入れなどもできますのでAviutlを覚えれば間違い無く
「ただ録画した動画を垂れ流している」実況動画とはワンランク変違って見えるでしょう。
「でもツールの使い方を勉強するのとかめんどくさいし・・・」と思うかもしれませんが、
自分でさえも作るのを面倒臭がっている動画を人に見せても楽しんでもらえるかどうか一度考えたほうが良いでしょう。
(ちなみに拡張編集を使えばMADのような動画を作れたり、凝った映像表現もできますが
それについてはここでは触れません。)
編集を終えたら、必ず一度「等速で通しで見る」確認をするのが重要です。
音のバランスや冗長な部分が無いか、見ていて退屈な部分はないかなどを客観的に見ていくことが重要です。
一番確実な手段としては「時間を置く」ことで、一晩寝た後に見なおしてみると
また、身バレしても問題ない兄弟姉妹や友達などがいればこの時点で動画を見てもらって
エンコードやアップロード時のコツなどについてはここで書いていると別のエントリが
一つできてしまいますので、これも残念ながらここでは触れません。
あまりにもどちらか片方が大きいor小さいと聞きづらくなるので、
一度自分で聞いてみて判断してください・・・というと簡単に聞こえますが環境差が大きいです。
今のところ「ちょうどいい」と言われた音量の目安としては、windows標準の音量調整ボタンを眺めてみて
「グレーのバーが大きな音が出た時に振り切らない」程度がちょうどいいみたいです。
あまり音が大きすぎると音割れを起こしてしまいますので、少し余裕を持たせておくといいでしょう。
また、BGMが基本的に入っていないゲームでBGMを選曲する場合は自分で当てることになりますが
このBGMの音量もきちんと声やゲームの音声と一度合わせてみて調整しましょう。
これも、後から通して見なおせば一発でわかることです。
明らかにバランスがおかしい動画を投稿していると、「あ、こいつ適当にやってるな」と思われてしまいます!
BGMを自分でチョイスする場合に重要なのが、「あまり趣味に走り過ぎない」ことです。
以前とある動画で槍玉に上がって議論を呼んだのは「ボカロ曲」や「東方アレンジ」なんかでしたが、
コレにかぎらず過剰に趣味に走ったBGMを状況に関係なく流すのが演出としてあまりよくありません。
極端な例になりますが、私はデスメタルが好きなので常時デスメタルを流します!というふうに決定し、
アイテムを採取しながらデスメタルが爆音で流れていたりしたら違和感しかないのはご理解いただけるでしょう。
同じくデスメタルが好きでしょうがない人は「ああ、この曲良いよな!」となるかもしれませんが、
そうでない人たちからするとこれは全く理解不能の状況です。
そして、そうでない人の方が多いと想定しておきましょう。
例えば同じ場所を歩いている映像でもほのぼのBGMを流すのと壮大なBGMを流す、あるいは緊迫したBGMを流すので
全く違う目的で歩いているように見えるようなこともあるという程にBGMには空気を支配する力があります。
このBGMを例えば好きなジャンルの曲だけで固めていると、常に同じ空気に見えてしまい、展開に緩急がつけづらくなります。
自分が好きだから垂れ流す、ではなく、ある程度はその中でもTPOにあった曲をチョイスしていくことが重要です。
とにかくじゃんじゃん引き出しを増やしていきましょう。
私も最初これをやっていてはっきりとコメントで「長い」と言われてしまいましたが、
「1分を超えるOP映像」はまず本当に必要なのかしっかりと考えるべきです。
アニメのOPは40秒~100秒程度のものが多いですが、これはあくまで30分アニメのOPです。
自分の動画は何分あるでしょうか?10分のうち1分がOPで実に内容の1/10をOPに割いてしまっていないでしょうか?
そしてそのOPは適当にゲーム内で撮影した映像を切り貼りして曲に載せただけではないでしょうか?
どうしてもOPを作りたいという気持ちは分かります、大いにわかります。
ですが、1分以上の映像は間違いなく長いです。サビ部分などだけを編集して抜き出してきて、
10秒~30秒程度で終るOP映像を作ったほうが「OPで飽きる」人を減らすことができます。
更に必要かどうかよく考えないといけないのは、無音で画面に注意書きが出てからOPで結局
本編が始まるまで2分オーバー・・・なんてパターンです。そもそも、その注意書きは必要ですか?
別のスペースが必要な注意書きなのですか?OP中に表示してはいけないのですか?よく考えたいところです。
動画はゲーム機ではりませんから起動ロゴめいたものとかいちいちいらないと思います。
ひたすら同じ作業をしている最中や移動中などは基本的にどんどんカットして構わないでしょう。
新しいマップを探検しに行くときなどはもちろんこれがメインですが、例えば街Aから街Bまで行くのを
毎回フルタイムで見せるよりは、街Aを出たところで「街Bまでカット」とはっきり言って、
街Bについたところから映像を再開したほうが「動画としては」スムーズです。
個人的に他の方の実況プレイ動画を見ていてこれはいい、パクろうと思った手法としては
・移動中にフルボイスの会話イベントの録画をワイプで流し、なぜ今移動しているかを聴かせる
・移動中や採取中などの作業中にコメント返しなどを行う
があります。
早送りはひたすら反復作業をしているところを写して若干の面白さを見せると良いですが、
主観視点のゲームでは、早送りをすると見ている人が酔ってしまうおそれもありますのでカットと使い分けます。
例えばマインクラフトでは視点の動きが少ない整地などは早送りで、視点の動きが激しい建築などはカットが適切です。
木を切る作業も早送りがよく使われますが、そもそもここにあまり面白みがないのでこれも全カットでも構わないでしょう。
また、カットした後、小気味
XPが優秀過ぎたんじゃなく、それ以前が酷すぎたので大勢が一斉にXPに移行したんだよ
「一般家庭が使うWindows」としては、XP前はWindowsMeとかWindows98だった
これらはOSとしては今のそれと比べると非常に完成度が低く、普通にウェブブラウジングやOfficeを起動、終了を繰り返すだけで時間経過とともに動作が不安定になっていく代物だった
ぶっちゃけ、数時間に1回再起動しないと使い物にならないレベル
そんな状態が数年続いた後でマイクロソフトが「ついに超安定したOSが出ましたよ!」と鳴り物入りでXPを投入し、実際その宣伝文句は言うほど誇張じゃなかったのでみんなこぞって買い換えた
XPが多いのはそんな経緯
甥と姪の部屋を作るために実家の建て替えをするというので、溜め込んである荷物を引き取りに行った。
20年ほったらかしのビデオテープはさすがにカビてるから捨てるしかない。
マンガはかつて、量が多過ぎて収拾がつかなくなったため大量に処分したことがあって、
処分した時に二度と収集目的では購入すまいと誓ったんだった。
で、今はもう一切マンガの単行本は買わず、たまにマンガ喫茶に行く。
行くのがメンドいから、電子書籍はマンガ喫茶を利用するくらいの気安さで利用できるようになって欲しい。
レーザーディスクが意外にも多くて驚いた。
クリィミーマミのBOX、ミンキーモモ(初代)のBOX、マジカルエミのBOX、セーラームーン(無印)全巻、
カードキャプターさくらのBOX、エヴァンゲリオンのBOX、機動戦艦ナデシコのBOX、ToHeartのBOX、ファンシーララ全巻。
海モモとR以降のセーラームーンを買わないのは拘りだと自分に言い訳しつつ、
当時は資金が無かったんだよね(とは言ってもカビだらけのビデオには録ってあるはずだけど)。
よほど好きな作品であれば円盤を買いたいと思うことがあるかもしれないけど、そういう気にならない。
過去作は1話100円くらい出せば見られるし、LD絶滅の思い出が強烈だからな。
アニメ作品を買わなくなったちょうどその頃、
Windowsの普及に合わせて勃興したエロゲーに物欲が向かったというのが真相かもしれないのだが、
http://anond.hatelabo.jp/20130325172822 の続き
言語はJava7を想定。(Java8が迫っていますが、Lambdaなど関数型は、まだ早いと言うことで)
選定理由は、C++と比較して学べるところが大きく、安全でシンプルな言語だから。
※いきなりJavascriptはやめとけ、PHPは論外。
Ruby・Scalaでないのは、筆者が初心者には適切には教えられないから。
おもちゃ・ToyとしてjQueryで遊ぶのは、悪くは無いと思う。
これ以降は名著の紹介や学習方法の紹介が主体となります。名著のコンポジションという形が時間的限界ですね。
量については「初級になるなら、専門書を計3,000ページは修得することは覚悟してね」なんて言ったりしています。
Javaで初級のわかりやすい指標ですと、[amazon:Effective Java]とGoFまでの修得。
初級になるまでに登竜門への挑戦期間を含めて、3~4年はかかっても仕方が無いとも思います。
※逆に「一山いくらのコーダー」というのは、Effctive JavaやGoFが達成している技術も知らずに「自分がJavaプログラマー」だと誤解してしまっているような人達です。
そういったコーダーは何年経とうとも初級プログラマーにすら敵いません。
初級を目指して、プログラミングを楽しんでください。
ただ、学ぶべきことはべらぼうですが、「各分野毎に、エレガントな方法がある。だから探して修得する」ということが大切です。
※「一を聞いて十を知る」ような優秀な人に、50冊くらいドーンと本を置いてあげて、各本の目次を読ませるだけで、
底の見え無さを悟ってくれたりすると、嬉しくなってしまいます。
※余談ですが、その底の見え無さは数学という学問そのものですね。例えば、関数型言語の底流に「圏論」というここ100年の最新の数学があります。
また中級くらいで、Liskovの置換原則などが載っている本を紹介しますが、
そのLiskovの置換原則の周辺で出てくるcovariant(共変)って、圏論という数学の概念だったりします。
数学畑出身としては、数学が現実に活かされている嬉しい事例です。
「速く正確に大量の出力」という能力は、プログラミングをする上でも、ドキュメントを書く上でも、何より「つまらん仕事」の時間圧縮ができるようになるため、重要です。
スローガンとしては「思考のスピードで出力することを目指そう」です。
紹介するエディターはemacsやvimやExcelです。ついでにIMEとしてATOKを使用しているため、ATOKの操作をEmacsライクにする話も紹介します。
ExcelはWindows環境でMeadowすら入れさせてくれない場合の最後の砦という扱いです。
コマンドラインは、「コマンドラインというものがある」「時として非常に強力である」程度の紹介です。
※筆者はzshは全然使えません。使いこなしている方々と接する度に「勉強しなきゃな~、でも、あっちの方を先にやりたい・・・」とグズグズして、はや何年・・・
正規表現は置換を用いて、テキストの一括編集が重要です。後、遭遇したくない事態ですが、スパゲッティコードの解析をする上での最後の砦です。
※遭遇したくない例
ん?何か変なところで副作用のある処理があるようだなぁ(消沈)、SQLのInsertかUpdateか一応Mergeも使っているところから逆算して原因箇所を探すか・・・(諦念)
この糞コードがっ!!こんなところに書くんじゃねぇ!!(憤怒激高)
(ここで、他にやらかしていそうな似たようなコードを正規表現でgrep検索。改行コード込みにすれば複数文検索も可能)
わはは、予想通り共通化すべきロジックのメソッドがそこら中にある・・・
入門編で一つLinkedListというアルゴリズムを学びました。
少なくとも一つ本を読みながら自力でアルゴリズムを学べる人なら、大成できる可能性があります。
前に紹介した[amazon:C++実践プログラミング]には、LikedListやStackなど基本的なアルゴリズムが載っておりますが、
これに加えて、初級になるためにはこれくらいは知っておいて欲しいというものを紹介します。
※後、最初から必ずしも手を出さなくても良い上限も紹介いたします。
プログラムは、データを入力して、加工して出力・保存する処理の繰り返しです。
つまり、各一連の繰り返し毎に、「正しい入力」「正しい出力」を定式化する必要があります。
それを人間の手では無くコンピューターにやらせられるように、つまり自動テストできるようにテストをプログラミングします。
そこで処理の進捗を確認するためにロギングし、処理が想定通りであるかをアサーションでチェックし、
不正な入力・不正な出力=例外が起きたら、対処策をプログラミングします。
(ex 途中で処理を中断して、入力者に適切な入力のメッセージを伝えてあげる。入力の自動補正などもあり得る)
で、ここら辺をまとめてどうあるべきかとして「契約プログラミング」があります。
※余談。定式化・テストに際して、数学畑の人間としては、Javaだとequalsのオーバーライドでも必要になるし、同値関係・同値分割だけでなく、集合論・群論から学んで欲しい・・・(ここいらは数学科の学部1~2年の学習内容)
名著は英語で読みましょう。名著が名著たる由縁は、度々引用されることにあります。
つまり最新の技術書を読むときに、引用された名著のフレーズが、新旧のリンクをなし、理解の助けになります。
壁打ちといって、独り言で思考補助をするよりも遙かに有益です。
※素晴らしい師匠を探すなら、大学行くのが一番ですが、見聞を広げていく中で出会いを待つしかないとも思います。
マルチスレッドが難しいのは「バグを起こしにくいプログラミング」を求められるから。
つまりTry and Errorからの決別が求められ、今後の仕様変更・拡張も踏まえて慎重に慎重にデザインする必要があります。
できる限りステータス変数を持たずに安全に、でもマルチスレッドにするのだから、効率を追求しなければ本末転倒。
でも効率のためにはメモ化に代表されるキャッシングは必須と、アンビバレンツな要素のバランス取りが難しい。
このために、リエントラントな実装・抽象と実装の分離など様々なエッセンスを駆使することが必要です。
というよりも孔子曰く、知っているよりも好きであること。好きであることよりも楽しめることのほうが強く、
気づいたら日々時間が許す限りプログラミングをしてしまうのが理想です。
※仕事として嫌々スキルを磨かなきゃということが、これほど不幸な職業も無いですね。
学習の達成度を測るには、簡単すぎる不適切な問題ですね。
写経は数学の証明問題を、教科書のテンプレ通りに、数値や名称だけ変えて記述することしか出来ない人の発想。
つまり「矛盾無く一貫した論理モデル」の構築が自由に出来ず、テンプレの微修正しか出来ない人の発想。
また、外部の「矛盾無く一貫した論理モデル」の吸収が不自由で、アルゴリズムを「手順」としてしか捉えられないように見受けられる。
「連続」であること確かめるための「ε-Δ論法」(数学科の学部1年の学習内容)
事前知識無く、このモデルを理解できる人は、十分に「矛盾無く一貫した論理モデル」を構築できる人。
http://anond.hatelabo.jp/20130321232234
しかしカーネルハックなどのgentoo系らしい活動をほとんどしてこなかった。というかメンテナも一年のおわりにやめてしまったし、自前ebuildもしたことがない。準FreeBSDのような状態なのかもしれない。
二年次の夏休みあたりから、今いる環境を生かせそうなものを考えた結果、多少興味の沸いたいくつかのgentoo系のアーキテクト分野の参考書で勉強してみようとしてみたものの、そんな本ない。というか、カーネルのビルドの仕方が未だによくわからない。
大学1-2年で学ぶ基礎的なgccソースリーディングにしても、周囲の同級生と比較する中で、自分には適正が無いと感じた。
モチベーションを維持することが出来ない。継続的に他者との交流を得られる場所を見つけられればそれで何とかなるのかもしれない。
ビルド代行等のアルバイトを始められればいいのかもしれない。しかしアルバイト面接に持っていけるような、今までの成果物などもとくに無い。
明確な目標を立てるのがまず最初にすべき事であるのはわかるのだが、それもよくわからない。
なにか自分に人並みに適正のあるものを見つけて、それを学び、モチベーションを維持できる環境を見つけたい、それがhomebrewなのであればMac欲しい、そういうぼんやりとした希望だけが浮かぶ。学部一年のころから分かっていたそこから進歩していない。
春休みに入ってからは、Windows系の入門書を読んだり、単位はとったがほとんど理解できていなかったportageシステムの復習をしている。
しかしずっと一人でいると、QEMUなど苦手なパッケージの集中力はどんどん落ちるのを感じる。aptやyumに逃げてしまう。一日の終わりには周りとの差は開いていく一方なのではないかと不安になる。
便利というか、スマホとタブレットがさらに普及して、PCの存在感が低下すれば、UIはタッチやジャスチャーを前提としたものにならざるを得ないし、実際にWindowsもMacもそういう方向に進んでいる。
Windows8のモダンUIは、タッチデバイスとPC、両方で使えるデザインだが、どちらかと言えばタッチデバイスを重視したものだった。古くからのユーザーは猛反発した。
このあいだ、はてなブックマークがリニューアルされたが、新しいデザインはやはりタッチデバイスを意識したものだった。古くからのユーザーは猛反発した。
同じようなことがこれからどんどん起こる。
型論争の一部。
動的型陣営と静的型陣営がそれぞれ大規模開発に向いてるとか向いてないとか言うけど、「大規模開発」って何よ?って話。
自分としていくらかのパターンがおもいつくし、それぞれ質的に異なるからごっちゃにしても話が混乱するだけだ。
お前らの言う大規模開発ってどれだよ?あともちろんこれ以外にもあれば募集。
ITゼネコンみたいな連中が行う、何万人月というコストをかけて行う開発。失敗した特許庁の開発みたいなやつだ。典型的にはワンオフ品なので、かけたコストのわりに品質は低い。fizzbuzzも書けない人すら1人月と数えられるし、そういう人が生息するのはここである。2013年現在では多分Java(かたまにScalaなど)で開発される。末端の人には自分たちの担当領域外の仕様をどうこうする権利が基本的にはない。
OS(カーネルのみの狭義のOSではなくパッケージとしての広義のOS全体)とか、あるいはモダンなブラウザみたいな、膨大な機能セットをもち、様々な環境でロバストに動く必要がある開発。膨大な機能セットの中には、膨大な後方互換のための機能(例えばブラウザであればクソみたいなレガシーHTMLでもなんとなく見せてやるような機能)や、ありとあらゆるハードウェアや言語などの細かな実行環境の組み合わせで動作するための抽象化および各環境のための固有の機能を含む。オープンソース形態で開発されることもよくあり、2013年においては多分C/C++で開発される。自分たちで仕様をコントロールする権利があったりなかったりする。
1日のPVが億オーダー以上になるようなWebサービスなど。昨今だと1日にGバイト〜Tバイトにもなるデータを解析できるシステムもセットになってることが多い。サーバの1台や2台がハードウェア的な故障してもロバストに動き続けるための機能や、そのときのリカバリが容易であること、壊れた分や単なる新規追加ののサーバの補充が容易であること、みたいや機能および設計上の工夫が求められる。人的な大規模開発や量的な大規模開発と比べると比較的少人数(数人〜数百人。数千人になるのは数えるほど)で開発される。2013年においても様々な言語で開発されていて決定打はない。自分たちで仕様をある程度コントロールする権利がある。
例えばこの方が、Haskellは大規模開発に向いていると主張されているが、おそらく人的な大規模開発には向かない。これは2013年においてHaskellを使うユーザがそれほど多くないから、というのも大きな理由だがそれだけではない。Haskellは学習コストが低いことを目指して作られた言語ではないことも極めて本質的かつ決定的な理由の一つである。(自分の思う学習コストが低いことを目指して作られた言語とは例えばJavaとPHPだ。)fizzbuzzを書けない人をHaskellを書けるまでに教育するのは、どうしたらいいのだろう?
Haskellが量的な大規模開発に向いているかどうかは(自分の無知により)よく分からない。典型的には量的な大規模開発を実現するためには、そのソフトウェアがWindowsとか各種ブラウザ並に多くの計算機上で稼働することが必須だ。そうでないと膨大な開発コストがペイできない。オープンソース的に貢献を募るとしても、量的に巨大なソフトウェアに貢献する人を一定以上集めるには、それなりのユーザベース(単に使うだけの人も含めて)が必要である。Haskellの実行環境というのは全然枯れていないが、10年前のハードウェア+OSを未だに使っている人の計算機上でもちゃんと動くのだろうか?HaskellってVMで動くんだっけ?ネイティブコードを吐くんだっけ?
http://anond.hatelabo.jp/20130223090512
三行でまとめると
PSのビジネスモデルを振り返ってみるのだが、この切り口から行くとPSはSONYの半導体戦略、そしてSONYは製造業と言う性質とと切っても切れない関係がある。
利用上の注意
なおすべて妄想となっておりますので、これを真に受けて被った損害などについては一切責任を取れません。皆様におかれましてはその旨ご了解のうえご覧いただけますよう、よろしくお願いいたします。ご協力頂けない場合につきましては、いい歳こいたアラフォーの髭ヅラ男が涙目になると言う非常にウザイ状況が発生することとなり、誰も得をしません。ご理解とご協力をお願いいたします。
SONYがゲーム機を一緒につくろうと言って任天堂に近づいたものの交渉が決裂してできあがったのがPSであったわけだがこれが大ヒット。
さらにPSでは、内部で使われている半導体を自社設計・自社かそれに近いFabで作る事によって
など副次的な効果もあり、さらに「SONYの旗艦」といったイメージを作り上げることができた。この他に、CD-ROMを手がける部門や、SONYのCDプレス工場部門等々、PS景気により、直接的なPSによって生み出される効果以外に、PSという揺るぎない需要が存在する事で、設備投資などに積極的になれたといった効果がうまれた。
初代は始めどこまで意図されいたかは不明だが2台目ではそれらの経験が生かされる事となりより強化された。まず一番は半導体工場で有り、旺盛なその需要と、それによって得られた利益を投資に回し新プロセスを開発、シュリンクすることによって最終的な黒字を目指すことで赤字で販売をスタートすることとなる。
ゲームハードは赤字でも、ソフトが売れれば黒字。こんなの当たり前だろ、と言う話であるが、総合情報機器メーカであるSONYでは少し事情が異なる。これは、ソフトウエアライセンス事業による利益によって、間接的に半導体生産の設備投資を補填すると言う形を意味する。もちろんそれ以外にもSONYの製造部門にもPS2が赤字でも販売すると言う行為によってもたらされる間接的な利益が流れた。
ご存じの通り、PSは我が愛する芸術品たる至高のゲーム機Dreamcastを完膚なきまで叩きのめし世界最高の企業セガをプラットフォーム業から引きずり卸しパチンコ屋に買われる所まで追い込む等大成功をとげた。そしてゲーム機生産により、SONYの製造業部門を引っ張っていくという当初の見込みは大成功した。
PS3の時代になると、パソコンの旺盛な需要の元、急速に進化した集積回路は、プロセッサの新規開発コスト、さらに半導体のプロセス開発に必要な資金が膨大に膨らむという現実に、様々な企業が立ち向かうよう時代が来ていた。世界の巨人たるIntelと、それ以外という構図が生まれ、世界中でFabの統廃合が進んでいた。
その中で目をつけられたのがゲーム機という存在である。パソコンに対抗できるほどの膨大な需要を生むゲーム機は、薄利という性質を持ちながらも数が出るため、生産設備を拡大しやすくプロセス開発の資金を捻出する事に有利であった。さらにSONYは、ゲームハードウエアが、当時のパソコンなどに比べて圧倒的に高い性能を持っていなければ存在価値が無い、と言う観念を持っていた。これはかつて任天堂がもっていた思想であった。
さらにIBMなどの思惑とも一致、開発がされたのがCell B.E.であり、この存在がPS3を生んだ。そう、ここまで来てSONYは、半導体のためにゲーム機をデザインしたのである。
もちろんこの説にはいろいろな異論はある。しかし俺は順序としては、ソニーグループ全体の長期的な戦略にPSが生む半導体工場の増設という戦略が大規模に組み込まれていたのは間違いないのでは無いかとみている。そこで完成したマシンは、化け物であった。現在まで続く潮流であるGPGPU的な動作もこなすCell B.Eがもたらす高性能と、高い拡張性を備え、既にゲーム機では無いとまで言わしめるものができた。この性能は当時の最新鋭コンピュータを大幅に上回るものであった。
しかし……。GPGPUの概念は早すぎた。性能を引き出すことが、当人であるSONYでも難しかったのである。そしてこれはミドルウエアや開発ツールの乏しさにも繋がる。そのためスタートアップに失敗した。この失敗は、PSがゲーム機として優れていなかった、あるいは、他者装置に負けた、と言う意味で失敗では無い。製造業としてのSONYが、自社の思惑通りに事を運べなかったと言う事での失敗である。
結果SONYは、PS3の需要を当て込んだ生産設備をリストラ・売却するなどの対処をを迫られる。さらに韓国勢などの追い上げ、AV市場の急速な変化、SONY本体の体力の低下、パソコンの高速化などにも影響を受けることになる。
PS3そのものは、OSの改良、ミドルウエアや開発ツールの向上などにゆっくりではあるが立ち上がってきたが、製造業としてのSONYがPS3に期待した効果は得られず、ハードウエア屋、製造業がみた夢はここに破れた。
さらに時代は動き、集積回路は、Intelがプロセスで1世代以上先を行き、それ以外はすべて後から追うという構図が完全に定着してしまった。SONYも、SONYの半導体と言えば、集積回路ではなく画像素子、と言う時代が来て久しい。世界中で半導体製造業者の統廃合は進み、国内半導体産業は衰退した。新プロセス開発の難易度や、集積回路の大規模化から来る開発コストの上昇はいかんともしがたくなっていた。
ゲームが必要とするスペックはもはや飽和している。少しでもリアルに、少しでも高性能にと言う方面はすでにマニアのものだけになってしまい、それら需要だけで、そのとき販売されているパソコンを上回る高性能チップを開発、載せるコストを満たすことはできなくなっていた。具体的に言えば、ウルトラハイスペックの、GeForece GTX SLIクラスにも勝ちうるGPUを、専用設計でオーバーヘッドを極力少なくすることができるとはいえ新規設計することが難しくなっていたのである。さらにはゲーム機業界ではスペック競争を離れた任天堂がWii、あるいはDSを生み出し、ケータイ、そしてスマフォとと言う存在がカジュアルゲーム市場をかっさらうようになった。特に日本では据え置きゲーム機がリビングルームに置かれ、パーソナルな空間に置いてゲーム機は携帯ゲーム機になったのである。
そして決定的だったのが、ゲームエンジンの躍進と越境であろう。従来はゲームエンジンや製作環境はゲーム会社の門外不出のものであった。しかしそれらが会社を通じて流通し始め、さらには専門業者も現れるようになったのである。
家庭用ゲーム機と言えば、ゲーム機の性能を引き出すためにソフトごとにアセンブラで最適化チューニングを施す。それを行っても常に動作が一定になることがメリットとして、パソコンに比べてゲームは常に一定の動作をすることが担保できるためにゲーム製作に専念することができた。しかし、パソコンは十分に高性能になった。家庭用ゲーム機も十分に高性能になった。その結果、チューニングを行わなくてもそこそこの画面が作れるようになってきたのである。そこで余った能力はゲームエンジンのオーバーヘッドを許容するようになり、ゲームエンジンの躍進に繋がった。さらにゲームエンジンはプラットフォーム間の差異すら吸収し始めた。あるゲームエンジンを採用すれば、あまり手間をかけること無く、パソコン版、PS版、XBOX版、Wii版と複数プラットフォームで出せるようになったのである。これは、ゲームエンジンが新たなるゲーミングプラットフォームとして君臨する可能性を示唆していた。
しかし、チューニングなどといった、ユーザとは直接関係の無い部分に手間をかける必要が無く、作ったゲームがどこでも動く。これはクリエイタとしては非常にありがたい事なのでは無いか?
ビジネス書に出てくる例えがある。ユーザはねじ回しが欲しいのでは無い。ねじを回したいのである。同じように、客はゲームがしたい、もっといえば楽しいことがしたいのであって、別にゲーム機が欲しいわけでは無いのである。クリエイタはゲームを作りたいのであって、ゲームハードウエアを使いたいわけでは無いのである。ここに合致したのがクロスプラットフォームなゲームエンジンであり、そしてこれらはクリエイタに作りやすい環境を提供し始めた。さらにゲームエンジンは新たに現れたライバルである、タブレット/スマートフォンにも対応している。
しかしゲームエンジンの躍進は、プラットフォームビジネスの崩壊を意味したし、PS3は性能を引き出すには高いレベルの専門的チューニングが必要であった。しかしゲームエンジンはそこにコストを払う事を選択せず、PS3は高い性能を持ちながらも、それ以外のあまり高性能ではないプラットフォームとほぼ同等、せいぜい高解像度のテクスチャーに入れ替えられた程度のゲームしか提供されない、と言った事が発生するようになっていた。
そしてPS4が出た。
PS4は有り体に言って、x86-64アーキテクチャのコンピュータに、OpenGL/CL対応のGPUを搭載した、本質的にはそこらのパソコンと変わらない構成である。
さらに言えば、最新のCorei7+GeForce GTX…と行かなくとも、そこらのパソコンに較べ、性能は高くない。しかし、根本的にゲーム専用機が持つ、汎用パソコンには無い特徴
を備えている。さらには、GPUを扱いにくくする要因の一つとして上げられる、GPUとCPUのメモリ転送をほぼ考えなくて良いと言う仕様を打ち出してきた。これはCellとCPUのプログラミングが分断され、非常に開発を困難にしていたPS3の反省をダイレクトに生かしてきたと考えられる。これはAMDが出していたコンセプトだ、と話題に上がるが、あくまでもパソコンの話であって、ゲーム機の分野では少なくとも、PS2がプログラミングが困難な部分を、高速なバスで繋ぐことで隠蔽するよな仕様であったように記憶している。
さらにx86-64アーキテクチャにしたことで、ゲームエンジンがPC向けエンジンの次に、素早くPSにも対応できる素地を整えた。Power向けに施す必要のあるチューニングを不要にしたのである。従来はパソコンで開発されたクロスプラットフォームのゲームは、パソコン向けと、家庭用ゲーム機向けの2種類作られた。そして家庭用ゲーム機向けは往々にして、ターゲットとなるハードウエアの中で一番性能の低いところに合わせたデータで作られた。平たく言えばPS3の方がXBOX360よりもはるかに映像表現は優れているのに(※ただし使いこなせれば) XBOX360との差異はテクスチャやムービーの解像度程度の違いだけになってしまう事を意味していた。しかしx86-64にしたことで、家庭用ゲーム機向けに統一してダウングレードされたデータからPS版を生成させるのではなく、パソコン向けのデータから生成させた方が早いと言う状況を作り出し、他の家庭用ゲーム機にくらべてアドバンテージを得ようとしているのでは無いだろうか。これはPS VitaがARMを採用したことも同じ事である。
さらに、SONYは、PSVitaから進めてきた戦略として、自社による強力にプラットフォーム感の差異を吸収するミドルウエア群…これはゲームエンジンと読んでも良いのかも知れないが…を提供してくるだろう。x86ならば従来の資産を生かすこともできるし、世の中に出ているコンピュータ向けのライブラリも利用できる。急速に開発しやすい環境を立ち上げているのではないだろうか。これはゲームエンジンにより脅かされる、プラットフォームビジネスへの対抗措置でもあるだろう。
これにより「雑事に捕らわれること無く、ゲームの楽しさ・表現そのものに専念する」と言うクリエイタの夢を叶えるハードウエア、それがPS4であろうと思う。
平たく行ってしまうと、自社の半導体商売が死んだことにより、その死絡みから解き放たれたPSは、クリエイタ主導でゲームを作ると言う根本に立ち返って作ったのがPS4だ、と言う話である。
しかしこれだとハードウエア、製造業の夢はどうなってしまうのだろうか?そしてユーザは別にクリエイタの夢などはどうでもいい。下手をすると高性能なハードウエアを所有していると言う欲を満たせなくなる分だけこちらの方がまずいかも知れない。それをどうカバーするのか?と言う話になる。
SONYは、次世代戦略として明らかにソフトウエア重視に舵を切っている。SONYは今、収支から見ると製造業では無く金融業であるが、その次に利益を生み出しているのは音楽・映像ソフト部門とゲーム部門である。
まずはここを潰してしまっては会社として立ち行かなくなる。それはまずい。ではどうするかというと、従来の「製造業としてのSONYを強くするために、PSの需要を利用する」のではなく「コンテンツ・製造複合体としてのSONYの核にPSを据え、関連商品を生み出す形で恩恵を得る」と言う形に舵を切ってくることになる。PS3でも一部行われているが、たとえばPSのリモートプレイを可能にするパソコンやタブレット、PSを再生装置としてコンテンツを供給できるメディアサーバといった具合である。
しかしこれらに対応させるために大切なPS本体の魅力を失わせては困ると言う事は強く意識されなければならないし、意識されていくだろうと思う。
ユーザの夢は、将来的には作りやすいゲームプラットフォームが生み出す新しいコンテンツという形で満たされることになるだろうが、直近では、ソーシャルへの展開という形で示されていると思う。将来的にはいかにコンテンツを集められるかと言う事にかかっている。が、ぶっちゃけていうとユーザから見たら、これほど夢の無い話は無いと言わざるをえない。
今回発表されたタイトルのデモなどは実際にはチャンピオンで有り、実際にプレイして得られるのはPS3とそれほど感覚的に、革新的に良くなったと感じる部分は薄いと思う。この点で、PS4は、PS3と実働コンテンツはそれほど変わらないと思っている。マイナーバージョンアップ程度。パソコンがWindows XPで評価が固まったようなものである。これはおそらく次に発表される新型Xboxでも同じだ。任天堂は少し別格の応えを出したが苦戦している。
かつてセガが出した芸術品とも言える至高のゲーム機、DreamcastはOSにWindows CEを搭載した。プロセッサこそ独自であったがそれは当時のWIndows CEではあたりまえであり、むしろそこにWindowsと言う汎用のソフトウエアを利用したことで非常にゲームが開発しやすく、PCゲームが移植しやすい環境を作り上げた。それらはアーケードのnaomiプラットフォームや、ワンチップで埋め込まれたパチンコなどで今でも生き続ける。
任天堂がWiiUでコントローラに画面をつけDreamcastに追いついたように、SONYは、PS4で作りやすいゲーム機という点で追いついたと言える。
またしてもセガは早すぎた。時代がセガに追いついていなかったのである。Dreamcastはその名の通り「夢を投げる」存在であったのだ。
最初に言っておくと、増田はSCEが嫌いな方でPS3もVitaも持っていない。
そんな増田だが、PlayStation4発表でのハードウェアに対する誤解の数々を見てちょっとばかり怒りを覚えたので少し書いておく
いきなり「何が違うんだ?」と思う人や「何も違わないだろ?」と言う人も居るかも知れない。
だが後半を語る上でもこれは重要な話なので省略しないでおく。
最近のPCは当たり前のように64bitのメモリ空間を扱えるようになった。
この増田を読んでる人でも64bit OSを使っている人は少なくないはずだ。
これをもたらしたのは、x86 CPUを作ったIntelではなくx86互換CPUを作っていたAMDである。
じゃあIntelは何をしていたのかと言うと、64bit CPUを作っていた。x86を完全に捨てて。
Intelは「IA-64」という64bit CPUを開発して商品も出していたが、これは現在ではほぼ完全に消えている。
確かにIA-64は64bitをネイティブで扱えて「x86の古臭い負債」が全く無かった。しかし、現実世界はx86で作られた既存のソフトウェアを求めたのだ。ゲーム業界でも似たような話を聞いた気もする。
それに対して、AMDは「64bitを扱えるx86」を作ってしまった。これが「AMD64」であり、現在業界標準としてx86-64と呼ばれているものである。
知っての通り、x86-64は現在のIntel CPUでも対応している。AMDが作った命令を使わされる事になったIntelは何を思っただろうか。逆に、これまでIntelの命令を使ってきたAMDは何を思っていたのだろう。
PS3に搭載されていたCellは、非x86でスカラプロセッサのPowerPC CPU(PPE)と、複数のベクトルプロセッサSPEを組み合わせたヘテロジニアス(非対称)プロセッサだった。(スカラ、ベクトルについてはググろう)
スカラプロセッサが得意な処理、ベクトルプロセッサが得意な処理を両方とも高速に実行できる。それがCellの目指した「夢」だった。
スカラプロセッサとベクトルプロセッサのプログラム最適化は全く別の概念で、プログラマーにとっては野球とサッカーを同時にやらされるような物である。
しかも、スカラプロセッサとベクトルプロセッサの間でデータの交換もある。野球とサッカーのキャッチボールて。
スーパーコンピュータ「京」もスカラとベクトルの合わせ業で池田某氏に何度も叩かれるほどの超絶難産だった事は記憶に新し…いっけ?
それが原因でPS3の性能を最大限に引き出したソフトはほとんど存在せず、こともあろうにXbox360とのマルチソフトが溢れる結果となった。(ちなみに増田は360も持ってないのでエルシャダイをプレイ出来ていない、問題だ)
それに対し、PCの世界ではPS3・360が発売してしばらく後に新たなヘテロジニアスコンピューティングが生まれていた。
CPUに比べて進化が止まらないGPUをベクトルプロセッサの代わりとして使う試みだ。
GPUはスパコン用のベクトルプロセッサやCellのSPEと違い、最近のどのPCにも搭載されているので量産効果で割安というメリットがある。
DirectXのバージョンも2桁に突入し機能が増えるにつれて、「もうこれで計算すれば良いんじゃね?」となったわけだ。
結論から言うとこの試みは無茶苦茶ヒットした。近年開発されたTOP500スパコンでGPUが使われていないものを探すのが難しくなってきたし、
最近はPhotoshopなんかの比較的身近なツールもGPUコンピューティングに対応してきてヌルヌル動くようになっている。
しかし、そんなGPUにも欠点はある。「CPU・メモリから絶望的に遠い」のだ。
IBMが発明しMS-DOS・Windowsが動くことで爆発的に普及した今のPCは、GPUを外付けにすること前提で設計されていた。
DirectXやOpenGLのような例外を除いて、基本的に現代のOSはCPUとメインメモリでソフトを動かすように出来ている。
GPUも、一旦メインメモリ上でGPUのRAMに載せるためのデータを生成し、CPUから「GPU動かすよー」という命令を出さなければ動かせないのだ。
これはGPUにとって致命的すぎる欠点だった。これが原因で、遅さを跳ね返せる最新のミドルレンジ・ハイエンドのGPUでなければ逆にCPUより遅くなってしまうケースばかりだ。
現実的な理由で始まったGPUコンピューティングがぶち当たった現実的な壁である。
このGPUの欠点を克服する方法について、AMDはかなり前(少なくともGPUコンピューティングが流行るより前の2007年以前)から取り組んでいた。
GPUコンピューティングが遅いのはCPUから物理的に遠いため命令を送る時間が掛かり、メモリの扱いも異なるせいである。
CPUからGPUに命令を送る遅延を無くし、CPUのメモリとGPUのメモリを交換する時間も減らせばGPUコンピューティングのデメリットは消え失せる。
夢のある話だ。
しかし、AMDには発想と設計技術はあったがカネと製造技術はIntelと比べて絶望的に劣っていたため、
初めてのCPUとGPUを統合したプロセッサはIntelに先を越されてしまった。(IntelのGPUが絶望的に遅いからって実質出てないなんて言っちゃダメだ)
これにはAMDもかなり堪えただろう。けれどもAMDは戦略を曲げなかった。
IntelのGPUが絶望的に遅いのでほとんど意味は無かったが、少なくとも前世代のIntel GPUに比べると格段に実効性能が上がっていたのだ。CPUとGPUを近付ける統合には間違いなく意味があったということである。
AMDはCPUとGPUを同じチップにするだけでは無く、メモリ「アドレス空間」も一緒にする道を目指した。
こうなるとCPUの使っているメモリがGPUから直接扱え、GPUの使っているメモリがCPUから直接扱えるようになる。
これが実現するとCPUとGPUが完全なヘテロジニアスコンピュータに一歩近付くのだ。
2011年にやっとAMD初めてのCPU+GPUであるAPUを出せたが、メモリアドレス空間はまだ別々だった。
2012年になってもメモリ空間は別々のままだったが、AMDはARM(iPhoneやAndroidやWindows Phoneに載っているARMである)と合同でHSA(ヘテロジニアス・システム・アーキテクチャ)を推進すると発表した。
世の中の現実的な人々は笑った。「アーキテクチャだけを作ってもハードとソフトが出てこないんじゃ話になりませんよ」と。
同じ2012年、AMDは2013年中にHSAの第1世代製品を出すとだけ発表し2012年は終わった。
そして2013年2月21日(米国時間20日)、Sony Computer EntertainmentはPlayStation 4を発表した。
Cellはコケてしまったので載らない事は誰もが知っていたが、載っているハードウェアに一部の人が驚いた。
―HSAである。PC用のHSA対応APUがまだ正式発表されていない中で、なんとHSAを載せてきた。(2013年末発売だから当たり前だというツッコミは止めろ!)
CPUはx86-64のJaguar 8コア(ちなみにPC向けJaguarは4コアまでだ)、GPUはRadeon HD 7800相当でPS3と違いガチで1.8TFLOPS(理論上1秒間に計1.8兆個の小数点を含む計算を実行可能)のスペックを持つ代物だ。
このCPUとGPUは8GBのGDDR5メモリを共有して動作する。8GBと聞くと最近のPCから考えると少なく聞こえるかも知れないが、(わたしのメモリは16GBです)
GDDR5とはGPUの描画計算を速く済ませるために作られた超高速メモリであり、ご家庭のDDR3メモリとは比べ物にならない速さが出せる。
実際の所PS4がHSA対応かは正式発表されていないのだが、PC向けJaguarはHSA対応と発表されており、SCEもPS4をAPU(CPU+GPU)と呼んでいてこの変態メモリ構成とすると、発売までにクッタリでスペックダウンしない限りHSA確定と見て良いはずだ。
また、PlayStationはこれまで一度もx86系CPUを採用した事が無く、これが最初(で最g)のx86採用機となる。
Intelが初代Xbox(Celeron搭載)であっさり諦めたx86のゲーム機市場制圧の夢を、AMDが思いもよらぬ形で果たしたのだ。
これまでPCでしか発売されてこなかったDiabloが、x86-64のPS4向けに初めてコンシューマ版を発表した事もx86-64の採用が決してつまらない事ではなかった証だろう。(Diabloと戦うハメになるサードの方々にとっては非常につまらないが)
CPUとGPUの”フュージョン”…(HSAは以前はFusionと呼ばれていた。そういえばドラゴンボールの映画も今年やな…)
AMDが長年の間見てきた夢が、PS4で初めて現実世界に現れることになる。(※ただし次世代XboxもHSA採用でPS4より先に発売したりしない世界線に限る)
こんな馬鹿らしいほど夢が詰まったマシンを「x86搭載だからPCみたいで夢が無い」という一言で切り捨ててしまう人に増田は絶望した。
でも、それってユーザーの夢にどう繋がるの?
性能の引き出し易さがPS3と比べて格段に良くなるのでPS3版ラストレムナントや人喰いの大鷲トリコのような非情な現実が減る。以上。