それに伴い、これまで使っていた古いMacの設定等を新しいMacに移行することに。やり方は外部HDDに古いMacの設定等を丸ごと保存し、その設定等を新しいMacに丸ごと移すという。MachineというMacアプリで設定等丸ごとバックアップできるので、それを移行アシスタントというシステムを使って移すのです。ここまでは、検索してすぐにわかりやすいサイトがみつかるため、問題ありませんでした。Machineはこれまであまり使ったことがなかったです。Machineは、毎日1時間ごとに設定を保存し続けるというもので、そこまでこまめにバックアップとる必要もないだろうと思ったので。Machineでバックアップすることに。1日目はそうして移行作業だけで終わりました。大変だったこと(キーチェーンアクセス)2日目は、アプリ開発のための開発環境が正常に動いているかを確認することに。Androidアプリに関しては、なんの問題もなく、これまで通りファイルをapk化でき、それをGooglePlayにアップロードできました。ところが、iPhoneアプリの開発環境Xcodeで異常が。iPhoneアプリのファイルをストアにアップロードするには、証明書が必要です(1年ごとにデベロッパーの更新をして1万円くらい払うため)。Machineにより、古いMacの設定をほとんどすべて引き継げたのですが、証明書に関しては、古いMacの証明書を引き継げませんでした。そのため、一旦古いMacを動かしてそこから証明書を書き出し、Googleドライブにアップロードして、それを新しいMacにダウンロードするという方法をとりました。あとは、この証明書をダブルクリックすれば、自動でキーチェーンアクセスが起動して、証明書を引き継げるらしいのです。ところが、肝心のキーチェーンアクセスが、はじめの1時間くらいは正常に動いていたものの、突然なんの反応もしなくなり、カーソルが写輪眼みたいな虹色のくるくるになりだしたので、一旦、強制終了しました。一度キーチェーンアクセスを起動したところ、なんの反応もせず、写輪眼になるだけです。パソコン自体を再起動すれば、たいていのエラーは解消するので、再起動も試しました。それでもキーチェーンアクセスを開こうとすると、写輪眼になります。検索して対処法を探したところ、こういう症状になる方もいたのですが、一旦キーチェーンアクセスをバックアップとった上で削除したら直ったというおそろしい対処法しか見つかりませんでした。それを試す勇気はなく、Mac到着2日目にして、途方に暮れてしまいました。Machineで古いMacのデータを移行したのと同じ要領で、正常に動いていた頃の新しいMacのデータを現在のMacに移行すればうまくいくでのはないかと気付きました。Machineで1時間ごとにバックアップしていたので、キーチェーンアクセスが突然動かなくなる前の正常に動いていた時間のバックアップを使って復元しました。それにより、キーチェーンアクセスが正常に動くようになり、古いMacの証明書も引き継げました。これでうまくいったと思ったのですが、証明書の部分をよくみると、「この証明書の発行者は無効です」と赤字になっています。Xcodeでストアにアップロードしようとしてもエラーになります。証明書の引き継ぎがまだどこかおかしいのかと思い、いろいろ調べましたが、このようなエラーに困っている人は英語も含めてみつかりませんでした。そんな中、やたらと検索にひっかかるのが、2016年2月15日でappleの証明書の期限が切れたので、それを削除して新しくインストールしてね、というもの。Macを新しくしたのが原因だと思っていた自分には、てっきり無関係だと思っていましたが、これを削除したところ、iPhoneアプリをストアにアップロードできるようになりました!!よりによって、新しくMacを買った日に証明書の期限が切れるなんて!とんでもないタイミングのエラーでした。今回大変だった原因ようやくiPhoneアプリを無事アップロードでき、念のためもう一度Androidアプリの方でもアップロードできるか試したところ、proguardのエラーでアップロードに失敗しました。今度はAndroidか、と思いましたが、再起動してもう一度アップロードしてみたところ、すんなりできたのでよかったです。今回のデータ移行もだいぶきつかったです。Machineを使えばカンタン、と油断していたことにあります。基本的に、調子に乗って油断しているとどえらいことになる、ということを散々学んできたはずなのに、もう忘れていました。Machineのありがたさです。1日刻みのバックアップでは、1日の間にだいぶ色々いじれてしまうので、それをまたやり直すというのは想像するだけできつすぎます。Machineの使い途がわかったのもよかったです。Xcodeとかアプリ開発環境をアップデートする方がいますが、自分の場合、アップデートして取り返しのつかないことになるのが恐ろしいのでやりません。Machineの重要さがわかりました。これまでは、何か立ち行かなくなったとき、色々検索して、場合によってはstackoverflowとか日本語以外のサイトからも情報を得て、それでもダメなら諦めるしかありませんでした。Machineで時を戻すという選択肢が増えました。別のことをやっていて、プログラミングから離れているということがよくあります。Androidアプリ開発を行っていて、久々にiPhoneアプリ開発を行うと、eclipseとXcodeの使い方の違いや、JAVAとobjective-cの文法の違いに戸惑うことがあります。そんなときに、短時間で感覚を取り戻す方法は、すごくシンプルです。それは、自分が以前書いたコードを読むことです。コードを書くときは、自分で使い方を理解した上で書きます。そのため、一度自分の頭で理解したという経験があるため、コードを見るとそのときの感覚を思い出すことができるのです。いうわけで、久々にプログラミングしなければならないときは、完全に忘れたからどうしようと迷う前に、以前のコードを読むべきです!以上、プログラミングから遠ざかったときの未来の自分に向けてのメッセージでした。以前、storyboardを使ってそこそこ複雑なレイアウトを実現しました。raptor36.hateblo.jp今回は、そのレイアウトをベースに、カードUIっぽい見た目にしたいと思います。ライブラリとかでいいのがあれば、それを用いるのが一番簡単なのですが、ちょうどいいのが見つからなかったので、storyboardでレイアウトすることにしました。storyboardの中をざっとみると、Containerをうまく使えば簡単にカードUIを実現できそうです。Containerの使い方がいまいちよくわからなかったので、今の自分のレベルで思いつくやり方でやってみました。カードUIぽくするときのポイント今回重要なのは2点です。1点目はviewを用意していく順番で、2点目はスクロールがうまくいくためのルールです。前回はこのようにできました。これをベースに変更していきます。最終的には、こういうレイアウトを目指します。これを実機で表示すると最初の画像のようになります。これを実現するために、viewをつけていきます。おおまかな順番としては、左、真ん中下、右にviewを設置し、あとは、真ん中の部分にviewをいくつか追加していきます。左用のviewを貼ります。この辺のやり方は、前回の記事に書いてあります。真ん中下に配置します。右用のviewをはりつけます。ここは、何も考えずにやるとうまくいかない場合ああるので、少し詳しく説明します。右用のviewの高さと幅は、左用のピンクのviewとイコールにしています。上はscrollviewに接地した制約をします。今度は左右の制約についてですが、右には何も制約をつけません。左についてだけ、左に接地している黒い線のviewに接地した制約をします。右に接地した制約をやるとレイアウトがなぜか崩れるからです。真ん中の黒viewの下に、緑viewを設置します。今度は、左右のピンクviewのbottomをscrollviewに接地した制約をします。ここで、ものすごく大事なこととして、左右のピンクviewの高さについては、scrollviewと同じにするなどの制約を一切つけません。左右のピンクviewの高さに何か制約をつけてしまうと、スクロールしなくなってしまいます。これに気づかずに2時間くらいスクロールがうまくいきませんでした。ここからまた少し大事なので、少し詳しく説明します。kaitourireki直下に黒と緑のviewを設置しましたが、同じような感じで、今度はkaisetsu下に黒viewと緑viewを設置します。そのために、まずは黒viewをはりつけます。サイズはkaitourireki直下の黒viewと同じ要領です。kaisetsu直下の黒viewの下に緑viewをつけたいです。そこで、緑viewを適当に貼り付けます。緑viewを、kaisetsu直下の黒viewの下に接地するためには、kaisetsu直下の黒viewと緑viewの間に何もないようにします。しないと接地できません。他のviewに重なっても大丈夫です。したら、緑viewをkaisetsu下の黒viewに接地する制約をします。して緑viewを黒viewの下に接地できましたが、このままだと緑viewがkaitourirekiにカブってしまっています。そこで、kaitourirekiを選んだ状態で、右側のカラムの中を修正してkaitourirekiとkaisetsuとの距離を50から200に広げます。広がったら、kaitourirekiとkaisetsuの制約を消去して、新しく、kaisetsu下の緑viewに、kaitourirekiを接地する制約をします。この要領で、toi直下にも黒bviewと緑viewをつけていきます。ここまでできたら、toiの上に青viewを設置します。やり方はだいたい今までと同じ感じです。label2つを問題のしたにつけたらレイアウトは出来上がりです。左右の高さを少し修正しましたが、本篇には直接関係ありません。ここまできたら、あとは色を整えると、最初に提示した完成型になります。今回どうしてわざわざまとめたのかというと、カードUIを作りたい場合のviewを用意していく順番と、スクロールがうまくいくためのルールを書きたかったからです。viewを用意する場合、左、真ん中、右に設置します。右、真ん中、左でも大丈夫です。大事なのは、最初にviewを設置したら、そのviewに接地させた状態でレイアウトを追加していくことです。今回の真ん中のレイアウトのように、縦にたくさんレイアウトする場合は、下の方から設置していきます。しないと、たくさんレイアウトしていった結果、下の方が見えなくなる可能性があるからです(今回は薄っぺらくしたので、全て画面上の見える範囲でできましたが。)スクロールをうまくやるには、上下の接地に関して余計な制約をつけないことです。前回はそれについて書きました。今回は、新たに、高さの制約をしてはいけないということです。高さを1000とかに制約すればスクロールできます。柔軟にしたい場合に、高さをscrollviewとイコールにしてしまうと、スクロールできません。今回私は、左右のピンクviewの高さ(hight)をscrollviewとイコールにしてしまっていたために、スクロールできませんでした。その高さの制約を外したとたんに、うまくスクロールできるようになりました。この場合におそろしいのは、何が原因なのかヒントが全くないので、気づくのが困難ということです。scrollviewを使うときはお気をつけください。Raptor開発者ブログ資格試験の勉強をするため、過去問集を買ったり、テキストを買うことがあります。一式揃えるとなれば、10000円を超えることもザラにあるはずです。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。