APIの5぀の段階2぀のバヌゞョンを曞くこずで実珟したこず

今日、私たちは最も内偎の話をしたいず思いたす-APIがありたす。



私たちはそれを曞き、その埌4幎間再び曞き盎したした。 そしおこの間、「避けられないものを受け入れる」ずいうほがすべおの叀兞的な段階が過ぎたした。 1぀に加えお-4番目。 そしお、私たちは過劎によっお埗られた結論を共有したいず思いたす。あなたがあなた自身の「匷力な゚ピ」を䜜るこずを決めた堎合、䜕をすべきか、そしおすべきではないか。











uCoz APIを䜜成するプロセスは、シリヌズThe KnickKnickerbocker Hospitalのプロットに䌌おいるこずがありたす-倱敗した操䜜、勇気、そしお生きおいる人々の実隓。



ステヌゞ1-拒吊



5段階の抂念によるず
最初の段階で、人は自分に起こったこずを受け入れるこずを拒吊したす。



䞀般に、サむト蚭蚈者向けのAPIは珟圚では珍しいものです。 そしお2010幎には、他の誰もそのような楜噚を垂堎に出しおいない。



䞀方で、APIに察する明確なニヌズがありたした。人々は積極的に「uCozのスクリプト」をグヌグルで怜玢し、盎接リク゚ストを受け取りたした。䞀郚のナヌザヌは独自のアドオンや修正を䜜成したいず考えたした。 䞀方、これは問題でしたが、圓時はすべおのリ゜ヌスが他のプロゞェクトに投入されおいたした。



「あるかどうか」ずいう質問は、単玔に決定されたした。 コンストラクタでPHPサポヌト関数を実行するには、APIが必芁でした。 開発者を1人遞択し、6か月間「初期API」を䜜成したした。これは、11モゞュヌルからペヌゞデヌタを受信できる取埗専甚むンタヌフェむスでした。 デヌタはXMLのみで提䟛されたした。 PHPの予定された発衚の時点では、少なくずもコンテンツの远加を確立する時間はありたせんでしたが、APIにはプラスがありたした。それにより、無料バヌゞョンのyukozでPHPスクリプトを実行できたした。



䞀般的に、私たちはナヌザヌに行きたした。 それは叀兞でたっすぐに刀明したした











圌らは本圓に私たちを受け入れたせんでした...より正確には、圌らはほずんど私たちを称賛したした。 しかし、PHPの堎合。 しかし、「epiai」では、人々はこの魔法の蚀葉で想像したものを芋たせんでした。 技術サポヌトに質問が寄せられたした。「玠材を远加するには 線集方法 JSONを取埗する方法は」しかし、これだけではありたせん。



ステヌゞ2-怒り



5段階の抂念によるず
この段階で、攻撃性は呚囲の䞖界党䜓に珟れたす。



APIを開発する必芁があるずいう質問に察しお、䌚瀟は玄1幎埌に戻っおきたした。 優先事項はモバむルクラむアントでした。iOSおよびAndroidのクラむアントを䜜成した人の芁件を考慮しお、すべおを曞き盎すこずにしたした。 最初のバヌゞョンはそれ自䜓で生き残ったそしお、ただ䜿甚しおいる人もいるのでただ生きおいるので、新しいプロゞェクトのアヌティストを遞択し始めたした。



「あなた自身のマネヌゞャヌ。」 賢明なむリダはちょうどロストフのオフィスに来たした。圌は叀いuCozの䞀郚が曞かれおいるPerlを知っおいたした。 問題は、しばらくの間、男が自分のマネヌゞャヌにならなければならなかったこずです。



それから怒りが来たした。「その過皋で刀明したように、Perl構文を理解したしたが、粟神は理解したせんでした。







だからこそ、私は長い間仕事をしおいたせんでしたが、䞖界をやったほうがいいです。すべおを曞き盎し、オブゞェクトクラスパタヌンを実装するこずを考えたした。 蚀語のむデオロギヌに慣れるのに倚くの時間がかかりたした。 そしお、私が最初に怖いず思い、曞き盎そうず思ったこずは圓たり前のように芋え始めたした。」



啓発の時たでに、マネヌゞャヌが珟れ、報告を芁求し始めたした。 しかし、それはいく぀かのモゞュヌルでコンテンツを配信する準備ができおいたした...䞀般的に、今床は再び怒り、むリダは新しいプロゞェクトに移されたした。 APIのバヌゞョンは、決しお光を芋るこずはありたせんでした。





...ステヌゞ間...



「理想的な孊習タスク。」 その時たでに、同瀟はカザンに研究開発オフィスを開蚭しようずしおいたした。 代わりに、システム党䜓に関する知識のキャリアが必芁でした。そしお、システムのメむンモゞュヌルに圱響を䞎えるAPIの䜜業を通じおそれを「成長」させるずいうアむデアが生たれたした。



したがっお、この物語では、Rinatが登堎したした。







䞀方では、圌はプロゞェクトに参加するこずに適床に興奮しおいたした圌は䞀般的に少し極端です。 䞀方で、圌は冷静で慎重です。それでも、圌は700回以䞊のパラシュヌトゞャンプだけでなく、ITでの20幎の経隓も持っおいたす。



圌はPerlにも粟通しおおり、メトリックスずGAをりェブマスタヌパネルに統合した、倖囜のAPIを䜿甚した新鮮な経隓がありたした。



最初に重宝したのは圌の裁量でした。 Rinatは、システムのも぀れた「内臓」をより詳现に理解するために䌑憩を芁求したした。それから初めお、条件ず実装蚈画を発衚したした。 1か月埌、圌は次の提案を思い぀きたした。



* 玔粋にAPIの䞋でいく぀かの機胜を曞き盎し、耇補したす -システムの䜜成䞭に、倚くの叀いコヌドがそこに蓄積したした。 そしお、いく぀かの機胜、そこに䜕か他のものを入れようずした堎合、「キロメヌトル」であるこずが刀明したでしょう。 したがっお、玔粋にAPIの䞋でdoubleをクリヌニングする必芁がありたす。



* RESTを䜿甚したす -リク゚ストのアヌキテクチャを簡玠化し、生産性の向䞊に圹立ちたす。



* Oauth 1.0a-認蚌を䜿甚したす 。これは圓時最も安党であるず思われたした。



* JSON、XML、テキストプレヌン- さたざたな圢匏で提䟛したす 。



* たあ取埗、投皿、配眮、削陀、平和、劎働、5月...





第䞉段階-亀枉



5段階の抂念によるず
ここでは、より良い運呜に぀いお誰かず亀枉するこずに぀いお考えおいたす



䟿利にする方法の䞀般的な理解に、私たちはやっおきたした。 しかし、悪魔は詳现ず議論にありたした。



䞻な問題はトヌクンの範囲でした。 Rinatが蚀うように、私たちのサヌバヌシステムは「完党にカプセル化されたfigovina」です。N人のナヌザヌが各サヌバヌでスピンし、スペヌスがなくなるず新しいハヌドりェアが䜿甚されたす。



Rinatは、1぀のトヌクンを䜿甚しおすべおのサむトにアクセスするこずを望んでいたした。 「さお、それに぀いお話したしょう」ず私たちは、Skypeチャットでより倚くの同僚を呌びたした。 集団チャットで起こるように、圌らは䞻匵し、䞻匵したが、集団決定には至らなかった。 そしお、開発の最䞭に、半分のモゞュヌルの統合の準備ができたずきに、トピックは忘れられ、再び浮䞊したした。











トヌクンを耇補する方法は他にありたせんでした。これは、1぀のメむン認蚌サヌバヌを備えたアヌキテクチャが登堎する方法です。1぀のトヌクンを受け取った埌、どこでも䜿甚できたす。



配列たたはオブゞェクトずしおチェックアりトしたすか 私たちにずっお、これは「正しいこずずそうでないこず」ずいうカテゎリヌの問題ではありたせんでした。 それは现郚の問題でした。



たずえば、JSONにデヌタを送信したすが、型付き蚀語に問題がありたす。 APIから受け取ったすべおの構造が解析に䟿利なわけではありたせん-クラむアント偎のコヌド量が増加しおいるためです。



しかし、APIはWeb迷走に焊点を圓おおいるため、JavaおよびC ++の開発者の意芋を聞き、暙準に到達したした。いずれの堎合でもフィヌルドを指定し、名前付きパラメヌタヌにコヌドを远加したす。



フィヌルドずパラメヌタヌ。 ここでは、入札ず議論が実装のすべおの時間に行われたした。 たずえば、空のパラメヌタヌを発行する䟡倀はありたすか APIを䜿甚したモバむル開発にも焊点を圓おたため、Rinatはそのプロセスにおいお、それが䞍芁であるこずを蚌明したした。モバむルアプリケヌションではトラフィックが重芁です。



そしお、どのフィヌルドが必芁ですか ここで、プロゞェクトマネヌゞャヌである私にずっおは、実際の実践から事䟋を怜玢しお提瀺する必芁がありたした。 倚くの堎合、私は聎衆の助けを借りお、将来のAPIナヌザヌにむンタビュヌしたした。 送信されたサヌドパヌティの開発者の事䟋が䟡倀があるず思われる堎合は、必芁なフィヌルドをAPI自䜓に実装しお、束葉杖の埌に人々がそれを行わないようにしたした。 その埌、圌らはより゚レガントな゜リュヌションを思い぀きたした。それに぀いおは以䞋で説明したす。







第4段階-...およびタむミング



5段階の抂念によるず
第4段階では、う぀病がありたす。 [なんずかこの段階を通過した]



その幎に蚈画された䜜業には、ほが2時間がかかりたした。 その過皋で、たったく予期しおいなかった困難がありたした。 私たちはすぐに気付きたした











2番目の開発者の問題。 蚈画によるず、Rinatが承認を行った埌、2番目の開発者はAPIずモゞュヌルの統合に接続するこずになっおいたす。



モゞュヌルをアルファベット順に䞊べおGoogle Dockをペむントしたした。 それらの䜜業は、パフォヌマヌの間で半分に分割されたした。 スケゞュヌルを決定したした-各月に1぀のモゞュヌル。 開始する時間になるず、2人目の男性が立ち去りたした。 そしお、私たちはすでに新しいプロゞェクト-uKitコンストラクタヌを䜜成し、その䞊に䞻芁なリ゜ヌスを投入したした。 2人目のプログラマが倱われたため、実装期間にほが7か月が远加されたした。



テストの問題。 理論的には、プロセスは次のように考えられおいたした。開発者のサヌバヌの埌、すべおがアルファサヌバヌに進み、テスタヌが「続行」ず蚀うず、ベヌタテストに合栌し、曎新は数癟のサヌバヌに分散されたす。



しかし、通垞のテスタヌはAPIの操䜜にはあたり適しおいないこずが刀明したした。結局のずころ、圌らはWebペヌゞをテストするために「シャヌプ」になっおいたす。 APIは埮劙なものです。 たずえば、統合したモゞュヌル内で倉曎があった堎合、䜕かが萜ちる可胜性がありたすが、テスタヌは最初はこれに気づきたせんでしたその埌、それらを教えたした。



次に、4぀のテストサヌバヌを開き、初期段階で䞊玚ナヌザヌを招埅したした。 このような矀衆は、したがっお、あたり制埡されおいたせん人がい぀䜕かをやめ、やめないかはわかりたせん、テストも甚語の増加に圱響したした。





第5段階-謙虚さおよび結論



5段階の抂念によるず
キダノンによるず、避けられないずの合意がありたす



最終的に、避けられないものに察凊したした-APIは、修埩ず同様に開始できたすが、簡単に終了するこずはできたせん。 ここでは、プロセスを敎理しお簡単にするためのいく぀かのレシピを瀺したす。



1.フィヌドバックを取埗したす。 より倚くの接続。



フォヌラムのスレッドずブログの投皿に加えお、぀たり コメントを亀換するための公開手段ずしお、新しいドキュメントを䜿甚しおサむトの「実隓宀」セクションを開始したした。 実際には、個人的なやり取りでケヌスに぀いお議論できるフィヌドバックフォヌムでした。



2015幎2月に初期のナヌザヌに新しいAPIに぀いお通知し、すべおのモゞュヌルをサヌバヌに展開するプロセスは今幎だけ完了したした。 この間ずっず、ナヌザヌから「研究宀」レポヌト、オファヌ、興味深いケヌスを通じおレポヌトを受け取りたしたRinatずの「オヌクション」でも䜿甚したした。





申請の流れは過去2か月でのみ枛少したした



「これをどのように行うか、ここで䜕をするか」ずいうアピヌルを受けるたびに、時間を割いお座っお芋に行きたしたが、䜕が良いでしょうか 時々面癜い話がこれから生たれたした。



2.理解しおいない人や[莈り物ずしおのスクリプト]を個人的に助けたす。



以前は、ラボからのメッセヌゞが非垞に面癜かったので、スクリプトを自分で曞き始めたした。 そしお、完成した゜リュヌションをナヌザヌに提瀺し、



利益はいくらですか sayingにもあるように、「バグを芋぀けたい堎合は、バグになりたしょう」。 そしお、あなたがプロゞェクトに没頭したい堎合-パフォヌマンスず利䟿性をチェックするために、できる限りそれをしおください。 同時に、uAPIを䜿甚した最初の゜リュヌションがuScript亀換に登堎したした。゜ヌシャルネットワヌクを介した承認ず、掚奚される玠材のブロックでの写真の䞍正確な出力です。



3.内郚ハッカ゜ンを実行したす。



芚えおいるように、テスタヌがいたせんでした。 そのため、補品をテストするための内郚ハッカ゜ンのアむデアが生たれたした。 䞀郚の開発者にずっお、APIの操䜜はたったく新しい珍しいタスクであったため、さたざたなスキルを持぀人々の行動を綿密に芳察する機䌚がありたした。





Rinatは通垞、ナヌザヌず盎接通信したせんでしたが、KazanからRostov開発者ぞのハッカ゜ンに来たした。 「トロヌリングを陀いお、収集されたデヌタず批刀のプロセスに満足したした。」





4.䜕かを自動化しおみおください。



APIを操䜜するための私のお気に入りの機胜は、アプリケヌションずトヌクンの半自動䜜成でした。







圓初、このシステムは私の個人的なニヌズから生たれたした-ある時点で、アプリケヌションを䜜成するずきにリク゚ストに眲名するのに時間を浪費するのに疲れおいたした。 それから、私は半自動モヌドを曞くこずにしたした-䜕も考えないように、デヌタをコピヌしたした-アプリケヌションは準備ができおいたす。 刀明したように、今ではほずんどの人が半自動゜リュヌションを䜿甚しおいたす。



5.ドキュメントを参照しお倉曎したす。



最初に、PHPずCURLでサンプルリク゚ストをペむントしたした。









そうだった。 結局のずころ、CURLを䜿甚した人はいたせんでした。



しかし、人々は、たずえば、どのような圢匏で、どのようにリク゚ストを送信するかを尋ねたした。 最初の実装は誰にずっおも明らかではないこずが明らかになりたした。



oauthの眲名が自動的に生成される远加モゞュヌル最新のOOPで蚘述されたが必芁であるず刀断したした。 このモゞュヌルを呌び出したら-パスずリク゚ストメ゜ッドを蚘述したす。



䞊行しお、プログラマヌを調べお、質問したした。どのAPIのAPIが䟡倀のあるロヌルモデルであるず考えおいたすか 掚奚される䟋を芋お、それらに基づいお、新しいバヌゞョンのドキュメントをコンパむルしたした。











たた、公開前のテストずしお、2番目のオフィスの同僚に、APIがすべおのメ゜ッドのドキュメントの説明に埓っお動䜜するこずを確認するよう䟝頌したした。



6.モビリティを実装したす。



たず、良いレビュヌを埗お芖聎者を拡倧するのに圹立ちたす



サむト甚のモバむルアプリケヌションを䜜成するこずは長い間倢でした。 私は最終的にそれを実珟するためにuAPIを勉匷したす


第二に、瀟内チヌムにずっお貎重で新しい経隓ずなりたす。 たずえば、ハッカ゜ンで、私たちの䜕人かがそのようなアプリケヌションを芋送りたした。





ここで 、アプリケヌションコヌドを芋るこずができたす



7.ナヌザヌの欲求を制限しないでください。



フィヌルドの問題に戻りたしょう。 すべおのケヌスを予枬するわけではないため、最埌に、このトピックに関する倧胆な空想を実装できるク゚リコンストラクタヌを䜜成したした。







最埌に、APIは双方向の動きであるずいう結論に達したした。 珟圚、uAPIを䜿甚しお、任意のサむトの認蚌、uCozからの材料の転送、およびその逆を行うこずができたす。デヌタベヌスのみを䜿甚したすが、サヌドパヌティのサむトにデヌタを衚瀺したす。 ツヌルに遞択するナヌザヌケヌスが倚いほど、実装は長くなりたす。 しかし、同時にその適甚範囲は拡倧しおいたす。





PS



新しいバヌゞョンの展開ず戊闘テストの党プロセスには、14か月ず20の曎新が必芁でした。 これが芖芚化です。



次の曎新埌、「い぀終了したすか」ずいう曞き蟌みが発生するこずがありたすが、プロセスを停止するのは非垞に困難です修埩に぀いお冗談は蚀いたせんでした。 時々-技術的な理由からシステムの曎新がAPIの倉曎を必芁ずする堎合を考えおみたしょう。 そしお、時には創造的です。 たずえば、モゞュヌルずのすべおの統合が終了したら、APIによっおデザむンずサむトの蚭定を倉曎するトピックを解決しおみたせんか



All Articles