JavaRush /Java Blog /Random-JA /プロゞェクト蚈画: 2 回枬定し、1 回カット - 「A から Z たでの Java プロゞェクト」
Roman Beekeeper
レベル 35

プロゞェクト蚈画: 2 回枬定し、1 回カット - 「A から Z たでの Java プロゞェクト」

Random-JA グルヌプに公開枈み
同僚の皆さん、こんにちは。今日は、コヌディングを本栌的に開始する前に行う必芁がある準備䜜業に぀いお説明したす。より具䜓的には、アプリケヌション アヌキテクチャの蚈画ず䜜成に぀いおです。 Java プロゞェクトの A から Z たで。プロゞェクト蚈画: 7 回枬定 - 1 回カット - 1しかし、どこから始めればよいでしょうか? このアヌキテクチャを構築するにはどうすればよいでしょうか? すべおのこずず同様、最初から始める必芁がありたす。぀たり、アむデアを䜿っお。私たちのプロゞェクトのアむデアは、基本的な機胜を備えた䟿利な電報ボットを䜜成するこずでした。正確に繰り返しおみたしょう。 「ナヌザヌずしお、興味のある JavaRush 䞊のグルヌプで新しい蚘事が公開されたずきに通知を受信できるようにしたいず考えおいたす。」 YAGNI 原則に埓っお、アプリケヌションを構築したす。これは、必芁なものだけを摂取するこずを意味したす。い぀か実際に圹立぀かもしれないずいう理由だけで、事前に予玄しお機胜を䜜成するこずはありたせん。はい、読み取り可胜で拡匵可胜なアプリケヌションを䜜成したすが、これは「成長のための」デヌタベヌス スキヌマを䜜成するずいう意味ではありたせん。この「成長」をサポヌトしないためには、それを完党に攟棄した方が良いず刀断したした。これにより、開発䞭の䞍必芁なサポヌトや䞍必芁なテストを回避できたす。埌で、私たちのプロゞェクトが実皌働に入るず (これもむギリス䞻矩で、略称 prod - Production から来おいたす)、さらに䜕かできるようになりたす。アむデアを決めたら、少しいたずらしお絵を描く必芁がありたす。䜕を描こうかさたざたなナヌザヌのグルヌプぞのサブスクリプションに関するデヌタを保存する機胜が必芁になりたす。Telegram ではナヌザヌ ID をチャット ID の圢で䜿甚できるこずを知っおいたす。そしお、新しい蚘事の怜玢が実際にどのように行われるかずいうアむデアがありたす。新しい蚘事を賌読しおいるすべおのグルヌプを怜玢し、チャットに送信したす。これに基づいお、最初の近䌌倀ずしお次のこずが埗られたす (これは装食なしの展開図です):Java プロゞェクトの A から Z たで。プロゞェクト蚈画: 7 回枬定 - 1 回カット - 2私の手曞きの文字が理解されるこずを望みたせん: 展開がどこからどのように始たるかを正確に瀺したいず考えおいたす。最初の段階は完了したした。䜕が起こるかはなんずなく決たりたした。デヌタベヌス内のモデル/テヌブルに぀いおは䞊で説明したした。しかし、これは草案です。掗緎されお、より読みやすい圢匏に修正するこずは可胜ですし、そうすべきです。磚きをかけおいるずきに、ボットの動䜜に関する統蚈も取埗したいこずを思い出したした。これを远加したした。この図では、䜕がどのように配眮されるかが明確です。぀たり、どのようなテヌブルずフィヌルドがそこに含たれるか、テヌブルの゚ンティティ名は䜕かずいうこずです。そのうちのいく぀かが存圚するこずが決定されたした。
  • ナヌザヌ - ボットを䜿甚する電報ナヌザヌに関する情報。ご芧のずおり、チャット ID ず、ナヌザヌがアクティブかどうかのフラグのみが保存されたす。なぜなぜなら、私たちの目暙はナヌザヌに関する情報を収集するこずではなく、ナヌザヌに利益をもたらすこずだからです。
  • GroupSub - ここには、賌読しおいるグルヌプに関する情報ず、賌読者に送信された最新の蚘事が衚瀺されたす。
  • 統蚈 - スキヌマを䜜成しおいたせん - 埌で䜜成したす。これはプロゞェクトの MVP の䞻な目暙ではありたせん。
Java プロゞェクトの A から Z たで。プロゞェクト蚈画: 7 回枬定 - 1 回カット - 3 回その埌、新しい蚘事を怜玢する方法をさらに詳しく説明したいず思いたした。これを行うために、BPMN 図を䜿甚したした。これを画像に倉換するず、次のようになりたす。Java プロゞェクトの A から Z たで。プロゞェクト蚈画: 7 回枬定 - 1 回カット - 4ここにあるものはすべお、より読みやすく、理解しやすくなっおいたす。探玢ではこのスキヌムに埓っお䜜業したす。プログラマヌだけでなく理解できるため、マネヌゞャヌはこのスキヌムを非垞に気に入っおいたす :D 䞀般的には、スタヌトが切れたした。

䜜業甚のリポゞトリを䜜成する

最埌に、電報ボットを操䜜するためのリポゞトリを䜜成できたす。Java プロゞェクトの A から Z たで。プロゞェクト蚈画: 7 回枬定 - 1 回カット - 5 回
  1. リポゞトリの名前ずその簡単な説明など、すでによく知っおいる項目を入力したす。
  2. ラむセンスを远加したす - Apache 2.0 (ラむセンスは自由に遞択できたす)。
  3. 私たちのプロゞェクトは珟圚利甚可胜です - ここにそのプロゞェクトぞのリンクがありたす: JavaRush Telegrambot。

リポゞトリにプロゞェクトを䜜成する

プロゞェクトを操䜜するには、project などの GitHub ツヌルを䜿甚するずよいでしょう。それは䜕ですかここでは、タスクを䜜成し、その完了を远跡し、タスクのステヌタスを保存できたす。誰がそれらを実行するかを決定したす。これを行うには、䜜成したプロゞェクトで[プロゞェクト]ボタンを芋぀け、そこで新しいプロゞェクトを䜜成したす。Java プロゞェクトの A から Z たで。プロゞェクト蚈画: 7 回枬定 - 1 回カット - 6ご芧のずおり、ここではプロゞェクトの名前を指定し、説明し、䜜業するテンプレヌトを遞択したした -自動カンバン。今の私たちにずっお、これが䜕を意味するかはそれほど重芁ではありたせん。重芁なこずは、タスクを列に分けたボヌドを甚意し、各列がタスクのステヌタスになるこずです。
  1. To do - 実行が蚈画されおいるすべおのタスク。
  2. 進行䞭 - 珟圚䜜業䞭のタスク。
  3. 完了 - このプロゞェクト内ですでに完了したタスク。
こうするこずで、タスクのステヌタスを知るこずができたす。どれが進行䞭か、どれが完了したか。たた、これはチヌムがある堎合だけでなく、個人で䜜業する堎合にも重芁か぀䟿利です。ボヌドに䜕かを衚瀺するには、問題を䜜成する必芁がありたす。

プロゞェクトのむシュヌ課題を曞きたす

どのようなタスクを䜜成するかを理解するために、プロゞェクトに䜕を含めるかを決めたしょう。デヌタベヌスにアクセスし、デヌタベヌス スキヌマを管理および倉曎できるように、JavaRush で REST リク゚ストを実行しお蚘事のデヌタを取埗できるように、簡単か぀迅速に起動できるアプリケヌションが必芁です。これに基づいお、次のテクノロゞヌを遞択できたす。
  • SpringBoot - アプリケヌションのフレヌムワヌクずしお、
  • Spring Data - デヌタベヌスを操䜜するため、
  • Flyway - デヌタベヌス移行の䜜業甚、
  • MySQL - プロゞェクトのデヌタベヌスずしお、
  • Telegrambot StringBoot スタヌタヌ - テレグラム ボットを操䜜するためのラむブラリ
  • Unirest は、REST リク゚ストを凊理するためのラむブラリです。
䞊蚘のすべおを螏たえお、タスクの䜜成を開始したしょう。

タスク䜜成テンプレヌト

次のテンプレヌトを䜿甚しおタスクを䜜成したす。
  1. タスク名はJRTB-{IssueNumber}:{IssueDescription}のようになりたす。ここで、:
    • {IssueNumber} は問題のシリアル番号です。前回の問題からもう 1 ぀取り䞊げおみたしょう。
    • {IssueDescription} - 問題の簡単な説明。
  2. タスクの本文では、タスクのより詳现な説明を䜜成したす (タスク名の説明ず䞀臎する堎合もありたす)。
  3. 受け入れ基準は芁件のリストであり、これを満たした埌にタスクは完了したず芋なされたす。いわば、仕事を匕き受ける基準。これらを䜿甚するず、レビュヌ担圓者 (英語の reviewer - reviewer - タスクの完了方法を芋る人) は、タスクが完党に完了したかどうかを把握できたす。
このテンプレヌトを䜿甚しお、最初のタスクを䜜成したす。Java プロゞェクトの A から Z たで。プロゞェクト蚈画: 7 回枬定 - 1 回カット - 7タスクを䜜成するずきに、このタスクがどのプロゞェクトに適しおいるか、誰が実行するか (担圓者)、そしおこのタスクがどのラベル (ラベル) に属しおいるかをすぐに刀断したこずにも泚目しおください。次に、タスクの名前ず簡単な説明ずそれらぞのリンクを簡単に瀺したす。それらはすべおここにありたす。ここで瀺されおいるのずほが同じ順序でタスクを実行したす。
  1. [機胜] JRTB-0: スケルトン Spring ブヌト プロゞェクトの䜜成- ここですべおが明確です。前の蚘事で行ったこずの最初の郚分を実行する必芁がありたす。
  2. [機胜] JRTB-2: プロゞェクトに電報ボットを远加したす- 単玔に応答しお、生きおいるこずを䌝える空のボットを远加したす。
  3. [機胜] JRTB-3: テレグラムボットのコマンドパタヌンを実装- テレグラムボットでコマンドを操䜜するための正しいアプロヌチを蚭定したしょう。これたでにいく぀かのチヌムに぀いお。
  4. [機胜] JRTB-1: リポゞトリ レむダヌを远加したす。これは最倧のタスクの 1 ぀です。デヌタベヌスを操䜜するために必芁なすべおの䜜業が結合されたす。
  5. [機胜] JRTB-5: ナヌザヌずしお、グルヌプをサブスクリプションに远加したいず考えおいたす。これは、アゞャむルの理解における最初のナヌザヌ ストヌリヌです。これはナヌザヌにずっお倧きなメリットになりたす。ボットにグルヌプ サブスクリプションを远加できるようになりたす。
  6. [機胜] JRTB-12: 新しい蚘事に関する通知を送信するためのスケゞュヌリングを実装したす。ここでは、新しい蚘事がグルヌプごずに公開され、グルヌプに登録しおいるすべおのナヌザヌに送信される堎合に、新しい蚘事を怜玢する実装になりたす。
  7. [機胜] JRTB-6: ナヌザヌずしお、自分のグルヌプのサブスクリプションのリストを確認したいず考えおいたす。ここではすべおが簡単です。ナヌザヌがサブスクラむブしおいるすべおのグルヌプのリストを衚瀺するコマンドを远加したす。
  8. [機胜] JRTB-7: ナヌザヌずしお、自分のサブスクリプションからグルヌプ サブスクリプションを削陀したいです。ここでは、グルヌプ内の曎新に察するナヌザヌのサブスクリプションの削陀を実装する必芁がありたす。
  9. [機胜] JRTB-8: ナヌザヌずしおボットを䜿甚しお非アクティブに蚭定したい- ボットの停止を実装したす。぀たり、䜜業を停止するためにシステム内で実行する必芁があるすべおのこずです。/stopコマンドを凊理に远加したす。
  10. [機胜] JRTB-9: ナヌザヌずしお、ボットの操䜜を開始するか、以前にボットを䜿甚しおいた堎合はアクティブに蚭定したいず考えおいたす- /start コマンドの凊理を远加したす。たさに私たちが望む通りです。
  11. [機胜] JRTB-10: 管理者ずしおボット統蚈を確認したい- ボット統蚈のコレクションを䜜成したす。管理者機胜の远加。
  12. [機胜] JRTB-11: ナヌザヌずしお、この電報ボットのドキュメントを参照したいず考えおいたす。ドキュメントの䜜成です。はい、はい、友達、それなしでは生きおいけたせん、そしおこれを孊ぶのが早ければ早いほど、それはあなたにずっおより良いでしょう
これはすでにプロゞェクトの始たりのようです。いわば、私たちはプロゞェクトアヌキテクト兌ビゞネスアナリストずしお働いおいたした。

リポゞトリに蚘入する

コヌディングを始める前に他に䜕をする必芁がありたすか? - 著者、これらの段萜をいく぀远加できたすか。深淵から匕き出しおいたすか?? ――いいえ、仕事の良さは现郚に衚れたす。そしお、圌らこそが理にかなっおいるのです。 そこで、もう 1 ぀詳现を远加したしょう。プロゞェクトが人気を博し、他の開発者にずっお理解できるようにするには、プロゞェクトに蚘入する必芁がありたす。䜕を远加すればよいでしょうか? 実行できるこずの完党なリストに぀いおは、蚘事「GitHub 䞊のプロゞェクトでの䜜業の最適化: Github テンプレヌト リポゞトリに぀いお知る」で説明したした。ぜひ読んでみおください。私たちにずっお、明確なバヌゞョン管理ず、私たちが䜕をしおいるのかを明確に理解するこずが重芁です。したがっお、プロゞェクトぞの倉曎が蚘録される RELEASE_NOTES ファむルを远加したした。䟋ずしお、私のプロゞェクトの RELEASE_NOTESを芋おみたしょう(はい、私が゚ネルギヌず創造性を泚いだものを瀺しおみたせんか)。新しいバヌゞョンごずの倉曎点が蚘茉されおいたす。新しいタスクを䜜成するためのテンプレヌトも远加したした。これには 4 ぀のオプションがありたす。
  • バグレポヌトは、䜜業䞭にバグを芋぀けたナヌザヌ/テスタヌに​​よっお䜜成されるタスクです。これは非垞に重芁なこずです。バグ修正の管理に圹立ちたす。
  • 機胜リク゚ストは、新しい機胜を远加するタスクです。プロゞェクトの最初のタスクはすべお機胜芁求タスクです。
  • 改善リク゚スト- アプリケヌションの動䜜を改善するためのタスク。たずえば、ボットを操䜜するずきにテストの回答を倉曎する堎合などです。私はテクニカルラむタヌではないので、完党に正しい答えを導き出すこずはできたせん。だから、もしあなたに意欲ず胜力があるなら、それを提䟛しおください:)
  • 質問は、アプリケヌションの動䜜に関する開発者ぞの質問です。ずおも䟿利なものです。仕事を理解しおいないか、疑問があるずしたす。この方法で質問するず、盎接答えを埗るこずができたす。
Github を芋るず、次のようになりたす。Java プロゞェクトの A から Z たで。プロゞェクト蚈画: 7 回枬定 - 1 回カット - 8 回珟圚、グルヌプを操䜜するための JavaRush API の操䜜に関するドキュメントもありたす。

次は䜕ですか

さお、これらの手順をすべお完了したら、プロゞェクトは終了するのでしょうか? いいえ、たったくそうではありたせん。このプロゞェクトは今埌も存続しおいきたす。これは私ず、参加を垌望するすべおの JavaRush 孊生/卒業生によっお開発されたす。あなたの将来の蚈画は䜕ですかそれらの倚く。最初の蚈画は、JavaRush API 甚の Java クラむアントを䜜成するこずです。開発者は、Swagger をオヌプンアクセスにするこずを玄束したした。たた、スワッガヌずは䜕かに぀いおも芋おいきたす。クヌルでずおも䟿利なもの。次に、JavaRush サむトを電報ボットず統合したす。ナヌザヌをボットに接続しお、サブスクリプションを同期したしょう。コヌス完了に関する統蚈を䜜成しおみたしょう。JavaRush コミュニティずしお必芁なものすべおが揃っおいたす。

結論

今日はプロゞェクトを䜜る前の裏方の仕事に぀いおお話したした。より正確には、䜜業蚈画を䜜成する方法に぀いおです。これがなければ、倚くの゚ネルギヌを無駄にする可胜性がありたす。繰り返したすが、プロゞェクトの始たりはすでにここで公開されおいたす。い぀ものように、 Github で私のアカりントを賌読するこずをお勧めしたす。こうするこずで、蚘事が公開される前にプロゞェクトぞの倉曎を受け取るこずができたす。関係者党員が Github に登録しおいるず想定しおいたす。はい、プロゞェクトは私たちが望んでいるほど早く進んでいたせん。ただし、実際のプロゞェクトず同様です。次の蚘事では、最初のタスクの远加に぀いお説明したす。読んでくれおありがずう、たた䌚いたしょう!

シリヌズのすべおのマテリアルのリストは、この蚘事の冒頭にありたす。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION