web-dev-qa-db-ja.com

プラットフォームと製品についてのSteveYeggeの投稿

私は this を読んでいて、出会いました:

プラットフォームの黄金律である「自分のドッグフードを食べる」は、「プラットフォームから始めて、それをすべてに使用する」と言い換えることができます。後でボルトで固定することはできません。確かに、とにかく簡単ではありません。MSOfficeのプラットフォーム化に取り組んだ人に聞いてください。またはAmazonのプラットフォーム化に取り組んだ人なら誰でも。遅らせると、前もって正しく行うよりも10倍の作業になります。カンニングはできません。理由を問わず、内部アプリが特別な優先アクセスを取得するための秘密のバックドアを持つことはできません。難しい問題を前もって解決する必要があります。

それは正確にはどういう意味ですか?誰か説明してもらえますか?

7
sharp_net

彼が指摘していることの1つは、特にWeb指向のすべての場合ですが、他の人にとっても、オープンでプログラム可能なインターフェイスを提供することで大きなメリットが得られるということです。これは、マクロ言語を使用するUIを意味するのではなく、実際の作業を行う「エンジン」とはほとんど別のUIであり、UIがエンジンとどのように通信するかについての完全でオープンなドキュメントですanybodyは、エンジンを使用するまったく新しいUI、UIにシームレスにフックできるエンジンへのアドオンなどを作成できます。

つまり、完全な製品を構築する(または考える)のではなく、主に有用なコンポーネントを作成するという観点から考えて作業する必要があります。これらのコンポーネントは互いにクリーンに動作する必要があります。butそれだけでは十分ではありません。これらのコンポーネント間のインターフェイスは、明確に文書化して定義する必要があります。これにより、基本的に誰もがUIを独自のものに置き換え、エンジンに接続し、エンジンを最大限に活用できるようになります。なぜなら、彼らは他の人と同じようにその機能にアクセスできるからです。

結局のところ、これはしばらくの間プッシュされてきたもの(3層アプリケーションなど)からの劇的な変化ではありません。大きな違いは、コンポーネントとして記述されていても、ほとんどの一般的な3層アプリケーションは、基本的に、使用中のすべてのコンポーネントが一緒に生成されることを前提としているため、それらの間のすべてのインターフェイスが「プライベート」であるということです。かなりの数のケースで、あるコンポーネントが別のコンポーネントからの入力をチェックする必要がないという暗黙の前提があります。これは、他のコンポーネントが生成できる入力を「知っている」ためです。

特にWebに接続しているサーバーなどでは、それは単純ではありません。代わりに、everyインターフェースを「強化」する必要があります。具体的には、反対側にあるものが何であれ、あらゆる状況で機能するように指定および実装する必要があります。インターフェースはずさんでくだらない、あるいは注意深く設計された攻撃者でさえあるかもしれません。

少し異なる観点から見ると、製品はいくつかの異なるレベルのいずれかでエントリーを提供する必要があります。初心者には、洗練されたUIが必要です。より高度なユーザーには、好きではないものを微調整したり、頻繁に実行することを自動化したりするための何らかの組み込みプログラマビリティが必要です。最後に、最も重要なことは、その製品の「エンジン」のあらゆる側面の完全な制御。これは、製品のエンジンで動作する独自のコードを開発するために使用するものとまったく同じである必要があるため、他の誰もが独自のUIと同じようにそのエンジンに完全にアクセスできます。

11
Jerry Coffin

リンクをありがとう-スティーブ・エッゲは最近インターネットで最高の暴言を吐くに違いない。そして、わめき声はインターネットのキラーアプリと言っても過言ではありません。あなたの質問に:

それは正確にはどういう意味ですか?誰か説明してもらえますか?

ええと、あなたは作品を読みましたよね?私はそうしました、そしてスティーブがその段落が何を意味するかを説明するために彼のコラムインチのほとんど(大丈夫、いくつか)を費やしたことを思い出します。ドッグフードのメタファーの説明が必要な場合は、 自分のドッグフードを食べる を参照してください。

それを超えて、彼が全体を通して話している大きなアイデアは、すべての人にすべてをしようとする単一の万能製品ではなく、製品のプラットフォームを構築することには多くの利点があるということです。プラットフォームを使用すると、さまざまな製品を構築でき、他の人にもプラットフォーム上で製品を構築させることができます。そうすることで、より良いサービスを提供できます。あなたの顧客そして彼らに彼ら自身に仕えるためにあなたのものを使わせることさえできます。 しかし、プラットフォームにコミットしないと機能しません。プラットフォームを自分で使用しない場合、またはプラットフォームを使用しているが、内部使用専用の追加機能がある場合は機能しませんツール。

私自身の2セントを加えると、彼が話していることは、トップダウンとボトムアップのデザインの違いに非常によく似ています。トップダウン:製品を思いついた後、その製品で実行できるすべてのことを指定し、その製品を構築します。ボトムアップ:あなたは製品を夢見ていますが、すべての小さな機能を前もって決定しようとする代わりに、さまざまな方法で組み合わせることができるいくつかのパーツを構築して、想像した製品のようなものに到達しますそもそも、同じツールを使用して、考えたこともないような他のものを構築することもできます。

5
Caleb

独自のソフトウェアを使用してください。これは、テストして完成させるための最良の方法です。

「プラットフォーム」とは、この記事では、他の人が自分のプログラムを機能させるために使用できるソフトウェアを指します。たとえば、Facebookは、Zyngaが「Farmville」を機能させるために使用した「プラットフォーム」です。

Windowsもプラットフォームです。他のプログラム(Word、Chrome、World of Warcraft)がWindowsを使用して動作するためです。

この記事では、「プラットフォーム」と「製品」を区別しています。製品もソフトウェアの一部ですが、「スタンドアロン」です。これは人々が使用するものですが、ソフトウェア作成者がそれを使用するソフトウェアを作成することによって「拡張」できるものではありません。 Windowsで実行されるほとんどのプログラムは、プラットフォームではなく、この意味での製品です。

この記事での最大の批判は、(私にとって)素晴らしい製品であるGoogle+に対するものですが、他のプログラマーが使用できるAPIやサービスを公開していないため、優れたプラットフォームではありません。例:GoogleリーダーはGoogle+を簡単に表示して投稿することはできません。 Flipboard(ipadアプリ)はGoogle+を表示したり、Google +に投稿したりできません。

5

「外の世界に与えているのと同じインターフェースを使ってください」と言っていると思います。あなた自身のプログラマーに与えるインターフェースは良いものになるでしょう(うまくいけば、プログラマーが使用したいインターフェースを作成するからです)。内部で外部とは異なるインターフェイスを使用している場合、それを使用するユーザーはそれをより適切に変更できないため、外部インターフェイスが不足します。

この方法では、使用できなくなるため、誰もあなたのプラットフォームを使用しません。必要なプラットフォームから情報を取得することはできません。彼らは二級市民に追いやられており、サードパーティは彼らがよく扱われる場所に行くでしょう。

0
jsternberg