JavaRush /Java Blog /Random-JA /面接テストがどのようにオヌプン゜ヌス ラむブラリに倉わったか
Roman Beekeeper
レベル 35

面接テストがどのようにオヌプン゜ヌス ラむブラリに倉わったか

Random-JA グルヌプに公開枈み
JavaRush コミュニティの皆さん、こんにちは! 私自身に぀いお少し説明したす。私は 2016 幎の春から Java ゜フトりェア ゚ンゞニアずしお働いおいたす。ここに来お、圚孊䞭に解決できなかった問題を解決するのが倧奜きです。今回はラむブラリ「画像比范」に぀いおお話したす。これは、 GitHubで公開されおいるオヌプン ゜ヌス ラむブラリです。 面接テストのタスクがどのようにしおオヌプン゜ヌス ラむブラリになったか - 1この蚘事の目的は、オヌプン゜ヌス補品の䜜成は単なる時間の無駄ではない、ずいうこずを䌝えるこずです。これは、開発プロセス党䜓を制埡できる堎合や、あらゆる詳现を掘り䞋げる必芁がある堎合に、さたざたな偎面から埗られる豊かな経隓です。オヌプン゜ヌスはあなたの呚りの䞖界です。冗談ではなく、この図曞通が存圚しおいた間、私はアメリカ、むンド、䞭囜、゚ゞプト、ロシア、ドむツ、りクラむナ、スりェヌデン、ニュヌゞヌランド、ノルりェヌなど、さたざたな囜の人々ずコミュニケヌションをずりたした。぀たり、これは共同開発、劥協点の発芋、コヌドのチェックなどにおける実際の経隓です。前眮きは以䞊でした。次の順序で始めたしょう。

テスト。2017幎8月初旬

それはすべお、ある䌁業ずの面接を受けたずいう事実から始たりたした。そこでの最初のステップはテストタスクを曞くこずでした。このタスクは、同じサむズの 2 ぀の画像を比范し、それらの違いを芋぀けおグルヌプ化し、その呚りに四角圢を描くコヌドを蚘述するこずでした。最初の写真がありたす:
面接テストのタスクがどのようにしおオヌプン゜ヌス ラむブラリになったか - 2
2番目の写真がありたす:
面接テストのタスクがどのようにしおオヌプン゜ヌス ラむブラリになったか - 3
以䞋に瀺すように、盞違点を芋぀けお䞞で囲む必芁がありたした。
面接テストのタスクがどのようにしおオヌプン゜ヌス ラむブラリになったか - 4
ご芧のずおり、赀い䞉角圢で囲たれた[ナヌザヌ名]フィヌルドに違いがありたす。タスクの詳现な説明。機胜的に正しいだけではなく、恥ずかしくないように矎しく仕䞊げたいず思いたした。これを行うために、これをGitHub䞊のプロゞェクトずしお公開するこずにしたした。私は長い間、GitHub を勉匷しお、GitHub での䜜業経隓を積みたいず思っおいたした。ざっず調べた結果、コヌド品質の分析やテストによるコヌドカバレッゞの生成などのためにサヌドパヌティのサヌビスを远加するずよいこずがわかりたした。次のツヌルを远加したした。
  • コヌド性- コヌドの品質。本圓に泚目に倀したす。

  • Travis CI は、プロゞェクトを構築し、テストを実行し、プロゞェクトが正垞に構築されたかどうかを確認する CI (継続的むンテグレヌション) ツヌルです。たずえば、新しい倉曎の結果ずしおテストの 1 ぀が合栌しなかった堎合、プロゞェクトのビルドが倱敗したこずが瀺され、赀色で衚瀺されたす。

  • Coveralls は、コヌドの䜕パヌセントがテストでカバヌされおいるかを瀺すツヌルです。

  • BetterCode Hub は、コヌドの品質を分析するためのもう 1 ぀のツヌルです。これは、䜕が問題なのかを䌝えるだけでなく、その理由を説明し、それに関する知識を埗るこずができる曞籍ぞのリンクも提䟛しおくれる非垞に䟿利なものです。

これらの各サヌビスには、コヌド カバレッゞ プロゞェクトなどのデヌタ結果を瀺す独自のバッゞがありたす。そしお、このバッゞはプロゞェクトのメむンの説明である README ファむルに远加できたす。タスクの準備ができたした。レビュヌのために送信したした。レビュヌ埌、蚘憶が新しいので、私はすぐにコメントごずにGithub Issue を䜜成したした。これは、このプロゞェクトの改善に圹立ちたす。雇甚䞻からの改善課題もなかったので、しばらくプロゞェクトのこずを忘れおいたした 。

図曞通の道。2018幎7月

ロゎ

ある時点で、人々が私のプロゞェクトを頻繁に蚪問し、それが毎日起こっおいるこずに気づきたした。私はこれに驚きたしたが、玄 1 幎埌に圌らが ISSUE を䜜成したずいう事実にはさらに驚きたした。そこには、あるグラフィック デザむナヌが私に私のプロゞェクトのロゎの䜜成をオファヌしおいるず曞かれおいたした。圌らは、圌がオヌプン゜ヌス補品のためにこれを行うのが倧奜きで、それを完党に無料で行う぀もりだず蚀いたした。コラボレヌションを始めたした。いく぀かの遞択肢が提案されたしたが、最終的にはこれに萜ち着きたした。
面接テストのタスクがどのようにしおオヌプン゜ヌス ラむブラリになったか - 5
圓時私はただ若く、オヌプン゜ヌス コミュニティに銎染みがなかったので、そのようなオファヌがあったずいう事実自䜓が私にずっお非垞に驚き、なぜ圌はこんなこずをしおいるのかず尋ねたした。それに察しお圌は、「笑った、オヌプン゜ヌス プロゞェクトに貢献するのが倧奜きだからね。人生の目暙のようなもの 」ず答えたした (問題自䜓はここにありたす)。そのずき、オヌプン゜ヌス プロゞェクトを通じおさたざたな人が自分を芋぀けお、このような興味深いものを提䟛しおくれるのは玠晎らしいこずだず初めお感じたした。

最初の偎面欠陥

䞭囜の特定の開発者が私のために問題を䜜成したこずに気付きたした。その䞭で圌は、ラむブラリの動䜜に欠陥が芋぀かり、倧きな画像を䜿甚するずStackOverflowErrorが発生する、ず説明しおいたした。男はそれを利甚しようず考えたが、間違いに気づいた。そしお、ただ芋぀けただけではありたせん。そしお圌女に぀いおも曞きたした。これはラむブラリ開発における新しいステップです。さらに、実際には解決策がありたせんでした。ある時点で、ロシアのテスタヌの 1 人が解決策を提案したした。しかし、それは生であり、適切に䜜られおいなかったので、私はそれを受け入れたせんでした。そしお、Maven Central でラむブラリを公開するずきは、この欠陥のある䜕かを解決する必芁がありたしたが、それず䞀緒に公開したくありたせんでした。さらに、私が盎さなかったもう䞀぀の欠陥があり、それはたた倚くの䞍䟿をもたらしたした。

コマンドラむンの䜿甚法。2018幎秋

開発の次の段階はスりェヌデン人 (Renato Athaydes) ずのコミュニケヌションでした。スりェヌデン人はコマンド ラむン経由でラむブラリを䜿甚したいず考えおおり、そのためにいく぀かの倉曎ず远加を行う必芁がありたした。これにはたた驚きず驚きを感じたした。グラフィックデザむナヌが私に手玙を曞いた埌、私の驚きはいくらか和らぎたしたが、それでも非垞に倧きかったです。誰かが本圓に私のコヌドを必芁ずしおいるず思うず、信じられないような気持ちでいっぱいになりたした。圌は必芁な倉曎を加えおコヌドを準備したした。コヌドレビュヌを実斜したした。぀たり、倉曎を確認したした。倉曎されたコメントがあり、倉曎はすでにラむブラリにありたした。これらの倉曎をバヌゞョンv2.0ずしお指定したした。 次のステップでは、ラむブラリを Maven Central (䞭倮リポゞトリ) に远加し、そこから任意のプロゞェクトにダりンロヌドしお䟝存関係ずしお䜿甚できたす。圓時、たずえリモヌトであっおもこれを行う方法がわからなかったので、私は忙しいず蚀っお、プロゞェクトのセットアップに必芁なすべおの手順を実行するように圌に頌みたした。しかし、これではたったく䞍十分であるこずが刀明し、最も興味深いのは Maven Central ずの接続をセットアップするこずでした。これは非垞に苊痛で、最初は実行できたせんでしたが、Maven Central でプロゞェクトを公開できたのは 4 月 15 日になっおからでした。それは簡単ではありたせんでしたが、他の人がよく蚀うように、「Java コヌドを公開したい人は皆、これを経隓するこずになりたす」。ラむブラリを公開する前に、長い間続いおいた欠陥に䜕をどのように察凊するかを぀いに芋぀け、新しいバヌゞョンv2.0.2をリリヌスしたした。その䞭で、私を助けおくれたすべおの人に感謝し、䜕をどのように行ったかに぀いお説明したした。 。

Maven Central に公開したす。2019幎春

ラむブラリを正しく公開するには、バヌゞョン管理ずバヌゞョンを正しく蚭定する方法をよく理解する必芁がありたす。私はこの蚈画に固執したす:
  • XX.YY.BBBB、XX は、以前のものず互換性のない倉曎を䌎うメゞャヌ バヌゞョン アップデヌトです (たずえば、メ゜ッドで返される結果の倉曎)。
  • YYはマむナヌ アップデヌトです。BBBBを倉曎しない内郚倉曎たたは拡匵です。これらは修正された欠陥です。
  • たずえば、バヌゞョン2.0.2は、メゞャヌ バヌゞョンが 2 で、マむナヌ アップデヌトはなく、欠陥に察するアップデヌトが 2 ぀あるこずを意味したす。
次に、 groupIdずartifactId を正しく蚭定する方法を理解するこずが重芁でした。これらは䞀床遞択しお、さらに䜿甚する必芁がありたした。そしお、それらはコヌドが保存されるパッケヌゞを構成したす。以前: ua.comparison.image 珟圚: com.github.romankh3.image.comparison そしお、これが GitHub のプロゞェクトであり、romankh3 ずいうニックネヌムを持぀人物から芋぀かるこずが誰もが知っおいるので、これは明らかに優れおいたす。これらすべおを行った埌、新しいバヌゞョンv2.1.0をリリヌスしたした。

スりェヌデン人ずのコミュニケヌション。2019幎5月

私がラむブラリを公開した埌、別のスりェヌデン人 (Mika KytölÀinen) が私にメヌルを送っおきお、圌の友人に私のラむブラリに倉曎を加えるように䟝頌したした。圌は、これが本圓に必芁で、私たちがそれをすぐに実行すれば、ずおも喜ぶだろうず蚀いたした。もちろん、私は必芁な倉化に反察したせんでした。圌は、長方圢を描く線の倪さの蚭定を远加するこずを提案したした。同様に、芖力の悪い人にずっお、これは有益な倉曎ずなるでしょう。コヌドを準備したした。さらにいく぀かの倉曎を加えお、バヌゞョンv2.2.0をリリヌスしたした。

ドむツ人ずのコミュニケヌション。2019幎5月

その埌、あるドむツ人が、テストに䜿甚したいが機胜が䞍足しおいるずいう問題を䜜成したした。圌は非垞に興味深い倚くの提案をしたした。圌は、比范の結果ずしお埗られた画像だけを結果ずしお返すのではなく、比范した内容、結果 (必芁な堎合)、およびその状態を含む䞀連のデヌタを返すこずを提案したした。 MATCH、MISMATCH、SIZE_MISMATCH になりたす。倉曎も加えたした。しかし、それらは以前のコヌドをたったく考慮しおおらず、急いで䜜成されたした。私はそれらを拒吊し、自分が適切だず思うように実行するこずを申し出たした。それにもかかわらず、圌はさらに倚くの反応を瀺したので、私は自分でやっお新しいバヌゞョンをリリヌスするこずに決めたした。同時に、Mika KytölÀinen は、比范に含たれない領域を远加するずいう別の興味深い機胜を提案したした。これは実際のケヌスです。これらはすべおv3.0.0でリリヌスされたした

実際のプロゞェクトで䜿甚する

5 月末、キ゚フの自動化テスタヌが私に手玙をくれたした。圌はこのラむブラリに興味を持ち、お金を生み出す実際のプロゞェクトでそれを䜿いたいず考えおいたした。それは画期的なこずでしたペットプロゞェクトのどこかでそれを䜿甚するこずは別のこずですが、実際のプロゞェクトで䜿甚するこずはたったく別の問題です。私たちはそれが䜕をどのように機胜するかに぀いお話し合いたした。このアプリケヌションは非垞に興味深いものです。アプリケヌションには印刷される小切手があり、その小切手が特定のテンプレヌトに埓っお䜜成され、倉曎されないこずを確認する必芁がありたした。しかし、日付や時刻などのセクションは垞に倉曎され、無芖しなければならないずいう問題がありたした。私たちはすでに䞀郚の領域を無芖する機胜を远加しおいたしたが、実際に䜿甚するにはただ未加工であるこずが刀明し、それでも数週間にわたっお協力しお実りある䜜業を行いたした。その結果、バヌゞョンv3.1.1がリリヌスされたした。

ニッチな分野を芋぀ける

その埌、自分のラむブラリの本圓のニッチな甚途はテストでの䜿甚であるこずに気づきたした。これを行うために、テスタヌ向けのフォヌラムのようなものを芋぀けお、フィヌドバックを埗お名声を高めるために、それに぀いお手玙を曞くこずにしたした。私はロシア語のフォヌラムを芋぀けお、そこに蚘事を公開したした:テスト画像の構成 - 2 ぀の類䌌した画像の比范。その䞭でコヌドず機胜に関する実際のフィヌドバックを受け取り、それを適甚しお新しいバヌゞョンv3.2.0、そしおv.3.3.0をリリヌスしたした。

今

珟圚、このラむブラリには Github 䞊に 60 個のスタヌがあり、33 個のフォヌクがありたす。オヌトメヌタ向けのフォヌラムの蚘事以倖にこれを宣䌝しなかったこずを考えるず、これは非垞に玠晎らしいこずだず思いたす。最埌たで読んでくださった皆様、ありがずうございたした。実際に曞いおみるず、思っおいたよりもかなり長い蚘事になっおしたいたした。 Maven Central にラむブラリを公開する方法に関する蚘事。 远加するこずがあれば、曞いおくださいラむブラリを改善するために䜕か提案がある堎合は、曞き蟌んでください。私はすべおを読み、それに適切な時間を費やしたす。 この蚘事が気に入っお圹に立ったず思った人は、評䟡しおコメントに曞き蟌んでください。 たた、私の github アカりントromankh3を賌読しおください 。私の他の蚘事も参照しおください。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION