アルファギークに聞いたPhotoshopの仕組み

  • 2011/05/16(月) 17:25:06

プログラミングとは!抽象的な表現を、可能な限りシンプルな条件に細分化すること!(どや


仲良しのギークさんと 「Photoshop って頭いいよねえー」 という雑談をしていたら、
ふと「そーいや Photoshop って何(言語)でできてるの?」 と疑問が湧いてきた。
なので、気になることをいろいろ聞いてきたよ!


Photoshopって何言語で作られてるの?

これ、違うクラスタの2人のギークさんに個別に聞いたんだけど、
「C とか C++ じゃない?」「C とか Visual Basic とかじゃないの」という返事が返ってきた。


なぜ!なぜ C だと思うの!PHP や Perl だと思わない理由はなに!?

「コンパイルするからね」

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!っ!!!!!!!!!?
と、コンパイルという言葉でテンション上がったのはさておき。


コンパイルするとどんなメリットがあるの?

「実行速度が早くなる」
「PHP や Perl は、Web サービスならいいけど。Photoshop は、買われちゃったらもう修正できないから」


キュンキュンキュン! キュンキュンキュン!
私は学歴も知識もありませんしブスですが、コンパイルに関してはプロフェッショナル。

つまり、ユーザが Photoshop のコマンド(レベル補正とか)を実行したとき、
その処理が早いのね!なぜならコンパイルしてあるから!!
やばい、これからフィルタ実行するたび胸が熱くなるな……
この子たち、コンパイルされちゃったからこんなに素直でいい子なのね………


そういえばどこかで、というか今まで何度も読んだなw
PHP みたいにコンパイル不要の言語は、処理しながら実行するから遅いのだった。
そして C のようにコンパイルしなきゃいけない言語は、その分手間だけど速度が速い、と。
テキストで読んで頭で理解してるつもりでも、具体例でピンと来てないと身につかないのぅ。。。


修正したくなったらどうするの?また一から全部コンパイルするの?

「ありえない」「Photoshop クラスのソフトがファイルを分けてないはずがない」

ですよね><
だからもし、どっかをちょっとだけ直したいなーって思ったら、
その部分のファイルだけ修正 & コンパイルすれば OK!なんだって♪


具体的にどういうプログラムを書いてるの?

「写真はドットの集合体だから。ぼかしなんかは想像つくよね」

たとえば、ある範囲を指定して、その周辺の背景となじむようにぼかしたい場合は、
指定範囲の内と外のピクセルの値を近いところまで持っていけばいい、と。
なるほどなるほどなるほどなるほど!だんだん超わかってきた(・∀・)


プリクラの美白効果や目を大きく見せる加工も一緒かな?

「そうそう。肌色部分を認識して、その部分の明度を上げる。
 黒目を大きく見せる場合は、たとえば顔の中央からほぼ等しい位置に、
 白で囲まれた2つの黒い部分があったら、その部分を少し大きくする、とかね^^」


完全に超わかってキター\(^o^)/\(^o^)/
そうか、そうかそうか。Photoshop の人物認識とかマジどうやってんの!?って思ってたけど、
人物や顔、そのパーツをコンピュータに理解させるというのは、つまりそういう作業なんだ。
プログラマーは、「顔」 という言葉を 「中央に縦線、そこから左右ほぼ等距離の位置に白で囲まれた黒点…」
という風に論理的にかみ砕いて、Photoshop のさまざまな効果を表現していくのね。


「この子を可愛くして!」って言われたらどうする?

「可愛いの定義による。俺が可愛いと思ってもその人はそう思わないかもしれないし。
着物着てないと可愛くない!とか言い出したら、仕様レベルで変更しなきゃいけないし」


わかりますわかります。もう私にもよくわかります。
つまり、「可愛い」 という抽象的な表現ではなく、「肌が白い」 「唇がピンク」 「あごをシャープに」
という感じで、具体的に言ってくれなきゃダメだよね><


抽象的な表現を具体化するのは誰の仕事?

「できるディレクターならやってくれるけど、たいがいはこっち(プログラマー)」

でJIMA!? はぁー、そりゃたいへんだ。
というか、ここまで聞いて、いろいろなことが腑に落ちた気がする。
そうか、あのときあの人はここで悩んで煮詰まってたのかなーとかw
だったらそう言ってくれたらいいのにー!って今となって地団太だけど、
言っても理解できないし時間無駄と思われてたっぽいし、実際その判断は正しかったように思うw
ふむむ。プログラマーには優しくしよう。機会があれば。



ところでコンパイルってさ

私の中ではミサワ絵の「カチャカチャ・・・ッターン!」のイメージなんだけど合ってる?

「だいたい合ってる」



LINEで送る

アルファギークに聞いたOAuthとRESTの話

  • 2010/06/14(月) 02:55:52

ちょっと前(わりと前)にすごくいい話を聞いたんだ!
私が1人占めしてちゃもったいないから、うろ覚えだけど書いておく!!

とある場で、思いがけずすごく有名なギークさんと会ったのね。んで、
「僕はgeekDBに入れてもらえなかったですしね・・・ヘッヘッ・・・」
的なお話をして(中略)一緒に飲みに行くことになりました。

私はアルファギークからサシで話が聞けるチャーンス!と思い、
最初のビールが来ないうちに「今日はOAuthの話を聞きに来ました(キリッ!)」
やる気満々で切り出しました。

アルファギークは言いました。

「OAuthっていうのはね。
例えば、僕がべにぢょさんのことを好きだったとします。
それを僕からべにぢょさんに伝えるのは問題ないんだけど、
僕じゃない人からそれがべにぢょさんに伝わった場合、ちょっと信用できないし、
僕としても、僕が知らないところでそれがべにぢょさんに伝わるのは嫌だよね?
それに、その情報を知った人がそれを悪用したり広めたりするかもしれない。
それは非常に問題があるでしょう。
こういうごくプライベートな情報、専門用語ではクレデンシャル情報っていって、
だいたいIDとパスワードのことを指すんだけど、
こういう当事者以外には秘密にしておきたい情報の取り扱いはすごく難しいんですよ。
それがOAuthの考え方です(キリッ!)」


「おぅっス!ちょう分かったっス!!!!!」

この人は説明するのがものすごく上手なのじゃないだろか?それなら・・・と、
私は調子に乗ってさらにいくつか質問しました。
何を聞いたかもうすっかり忘れちまったんだけど>< 覚えてるのだけメモしておくNE☆

「あの!RESTful APIって、ぶっちゃけ究極なんなんでしょう!?」


「うーん、そうだな。RESTful APIの前にまずRESTというのがあって」


「はい!REST知ってます! APIも知ってます!APIは部品ですよね?」


「そうだね、だいたい合ってる。
ただね、究極のところ、部品というかURLにアクセスするのも乱暴に言えばAPIなんですよ」


「はぁ!なんで!?」


「あのね。RSSの中身は見たことある?」


「はい!XMLでできています!!」


「おぉ、よく知ってますね」
(褒められたヾ(*´∀`*)ノ)

・・・この辺でなんかいい話聞いたっぽいけど忘れたので省略。RESTの話に戻ります・・・

「RESTは、大きく4つの機能があるのね。
順番に説明するけど、実は重要なのは2つで、残りの2つはそうでもない」


「ふむふむ」


「POSTとGETの違いは分かる?」


「ええと、POSTは封筒に入った手紙で、GETはハガキみたいなものです!」


「誰にそんなこと吹き込まれたんですかwwww」


「えっ!いや、その、世論的にそういう風潮が・・・・・|ω・`) 」


「あのね。そうだなぁ。
そのたとえで言うなら、GETというのは宛名の欄に手紙の本文も全部書いちゃうようなものなの」


「!!!!!!!!!!!なるほどすぎる!!!!!!!!!!!!」


「URLってよく見たことある?」


「やー、そんなにないです」


「例えば、普通の郵便って”東京都○○区○○3-3-3 べにぢょさま”って、ちゃんと”読める”よね。
東京都の、○○区の○○に住んでるべにぢょさまって分かるじゃない?」


「はい」


「URIもそうあるべきだっていう流れがあって。これを記述的っていうんだけど」


「記述的なURL・・・」


「Cooled URLっていうんだけど」


「いまなんと!Coolと申したか!CoolなURL!CoolなURLは前にやりました!!」


「べにぢょさん、自分のブログのURLを見て意味が分かるよね?」


「ああ!分かります!d.hatena.ne.jpのlovecallの20100614のp1とか!ちゃんと”読め”ますね!」


「そう。それでね、べにぢょさんがブログを見るときってどういう作業が必要?
 新規でエントリを書く、過去の日記の一覧を見る、エントリを修正する、エントリを削除する...
それ以外になにかある?」


「うーん、ないんじゃないでしょか。うん、ないですね」


「それがRESTなんだよ」


「は?????あ、このジーマーミ豆腐すごく美味しいですね!
(テンパって話を逸らすべにぢょ)」

・・・・ジーマーミ豆腐と海ぶどうっぽいのに集中力を削がれたのでいろいろ忘れました・・・


あとはねー、あとはねー。
ステートフルとステートレスの話とか、本当にいろいろ聞いたんだけど、
キーワードしか覚えてないんだごめんなさい(つд・)
すっごくためになる話をとても分かりやすく説明してくれた。
このエントリは全然まとまってないしひょっとしたらどっか間違えてるかもしれないけど、
それはひとえに私の文章力のなさと記憶違いのせいです。ギークは悪くないよ!
くそぅ。議事録取るか録音するかUstすればよかたよ><

私が自重せずに「ハッシュとトークンは何か関係ありますかね!?」とか
「2-legged OAuthと3-legged OAuthについて詳しく!」などとがっついたから、
全然時間が足りなかった。聞きたいことしかないつうの。
ホントお話が上手な人だった。そして大人で冷静な社会人ギークだなあと思いました。
いろんな人がいます。


先日、熱出して大変ぽいこといってたけど大丈夫だろか。
「お熱ですか!私にですか!大丈夫ですか><」って聞いたら
「いろんな意味で大丈夫です」って言ってたからきっと大丈夫だろう(´∀`)
おだいじにおだいじに!

LINEで送る