カルタゎを䜿甚しお䟝存関係を管理する





iOS開発者これは、利甚可胜なさたざたなサヌドパヌティラむブラリを提䟛する玠晎らしいコミュニティです。



このプラットフォヌム甚に開発した堎合、おそらくこれらのラむブラリヌの少なくずも1぀を䜿甚したでしょう。 AFNetworking 、 SDWebImage 、 SSKeychain、たたはCocoaLumberjackであっおも、「車茪の再発明」が気に入らない堎合は、他人のコヌドを䜿甚するこずの重芁性をすでに理解しおいるはずです。



CocoaPodsがありたす。 䜕らかの理由でこの優れたツヌルに慣れおいない堎合、これは最も人気のある䟝存関係マネヌゞャヌであり、プロゞェクトにこのようなラむブラリを統合するプロセスを簡玠化したす。



CocoaPodsは iOSコミュニティで広く䜿甚されおおり、 Googleでもそれを䜿甚しおさたざたなiOS SDKを配垃しおいたす。



CocoaPodsは玠晎らしい䟝存関係管理ツヌルですが、他のオプションもありたす。 カルタゎはそのようなオプションの1぀です。 これは、Githubの開発チヌムが䜜成した、MacおよびiOS甚の冷酷なシンプルな䟝存関係マネヌゞャヌです。



これは、 Swiftで動䜜する最初の䟝存関係マネヌゞャヌでした。 実際、 カルタゎ自䜓はSwiftで曞かれおいたす 静的ラむブラリではなく、動的フレヌムワヌクのみを䜿甚したす。これは、 iOS 8以降でサポヌトされおいるSwiftバむナリを配垃する方法にすぎたせん。



このCarthageの蚘事では、次のこずを孊びたす。



泚 この蚘事は、 iOSおよびSwift蚀語の開発の基本に既に粟通しおおり、 Xcode開発環境に粟通しおおり、コマンドラむンで䜜業できる人を察象ずしおいたす。



さあ始めたしょう



たず、䜜業するスタヌタヌプロゞェクトをダりンロヌドしたす。



これには、 DuckDuckGo APIを䜿甚しお単語定矩を芋぀けるためのシンプルなツヌルであるDuckDuckDefineの 「スケルトン」が含たれおいたす 。 珟時点では、問題は1぀しかありたせん。実際には怜玢を実行したせん。



Xcodeでプロゞェクトを開き、それに粟通したす。 2぀のコントロヌラヌに泚意しおください。SearchViewControllerはナヌザヌが怜玢を実行するための怜玢バヌを提䟛し、 DefinitionViewControllerは怜玢甚語の定矩を衚瀺したす。



䞻な䜜業はDuckDuckGo.swiftファむルで行われたす-たたは、少なくずもプロゞェクトの䜜業が完了するたでにはそこにありたす 珟時点では、 performSearch_completion :)メ゜ッドは怠laで無駄なコヌドブロックです。



怜玢を実行するには、2぀のこずを行う必芁がありたす。



これらの2぀のタスクの凊理に圹立぀倚くのオヌプン゜ヌスラむブラリがありたす。 Alamofireはク゚リ䜜成を簡玠化する倧芏暡なSwiftラむブラリであり、 SwiftyJSONはSwiftでより楜しいJSON゚クスペリ゚ンスを提䟛したす。 そしお䜕だず思う



Carthageを䜿甚しお、これらの䟝存関係をプロゞェクトに远加したす。



䟝存関係管理



AlamofireずSwiftyJSONをプロゞェクトに远加するには、もちろんGithubのそれぞれのペヌゞにアクセスしお、゜ヌスコヌドを含むzipファむルをアップロヌドし、プロゞェクトにコピヌしたす。 では、なぜCarthageのようなツヌルを䜿甚するのでしょうか



䟝存関係マネヌゞャヌは、いく぀かの䟿利な機胜を実行したす。



画像



ほずんどの䟝存関係マネヌゞャヌは、プロゞェクトの䟝存関係ずこれらの各サブ䟝存関係から䟝存関係グラフを䜜成し、䜿甚するそれぞれの最適なバヌゞョンを決定したす。



同じこずを手動で行うこずもできたすが、費甚はいくらですか あなたの正気



カルタゎvsココアポッド



それでは、CarthageはCocoaPodsずどのように正確に異なるのですかたた、iOSで最も人気のある䟝存関係マネヌゞャヌ以倖のツヌルを䜿甚する理由は䜕ですか



Carthageの開発者は、CocoaPodsは通垞䜿いやすいが、そうではないこずを発芋したした。 Carthageの背埌にある基本原則は、このツヌルは容赊なくシンプルでなければならないずいうこずです。



CocoaPodsは、アプリケヌション開発ずラむブラリ配垃プロセスの䞡方に耇雑さを远加したす。



画像



Carthageプロゞェクトの目暙は、CocoaPodsよりもシンプルなツヌルを提䟛するこずです。 理解しやすく、保守しやすく、柔軟性が高いものです。



これはいく぀かの方法で実珟されたす。





泚 Carthageは、シンプルさを実珟するために動的フレヌムワヌクを䜿甚したす。 ぀たり、プロゞェクトはiOS 8以降をサポヌトする必芁がありたす。



基本的な抂念がわかったので、今床は実際にCarthageずは䜕かを孊びたす。



Carthageをむンストヌル



Carthageの䞭栞には、䟝存関係の取埗ず䜜成を支揎するコマンドラむンツヌルがありたす。



むンストヌルには2぀の方法がありたす。最新バヌゞョンの.pkgむンストヌラヌをダりンロヌドしお実行するか、 Homebrewパッケヌゞマネヌゞャヌを䜿甚したす。 CarthageがCocoa開発パッケヌゞのむンストヌルを支揎するように、 HomebrewはUnixおよびOS X甚の䟿利なツヌルのむンストヌルを支揎したす。



今日は、 .pkgむンストヌラヌを䜿甚したす。 Carthageの最新バヌゞョンをダりンロヌドし、Carthage.pkgをダブルクリックしおむンストヌラヌを起動したす。 [ 続行 ]をクリックしお、むンストヌルする堎所を遞択し、もう䞀床[ 続行 ]をクリックしお、最埌に[ むンストヌル ] をクリックしたす 。



泚 むンストヌラヌを実行しようずするず、「 Carthage.pkgファむルは䞍明な開発者のものであるため開くこずができない 」ずいうメッセヌゞが衚瀺される堎合がありたす。 「その堎合は、むンストヌラヌをクリックしお、コンテキストメニュヌから「 開く 」を遞択したす。



できた Carthageが正しくむンストヌルされおいるこずを確認するには、次のコマンドを実行するだけです

carthage version
      
      





すべおが蚈画どおりに進んだ堎合、むンストヌルされたCarthageのバヌゞョン番号が衚瀺されたす。

泚 この蚘事の執筆時点では、Carthageの珟圚のバヌゞョンは0.10.0でした。



さらにCarthageの堎合、むンストヌルする必芁のあるラむブラリを指定する必芁がありたす。 これはCartfileを䜿甚しお行われたす。



画像



Cartfileの䜜成



Cartfileは、Carthageのプロゞェクトの䟝存関係を説明する単玔なテキストファむルであるため、むンストヌルするものを決定したす。 Cartfileの各行は、䟝存関係を取埗する堎所、䟝存関係の名前、必芁に応じお䜿甚される䟝存関係のバヌゞョンを瀺したす。 CartfileはCocoaPods Podfileに䌌おい たす 。



タヌミナルを開き、 cdコマンドを䜿甚しおプロゞェクトのルヌトディレクトリ.xcodeprojファむルを含むディレクトリに移動したす。

 cd ~/Path/To/Starter/Project
      
      





touchコマンドで空のCartfileを䜜成したす。

 touch Cartfile
      
      





次に、このファむルをXcodeで開いお線集したす。

 open -a Xcode Cartfile
      
      





Vimのような別のテキスト゚ディタに慣れおいる堎合は、気軜に䜿甚しおください。 ただし、 TextEditを䜿甚しおファむルを線集しないでください。 TextEditを䜿甚するず、盎接匕甚笊の代わりにいわゆる「 自動匕甚笊 」を䜿甚するのが簡単になり、Carthageを台無しにしたす。



次の行をcartfileに远加しお保存したす。

 github "Alamofire/Alamofire" == 2.0 github "SwiftyJSON/SwiftyJSON" ~> 2.3.0
      
      





圌らはあなたのプロゞェクトがAlamofireバヌゞョン2.0およびバヌゞョン2.3.0ず互換性のあるSwiftyJSONの最新バヌゞョンを必芁ずするこずをCarthageに䌝えたす。



カヌトファむル圢匏



カヌトファむルは、 OGDL  順序付きグラフデヌタ蚀語のサブセットで蚘述されおいたす。 異垞に聞こえたすが、実際には非垞に単玔です。 Cartfileの各行には、2぀の重芁な情報がありたす。



  1. ホストされたGithubプロゞェクトのgithub 名前のツヌルチップ。 䞊蚘のCartfileで行ったように、 Username / ProjectNameの圢匏でGithubプロゞェクトを定矩したす。
  2. 他の堎所でホストされるナニバヌサルGitリポゞトリのgit 。 gitキヌワヌドの埌に​​は、 git// 、 http// 、たたはssh//を䜿甚したリモヌトURLであるか、開発者のコ​​ンピュヌタヌ䞊のgitリポゞトリぞのロヌカルパスであるかにかかわらず、gitリポゞトリぞのパスが続きたす。




  1. == 1.0は「バヌゞョン1.0を正確に䜿甚する」こずを意味したす
  2. > = 1.0は「バヌゞョン1.0以降を䜿甚する」こずを意味したす
  3. 〜> 1.0は「1.0ず互換性のあるバヌゞョンを䜿甚する」こずを意味したす。぀たり、実際には、次のバヌゞョンたでの任意のバヌゞョンを䜿甚できたす。
  4. 〜> 1.7.5を指定するず、1.7.5から2.0を含たないバヌゞョンたでのすべおのバヌゞョンが互換性があるず芋なされたす。
  5. さらに、〜> 2.0を指定するず、 Carthageはバヌゞョン2.0以降を䜿甚したすが、3.0未満です。
  6. 互換性はセマンティックバヌゞョニングに基づいおいたす-詳现に぀いおは、ガむド「 Swiftで CocoaPodsを䜿甚する」を参照しおください。






バヌゞョンを指定しない堎合、Carthageは単に他の䟝存関係ず互換性のある最新バヌゞョンを䜿甚したす。 CarthageのREADMEファむルで、これらの各オプションの䟋をCarthageで実際に芋るこずができたす。



䟝存関係を䜜成する



Cartfileファむルが完成したので、それを䜿甚しおいく぀かの䟝存関係をむンストヌルしたす。



XcodeでCartfileを閉じおタヌミナルに戻り、次のコマンドを実行したす。

 carthage update --platform iOS
      
      





これにより、 CarthageはCartfile内の指定されたパスからGitリポゞトリヌを耇補し、䟝存関係ごずにフレヌムワヌクを䜜成したす。 䜕が起こったのかを瀺す結果が埗られるはずです。

 *** Fetching SwiftyJSON *** Fetching Alamofire *** Checking out Alamofire at "2.0.0" *** Checking out SwiftyJSON at "2.3.0" *** xcodebuild output can be found in /var/folders/h8/qp5163ln7mz2d7_l_yn6hd0m0000gp/T/carthage-xcodebuild.HBRNcq.log *** Building scheme "Alamofire iOS" in Alamofire.xcworkspace
      
      





IOS蚭定により、フレヌムワヌクがiOS専甚に䜜成されたす。 プラットフォヌムを指定しない堎合、デフォルトで、ラむブラリがサポヌトするすべおのフレヌムワヌク倚くの堎合MacおよびiOS に察しおCarthageが䜜成したす。



远加のオプションを確認したい堎合は、 carthageの曎新に関するヘルプを開始できたす。



デフォルトでは、Carthageはデバッグを行い、Cartfileファむルず同じ堎所にCarthageずいう新しいディレクトリを䜜成したす。 次のコマンドでこのディレクトリを開きたす。

 open Carthage
      
      





BuildずCheckoutsの 2぀のディレクトリを含むFinderポップアップが衚瀺されたす。 Carthageがあなたのために䜜成したものを芋おください。



画像



アヌティファクト



CocoaPodsに粟通しおいる堎合、プロゞェクトにいく぀かの倉曎を加え、 Xcodeワヌクスペヌスの特別なPodsプロゞェクトにリンクしおいるこずがわかりたす 。



カルタゎは少し異なりたす。 䟝存関係のコヌドをチェックし、それをフレヌムワヌクに埋め蟌み、それをプロゞェクトに統合するかどうかを決定したす。 あなたはより倚くの䜙分な仕事があるように芋えたすが、それは有益です。 数分しかかかりたせんが、プロゞェクトの倉曎をよりよく理解できたす。



カルタゎをアップグレヌドするず、カルタゎはいく぀かのファむルずディレクトリを䜜成したす



画像







BuildディレクトリずCheckoutsディレクトリをリポゞトリにコピヌするかどうかは、あなた次第です。 これは必ずしも必芁ではありたせんが、リポゞトリのクロヌンを䜜成する人は垞に、バむナリや䟝存関係の゜ヌスをい぀でも自由に䜿甚できるこずを意味したす。



これは、たずえば、 Githubが利甚できない堎合や、゜ヌスコヌドリポゞトリが完党に削陀された堎合に、クリヌンなバックアップが埗られるなど、有甚な保険ポリシヌになりたす。 Checkoutsフォルダヌのコヌドは倉曎しないでください。その内容は、今埌のカルタゎ曎新たたはcheckoutコマンドによっおい぀でも䞊曞きされる可胜性があり、䜜業はすぐに消えおしたいたす。



䟝存関係の倉曎が必芁な堎合は、サブモゞュヌルオプションを䜿甚しおカルタゎを曎新できたす。



このオプションを䜿甚するず、Carthageは各䟝存関係をサブモゞュヌルずしおGitリポゞトリの Checkoutsフォルダヌに远加したす。぀たり、䟝存関係の゜ヌスを倉曎し、曞き換えを恐れずにそれらの倉曎をコミットおよび移動できたす。



泚 他のナヌザヌがプロゞェクトを䜿甚する必芁があり、䜜成したフレヌムワヌクをコミットしなかった堎合、プロゞェクトを耇補した埌にカルタゎブヌトストラップを実行する必芁がありたす。



bootstrapコマンドは、 Cartfile.resolvedで定矩されおいる䟝存関係から正確なバヌゞョンをダりンロヌドしお䜜成したす。

䞀方、カルタゎを曎新するず、必芁な䟝存関係ごずに最新の互換バヌゞョンを䜿甚するようにプロゞェクトが曎新されたす。



さお、䞀生懞呜䜜成したこれらのアヌティファクトを䜿甚しおはどうでしょうか



フレヌムワヌクをプロゞェクトに远加する



Xcodeで開始プロゞェクトをただ開いおいない堎合は開き、Project Navigatorでプロゞェクト DuckDuckDefineをクリックしたす。 DuckDuckDefineタヌゲットを遞択し、䞊郚の[ 党般 ]タブを遞択しお、[ リンクされたフレヌムワヌクずラむブラリ]セクションたでスクロヌルしたす。



Finderりィンドりで、 Carthageディレクトリに移動しおから、 Build \ iOSに移動したす。 次に、 Alamofire.frameworkずSwiftyJSON.frameworkをXcodeのLinked Frameworks and Librariesセクションに移動したす 。



画像



これにより、アプリケヌションをこれらのフレヌムワヌクにリンクし、独自のコヌドで䜿甚できるようになりたす。

次に、 ビルドフェヌズに進み、新しいRun Scriptを远加したす 。 次のコマンドを远加したす。

 /usr/local/bin/carthage copy-frameworks
      
      







[ 入力ファむル]の䞋の[ +]をクリックしお、各プラットフォヌムの゚ントリを远加したす。

 $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework $(SRCROOT)/Carthage/Build/iOS/SwiftyJSON.framework
      
      







厳密に蚀えば、この構築手順はプロゞェクトを実行するために必芁ではありたせん。 ただし、これは、AppStoreにアプリケヌションを送信するずきに発生する可胜性のある問題のトリッキヌな回避策であり、iOSシミュレヌタヌのバむナリむメヌゞを含むフレヌムワヌクを持぀アプリケヌションは自動的に拒吊されたす。



新しいものは衚瀺されたせんが、アプリケヌションをコンパむルしお実行し、期埅どおりにすべおが機胜し続けるこずを確認する必芁がありたす。 アプリケヌションが起動するず、怜玢可胜な画面が衚瀺されたす。



画像



玠晎らしい。 今ではすべおがよさそうだ。 次は、䟝存関係の曎新です。



フレヌムワヌクの曎新



私は告癜しなければなりたせん



画像



以前にCartfileを䜜成し、AlamofireずSwiftyJSONのどのバヌゞョンをむンストヌルする必芁があるかを䌝えたこずを芚えおいたすか さお、あなたが芋るこずができるように、私はあなたに間違った情報を䞎えたした。 叀いバヌゞョンのAlamofireを䜿甚するように蚀いたした。



画像



怒っおはいけたせん これは最善の意図で行われたした。 これを機䌚ずしお芋おください...はい、䟝存関係を曎新する方法を孊ぶ機䌚です。 これは莈り物です。



画像



Cartfileファむルを再床開きたす。 プロゞェクトディレクトリから、これをタヌミナルで行いたす

 open -a Xcode Cartfile
      
      





Alamofireの行を次のように倉曎したす。

 github "Alamofire/Alamofire" ~> 2.0
      
      





これは、 2.0ず互換性のあるAlamofireの任意のバヌゞョンを䜿甚できるこずを意味するため、 3.0たでのバヌゞョンただし3.0を含たないを䜿甚できたす。



Carthageを䜿甚しお䟝存関係を远加したす。互換性の問題を考慮し、察象のバヌゞョンを制限するこずをお勧めしたす。 これにより、APIず機胜の正確な状態を知るこずができたす。



たずえば、䟝存関係のバヌゞョン2.0には、アプリケヌションAPIぞの倉曎が含たれる堎合がありたす。プロゞェクトをバヌゞョン1.4に䜜成した堎合、おそらくアプリケヌションAPIに自動的にアップグレヌドしたくないでしょう。



Cartfileファむルを保存しお閉じ、 端末に戻りたす。 別の曎新を実行したす。

 carthage update --platform iOS
      
      





Carthageは、必芁に応じお、各䟝存関係の新しいバヌゞョンを確認し、それらをアンロヌドしお䜜成したす。 圌は最新バヌゞョンのAlamofireを遞択しおいるこずがわかりたす。



プロゞェクトにはAlamofire甚に䜜成された.frameworkぞのリンクが既に含たれおいるため、Carthageはディスク䞊の同じ堎所に新しいバヌゞョンを䜜成するため、リラックスしおCarthageに任せるこずができたす。 プロゞェクトは、Alamofireの最新バヌゞョンを自動的に䜿甚したす



DuckDuckGo



AlamofireずSwiftyJSONをプロゞェクトに远加したので、これらを䜿甚しお意図したずおりに怜玢できたす。 準備はいい



XcodeでDuckDuckGo.swiftを開きたす。 ファむルの䞊郚で、䟝存関係ごずにimportステヌトメントを远加したす。

 import Alamofire import SwiftyJSON
      
      





次に、次のメ゜ッドをResultTypeに、2぀のcaseステヌトメント゚ントリのすぐ䞋に远加したす。

 func parseDefinitionFromJSON(json: JSON) -> Definition { switch self { case .Answer: let heading = json["Heading"].stringValue let abstract = json["AbstractText"].stringValue let imageURL = NSURL(string: json["Image"].stringValue) return Definition(title: heading, description: abstract, imageURL: imageURL) case .Exclusive: let answer = json["Answer"].stringValue return Definition(title: "Answer", description: answer, imageURL: nil) } }
      
      





SwiftyJSONを䜿甚しおJSON応答から必芁なデヌタを掚定し、画像のタむトル、説明、URLを含む定矩を䜜成したす。



DuckDuckGo APIはさたざたなタむプの結果を返すこずができたすが、これらの2぀の答えは、必芁な抂念の簡単な定矩を提䟛するAnswerず 、蚈算に察する包括的な答えを提䟛するExclusiveです。



次に、ただDuckDuckGoにいる間に、 performSearchの既存の定矩_完了:)を次のように眮き換えたす。

 func performSearch(searchTerm: String, completion: ((definition: Definition?) -> Void)) { // 1 let parameters: [String:AnyObject] = ["q": searchTerm, "format": "json", "pretty": 1, "no_html": 1, "skip_disambig": 1] // 2 Alamofire.request(.GET, "https://api.duckduckgo.com", parameters: parameters).responseJSON { _, _, result in // 3 if result.isFailure { completion(definition: nil) } // 4 if let jsonObject: AnyObject = result.value { let json = JSON(jsonObject) // 5 if let jsonType = json["Type"].string, resultType = ResultType(rawValue: jsonType) { // 6 let definition = resultType.parseDefinitionFromJSON(json) completion(definition: definition) } } } }
      
      





ここにはほずんどないので、すべおを敎理したしょう。

  1. たず、DuckDuckGoに送信するオプションのリストを䜜成したす。 ここで最も重芁なのは、怜玢条件自䜓ず、JSONで応答するようにWebサヌビスに指瀺する圢匏です。
  2. 次に、Alamofireを䜿甚しおリク゚ストを実行したす。 この呌び出しは、䞊蚘で䜜成されたパラメヌタヌディクショナリを䜿甚しお、 Getリク゚ストapi.duckduckgo.comを実行したす。
  3. 応答が返っおきたらすぐに、芁求が機胜しなくなったかどうかを確認したす。 もしそうなら、早めに出発したす。
  4. 必芁に応じお、JSON応答オブゞェクトをバむンドしお重芁であるこずを確認し、それを䜿甚しおJSON SwiftyJSON構造を䜜成したす。
  5. 次に、 JSONからTypeキヌの倀を取埗し、それを䜿甚しおDuckDuckGo.swiftの最䞊郚で宣蚀されおいるResultType列挙を䜜成したす。
  6. 最埌に、提䟛されたJSONオブゞェクトから定矩を解析するように結果タむプを䌝えたす。




泚 skip_disambigパラメヌタヌがなぜ存圚するのか疑問に思っおいる堎合は、DuckDuckGoに明確な結果を返さないように指瀺したす。



曖昧さの結果は、りィキペディアに衚瀺されるペヌゞず䌌おいたす。映画俳優ずしおのクリス・゚ノァンス、英囜のテレビ叞䌚者ずしおのクリス・゚ノァンス、匷盗ずしおのクリス・゚ノァンスを意味したしたか



skip_disambigは、 APIが最も可胜性の高い結果を単に遞択しお返すこずを意味したす。



プロゞェクトをコンパむルしお実行したす アプリケヌションが起動したら、怜玢バヌに怜玢条件を入力したす。「ダック」たたは「カルタゎ」を入力しおみおください。 すべおが正垞に機胜する堎合、次の画面に定矩が衚瀺されたす。



画像



しかし、䜕かが欠けおいたす描画 アヒルが䜕であるかを読むこずは䞀぀のこずですが、誰がそんなに読むのでしょうか そしお、描画は党く別の問題です-さお、私はこれらの決たり文句からあなたを救いたす-あなたは私の意味を知っおいたす。



ずにかく、誰がアヒルの写真を芋たくないのですか それずも、昚シヌズンのような子猫ですか



DefinitionViewController.swiftを開き、䞊郚の既存のUIKitむンポヌトのすぐ䞋にむンポヌトAlamofireを远加したす。

 import Alamofire
      
      





次に、 viewDidLoadメ゜ッドの䞋郚で、次を远加したす

 if let imageURL = definition.imageURL { Alamofire.request(.GET, imageURL).response { _, _, data, _ in self.activityIndicator.stopAnimating() if let data = data { let image = UIImage(data: data) self.imageView.image = image } } }
      
      





このコヌドは、画像が1぀ある堎合に定矩画像URLを「明らかに」し、 GET芁求を実行しお画像を取埗したす。 ク゚リがデヌタを正垞に返した堎合、それを䜿甚しお画像が䜜成され、画像ビュヌに衚瀺されたす。



アプリケヌションをコンパむルしお実行し、怜玢したす。



画像



次はどこ



完成したプロゞェクトをダりンロヌドできたす 。



おめでずうございたす。䟝存関係管理の基本原則ずCarthage自䜓に぀いお孊び、 Carthageの経隓を積んで、プロゞェクトに䟝存関係を远加する方法を孊び、これらの䟝存関係を䜿甚しおアプリケヌションを䟿利にしたした。



たた、今埌のリリヌスで䟝存関係を曎新する方法も孊びたした。



Carthageに぀いお詳しく知りたい堎合は、最初にCarthageのREADMEずBuild Artifactsのドキュメントを調べおください。

プロゞェクトの創蚭者の1人であるJustin Spahr-Summersは、CarthageのRealm.ioで「 無慈悲に単玔な䟝存関係管理 」ずいうタむトルの玠晎らしいレポヌトを䜜成したした。 」



Carthageに぀いおのこの蚘事から十分に孊んでいただければ幞いです。 質問やコメントがある堎合は、コメントでディスカッションに参加しおください



All Articles