manacaでiOSアプリをカスタムビルドする流れをシーケンス図に起こした


monacaを使って、iOSアプリをカスタムビルド（自分の端末でのみ動くアプリのビルド）を行ったのですが、
monaca側でやれることと、Apple developer Programでやれる事の区切りや、CSR・証明書・プロファイル・BundleIdなどのよくわからない登場ファイルたちがどこで作られどう使われるのかが、全くわからなくなるので、とりあえずシーケンス図にして流れを書き起こしました。
完全自分のためです。

シーケンス図は、manacaでの開発が終わり、Appleに開発者の登録も行っている状態から始まります。
なぜなら、私がその状態でこれを作ろうと思ったからです。

![iosAuth.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/98758/3225b892-ece4-e0ce-53b3-f9b850966771.png)

以上です。
自分的には役に立ったので、（一度やり直した）きっと誰かの役に立つと信じてます。
信じるって大事。

一応このUMLはplantUMLを使ったのでソース載せておきます。

```
@startuml iOS
actor Developer

activate Developer
    Developer -> webBrowser: アプリタイトルとAppIdの設定
        activate webBrowser
        webBrowser -> Monaca: iOSアプリ設定 アクセス
        activate Monaca
        deactivate Monaca
        webBrowser -> Monaca: アプリ名とAppIdの設定   
        activate Monaca
        deactivate Monaca
    deactivate webBrowser

    Developer -> webBrowser: 秘密鍵とCSRの生成
        activate webBrowser
        webBrowser -> Monaca: iOSビルド設定 アクセス
        activate Monaca
        deactivate Monaca
        webBrowser -> Monaca: 秘密鍵とCSRの生成   
        activate Monaca
        webBrowser <-- Monaca: ios.certSigningRequest(CSR)をDL
        deactivate Monaca
        Developer <-- webBrowser: ios.certSigningRequest(CSR)をDL
    deactivate webBrowser


    Developer -> webBrowser: 証明書の生成
        activate webBrowser 
        webBrowser -> Apple_developer_Program: Certificates, Identifiers & Profiles/Certificates アクセス
        activate Apple_developer_Program
        deactivate Apple_developer_Program
        webBrowser -> Apple_developer_Program: iOS App Developmentを作成 CSRをUP
        activate Apple_developer_Program
        webBrowser <-- Apple_developer_Program: ios_development.cer(証明書)をDL
        deactivate Apple_developer_Program
        Developer <-- webBrowser: ios_development.cer(証明書)をDL
    deactivate webBrowser

    Developer -> webBrowser: AppIdの生成
        activate webBrowser 
        webBrowser -> Apple_developer_Program: Certificates, Identifiers & Profiles/Identifiers アクセス
        activate Apple_developer_Program
        deactivate Apple_developer_Program

        webBrowser -> Apple_developer_Program: "App Id"を作成
        activate Apple_developer_Program
        webBrowser <-- Apple_developer_Program: "App Id Prefix" "Bundle Id"を確認
        deactivate Apple_developer_Program
        Developer <-- webBrowser: "App Id Prefix" "Bundle Id"を確認
    deactivate webBrowser

    Developer -> webBrowser: 端末登録
        activate webBrowser 
        webBrowser -> Apple_developer_Program: Certificates, Identifiers & Profiles/Device アクセス
        activate Apple_developer_Program
        deactivate Apple_developer_Program

        webBrowser -> Apple_developer_Program: 端末情報の登録
        activate Apple_developer_Program
        deactivate Apple_developer_Program
    deactivate webBrowser

    Developer -> webBrowser: プロファイルの生成
        activate webBrowser
        webBrowser -> Apple_developer_Program: Certificates, Identifiers & Profiles/Profiles アクセス
        activate Apple_developer_Program
        deactivate Apple_developer_Program

        webBrowser -> Apple_developer_Program: "App Id"の登録
        activate Apple_developer_Program
        webBrowser <-- Apple_developer_Program: プロファイル(○○○.mobileprovision)をDL
        deactivate Apple_developer_Program
        Developer <-- webBrowser: プロファイル(○○○.mobileprovision)をDL
    deactivate webBrowser

    Developer -> webBrowser: 証明書とプロファイルを登録
    activate webBrowser
        webBrowser -> Monaca: iOSビルド設定へアクセス
        activate Monaca
        deactivate Monaca
        webBrowser -> Monaca: 証明書とプロファイルを登録する
        activate Monaca
        deactivate Monaca        
    deactivate webBrowser

    Developer -> webBrowser: ビルド
    activate webBrowser
        webBrowser -> Monaca: iOSアプリのビルドへアクセス
        activate Monaca
        deactivate Monaca        
        webBrowser -> Monaca: プロファイルを選択
        activate Monaca
        deactivate Monaca        
        webBrowser -> Monaca: ビルド実行
        activate Monaca
        deactivate Monaca
    deactivate webBrowser

deactivate Developer
@enduml
```