マヌクダりンir ダンデックス講矩

ドキュメントを開発するずき、暙準だけでなく、その䜿甚の利䟿性にもガむドされたす。 暙準はドキュメントの構成ず圢匏を決定し、圢匏は利䟿性に基づいお構築されたす。 開発者のSergey Bocharovは、Markdownドキュメントのパスず、このフォヌマットの䜿いやすさず匕き換えに解決しなければならない問題に぀いお語っおいたす。





圹に立たないずいう印象を受けるこずもありたすが、この圢匏には圹立っおいたす。 したがっお、マヌクダりンir。


-私たちは今䜕がスケヌルにあるかを知っおいたす

そしお今䜕が起こっおいるのか。

勇気の時が私たちの時蚈に圓たりたした。

そしお勇気は私たちを去りたせん。



死んだ匟䞞の䞋に暪たわるのは怖くない、

ひどくホヌムレスのたたにしないでください。

そしお、ロシアのスピヌチ、あなたを救いたす

偉倧なロシア語。



私たちはあなたを自由で玔粋に運びたす

䞡方の孫を䞎えお捕虜から救いたす-

氞遠に。



こんばんは、友達、私の名前はセルゲむ・ボチャロフです。 私はアンナ・アフマトノァの詩「勇気」から始めたした。 倧祖囜戊争䞭の1942幎に曞かれたしたが、それでも詩人たちは、戊争の長幎にわたっお浪費され、実際に螏みにじられた粟神的な富を返すよりも、爆撃によっお砎壊された工堎を埩元しお建蚭する方がはるかに簡単であるこずを理解しおいたした。



詩は、矎しいず感じるこずを孊ぶのに圹立぀数少ない手段の1぀です。 今日私たちは技術文曞に぀いお話しおいる-そんな遠い分野は詩ずは違うように思えたすが、特にこの圢匏で䜜業するずきは、矎しいスタむルを維持し、単䞀のスタむルを維持するこずが非垞に重芁です。 Markdownは、オヌプン゜ヌスの䞖界で技術文曞を䜜成するための事実䞊の暙準ずなっおいたす。 そしお、さたざたな専門分野の人々を団結させたした。



私には困難であるず同時に楜しい䜿呜がありたす。 YandexでMarkdownのドキュメントを組み立おる気持ちを十分に持たせ、たた開発したツヌルを共有しおほしい。 あなたもあなたのプロゞェクトでそれらを䜿うこずを望みたす。



YandexのJavaScriptが倧奜きなので、開発されたツヌルはJSで曞かれおいたす。 そしお、すべおの開発はこの蚀語を䞭心に行われたす。 別の開発環境や誇倧広告Reactがある堎合、動揺する必芁はありたせん-GitHubで類䌌物を芋぀けるこずができるず思いたす。



おそらく倚くの人が疑問に思っおいるのに、なぜMarkdownはサヌになったのでしょうか これは比metaであり、Yandexのプロセスをロボット化しようずするずいう事実に関連しおいたす。



Markdownは、倚数のツヌルも開発しおいたす。 珟圚たでに、私たちはすでに倚くのツヌルを開発しおおり、開発を続けおいたす。 圹に立たないずいう印象を受けるこずもありたすが、この圢匏には圹立っおいたす。 したがっお、マヌクダりンir。







最初のグロヌバルパヌトでは、なぜこの圢匏で曞いおいるのか、なぜそのためのツヌルを開発しおいるのかに぀いおお話したす。 第二郚では、コンテンツの品質を維持する方法、翻蚳方法、倚くのリポゞトリから1぀のサむトを構築する方法に぀いお、ラむブラリの䟋に぀いお詳しく説明したす。



Markdownは、2004幎にJohn GruberずAaron Schwartzによっお䜜成されたした。 その考えは、単玔なテキスト構文を䜿甚しお、それをよりリッチでより有効なHTMLに倉換するこずでした。







テキストの第1レベル、第2レベル、およびいく぀かの段萜の芋出しがありたす。



豊富なツヌルを備えたDITAがあるのに、なぜ新しいフォヌマットが必芁なのですか Markdown甚の新しいツヌルを䜜成する理由 䞀緒に答えおみたしょう。







DITAの構文はより耇雑であり、それず連携する特定の開発環境を甚意するこずをお勧めしたす。 これがXML圢匏であるこずは明らかであり、テキスト゚ディタヌでも開きたす。 ただし、SVGも開きたすが、誰もそこに描画したせん。誰もがPhotoshopたたはSketchを䜿甚したす。



それどころか、Markdownはより軜い構文を持っおいるため、倚くの開発者がMarkdownをずおも気に入っおいたす。 その結果、Markdownのドキュメントは、寄皿者ず開発者が積極的に参加するテクニカルラむタヌによっお䜜成および保守され、DITAのドキュメントは倚くの堎合、テクニカルラむタヌによっおのみ開発されたす。開発者ず寄皿者は積極的に参加したせん。



Markdownのドキュメントを含むサむトの鮮やかな䟋はnpmサむトです。今日では475千のモゞュヌルが含たれおおり、毎日たすたす増えおいたす。





最も人気のあるものを次に瀺したす。 Gulpなどの誰かのサむトにアクセスしおドキュメントセクションに移動するず、すぐにGitHubに移動したす。そこで、gulp.js APIがMarkdownで説明されおいるこずがわかりたす。







したがっお、䜕らかの理由でMarkdownをただ䜿甚しおいない堎合、たたはバむパスする堎合は、䜿甚しお開発者を満足させおください。



スタむルず構文。 最高機密であるレゎの内郚ラむブラリの䟋を怜蚎するこずを提案したす。 次に、デモを行いたす。







意倖ずそうですか これらのブロックはすべお異なりたす。 ロゎブロック、ティヌザヌなどがありたす。これらは、事実䞊の暙準であるGitHubに保存されおいたす。



ここにはラむブラリの䞀般的な説明があり、ブロックディレクトリもありたす。各ディレクトリにはこのブロックの説明がありたす。 ドキュメントはコヌドの䞀郚ず芋なされるため、適切な名前でドキュメントを呌び出したす。 亀換、怜玢、亀換の堎合にも䟿利です。 むかしむかし、テクニカルラむタヌが各ドキュメントに取り組みたした。 翻蚳者は英語版にも取り組みたした。理想的には、ドキュメント、ロシア語版、英語版は䞀貫しおいる必芁がありたす。぀たり、構造ず内容は同じである必芁がありたす。



ドキュメントは開発者自身によっおも積極的に開発されおおり、倚くのドキュメントがありたす。 瀟内で構築しようずしおいるプロセスは次のずおりです。新しい機胜たたは新しいブロックを開発した開発者は、プヌルリク゚ストたたは問題の圢匏でテクニカルラむタヌのタスクを蚭定したす。



テクニカルラむタヌがこの機胜を説明し、蚀語バヌゞョンのドキュメントが必芁な堎合は翻蚳を断念したす。 そしお誰もが幞せですが、それは完璧な䞖界です。 しかし、珟実の䞖界では、状況はしばしば次のずおりです。開発者自身が来お、ドキュメントを修正したす。



ここで、最初の問題-䞀貫性の喪倱に盎面しおいたす。 次の問題は、ドキュメントを曞くスタむルを倉えるこずでもありたす。



思われる-䞻なこずは、機胜が蚘述されおいるこずです。 わかった、いや。 ドキュメントがテクニカルラむタヌによっお曞かれた埌、開発者は喜んでいたした。



そしお、数十人の開発者がコミットしおそこに来たずき、圌らはすでに動揺し、最終的には泣き出したした。 圌らは蚀う-あなたは文曞を曞き盎す必芁があり、それは理解できなくなり、読むこずは䞍可胜であり、倚くの異なる理解できない構造、ニンゞン、問題のあるテキストのマヌカヌがありたす。



それらを䜿甚するず、どういうわけか戊うこずができる必芁がありたす。 テクニカルラむタヌはそれらを知っおおり、察凊するこずができたす。開発者はドキュメントでそれらを蚱可するこずが倚く、そのようなドキュメントは読むのが䞍快です。



たずえば、誰もがここで快適ですか 誰もがそれが䜕であるかを理解しおいたすか 明らかにこれはgitに぀いおであり、これはドキュメントに蚘茉されおいたす。 より理解しやすいオプションを次に瀺したす。



GitHubの経隓がほずんどない開発者は、開発の達人によっお曞かれたドキュメントを読むずきに困難を感じるこずがありたす。 したがっお、次の問題を远加したす-スタむルず甚語の保存。 開発者は倚くのこずをコミットし、テクニカルラむタヌはほずんど芋えたせん。スタむルの統䞀性は壊れおいたす。







このアプロヌチの次の問題は、構文が壊れおいるこずです。 Markdownを䜿甚するず、たったく異なる方法で蚘述し、同じ結果を埗るこずができたす。 各ケヌスの技術文曞の開発者は、芋出し、リストの䜜成、スクリヌンショットの挿入などに぀いお合意しおいたす。



実際、珟実はしばしば望たれるものずは異なり、この問題に察凊できなければなりたせん。 結果は期埅されおいるように芋えたすが、この問題が珟圚解決されおいない堎合は、アセンブリ段階で解決する必芁がありたす。 倚くの堎合、タスクがありたす-たずえば、第3レベルのすべおの芋出しを芋぀けるには bektikamiず2ピクセル増加したす。 ラむニング段階で解決しない堎合は 、アセンブリ段階で解決し、倧きなスクリプトを䜜成する必芁がありたす。



したがっお、次の問題-Markdown構文を远加したす。 苊劎しおいる3぀の䞻な課題がありたした。 たた、オヌプン゜ヌスプロゞェクト、特にBEMもありたす。 開発者、テクニカルラむタヌ、翻蚳者に加えお、オヌプン゜ヌスプロゞェクトにも貢献者がいたす。 貢献者は、補品の改善を支揎し、感謝しおいたす。 たくさんありたす。 圌らは私たちにプヌルリク゚ストを送信し、質の高いコンテンツを圌らず共有したす。 そのため、䜕らかの方法で゜リュヌションを探す必芁がありたす。



次のセクションでは、自動テスト、リンティングに぀いお説明したす。 Markdown構文を䞀貫しおチェックし、文法゚ラヌや問題のテキストのマヌカヌを芋぀ける方法をどうにかしお孊ぶためにできるこず。 これは私のお気に入りのセクションです。 リンティングの進歩は、テクニカルラむタヌの進歩に圹立぀ず思いたす。



remark-lintずいうツヌルから始めたしょう。 構文ず蚘述スタむルを確認できたす。 発蚀自䜓はパブリックドメむンであり、私たちによっお開発されたものではなく、䜿甚しおいたす。独自のルヌルセットがあり、50以䞊ありたす。これらのルヌルに加えお、独自のルヌルを䜜成し、ガむドを発蚀に含めたした。







どのように機胜したすか コンテンツを含むテストファむルがあり、第1レベル、第2レベル、およびいく぀かのリストの芋出しがあるずしたす。







タヌミナルでコマンドを入力したす。 これは、凊理䞭のチヌムです。 テクニカルラむタヌがGitHubでコミットし、ドキュメントが正垞な状態である堎合、゚ラヌがないこずを瀺すメッセヌゞが衚瀺されたす。 そしお、コミットはGitHubに送られたす。 ゚ラヌがあるずしたす-たずえば、最初の芋出しの2番目のレベルにし、2番目の芋出しに「Hello」ず感嘆笊を远加したす。 同じコマンドを実行するず、3぀の゚ラヌが発生したす。







リンティングの進行は、テクニカルラむタヌの進行に圱響したす。 テクニカルラむタヌは、芋出し、芏則に感嘆笊を付けないこずに同意したこずを思い出したす。すべお順調です。 これらのルヌルはどのように関係しおいたすか プロゞェクトのルヌトにあるremarkrcファむルには、独自のルヌルのセット私はそれらを削枛したしたず、コメント自䜓の借甚ルヌルのセットを定矩したす。



次のツヌルはyaspellerです。 ドキュメントの文法ずスペルミスをチェックしたす。 ドキュメントはYandex.Technologiesにありたす -ずころで、それはgitで曞かれおいたす。 あなたはそれを読むこずができたす、すべおが同じ原則に埓っおそこで動䜜したすスペルミスがありたす-メッセヌゞが衚瀺されたす。 貢献者、あなたをプヌルリク゚ストしようずしおいる開発者は、いく぀かの修正を送信したすが、スペルダりンやMarkdown構文の䞍正確さでそれらを送信するこずはできたせん。 したがっお、これらのツヌルは接続するのに非垞に䟿利であり、prekommitで機胜したす。



次のセクションは翻蚳に぀いおです。 md2xliffツヌルを開発したした。 私たちは倚くのオヌプン゜ヌス文曞ず少しの内郚文曞を翻蚳したす。 オヌプン゜ヌスドキュメントの堎合、プヌルリク゚ストを送信する寄皿者がいたす。送信しやすくするために、GitHubむンタヌフェヌスたたは散文サヌビスを䜿甚しおリンクをたどるこずを提䟛するWebサむトでサむコロを䜜成したす。 io。 たずえば、圌らが入り、倉曎を加え、[OK]をクリックするず、プヌルリク゚ストが到着したす。



これをすべおサポヌトする方法は 文曞がテクニカルラむタヌによっお䜜成され、翻蚳者が翻蚳し、ナヌザヌが来お-最初はロシア語版で-そこに䜕かを修正したずしたす。 英語版をどうしたすか そこで䜕かを線集する必芁がありたすか 明確ではありたせん。 修正されたタむプミスを探す方法も䞍明です。 たたは、GitHubに移動しお、差分の違いを確認できたす。 しかし、これはただタスクです。翻蚳者に任せる必芁がありたす。 解決策を芋぀ける必芁がありたす。



2番目の状況がありたす。 たずえば、開発者はラむブラリの2番目のバヌゞョンを䜜成し、ドキュメント党䜓を取埗せず、30ペヌゞを曞き換えなかった埌、その郚分を削陀しお远加したした。 そしお削陀された堎合-それは䜕をすべきかが明確ではありたせん。 GitHubの差分でこれを確認する必芁がありたす。



になる方法 これは、逃げ道のない難しい状況のようです。 しかし、あなたが翻蚳に携わったこずがあれば、圌はおそらく倚くの暙準があるこずを知っおいるでしょう、そしお詳现に調べるず、゜リュヌションは次のようになりたすGitHubにあるテストファむルず䜕らかのドキュメントテキストがありたす。 䜕をする必芁がありたすか スケルトンずXLIFF翻蚳の2぀のファむルを生成する必芁がありたす。







スケルトンはブロックの曞匏蚭定です。぀たり、テキストの䞀郚をそのようなプレヌスホルダヌで数字に眮き換えたす。







XLIFFは特別な圢匏であり、説明され、仕様があり、すべおが単玔です。 最も重芁なこずは、XLIFFにナニットがあり、ナニットIDがスケルトンで眮き換えたセグメントに察応しおいるこずです。







たた、各ナニットには、゜ヌスずタヌゲットの2぀のタグがありたす。 ゜ヌスタグには、スケルトンで眮換したテキストが正確に含たれおおり、タヌゲットフィヌルドは最初は空です。 このXLIFFを翻蚳者に枡したす。 これで、タヌゲットフィヌルドに入力されたす。 翻蚳埌、逆生成を行い、英語版のドキュメントを取埗したす。







同時に、翻蚳はどこにも消えたせんが、特別な暙準化されたXMLファむルTMXに保存されたす。 ゜ヌスずタヌゲットの2぀の倀がありたす。 これはどのように圹立ちたすか 以前の状況に戻りたす。 寄皿者、開発者、たたは別のテクニカルラむタヌが来お、元のドキュメントの䜕かを修正したした。 たずえば、ロシア語版では。



ただXLIFFを生成しお翻蚳者に枡し、プログラムに保存されおいるデヌタベヌスを䜿甚しお、倉曎されたセグメントを正確に翻蚳したす。 100パヌセント䞀臎する行は倉換されたせん。それら自䜓はオヌトコレクトによっお眮き換えられたす。 したがっお、倉曎されたものを探す問題はもうありたせん。 少なくずも䜕らかの圢で倉曎されたすべおの行が翻蚳に衚瀺されるこずを保蚌したす。 次に、ドキュメントの英語版を生成したす。すべおが簡単です。 既成の解決策があるようです-確かにそうあるべきだからです。







ABBYYのsmartcat.ai 、 Googleの゜リュヌション、 Matecatがありたす 。 しかし、これらの゜リュヌションの党䜓的な欠点は、Markdownをサポヌトしおいないこずです。Markdownには、䜜成方法に関する単䞀の暙準がありたせん。 そしお、圌らはそれをバむパスし、暙準化されたフォヌマットをサポヌトしたす。 先週、matecatでMarkdownをチェックしたずころ、すべおが赀くなりたした。 マヌクダりンは気取らないものでしたが。



たずえば、耇雑なネストを備えたツヌルを取り䞊げたす。 コヌドがあり、その䞭に3぀のバックニクスがあり、そこにJSDocがあり、99ですべおに察凊したす。ネストのレベルは任意です。



これらのサヌビスの2番目の臎呜的な欠陥は、GitHubず統合されないこずです。 ナヌザヌがリンクを介しお私たちのずころに来お、䜕かを修正したいのですが、統合されたせん。



私たちは皆これに぀いお議論したした。 ロシア語の゜ヌス文曞があり、別の蚀語に翻蚳するず、特定のペア、぀たりロシア語ぞの堅固な添付ファむルがありたす。 ナヌザヌがどこから来おも、その堎でTMXを線集できるように、この添付ファむルを削陀する䜜業を行っおいたす。 ロシア語版たたは英語版があり、生成䞭にTMXを盎接展開する必芁がありたす。 これはただ決定されおいたせん。



サむトの組み立おは、執筆からサむトに掲茉するたでのMarkdown文曞のパスの䞀般的なレビュヌの䞀郚ずしお怜蚎するこずを提案したす。







ワヌクフロヌはどのように芋えたすか 䜜業蚈画が䜜成され、すべおの情報が収集されたずしたす。 Markdownず蚀えば、構文の配眮に埓うこずが重芁です。 その埌、自動テストが行​​われ、リンティングの事前コミットが行われたす。 次に、ドキュメントはGitHubに送られたす。 英語版が必芁な堎合は、ドキュメントをロヌカラむズしたす。 アセンブリが行われた埌、2぀のストヌリヌがありたす。 1぀は、1察1のドキュメントがペヌゞにマップされるずきであり、2぀目は、さたざたなむンラむン䟋を構築する必芁があるずきです。 ペヌゞなどにiframeを埋め蟌む必芁がありたす。これをすべお実行できるツヌル、ポットがありたす。 圌はリンクを眮き換えるこずができ、さたざたなMarkdownドキュメントを1぀に結合し、むンラむンの䟋を構築できたす。 次に、サむトで蚈算が行われたす。



なぜりェブサむトが必芁なのですか gulp.jsのように、すべおのドキュメントをMarkdownに保存しないのはなぜですか



答えは明らかです。単䞀の゚ントリポむントが必芁です。 100を超えるリポゞトリがあり、これらのドキュメントを1か所で収集する必芁がありたす。 怜玢、ナビゲヌション、および実䟋も必芁です。 ラむブの䟋は次のようになりたす。







GitHubずサむト䞊の同じドキュメントは、異なる方法でレンダリングされたす。 新しいりィンドりで開き、ボタンをクリックしお、HTMLを確認できたす。 ずおも䟿利です。







私たちのレシピは䜕ですか どうする たず第䞀に-ニヌズを決定する。 それらが私たちのものに䌌おいる堎合は、Markdown構文に制限を導入し、甚語に埓い、自動チェックを行い、翻蚳メモリを䜿甚したす。 ツヌル remark -lint 、 yaspeller 、 md2xliff 。 ありがずう



All Articles