4 ポイント 投稿者 GN⁺ 2024-05-16 | 1件のコメント | WhatsAppで共有
  • デジタル画像編集の代表的ツールとなった Photoshop は、1987年の個人向けプログラムとして始まり、Adobe による配布を経て 1990 年に商用製品として定着した
  • Computer History Museum は Adobe Systems Inc. の許可を受け、Photoshop 1.0.1 のソースコードを非商用目的で公開した
  • 公開されたコードは 179 ファイル、約 128,000 行の規模で、Pascal と 68000 アセンブリ言語が大半を占める
  • Apple からライセンスされた MacApp アプリケーションライブラリは公開対象から除外され、再配布や商用利用にも制限がある
  • Grady Booch は初期コードについて、よく構造化された設計と現代の Photoshop につながる基本構造が見て取れると評価した

Photoshop の始まりと商用化

  • Thomas Knoll は University of Michigan でコンピュータビジョンを研究していた博士課程の学生で、1987 年にデジタル画像を表示・修正するプログラムを書いた
  • Industrial Light & Magic で働いていた John Knoll は、このプログラムが写真編集に有用だと考えたが、当初から製品化を意図していたわけではなかった
  • 当初の名前は Display で、機能が徐々に洗練されるにつれて、1988 年夏には商用製品になり得ると判断した
  • 兄弟は名前を Photoshop に変更し、スライドスキャナメーカーの Barneyscan はバージョン 0.87 を約 200 本Barneyscan XP の名称でバンドル提供した

Adobe と Photoshop 1.0 の発売

  • Adobe はアートディレクター Russell Brown の勧めを受け、Photoshop の改良版を配布するライセンスを購入することを決定した
  • 契約は 1989 年 4 月に完了し、Photoshop 1.0 は 1990 年初頭から出荷された
  • その後 10 年間で Photoshop は 300 万本以上を販売した
  • 「Photoshop」は、Merriam-Webster オンライン辞典で Photoshop または他の画像編集ソフトウェアを使ってデジタル画像を変更することを意味する動詞として使われるほど広く普及した

公開された Photoshop 1.0.1 ソースコード

  • Computer History Museum は Adobe Systems Inc. の許可を得て、1990 年版の Photoshop 1.0.1 ソースコードを非商用目的で公開した
  • コードの大部分は含まれているが、Apple からライセンスされた MacApp アプリケーションライブラリは除外されている
  • 圧縮フォルダには 179 ファイルがあり、約 128,000 行のコードで構成される
    • 75% は Pascal
    • 15% は Motorola 68000 アセンブリ言語
    • 残りは各種データ
  • 初期の Photoshop は Apple Macintosh 向けに主として Pascal で書かれ、実行効率が重要な部分では Motorola 68000 向けの機械語が使われた
  • Thomas Knoll は、バージョン 1 では自分が唯一のエンジニアで、バージョン 2 ではエンジニアが 2 人だったと述べている
  • Thomas は基本アプリケーションプログラムを担当し、John は複数の画像処理 プラグインを書いた

ダウンロードとライセンス条件

Grady Booch が見たコード構造

  • Grady Booch は Photoshop 1.0 のソースコードを開く体験を、ツタンカーメンの墓を最初に開いた Howard Carter にたとえた
  • コードは、インターフェースと抽象化が一貫して分離された、非常によく構造化されたシステムだと評価された
  • 各インターフェースと実装の組み合わせごとに、おおむね 1 つの主要な型があり、抽象化をコンポーネント化した設計判断を追いやすい
  • 一貫した名前付け、適切に分割されたメソッド、単純な実装のおかげで、システム構造を把握しやすい
  • Photoshop 1.0 には、現代の実装にもさらに発展した形で残っている基本構造が見られる
    • タイルフィルタが代表的な構造として挙げられている
    • ディスプレイバッファや主記憶よりはるかに大きい画像を扱うための仮想メモリ抽象化が含まれる
  • Photoshop 1.0 は 10 万行を少し超える規模だったが、現代版は 1,000 万行以上に達する
  • 当時も現在も、多くのコードは入出力と Photoshop が扱うさまざまな ファイル形式に関係している
  • バージョン 1.0 のソースコードにはコメントがほとんどなく、その大半はアセンブリ言語の断片に付いている
  • Booch は、コードが読みやすいためコメント不足は問題ではなく、むしろコメントが邪魔になった可能性もあると見ている
  • コード内には当時の痕跡も残っている
    • Andy Herzfield の Thunderscan スキャナソフトウェア処理コード
    • 初期の TARGA ラスターグラフィックファイル形式のサポート
    • Barneyscan へのいくつかの参照

Photoshop 1.0 の機能と限界

  • 初期の Photoshop の画面には利用できるツールが表示されていた
  • ブラシは色だけでなく、サイズとテクスチャも選択できた
  • 高度な選択ツールと多様な画像フィルタが提供されていた
  • 重要な欠落機能の 1 つは画像を複数の レイヤーに分ける機能で、この機能は 1994 年のバージョン 3 で追加された
  • 環境設定ページでは一部の機能をカスタマイズできた
  • フォント、フォントサイズ、フォントスタイルの選択肢は限られていた
  • テキストはダイアログボックスに入力した後、画像内へ移す方式だった

1件のコメント

 
GN⁺ 2024-05-16
Hacker Newsの意見
  • 2000年代にAdobeで働いていたとき、Photoshop、Illustrator、PostScript、その他のアプリのソースコード保管を試みたことがある
    Thomas KnollのオリジナルのMacフロッピーバックアップが残っていたので、Mac Plusを持ってきて、シリアルケーブルとKermitでノートPCにファイルを移した。最初のバージョンは1988年7月6日付の0.54だった
    フロッピー内のファイルは複数の古い圧縮アーカイブ形式だったが、ほとんどは読み取れた。見つけたすべてのコードを専用のPerforceサーバーに保管した
    残念ながら、最初期のIllustratorバックアップは、故障した単一の外付けディスクドライブに入っていた

    • Illustratorの担当者はPalo Altoにいて、連絡しやすい人だった
      当時はインターフェースのインタラクションがいまひとつだというフィードバックがあった。今では判断しにくいが、FreeHandが急速に人気を得て、その後消えていった
  • このソースコードでアプリをビルドするには何が必要かをよく整理した記事がある: http://basalgangster.macgui.com/RetroMacComputing/The_Long_V...

    • このサイトの他の記事も読んでみると驚かされる
      こういう種類の知識を持っている人は多くない
    • フィードリーダーに追加するときに問題があるのか気になる
      RSSは自分の環境ではうまく動くが、Minifluxでは This website is too slow and the request timed out: Get "http://basalgangster.macgui.com/RetroMacComputing/The_Long_View/…;: dial tcp 209.182.219.107:80: i/o timeout と出る
  • 90年代半ばにAdobeへソースコード交換に行ったことを覚えている
    PhotoShopはMacAppベースで、AdobeにはWindowsで動作するレイヤーがあった
    私たちは開発中だったSQLエンジンを交換し、持ち帰ったコードにはPhotoShopの一部が確かに入っていたが多くはなく、無視していた特殊な色空間計算コード程度だった
    ソースを見て、MacAppの痕跡が残っているか確認してみたい
    90年代半ば以降に全部変わっている可能性もある

    • コード交換という発想がいい
      こういう事例はあまり聞いたことがないので、ほかにコード交換の話があるのか気になる
    • 実際に例外として明記されている: “All the code is here with the exception of the MacApp applications library that was licensed from Apple”
    • Photoshopで何年も働いていたが、そのコードは今も残っている
    • Windows上のMacAppとは
      もちろんそうだったのだろうが、かなり肥大化したソフトウェアだった
      Think Class Libraryは多くの開発者を救ったし、Greg Dowは今もAdobeで働いているかもしれない
      考えてみると、PowerPlantはTCLよりさらに良かった: https://en.wikipedia.org/wiki/PowerPlant
  • ユーザー体験が今でもおおむね同じであることに驚く
    初期エンジニアたちのビジョンはすごかった
    ただ最近はアプリを開くたびにいらいらするし、デスクトップでキビキビ感じられた唯一の時期は、MacBook Pro M1が最初に出てAdobe PhotoshopのSiliconベータがあった短い期間だけだった
    その時代は終わり、また遅くなった

    • 90年代初めに使ったことがあるかは分からないが、RAM 4MBのMacではGaussian Blurの取り消しに5〜10分ほどかかった
      苦痛は本物で、当時まともに使うならRAM 96MBのSGI Indigoのほうが良かった
      90年代後半には9500がいちばん相性がよく、そのときもRAM 1GB全部が必要だった
    • ユーザー体験が良いからなのか、それとも変えるとユーザーが集団で反発して不可能なのか気になる
    • 単にダウングレードすればいい
      まだ2022年ごろに出た、初めてM1をサポートしたクラック版を使っているが、2年前と同じように今もキビキビしている
    • The Messy Middleは、元BeHance CEOがAdobeのクラウド製品をどう作り直し、どう進めるべきかをまとめた優れた本だ
      Scott Belskyは今では投資家になっており、BeHanceとAdobeをレンタル経済の方向へ売り渡した過程を書いている
      優れた本だとはいえ、縮小していく経営層向けの自己啓発書に近いところもある
      それでも、アートや画像制作向けのオープンソースエコシステムはこれまでになく良くなっている。実際には、コミュニティの支援なしには追いつけないプロ向けツールが高くなりすぎて、皆が押し出されたからでもある
    • まだ古いCS6ライセンスを使っていて、アプリ内ではキビキビしているが、起動時はいまだに時間がかかる
  • 2013年の記事で、1990年のAdobe Photoshop 1.xとは

    • そのコードの半分くらいは、今でもphotoshop.adobe.comでWASMとして動いていそうだ
  • ソースコードを見たが、何がそのコードを美しくエレガントにしているのか理解できるようになりたい
    Rustを学びながら、単純なSnakeゲームでさえコード構造を決める際に選択肢が多すぎて難しいと感じ、似たような悩みを抱いた
    「空間」上で動作する関数やUIをどう作るか考えているうちにPhotoshopや3ds Maxを思い浮かべ、このリポジトリを見つけられたのは本当に良かったが、単純に理解できない
    学習の観点で興味深く、設計パターンの力を伸ばしたいので、コード構造を学ぶのに良い資料があれば教えてほしい

    • このコードや個人的な背景について多くは語れないが、正直、一歩引いて原則を見てみるのがよいと思う
      以前は抽象化、設計パターン、構造でかなり苦しんだ
      だが「本物の」命令型コードで作業し、クラスのことをしばらく忘れ、すべてのコードを同じファイルに置くと、コードが自然に構造を持ち始めることに気づいた
      これが唯一の道だという意味ではないが、オブジェクト指向は選択肢に埋もれさせ、妨げになることがあると感じる
    • このコードはMacAppを使っており、定型コードを肩代わりしようとした初期のフレームワークの一つだった
      MacAppアプリの基本構造はドキュメントで、MacAppフレームワークがイベントをハンドラーにディスパッチする
      MacAppアプリに取り組んでから長い時間が経っているが、基本構造はそうだったと記憶している
      MacApp自体は含まれていないようだが、どこかには存在する可能性があり、Adobeはかつてすべてを書き直さずに済むようMacAppをWindowsへ移植していた
      その後どこかの時点で、自社の抽象化レイヤーに置き換えたのだと思う
  • John KnollはStar Warsプリクエルの視覚効果責任者で、その後Rogue Oneにも関わった
    プリクエルの制作舞台裏ドキュメンタリーは今見ても悪くない: https://youtu.be/da8s9m4zEpo?si=5y5gHUMxztwVzMny

  • 「辞書に単語を1つ追加することになるとは想像もしなかっただろう」という部分があるが、Adobeはこれが商標の普通名称化につながるため阻止しようとしている
    商標ガイドラインには「常に大文字で表記し、正しい形で商標を使用すること。正しい例: The image was enhanced with Adobe® Photoshop® Elements software. 誤った例: The image was photoshopped.」といった例がある
    [1]: https://en.wikipedia.org/wiki/Generic_trademark
    [2]: https://www.adobe.com/legal/permissions/trademarks.html

    • 今ではかなり確実に普通名称化の領域に入ったように思う
      Xeroxもそれに関連して大きな訴訟で負けたと記憶している
      [1] 例: https://www.consumerreports.org/consumerist/15-product-trade...
    • そうした圧力は理解できるが、誰もそんな言い方はしないだろう
    • Gimpで画像をphotoshoppedした
    • Velcroも同じことをずっと効果的に試みてきた
      https://www.youtube.com/watch?v=rRi8LptvFZY
      長期的にはそれでもうまくいかないだろうが、今ではVelcroが商標名だという点は確実に意識するようになった
    • 普通名称化が本当に問題なのか気になる
  • Adobe以前のPhotoshopをAnn Arborの病院で見た記憶がある
    本当にすごいと思った
    ひとつ付け加えると、当時使っていたMacAppのバージョンはApple Pascalのアプリフレームワークで、ほぼ間違いなくベータ版だった
    Tom Knollは、契約者として私たちの会社で作業していたコードのうち、Bスプラインアルゴリズムを曲線エディタの基盤として使っていた

    • 病院でそれを使って何をしていたのか気になる
  • 古いバージョンのソフトウェアのソースコードを公開する企業は称賛されるべき
    今後、より多くの企業がそうしてくれることを期待したい
    ただし、こうしたソースコードのかなりの部分は、時間の経過や何度にもわたる買収の過程で失われてしまったのではないかと心配している
    バージョン管理が広く使われるようになったのも比較的最近のことなので、残っているとしても、任意のテープバックアップ、フロッピーディスク、バインダーの中の印刷物にある可能性が高い

    • https://www.softwareheritage.org/
      「私たちは、ソフトウェアが私たちの技術的・科学的知識を含んでおり、人類がそれを失うリスクを負うことはできないため、ソースコードという形のソフトウェアを収集し保存しています
      ソフトウェアは文化遺産の貴重な一部です
      私たちは収集したすべてのソフトウェアを管理し、アクセス可能にします
      共有してこそ、非常に長い期間にわたる保存を保証できるからです」
      友人のRoberto Di Cosmoが設立した
    • Internet Archiveのような組織がソフトウェアソースコードの遅延公開エスクローサービスを提供すれば、多くの企業が利用すると思う
      早期流出を罰する実質的な標準の法的契約も含めての話だ
      かなり自動化され、手間の少ないサービスになり得る
      企業がgitリポジトリを保存組織の管理する非公開サーバーにミラーリングし、保存組織は対応する空の公開リポジトリを作成できる
      その後、1時間ごとにエージェントが非公開リポジトリを巡回し、コミット時刻が10年より古いコミットだけを公開リポジトリへ同期する
      参照も一緒に同期するが、git filter-branchで10年以内のコミットをすべて削除したかのように書き換え、フィルタリング後に空になった参照は捨てればよい