あと第一印象として、とてもとっつきやすい気がする。昨今のframeworkの第一歩目の険しさたるやいなや。Worldが全然Helloしてこない。Flutterはいとも簡単にWorldがHelloしてきた。emulatorで動いたのだ。あれ、これアプリ作れるじゃんってひとまず錯覚したぞ。すごいぞGoogle。ありがとうGoogle。これはまだ序盤も序盤で、山を登るにつれてどんどん難しくなっていくのかもしれない。富士山をちょろっと登っただけで、「あれ?富士山てこんなものなの?登頂なんて余裕じゃん。」って調子こいてたら、ベテラン登山家にボコボコにされるだろう。入山は本当に簡単だった。入山さえしてしまえば、とりあえず登ることはできる。途中で崖に落ちるかもしれないし、降りたくなるかもしれないけど。かの有名な登山家は言った。「そこに、山があるからです。「仕事があるからです。仕事で必要になったので触り始めたのです。23:30Flutter触り始めTweet広告を非表示にするもっと読むコメントを書く2016-07-26iOSアプリ開発の証明書周りがよくわかっていないので自分なりに整理してみたiOSiOSアプリの証明書周り、非常にわかりにくい。開発時に毎回どうだったっけ?って忘れてしまうので、自分なりに整理してみました。証明書周りの構成は4つに分類されています。端末プロビジョニングファイルdevelopmentとdistribution証明書やプロビジョニングファイルには、開発時に使用するdevelopmentと、リリース時に使用するdistributionの2つの種類があります。IDはアプリごとに発行するIDです。IDを合わせる必要があります。このIDに対して、そのアプリ上で使用するサービスを選択します。開発時にはdevelopment用の証明書を使用して、実機にインストールしたりします。配信用にipaファイルを作成する場合は、production用の証明書が必要です。この証明書を作る時に、キーチェーンを使って秘密鍵やらなにやらを用意する必要があります。証明書作成後、Appleの管理画面からは証明書自体はDownloadできますが、秘密鍵はDownloadできませんので、必ず無くさないようにする必要があります。※アプリ配信用の証明書の他にも、Push通知用の証明書など複数種類があります。Hoc版の際にインストール可能な端末を指定するために、端末を登録する必要があります。端末の登録には端末ごとに発行されているUDIDが必要です。端末は最大で100件まで登録が可能。端末を指定してDisableにすることは可能だが、削除することは基本的にできない。(100件登録してしまうと、新しい端末を登録できなくなってしまう。)1年に1度更新のタイミングで、端末を整理することができ、そのタイミングのみ端末の削除が可能になる。プロビジョニングファイルプロビジョニングファイルは、下記のデータにひも付き、アプリごとに発行します。端末プロビジョニングファイルがいろいろな情報を持っており、アプリをビルドする時にそのプロビジョニングファイルを指定してビルドさせます。プロビジョニングファイルだけでビルドできてしまうと、セキュリティ的によろしくないため、プロビジョニングファイルに紐付いている証明書を持っていなければビルドができない、という仕様です。IDが一致しないとビルドができません。持っている情報が変わればプロビジョニングファイルも変わる検証する端末が増えたりした時など、管理画面からプロビジョニングファイルの編集を行います。この結果、新しいプロビジョニングファイルには新しいデータが書き込まれているため、古いプロビジョニングファイルと交換する必要があります。管理画面で端末を追加したのにインストールできない、というケースがありますが、これはビルド時のプロビジョニングファイルが変わっていない可能性が高いです。Hoc版のプロビジョニングファイルを作成して指定する必要があります。ものすごいざっくりですが、概念をまとめてみました。19:49iOSアプリ開発の証明書周りがよくわかっていないので自分なりに整理してみたTweet広告を非表示にするもっと読むコメントを書く2016-06-01【vim】正規表現のマッチする範囲を指定して文字列置換をもっと簡単にするvim\zsと\zeを使えば、正規表現のマッチする範囲を指定できて、置換がとても楽になる。class="sample">abcdef</div>という文字列があって、divタグの中身だけ変えたい時。普通にやると、ちょっとめんどくさい正規表現を書かないと置換できません。%s/\(<div.*>\).\+\(<\/div>\)/\1REPLACE\2/だいぶごちゃごちゃしてます。これを、\zsと\zeを使えば、こうなります。%s/<div.*>\zs.\+\ze<\/div>/REPLACE/マッチする部分が、\zsから\zeで囲んだ部分だけになるので、()でグループ化して後方参照させる必要がなくなります。iOSswiftで角丸のViewを作るには、layerのcornerRadiusを設定すれば簡単にできますが、これだと4隅すべてが角丸になってしまいます。上だけを角丸にしたい時などには、一部だけ角丸のパスをUIBezierPathで作成し、CAShapeLayerに設定します。iOSswiftでグラデーションを描画するには、CAGradientLayerを使います。view.boundsview.layer.addSublayer(layer)グラデーションをかけたい色を複数渡してあげるだけでした。グラデーションの方向を変えたい場合は、startPointとendPointを設定します。iOS動的に要素を並べるようなViewを作成した時に、AutoLayoutの設定の仕方で悩みました。}}このようにinitializeの中で動的に要素を作成しているViewを作成します。このViewの中ではAutoLayoutは定義せずにCGRectで位置を設定しています。CustomViewを表示してみるこのViewをViewControllerでaddSubviewしてあげます。addしたCustomViewはAutoLayoutで中央揃えになるように設定します。}}ビルドしてみるとこんな感じです。うまく中央揃えになりません。CustomView自体の白背景部分が描画されていないため、CustomViewに大きさが無いことがわかります。intrinsicContentSizeの設定UIViewにはintrinsicContentSizeというCGSizeを返すメソッドが定義されており、そのサイズを自分自身のサイズと認識します。先ほどのCustomViewにintrinsicContentSizeをoverrideさせます。}}これでCustomView自体は、幅210px、高さ100pxの要素だと認識するようになりました。この状態でビルドしてみると正しく中央揃えになり、CustomViewの白背景も描画されています。今回の例はサイズを全て決め打ちで書いていますが、この辺りをちゃんと計算して算出するようにすれば、動的な要素も正しくレイアウトされるようになります。iOS最近は、storyboardもxibも使わない方針で実装しているため、Viewを構築するのも全てコードで定義しています。考えなければ、initializeの時に組み立ててしまうのですが、そうするとViewControllerとは関係のないコードが増えていき、可読性が悪くなります。}}その変わりに、View自体を独自クラスにしてあげて、それをViewControllerで読み込むようにすれば、Viewの組み立てを分離できます。ViewControllerにはloadViewというメソッドが定義されているので、それをoverrideして、独自に定義したViewクラスを設定します。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。