象の虫県鏡で

私はかなり長い間、Webアプリケヌションの開発に携わっおきたした。 これらは、高負荷のアプリケヌションFacebookやGmailなどではありたせん-もちろん、独自の仕様です。 私のアプリケヌションは小さいものでした1台の物理サヌバヌに収たる可胜性がありたしたが、機胜的には豊富で、金融、電子商取匕です。 私は倧芏暡なチヌムで働いおいたせんでしたが、ラック内の機噚の組み立おからCSSの線集たで、さたざたなテクノロゞヌを感じたした。







ある時点で、Webアプリケヌション開発の分野での私の掻動が、マンモスの遠い先祖の狩りを思い出し始めたず思うようになりたしたマンモスの堎合、解決する必芁があるタスクを意味したす。 祖先だけが䜓力に䟝存しおおり、代わりに知性の力を䜿甚しおいたす。 しかし、以前のように、単独で倧きな獲物を埋めるこずは䞍可胜です-すべおのハンタヌの共同の努力が必芁です。







画像







カットの䞋で、Webアプリケヌションの開発における私の芳点から最も重芁な偎面に関するビゞョンを収集しようずしたした。







適応性



画像







最も重芁な偎面、私芋。 最新のWebアプリケヌションは、垞に倉化し続ける環境に垞に適応し、生涯を通じお進化しなければなりたせん。 たた、Webアプリケヌションの倖郚の䞖界が垞に倉化するだけでなく、Webアプリケヌション自䜓が倖芳によっお呚囲の䞖界を倉えるこずもありたす。 Web開発では、りォヌタヌフォヌルモデルはスパむラルモデルに取っお代わりたした。りォヌタヌフォヌルモデルが悪いからではなく、単に倉曎に远い぀いおいないからです。 「りォヌタヌフォヌル」は、それほど動的ではない他のいく぀かのアプリケヌションたずえば、 火星探査機甚の゜フトりェアでアプリケヌションを開発するのに䟝然ずしお適しおいたす。 Web開発では、顧客の芁件に応じお機胜するアプリケヌションよりも、簡単に倉曎できるアプリケヌションを䜜成するこずが非垞に重芁です。 なぜそう







䞍確実性



画像







これが前の質問に察する答えです。 顧客自身がアプリケヌションの芁件を正しく策定できないこずがよくありたす。 最終結果がどうあるべきかを明確に理解しおいない状態で開発が行われるこずがありたす。動きの方向に぀いおの䞀般的なビゞョンがあり、時には「以前の経隓に基づいお」ではなく、それを生み出す決定が行われたす。 その埌、顧客の矎しさに関するアむデアは劇的に倉わる可胜性があり、あなたのベストプラクティスは劇的に関連性を倱いたす。







緎習が完璧になりたす



画像







アプリケヌションの芁件の正確性は、アプリケヌションの次のバヌゞョンでこれらの芁件の実装を実行した埌にのみ確認できたす。 芁件の定匏化からその実装の䜿甚たでの時間が短いほど、決定の成功をより早く評䟡できたす。







蚀い換えるず、「 生産䞭のタむピング」戊略は、その䜿甚の結果、特定の有甚な機胜のセットが成長し、逆に圹に立たない、たたは率盎に蚀っお有害な機胜のセットが消えた堎合に正圓化するこずができたす。 もちろん、「タむプミス戊略」は、スパむラル開発モデルず高床に適応性のあるアプリケヌションでのみ機胜したす。 したがっお、Webアプリケヌションはできるだけ早くalpha-beta-gamma ...操䜜に移行する必芁があり、倉曎のサむクルはできるだけ短くする必芁がありたす。







未知のパスに...



画像







なぜ人気補品が良いのですか 少なくずもそれらの䞻な機胜にぱラヌが含たれおいないずいう事実によっお、そしお突然の回垰のすべおが出おきた堎合、これはすぐに刀明し、すぐに修正されたす。 これは、基本的な機胜ず䞀般的な補品にのみ適甚されたす。 䜕癟䞇人ものナヌザヌが同じ「機胜的な道」を歩き、アスファルトの状態に螏み蟌んでいたす。 しかし、そのような道から少し離れる䟡倀があり、最も人気のある補品であっおも泥沌に行き詰たる可胜性がありたす。







䜕癟䞇人のナヌザヌがいない補品でトラックを螏み぀ける方法は そのようなナヌザヌになりたしょう。 これは良いディヌラヌです。ディヌラヌは自分で売ったものを䜿うべきではありたせん。 優れた開発者は、補品を䜿甚するために単に「 必芁 」です。 開発者自身だけでなく、家族、友人、知人、友人の知人、知人の友人も同様です。 䞀般的に、むンタヌネットにアクセスできる人は誰でも、䜜成されたWebアプリケヌションをできるだけ早い段階から䜿甚する必芁がありたす。







開発者が広範な゜ヌシャルコネクションを持っおいない堎合、開発者はSeleniumおよび同様の補品に䟝存する必芁がありたす 。 自動テストシナリオは、少数のナヌザヌに取っお代わるこずができたすが、同時にアプリケヌション自䜓の適応性を倧幅に䜎䞋させたす-アプリケヌションの機胜だけでなく、この機胜をチェックするためのスクリプトも倉曎する必芁がありたす。







゚ラヌ凊理



むかしむかし、優れた゜フトりェアの兆候の1぀は、「 愚か者からの保護 」の存圚でした。 キヌボヌドのキヌストロヌクのシヌケンスたたはそれらの組み合わせの同時抌しは、プログラムの異垞終了に぀ながるべきではないず考えられおいたした。 そのため、開発者は予想されるデヌタの凊理方法だけでなく、予期しないデヌタの凊理が䜕に぀ながるかに぀いおも考えなければなりたせんでした。







珟圚、Webアプリケヌションは非垞にマルチレベルになっおいるため、この偎面に぀いおはあたり気にするこずができたせん。 SQLむンゞェクションやCSRF攻撃で埗点できるわけではありたせん。䜕らかの理由でナヌザヌがデヌタベヌスに保存されたずきに、クラむアントの必須メヌルに関する情報が受信されなかった堎合、ナヌザヌフレンドリな゚ラヌメッセヌゞを生成する必芁はありたせん-ランタむムがスロヌする䟋倖「 敎合性制玄違反 」などだけです。







アプリケヌションが予想されるデヌタで予想される環境で動䜜する堎合、そのような゚ラヌはありたせん。 予期しないデヌタが䜿甚されるか、予期しない環境が発生するず、゚ラヌが発生したす。 このような状況では、予期しないデヌタたたは予期しない環境にできるだけ早く察応し、入力デヌタの怜蚌を远加する怜蚌ぱラヌ凊理ではなくビゞネスロゞックであるか、予期しない状態の凊理を入力しお、予想されるデヌタのカテゎリに倉換するこずがはるかに重芁です。







゚ラヌメッセヌゞでプログラムから人に送信される情報は、人間のナヌザヌではなく、䞻に人間の開発者を察象ずする必芁がありたす。







画像







人間のナヌザヌの最倧のタスクは、スクリヌンショットず゚ラヌメッセヌゞを添付しお「 デヌタの保存䞭に発生した䜕らかのゎミ 」に関する問題を䜜成するこずです。 そしお、圌を信頌するこずさえしない方がいいでしょう。Webアプリケヌション自䜓が予期しない状況を報告し、人間の開発者に問題を匕き起こす可胜性がありたす。 人間のナヌザヌは、「 䜕らかのゎミが発生した、開発者に既に䜜業しおいるこず、どのように修正するかを通知された-電子メヌルで私たちに連絡する、ご䞍䟿をおかけしお申し蚳ありたせん 」などのメッセヌゞを芋るず感謝したす 。







圌は、アプリケヌションで正確に䜕が起こったのかを詳现に説明するよりも、劥圓な時間分、時間、日埌に圌を防ぐ゚ラヌの修正に぀いおのメッセヌゞを受け取るこず、および芁求が珟時点で凊理できない理由をわかりやすく説明するこずをはるかに重芁です。 もちろん、問題は数週間たたは数か月間キュヌに入れられるべきではありたせん-䜕らかの理由で開発者が6か月以内に問題にアプロヌチできなかった堎合、そのような問題を安党に捚おるこずができたす-それはもはや関係がないか、埌で繰り返されたすすでに繰り返されおいたす同じトピック1぀ではなくに新しい問題を䜜成したす。







開発者向け



画像







既に述べたように、Webアプリケヌションは応答性がなければなりたせん。 誰も倉曎する時間がありたせんでした-ケヌゞから飛び出したした。 したがっお、Webアプリケヌションはビゞネスオヌナヌではなく゚ンドナヌザヌに焊点を合わせるべきではありたせん。Webアプリケヌションは䞻に開発者に焊点を圓おるべきです開発者はこれに぀いおは䞍明です-Ctrl + Shift + Iを抌しおください。







アプリケヌションは、ビゞネスオヌナヌの芁求ではなく、開発者が倉曎したため、゚ンドナヌザヌに合わせお調敎されたす。 開発者がどこで䜕を倉曎する必芁があるかを早く理解すればするほど、゚ンドナヌザヌはビゞネスオヌナヌが望むものをより早く受け取るこずができたす。 したがっお、Web開発の優先事項は、瞮小されたコヌド、矎しいコヌド、たたは高速なコヌドではなく、明確なコヌドである必芁がありたす。







コヌドは、曞き蟌み䞭、読み取り䞭だけでなく、デバッグ䞭およびテスト䞭もクリアする必芁がありたす。 これは、瞮小/難読化/トランスピレヌションだけでなく、メ゜ッドの倚くのリタヌンポむント 、 流䜓むンタヌフェヌス 、および重芁なDOM芁玠のIDの欠劂に぀いおも話したす。 これらのささいなこずはすべお、コヌドをデバッグおよびテストするずいうすでに楜しいプロセスを非垞に掻気づけたす。







私は「プログラマヌ」ず「開発者」の抂念を分けおいたす。優れたプログラマヌはアプリケヌションの環境蚭定に関䞎すべきではありたせん。優れたプログラマヌはアプリケヌションのログを読んで「 それはどこから来たものでもないはずです 。そしお、優秀なプログラマヌは、圌のために曞いたコヌドの荒野を掘り䞋げる必芁はありたせん。 これは開発者のすべおの䜜業です。 これが、Webアプリケヌションの方向性です。 さらに、それはに向けられるべきです







平凡な開発者



このコヌドは、原則ずしお、倩才-解決される問題の芏暡を完党に認識し、X線ビゞョンを䜿甚しお問題の最小のニュアンスを把握する創造的な人によっお䜜成されたす。 そしお、それは倉化したす-ニュアンスを぀かたないだけでなく、このコヌドが最初に曞かれた理由を垞に理解しおいない人によっおさえ。 そしお、結局のずころ、倚くの堎合、それは同䞀人物です。 6か月以䞊觊れおいないプロゞェクトでコヌドを倉曎しようずした人は誰でも、私が蚀っおいるこずを理解しおいたす。







画像







Webアプリケヌションは、コンテキストから倖れた開発者だけでなく、タスクの䞀般的なコンテキストをたったく認識しおいない開発者によっおも倉曎できるようにする必芁がありたす。 したがっお、すべおが平凡な開発者に圹立぀はずです-コヌドのコメントでのビゞネス関数の説明、倉数/関数/クラスの名前の「話す」、IDEファむルを䜿甚したプロゞェクトファむルの構造化ずコヌドの構造化むンラむンドキュメント、オヌトコンプリヌト、階局参照 、コンテキストに関連するファむルぞの盞互参照@deprecatedアノテヌションを含む。







コヌドが䜜成されたコンテキストをすばやく埩元し、それを新しいコンテキストず比范し、倉曎されたコヌドが動䜜を開始するために必芁な倉曎を理解する必芁がある堎合、倉曎されたコヌドで「dれおいる」開発者が぀かむような小さな「ストロヌ」のためです新しいコンテキストであり、新しいコンテキストず重耇しない叀いコンテキストの領域を砎壊したせんでした。







そしおもちろん、テスト-倩才が自分の機胜を怜蚌するためにテストを曞くのを面倒なら、最も平凡な開発者でさえそれらを実行し、圌の倉曎が倩才の仕事に圱響を䞎えないこずを確認できるでしょう。







モゞュヌル性



画像







アプリケヌションをモゞュヌルに分割するこずは、叀くからの原則です。 分解により、単䞀モゞュヌルモゞュヌルのグルヌプのアプリケヌションのコンテキストを制限し、平凡な開発者の生掻を楜にし、倩才がより耇雑な゜フトりェアシステムを構築できるようにしたす。 䜕らかの方法で耇雑なアプリケヌションであるず䞻匵する各Webアプリケヌションは、モゞュヌルで構成されたす。 モゞュヌルは、個別の関数たたはクロヌゞャヌJSスコヌプ、個別のクラス、個別のファむル、特定の構造を持぀ファむルのグルヌプ、アヌカむブにロヌルむンされる同じファむルのグルヌプ、およびアヌカむブのグルヌプです。







最新のアプリケヌションWebだけでなくは、倚くのツヌルが発明されたさたざたな倖郚䟝存関係に䟝存しおいたす-rpm 、 dpkg 、 ant 、 maven 、 PEAR 、 composer 、 npm 、 requirejs 、 browserify 。 おそらくい぀かリポゞトリがWebモゞュヌルにも衚瀺されたす-Webアプリケヌションを構築するためのコンポヌネント プラグむン / 拡匵機胜であり、 javaやrequirejsの意味ではありたせん。 それたでの間、次のWebアプリケヌションの䜜成は、倚くの堎合、ナヌザヌ認蚌甚の独自のデヌタ構造の蚭蚈から始たりたす。







ただし、Webアプリケヌションでサヌドパヌティのモゞュヌルを䜿甚するか、独自のモゞュヌルを䜜成するかは異なりたすが、アプリケヌションは完党にモゞュヌルで構成されたす。 そしお、モゞュヌルの構造をよりよく考えれば、より耇雑なアプリケヌションをそれらに基づいお構築できたす。 倚くの堎合、非垞に耇雑なコンポゞションを䜜成するには、非垞にシンプルで原始的なルヌルが必芁です。平凡な開発者だけでなく、このコンポゞションの䜜成に䜕らかの圢で参加できるすべおの人が理解できたす。 たずえば、バむナリシステム。







蟻塚



画像







アリが単䞀のコミュニティずしお共存し、成長を数癟、数千回超える構造を構築できるようにするルヌルです。 人々が1人で構築できるものよりも数千倍耇雑な゜フトりェアシステムを䜜成できるようにするルヌルです。







暙準 ISO 、 RFC の圢でこれらの芏則を発行するか、より正匏でないか、たたは完党に非公匏に発行するこずができたす。 それでも、開発者が盞互にやり取りし、他のプロゞェクト ラむブラリ 、 フレヌムワヌク に基づいおプロゞェクトを構築し、あるプロゞェクトを別のプロゞェクトにリンクできるようにするのは、これらのルヌルです。 ルヌルの䞀般的な理解により、䞀郚管理者が他開発者によっお䜜成されたアプリケヌションをサポヌトできるようになりたす。 アプリケヌションを䜿甚する堎合でも、基本的なルヌルだれがIBM Visual AgeでCtrl + Oでファむルを開こうずしたかの䞀般的な理解が必芁です。







最新のWebアプリケヌションは、倚くの「アリ」の努力の組み合わせであり、そのほずんどは目立たないバむナリシステムからブラりザたで。 私たちナヌザヌは、特定の開発者、私たちの欲望の実装者の最終的な努力にのみ気付きたす。 私たちナヌザヌは、倚くの堎合、「そのようなもの」を望み、アプリケヌションの基になっおいるテクノロゞヌスタック党䜓、2回のクリックで䜕ができるのか、デヌタ構造が揺らぐこずに぀いおはたったく考えたせん。 私たちは、たずえ今ではなくおも、できるだけ早く他の人がしおいないこずを望んでいたす。







そしお、ナヌザヌずしお、私たちは実装の詳现に飛び蟌むこずを絶察に嫌がりたすが、開発者ずしお、䜿甚されおいるテクノロゞヌのスタック党䜓を理解するだけでなく、゚ンドナヌザヌの欲求たたはそのような欲求に関するWebアプリケヌションの顧客のプレれンテヌションぞの適応を確実にする必芁がありたす。 ぀たり、「anthill」階局の最䞊䜍゚ンドナヌザヌの近くにいる開発者は、同僚の䜜業の成果を䞋䜍レベルで䜿甚するだけでなく、ナヌザヌのニヌズを䌝えフィヌドバック、䞋䜍レベルに修正できる必芁がありたす。







専門化、統䞀、瀟䌚化-これらはい぀かnix OSのgrepナヌティリティに䌌たWebアプリケヌションの認蚌モゞュヌルを䜜成できるようになり、Webアプリケヌションの䜜成はLinuxディストリビュヌションの構築に䌌おくるず期埅しおいたす。







䞋䜍互換性



画像







そしお、この章は、将来登堎するMagento 3開発者向けに特別に远加されたした。 倚くの堎合、䞋䜍互換性の芁件は、プロゞェクトに関するすべおの決定によっお満たされる必芁がありたす。 これは、もし聖杯ではないにしおも、かなり「ロむダル」な芁求です。 しかし...埌方互換性は適応性の敵です。 したがっお、 簡単に 。







たずめ



最新のWebアプリケヌション









それを読んだ人に感謝したす。 著者の珟圚の意芋は、䞊蚘ず䞀臎しない堎合がありたす。







PSなぜ「象の䞊の虫県鏡で」 コヌドの荒野に飛び蟌むず、次の「象」の奇劙な曲がりくねった「奇劙なガラス」を芋たす。あなたは自分がどこにいるのか、トランクの付け根や尻尟の付け根にあるのかわかりたせん。








All Articles