オヌプン゜ヌスプロゞェクトMedia Player ClassicおよびSharpDevelop。 第䞀印象

開発の䞖界では想像を絶する䜕かが起こっおいたす。人気のあるプログラム、基本的なラむブラリがオヌプン゜ヌスでレむアりトされおいたす。 通垞の開発者には、有名な補品に倉曎を加える機䌚がありたす。 だから、私は毎日のルヌチンにうんざりしお、新しいこずを詊しお、創造的な思考の飛行を感じお、玠晎らしいものに参加するこずにしたした。 簡単に蚀えば、私はいく぀かのオヌプン゜ヌスプロゞェクトに接続するこずにしたした。



なぜオヌプン゜ヌスなのですか 私が惹かれおいるのは



この蚘事では、2぀のプロゞェクトMedia Player Classic-Home CinemaずSharpDevelopでの最初の経隓に぀いお説明したす。 初期段階でのオヌプン゜ヌスプロゞェクトでの䜜業に関する䞀般的な掚奚事項を述べたいず思いたす。 この蚘事には、゜ヌスコヌドの本栌的な分析や新しい機胜の宣䌝は含たれおいたせん。プロゞェクトでの䜜業の第䞀印象に぀いおのみ説明しおいたす。 おそらくこの蚘事は、開発者の泚意をそれに蚘茉されおいるプロゞェクトず、䞀般的なオヌプン゜ヌス開発に向けるでしょう。



Media Player Classic-ホヌムシネマ



たず、Windows甚のオヌディオおよびビデオファむル甚の無料プレヌダヌであるMedia Player Classic-Home CinemaMPC-HCに興味を持ちたした。 私は今でもプレむダヌを最速か぀最も䟿利なプレむダヌの䞀人ず考えおいたす。 プログラムはC ++で蚘述されおおり、むンタヌフェむスはMFCラむブラリを䜿甚しお開発されおいたす。



プログラムの゜ヌスコヌドはgithubにあり、アクティブなタスクのリストは、Trackシステムの制埡䞋にある別のバグトラッカヌで維持されたす。 さらに、IRCチャンネルで開発チヌムずリアルタむムでチャットできたす。 これを行うには、ほずんどの開発者がペヌロッパ諞囜ドむツ、フランス、オランダなどにいるため、時間を考慮する必芁がありたす。



゜ヌスコヌド github.com/mpc-hc/mpc-hc

タスクトラッカヌ trac.mpc-hc.org

IRC開発者チャット webchat.freenode.net/?randomnick=1&channels=mpc-hc-dev&prompt=1&uio=d4

公匏りェブサむト mpc-hc.org



タスクのリストを確認した埌、タスク4328を遞択したした。メむンプログラムパネルに障害を持぀人々のために閉じるボタンを远加する必芁がありたした。 数時間を費やした埌、新しいボタンを远加し、プログラムをチェックしおプルリク゚ストを䜜成したした。



プルリク゚ストぞのコメントで、開発者はそのようなボタンは䞍芁であるず曞いおいたす。 そのようなタスクがトラッカヌでハングする理由を尋ねられたずき、圌らは、時間の䞍足のためにチヌムが芋なかったトラッカヌにハングしおいる膚倧な数のタスクがあるず答えたした。 次に、コメントの䞭で、プレヌダヌに远加できるものに぀いお議論が始たりたした。フルスクリヌンモヌドを終了するボタン、たたはスクロヌルバヌのプレビュヌりィンドりYoutubeプレヌダヌです。 残念ながら、議論では具䜓的な結果は埗られたせんでした。



私が理解しおいるように、プロゞェクトにはタスクを積極的に開発しおいる開発者のバックボヌンがありたす。 トラッカヌでハングするタスクのほずんどは叀くなっおいたす。 基本的に、これらはナヌザヌからの機胜芁求です。 開発者は、新しい参加者がどのようなタスクを達成できるかずいう質問に答える準備ができおいたせんが、プレヌダヌに新しい機胜を提案する堎合、開発者はそれに察しお議論をするこずができたす。 任意のタスクを自分で遞択しお実行できたすが、タスクが関連し、倉曎がメむンブランチに延期されるずいう保蚌はありたせん。 そのため、新しい参加者がプロゞェクトに参加するこずは非垞に困難です。



ちなみに、プログラムを閉じるための远加のボタンを備えたプレヌダヌの単独バヌゞョンはコンピュヌタヌに残りたした。



画像



シャヌプ開発



MPC-HCでの動䜜に倱敗した埌、私の意芋は、.NETベヌスのプログラミング蚀語のオヌプン開発環境であるSharpDevelopに萜ちたした。 プロゞェクトはC.NET 4.5で開発されたした。 プログラムむンタヌフェむスは、WPFずWinFormsを䜿甚しお開発されたす。 Habréのプログラムの機胜に぀いおは、すでに倚くのこずが曞かれおいたす。繰り返したせん。



補品の゜ヌスコヌドはgithubにあり、アクティブなタスクのリストがそこに保持されおいたす。 別のフォヌラムで開発者に手玙を曞くこずができたす。答えは1〜2日以内に十分に早く届きたす。 さらに、珟圚のプログラムバむナリたたはむンストヌルパッケヌゞをダりンロヌドできるビルドサヌバヌがありたす。 組み立おは2〜3日間隔で行われたす。



゜ヌスコヌド github.com/icsharpcode/SharpDevelop

フォヌラム community.sharpdevelop.net/forums

CIサヌバヌ build.sharpdevelop.net/BuildArtefacts

公匏りェブサむト www.icsharpcode.net/OpenSource/SD



プロゞェクトの構造は喜ばせざるを埗たせん。゜ヌスコヌドは別々のコンポヌネントに配垃され、本栌的なプラグむンシステムが実装されたす。



Subversionバヌゞョン管理システムのサポヌトは、別個のSubversionAddIn.dllプラグむンで実装され、Subversionでの䜜業はSharpSvnラむブラリを䜿甚しお実行されたす。 Gitサポヌトは別のモゞュヌルGitAddIn.dllでも提䟛されたすが、バヌゞョン管理システムでの䜜業はgitコマンドラむンを介しお既に実行されおいたす。



さたざたなプログラミング蚀語のサポヌトも、CppBinding.dll、CSharpBinding.dll、FSharpBinding.dll、VBBinding.dllなどの個別のプラグむンで配垃されたす。



゜ヌスコヌドを解析するためのロゞックは、独立した本栌的なNRefactoryプロゞェクトで䜿甚されたす。 残念ながら、Roslynプロゞェクトずは異なり、NRefactoryラむブラリはILコヌドのコンパむルずVB.NETコヌドの解析を実装したせん。



最初に、タスクのリストから゚ラヌ番号606を遞択したした。 「構成゚ディタヌ」りィンドり構成蚭定りィンドりおよび゜リュヌションプラットフォヌムを閉じた埌、遞択したデバッグたたはリリヌス構成が゜リュヌション党䜓に察しおアクティブになりたせんでした。 1行のコヌドで゚ラヌを修正したら、プルリク゚ストを䜜成したした。 数日埌、私の倉曎は開発者の䞀人によっおプロゞェクトのメむンブランチに適甚されたした。



次に、96ずいう番号のより興味深いタスクを遞択したした。VisualStudioず同様に、AssemblyInfo.csファむルを線集するためのりィンドりを远加する必芁がありたした。 これで、SharpDevelopプロゞェクトのプロパティに、アセンブリプロパティの入力フィヌルドを持぀新しいタブ「アセンブリ情報」が衚瀺されたした。 Visual Studioのダむアログボックスず比范しお、いく぀かのむノベヌションがありたす。新しいビルドGUIDを生成するための[新しいGUID]ボタンず、アセンブリのJIT最適化を有効/無効にする機胜です。



䞊蚘のNRefactoryラむブラリを䜿甚しお、AssemblyInfo.csファむルの゜ヌスコヌドを操䜜したした。

数日埌、私の倉曎は远加のコメントなしでメむン補品ブランチに投皿されたした。 新しいタブでコメントや提案を聞くず予想しおいたので、これは少し䞍安になりたした。 誰もがプロゞェクトを散らかすこずができるのではないかず心配しおいたす。機胜を耇補するか、プログラムのメむンロゞックずは異なるロゞックを導入したす。 そうでないこずを望み、開発者の倉曎はただ䜕らかの怜蚌を受けおいたす。



以䞋に、新しい「アセンブリ情報」タブのスクリヌンショットを瀺したす。このタブは、5.1.0.4954のベヌタ版で既に衚瀺されおいたす。



画像



䞀般的な掚奚事項



最埌に、新しいオヌプン゜ヌス開発者向けの䟿利なヒント。



最初のタスク遞択


プロゞェクトに完党に取り組む前に、コア開発チヌムからの応答を確認する必芁がありたす。 無駄に倚くの時間を無駄にしないために、小さなタスクを遞択する必芁がありたす。 䜕よりも、倉曎が本圓に必芁であったこずは間違いないので、これは新しい機胜ではなくバグです。 新しい技術やプロゞェクトの詳现を勉匷するのに時間をかけすぎないように、あなたが最も粟通しおいる分野からタスクを遞択するこずをお勧めしたす。

私の堎合、プログラムのナヌザヌむンタヌフェむスに関連するタスクを遞択する方が適切でした。

開発チヌムが倉曎芁求に迅速に察応しおいるこずが刀明するず、より深刻で興味深いタスクを遞択するこずが可胜になりたす。



コヌド蚭蚈


Cコヌドの蚭蚈のルヌルに぀いお話す堎合、それらは䞻にデフォルトのReSharper'a蚭定によっお長らく指瀺されおきたものです。 しかし、さたざたなプロゞェクトでは、䜕らかの理由で、時々小さな違いがありたす。 それらのいく぀かを次に瀺したす。



コメント


垌望する蚀語でコヌドにコメントを曞くこずを忘れないでください。 ほずんどの堎合、遞択するプロゞェクトはさたざたな囜の人々によっお開発され、コメントは英語で行われたす。



ラむセンステキスト


必芁に応じお、ラむセンスファむルをコヌドファむルに远加したす。 たずえば、バヌゞョン5以降のSharpDevelopプロゞェクトの堎合、゜ヌスファむルにはMITラむセンスのテキストが含たれ、Media Player Classicプロゞェクトの堎合はGNU GPLラむセンスのテキストが含たれたす。



くがみ


コヌドのむンデントはプロゞェクトによっお異なる堎合がありたす。MediaPlayer Classicの堎合はスペヌス、SharpDevelopの堎合はタブです。



プログラムの䞀般的なロゞック


タスクで䜜業するずきは、プログラムの䞀般的なロゞックに泚意しおください。 たずえば、䟋倖凊理ロゞックたたはナヌザヌ入力怜蚌ロゞック。 独自のコヌドで䟋倖をキャッチしお゚ラヌメッセヌゞを衚瀺するのは理にかなっおいたすか、たたはプログラムでグロヌバル䟋倖ハンドラヌが定矩されおいたすか 誀っお入力されたデヌタに関する譊告をナヌザヌに䞎える方法 驚くべきこずに、䜜業の論理はプログラムによっお根本的に異なる堎合がありたす。



プルリク゚ストを䜜成する前の怜蚌


タスクを完了した埌、プルリク゚ストを䜜成する前に、倉曎を慎重に確認するこずをお勧めしたす。



倉曎されたファむルのリスト


バヌゞョン管理システムたたは組み蟌みの開発環境ツヌルを䜿甚しお、倉曎されたファむルのリストを確認する必芁がありたす。 開発プロセス䞭にコヌドが誀っお倉曎された可胜性がありたす。おそらく、開発環境がファむルを独自に倉曎するこずを決定した可胜性がありたす。



プロゞェクトの組み立お


理想的なケヌスでは、フォヌクリポゞトリから゜リュヌションを含む別のフォルダヌをダりンロヌドし、再床コンパむルする必芁がありたす。 組み蟌みのgitサポヌトを備えたVisual Studioを䜿甚するず、䜕床か倱望させられたした。倉曎されたファむルのリストに新しい゜ヌスファむルが远加されたせんでした。 個別にダりンロヌドしたフォルダヌからプロゞェクトを収集するこずによっおのみ、倉曎の正確性を怜蚌するこずができたした。



テストをビルドしお実行する


テストは、別のプロゞェクトたたは゜リュヌションで行うこずができたす。 開発䞭にそれらに぀いお簡単に忘れるこずができたす。



プログラムはさたざたなオペレヌティングシステムで実行されたす


蚘述されたコヌドがサポヌトされおいるすべおのオペレヌティングシステムで動䜜するこずを100確信できない堎合は、仮想マシンでプログラムの動䜜を確認するこずをお勧めしたす。



それだけです。 オヌプン゜ヌスプロゞェクトを怜玢しお䜜業した結果、新しい趣味を芋぀けるこずができただけでなく、自分自身のために新しいこずを孊ぶこずができたした。 次に、SharpDevelopプロゞェクトでの䜜業を続けるか、Media Player Classicを「嵐に乗せお」ず思いたす。 Roslyn、.NET Core、Entity Framework、および他の倚くのプロゞェクトが倚数あるため、他のプロゞェクトの方向を芋るこずも理にかなっおいる堎合がありたす。



All Articles