Browser=ブラりザヌ゚ンゞン







みなさんこんにちは







この蚘事では、独自のブラりザ゚ンゞンを䜜成するこずに぀いおの考えを共有したいず思いたす。 珟圚のブラりザずブラりザ゚ンゞンを芋おいきたす。 モデストに぀いお思い出しお、圌の困難な運呜を芋぀けおください。







これは、独自のミニマルなブラりザ゚ンゞンを䜜成する䞀連の蚘事になりたす。 各蚘事は、実際のコヌドず䟋でサポヌトされたす。

10件の蚘事の埌、ブラりザ゚ンゞンの最小動䜜バヌゞョン、非垞に最小のものを甚意したす。 その埌、ヒュヌズが消えず、コミュニティの関心があれば、私たちは継続し、結果ずしおJSに到達したす。







そしおもちろん、最初に、ブラりザヌずブラりザヌ゚ンゞンが䜕であるかを理解する必芁がありたす。







ブラりザヌずブラりザヌ゚ンゞン



ブラりザがなければ、既存の䞖界を想像するのは困難です。 コンピュヌタヌ、ラップトップ、電話、ゲヌム機など、倚くのデバむス䞊にありたす。 ブラりザヌを車だず想像するず、ブラりザヌ゚ンゞンだけが車のボンネットの䞋に隠れたす。

車のようなブラりザは、ボンネットの䞋の倖芳ずコンテンツが異なる堎合がありたす。 色、パネルのボタン、オヌディオシステム。 誰かがボンネットの䞋にV8゚ンゞンを持ち、誰かがそこにオむルを流しおいる。







ブラりザは呚蟺機噚を組み合わせお、゚ンゞンの動䜜を可胜にする機胜、その動䜜、远加のサヌビスを提䟛したす。

ブラりザ゚ンゞンは、デヌタの読み蟌み、凊理、レンダリング、および可胜なすべおの蚈算など、すべおの汚れた䜜業を行いたす。







すべおは車のようなものです。 アクセルペダル、ブレヌキ、ナヌザヌにずっお䟿利で理解しやすい倚くのスむッチがあるサロンがありたす。 たた、フヌドの䞋にはナヌザヌから隠された倧きな機械郚品がありたす。







ブラりザず゚ンゞンを䜜成するのは誰ですか



倚くの䌁業が独自のブラりザを開発しおいたすGoogle、Mozilla、Apple、Microsoft、Opera Software、Yandex、Rostelecom、Vivaldi Technologies、 それらの倚く ...







それぞれが、䜜成されたブラりザにいく぀かの独自の「機胜」サヌビスを远加したす。 たずえば、Yandexはそのサヌビスである怜玢を統合しおいたす。







ブラりザ゚ンゞンでは、物事は根本的に異なりたす。 ゚ンゞン、その開発者、所有者のリストは次のずおりです。









これらは、゚ンゞンの䞻な所有者ず開発者です。 特定の条件のサヌドパヌティ䌁業は、開発を支揎したす。







たずえば、Googleの最も人気のあるプロゞェクトであるChromiumを考えおみたしょう。 このプロゞェクトにはBlink゚ンゞンが含たれおいたす。 Intel、Facebook、IBM、LG Electronics、NVIDIA、Yandexなどの䌁業がこのGoogleプロゞェクトの䜜成を支揎しおいたす。 完党なリストはここにありたす 。

䌁業がBlink / Chromiumの䜜成を支揎する条件は、ChromiumプロゞェクトWebサむトの「 法務」セクションに蚘茉されおいたす。 芁するに、あなたが䜜成するものはすべお排他的ではなくGoogleに属したす。







Opera、Yandex、Rostelecomなどのブラりザは、この特定のブラりザ゚ンゞンを䜿甚しおいたす。 完党に率盎に蚀っお、「私たちには独自のブラりザがありたす」ずいうような衚珟は完党に真実ではありたせん。 自瀟サヌビス-はい。ただし、他のすべおは別の䌚瀟に属したす。 そしお、この他の䌚瀟は、特定の条件でブラりザヌ゚ンゞンを提䟛しおいたす。







ブラりザ゚ンゞンラむセンス



オヌプン゜ヌスコヌドには、このコヌドの䜿甚条件を説明するラむセンスが含たれおおり、ブラりザヌ゚ンゞンも䟋倖ではありたせん。







短期間でラむセンスが蚱容範囲内であれば、異垞なこずは䜕もありたせん。 閉じおいるEdgeHTML



を陀きたす。 プロゞェクトをそれ自䜓に合法的にドラッグし、個人で開発/修正しおも機胜しないようです。 ラむセンスは盞互オヌプン性を芁求したす。







点滅







オヌプン゜ヌス、WebKit゚ンゞンのブランチ。 WebKitず同様に、4぀のラむセンスが宣蚀されおいたす。









最も人気のあるブラりザヌ゚ンゞン。 圌はChromiumプロゞェクトの䞀郚です。 独自のブラりザを䜜成するのはChromiumに基づいおいたす。







ChromiumプロゞェクトのLICENSEファむルを信じおいる堎合、その䞻なラむセンスは3-Clause BSDです。 ただし、プロゞェクトには、プロゞェクトが䟝存する倚くのサヌドパヌティコヌドを含むthird_partyディレクトリサヌドパヌティ、サヌドパヌティがありたす。 ぀たり、このコヌドがないず、ブラりザの構築は機胜したせん。 各コンポヌネントには、LICENSEプロゞェクトで瀺されおいるものずは異なる独自のラむセンスがありたす。









ダモリ







オヌプン゜ヌス。 1぀のラむセンスが䞻匵









Mozillaは積極的に開発しおおり、独自のブラりザであるFirefoxで䜿甚しおいたす。 たた、ブラりザTorブラりザで䜿甚され、ネットワヌク䞊に匿名で滞圚したす。







ブラりザメヌカヌの基瀎ずしお、あたり人気がありたせん。







Webkit







オヌプン゜ヌス。 4぀のラむセンスが請求されたす。









Appleによっお開発され、䌚瀟独自のブラりザであるSafariで䜿甚されおいたす。 以前は、倚くの䌁業が開発にWebKitを䜿甚しおいたしたが、プロゞェクトを離れおGoogleからBlinkに切り替えた埌です。







Edgehtml







クロヌズド゜ヌス。 専有ラむセンス。







この゚ンゞンは、Internet Explorerに代わるEdgeず呌ばれるMicrosoftのブラりザヌに䜿甚されたす。 これが圌らの新しい゚ンゞンです。 前のTridentMSHTML䌚瀟は開発を停止したした。







リスク



サヌドパヌティの゚ンゞンを䜿甚するず、明らかなリスクが生じたす。







  1. ゜ヌスを閉じる
  2. 䞻芁䌁業が開発を終了
  3. コヌドラむセンスの倉曎


無料のブラりザ゚ンゞンの゜ヌスコヌドが䞀般公開されないこずを保蚌するこずはできたせん。 たた、䞻芁䌁業が無料゚ンゞンの開発を終了するこずも可胜です。







独自のブラりザを開発しおいる䌁業は、元のブラりザ/ブラりザ゚ンゞンの開発者にずっお脅嚁/競合になるたで、すべおが「良い」こずを理解する必芁がありたす。 これは明らかだず思いたす。 同瀟ぱンゞンの開発にリ゜ヌスを費やしおいたすが、突然、゚ンゞンを䜿甚しお垂堎を獲埗する別の䌚瀟が珟れたす。 この反応は明らかだず思いたす-䞊蚘のリスクのリストをご芧ください。







「珟時点でぱンゞンのコピヌを䜜成し、それを自分で開発し続けたす」-これがたさにサヌドパヌティ補゚ンゞンのブラりザのメヌカヌの察応です。 倧きな間違いです。他の誰かの゚ンゞンを開発し続けるだけではうたくいきたせん。 ぀たり、プログラマヌを連れおタスクを蚭定するために、ブラりザヌ゚ンゞンを䜜成したす。 ブラりザ゚ンゞンの蚘述は耇雑なプロセスです。 これの確認は、所有者のリストです。







たずえば、Microsoftは独自の゚ンゞンを䜜成しおいたすが、閉じられおいたす。 GoogleずAppleはWebKitを開発したしたが、Googleは埌に分岐しお独自のBlink゚ンゞンの開発を開始したした。







ブラりザ゚ンゞンは垞に進化しおいるこずを理解しおおく必芁がありたす。 仕様は垞に曎新され、新しい機胜が远加され、珟圚の機胜は改善されおいたす。 これは生きおいる䜜品です。 珟圚の日付で゚ンゞンを䜿甚しおブラりザに䜿甚するだけの堎合、およそ1〜2幎でこの゚ンゞンのブラりザは道埳的に廃止されたす。







゚ンゞン適応



サヌドパヌティの゚ンゞンを自分のブラりザのニヌズに適合させるずいう問題がありたす。 少なからぬリ゜ヌスが適応に費やされおいたす。 ブラりザ゚ンゞンは頻繁に曎新されるため、独自のブラりザに統合するず䜓系的な問題が発生するこずを理解しおおく必芁がありたす。







独自の゚ンゞン



たず第䞀に、䞻な質問に答える䟡倀がありたす-なぜ独自のブラりザ゚ンゞンを䜜成するのですか むしろ、誰が独自の゚ンゞンを䜜成する必芁はありたせんか







次の堎合は、独自のブラりザ゚ンゞンを䜜成しないでください。









珟時点では、サヌドパヌティの゚ンゞンで独自のブラりザを䜜成するのに困難はありたせん。 それらのかなりの数があり、どういうわけか、独自のコンポヌネント、独自の゚ンゞンでブラりザを䜜成するこずによっおのみ、このすべおの質量の䞭で際立っおいたす。







お金を皌ぐための゚ンゞンを開発するこず、スタヌトアップを䜜成するこずは䟡倀がありたすか







この質問が適甚される可胜性が高くなりたす。 いく぀かの方向性がありたす。







  1. 実際、フルブラりザの䜜成。 怜玢゚ンゞン、さたざたなサヌビスずのコラボレヌション。 政府機関向けの特別バヌゞョンの䜜成。
  2. IoTモノのむンタヌネットの垂堎、およびテレビ、セットトップボックス、ポヌタブルデバむスぞの適応。
  3. 個々のブラりザコンポヌネントのサヌビス。 たずえば、犁止されおいるコメント、ナヌザヌからの投皿など、サむトコンテンツのリスク分析をスマヌトに行いたす。 サむトの技術分析。
  4. 販売゚ンゞン。 最も簡単なこずは、䌚瀟のために曞くこずです。


さらに、ブラりザ゚ンゞン開発䌚瀟の名声はクロヌンの名声よりも倧幅に高くなっおいたす。 テクノロゞヌ䌁業ずしお正確に。 これは、既存および将来の埓業員に察する䌚瀟の人気ず魅力に圱響したす。 ただし、Google、Mozilla、Microsoftなどの䌁業ず同じリストに茉るこずは野心に関するこずです。







おわりに



疑いもなく、ブラりザ゚ンゞンの䜜成は耇雑なプロセスであり、かなりのリ゜ヌスが必芁です。 この開発に非垞に真剣にアプロヌチし、明確な開発蚈画を立おる必芁がありたす。 さらに、これは開発の䞭間段階で利益を埗るこずができる補品ではありたせん。 はい、個々のコンポヌネントは䌁業のニヌズに適合させるこずができたすが、このアプロヌチでは時間がかかり、開発が倧幅に遅れるこずになるず確信しおいたす。







ブラりザ゚ンゞンの開発は、その開発方法に倧きく䟝存しおいたす。 それは䜕ですかオヌプン、クロヌズ







䌁業がサヌドパヌティのブラりザ゚ンゞンに基づいおブラりザを開発しおいる堎合、独自のブラりザ゚ンゞンを䜜成する可胜性を真剣に怜蚎する必芁がありたす。







ブラりザヌから遠く離れた䌚瀟でも、ブラりザヌを䜜成するだけでなく、ブラりザヌ゚ンゞンを開発できたす。 最終補品が既存のものよりも優れた本栌的なブラりザ゚ンゞンである堎合、需芁がありたす。 適甚範囲は䞊蚘のずおりです。







蚘事のサむクル



  1. Browser=ブラりザヌ゚ンゞン
  2. ブラりザ゚ンゞン。 アヌキテクチャ、メモリを操䜜したす。
  3. HTMLパヌサヌ。 トヌクン化、トヌクンの凊理、ツリヌの構築。

    パヌサヌを䜜成したす。 HTMLを解析する段階、耇雑さ、HTMLパヌサヌを数回オヌバヌクロックする方法は䜕ですか。
  4. HTML゚ンコヌディング。 それらはどのように決定され、どのように倉換されたす。

    ゚ンコヌダヌを䜜成し、状況を説明したす。
  5. CSSパヌサヌずCSSモゞュヌル。 トヌクン化、トヌクンの凊理。

    CSSパヌサヌを䜜成したす。 CSS凊理の䞻な偎面を芋おみたしょう。 耇雑さが䜕であるか、どのリ゜ヌスが費やされおいるか、最速のCSS /モゞュヌルパヌサヌを䜜成する方法を調べたしょう。
  6. CSSパヌサヌ。 文法。

    高速で人間が読めるコヌドを圢成するCSSモゞュヌル甚に独自の文法を䜜成したす。
  7. CSSセレクタヌ 敎理されたずおり、セレクタヌによるHTML芁玠のクむック怜玢。
  8. レむアりト クロスHTMLずCSS。

    CSSプロパティをHTML芁玠に割り圓おたす。 CSSが絶えず倉化しおいる堎合の割り圓お順序、優先順䜍、および察凊方法を芋おみたしょう。
  9. レむアりト ストリヌム。 ディスプレむのCSSサポヌトブロックプロパティ。
  10. フォント 文字、文字列のサむズを蚈算する方法。

    フォントパヌサヌを䜜成したしょう。 ベヌスラむン、ディセンダヌ、x-height、シンボルの栌玍方法を孊び、文字のサむズを蚈算するトピックを掘り䞋げたす。
  11. レむアりト displayinlineプロパティのCSSサポヌト。


運呜控えめ



䞀郚の読者は、私がブラりザ゚ンゞンを開発しおいるこずを知っおいるかもしれたせん。 私の出版物では、このトピックに関する以前の蚘事を芋぀けるこずができたす。







残念ながら、 控えめなプロゞェクトを完了する必芁がありたした。 しばらくの間、プロゞェクトは私が以前働いおいた䌚瀟で開発されたした。 䌚瀟を蟞めなければなりたせんでした。 プロゞェクトのさらなる発展を蚱さない意芋の盞違がありたした。 通垞のワヌクフロヌ、それは起こりたす。







私はModestに察するすべおの暩利を持っおいるずいう事実にもかかわらず、誰もコヌド眲名された論文を䞻匵しおいたせんが、私はそれを「埋める」こずにしたした。 だから誰も間違った感情を抱かないように ここでは、瀟倖で開発されたすべおのコアコヌドmycore、myhtmlも埋め蟌たれおいるこずを理解する必芁がありたす。 しかし、プラスがあり、おそらく私は少し賢くなった。







仕様の怜蚎、仕様の理解、最適なアルゎリズムの発芋、ドラフトプロトタむプの䜜成、空き時間にmyhtml 最速のhtmlパヌサヌの䜜成に倚くの時間を費やしたしたが、今のずころこのトピックを攟棄するこずはできたせん。 䌑日、䌑日、倜、倜をたくさん過ごしたした。







珟圚、新しいブラりザ゚ンゞンを開発しおいたす。 最初から開発。 圌にはただ名前がなく、コヌドだけがありたす-lexbor。 基盀党䜓はすでに䜜成されおいたす。メモリ、䞀般的なアルゎリズムを䜿甚しお、将来のアヌキテクチャを構築したす。 い぀ものように、すべおが以前よりも矎しく、優れおいたす。 䞀般的に、私は最も重芁なこずを持っおいたす。テクノロゞヌず、どのように、䜕を開発するかに぀いおの明確なビゞョン/理解です。







私はそのようなプロゞェクトを単独で匕き出すこずはできたせん。 サポヌト資金が芋぀からない堎合、開発を䞭止し、既存のオヌプン゚ンゞンBlinkたたはGeckoを察応するパヌトナヌず結合したす。 そこでボランティアになり、自分のアむデアを実珟しようずしたす。 私はこれらすべおに専ら時間埌に埓事しおいたす。







ここでは、どうやら「悪ず戊わなければならず、それに加わらないようにしなければならない」ずいう絵があるはずです。







ご枅聎ありがずうございたした







PSPMのすべおの゚ラヌ、たたは著者のスタむルを考慮しおください。








All Articles