LocaliPhone開発を軸にブレブレの記事を書いていきます。この広告は、90日以上更新していないブログに表示しています。2016という、日本最大級のiOSのカンファレンスに参加してきました。iosdc.jpiOSDCはiOS・その周辺技術に関するカンファレンスで、公式サイトには「iOSエンジニアが聞いて面白ければ何でもOK」と説明されています。トークは数多くの応募の中から運営スタッフにより採択されます。当日は技術的なテーマはもちろん、「海外のカンファレンスで登壇する」や「ハッピーな開発チームを築く」など、幅広い内容のトークが行われました。以下、参加した記録として気になったセッションや会場の様子などを振り返ってみたいと思います。会場は練馬のCoconeriホールという場所でした。www.nerima-idc.or.jp個人的にちゃんと練馬に上陸するのは始めてで、最初は「渋谷近辺じゃないのか」と思ってたんですが、行ってみると案外練馬近いし、家から交通の便も良いし、子連れのお母さん方とかが歩いてたりといつもと異なる環境で、良いコンディションでイベントを楽しめました。トークが行われる部屋はこんな感じで、かなり広い空間でした。(A/Bトラックの2部屋に分かれていて、写真は大きい部屋の方のAトラック)朝から座席がギッチリ埋まっていて、iOSエンジニアたちの早起きスキルに驚かされました。トーク聞いた、もしくは動画でみたトークのうち、印象深いものを並べてみます。さんによる、英語が苦手だったスタート地点からいかに海外カンファレンスで登壇するに至ったか、そのモチベーションと攻略法などのお話。海外で登壇するという面白さはもちろんのこと、目標を先に設定して、そこから逆算で今自分がやるべきことを決めてやっていく堤さんの生き方がすごいなと思いました。d.hatena.ne.jpRxSwiftは開発をどう変えたか?blog.ishkawa.org@_ishkawaさんによる、RxSwiftを使った実装の紹介と、導入により開発がどのように変わるのか、というお話。以前から興味がありつつも機会を作れずまだ試せてないのですが、その心にまた火がつけられました。記法を覚えるまでには少し時間がかかりそうですが、処理の流れが追いやすくなるので見通しの良いコードが書けるし、コードレビューも行いやすくなりそうだなと感じました。Monitoring)のまとめとTipsの紹介。iOSの位置情報プログラミングは色々なパターンがあり、その複雑さは年々難しくなっていってます。自分も最近実装したのですが、ドキュメント通りに実装しても挙動が怪しかったり、テストをしても不安な部分があったのですが、このトークを聞いてどこが実装による不具合でどこがOS挙動の怪しさなのかが分かってとても助かりました。快適なデバッグライフを追い求める@dealforestさんによるXcodeデバッグの話。プログラミングの大半はデバッグで、そのデバッグの効率をあげるためにどんなことをしてるか?のハウツーが複数紹介されました。出てくるケースがどれも「あ、これ困って諦めてたわ。」というようなもので、各ケースでどうデバッグ情報を集めるかという話は毎回うならされました。今回のiOSDCで最も明日から役に立つトークだったと思います。ベストトーク賞の第3位を受賞されてました。dealforest.hatenablog.comランチせっかく初練馬だったので、ランチは地元住まいの先輩おすすめのラーメン屋にいきました。tabelog.comお店も綺麗だしとても美味しかったです。スープは濃厚な豚骨魚介でした。Tシャツ当日、参加者にはTシャツが配られたのですが、役割や参加チケットの種類によって色が分けられていました。スタッフはピンク、登壇者は緑、スポンサーはオレンジなど。自分はスポンサーチケットで参加させていただきました。無限コーヒーエリアの近くのジョブボードにポスターを貼っていたのですが気づいた方はおられたでしょうか?ヤフーでは一緒に世の中の課題を解決していける仲間を募集しています。2016、最高に楽しかったです!iOSに興味のあるエンジニアやデザイナーがこの規模で集うのはすごいですね。スタッフになった方が数倍楽しそうだなと感じたので、来年も開催されるようであればそんな形で参加したいと思います。運営スタッフのみなさま、登壇者のみなさま、参加者のみなさま、ありがとうございました。potatotips.connpass.com発表した内容タイトルの通り、UICollectionViewのCellをインタラクティブに並び替えるAPIの紹介です。デモこんな感じで、CollectionViewの(インタラクティブな)並び替えサイズの異なるCell間の並び替えpagingEnabled=trueの場合の並び替えなどができます。iPhoneのホーム画面のような挙動ですね。10」というのがありました。10でUICollectionViewがどう変わったか、どのような新しいAPIが追加されたかを紹介するセッションなのですが、そこでUICollectionViewにも並び替えのためのAPIがあることを知りました。10からスクロールがスムーズになったことで、並び替えの体験もより良くなったぜ!という紹介だったようです。そんなわけで新しいAPIではなかったのですが、自分は知らなかったし、そんなにネット上に情報が出てないような気もしたので、potatotipsのLTで紹介してきました。UICollectionViewDataSourceの以下のAPIを使います。IndexPath)UILongPressGestureなどを使って、並び替えの開始のタイミング、移動のタイミング、終了のタイミングで上記のAPIを呼ぶことで実装できます。UITableViewと同じく、並び替えが終わったときにデータを入れ替えする処理を実装する必要があるのですが、ここでデータの不整合が起こるとクラッシュしてしまうので注意が必要です。サンプルコードgithub.comまとめ久しぶりにpotatotipsで発表するなー、と思って数えてみたらなんと2年ぶりの発表でした。ぶりのみなさまとお話しできてとても楽しかったです。Androidアプリ開発入門』を献本いただきました。タイトルの通りAndroidアプリ開発をこれからはじめたい人向けの本で、Amazonでもベストセラーになっているようです。この本は「ヤフー黒帯シリーズ」として出版されています。黒帯とはヤフーの中で特に優秀な人材に付与される称号で、著者の森さんはAndroid技術黒帯に認定されています。iOSアプリ入門の黒帯本が少し前に出ていて、自分も読んだのですが、今回のAndroid黒帯本も構成などはそれに似ていると思います。本の目次は以下のようになっています。第1章ではアプリ開発に着手する前に考えるべきことが簡潔にまとめられています。第2章ではAndroidで登場する「アクティビティ」「サービス」などのコンポーネントの説明。第3~7章ではサンプルアプリを実際に作りながらxmlによるレイアウトやAndroidのクラスを使った様々な実装を学んでいくことができます。Playに公開するまでの手順が紹介されています。実はこれまでにも独学で、Webのドキュメントを読みながらAndroid開発に挑戦したことがあったのですが、「フラグメント」「サービス」「ブロードキャストレシーバ」などのiOSにはない考え方がいまいち理解できず、挫折してしまいました。この本では丁寧な説明だけでなく、実際にそのコンポーネントを使ったサンプルアプリを作る過程があるので、しっかりと理解することができます。iOSとの大きな違いにxmlによるレイアウトがあると思いますが、こちらも実際に手を動かしながら学べます。9からのStackViewと同じような考え方だなとか、自分の知っている知識に置き換えて理解できるので腹落ちしますね。新しい言語を学ぶ場合、ある地点からはWeb上のドキュメントやOSSのコードなどを読んで勉強できるんですが、そこにいくまでが大変です。この本は最初の一歩目に最適な本だと感じました。2.xに対応しています。バージョンが違うとGUIが違ったりして本質的でない部分でハマったりするので、最新の環境に対応してくれてるのは嬉しいですね。Android開発入門は、Xcodeを落としてハイスタートのiOSとは違って、JDKを落として、エミュレータを設定して、必要であればgradleファイルをほげほげして...みたいな、前準備が大変なイメージでした。Studioが賢くなったのもあると思いますが、本にしたがえばスンナリ環境構築出来てしまうので、最初の障壁が超えられるのも助かります。登場して以前と比べてどう環境が変わったかなどにも触れられていて、歴史を知れたのも面白かったです。本書では説明の随所に画像が差し込まれていて、迷うことなく進めることができます。Studioの機能で、xmlで組んだレイアウトをプレビューしてくれるものですが、こういう感じでどんな機能がIDEにあるのか教えてくれます。自分が4年くらい使っているXcodeでもまだ知らない便利機能があったりしますし、こういう便利機能は先に体系的に学ぶのが良いと思います。Studio自体の学習も必要です。様々な機能があるなかで、どの機能をよく使うのか?どの機能は気にしなくてよいのか?がこの本を読み進めると分かりました。仕事で使える知識が身につくWeb上のチュートリアルなども最近は充実してきてますが、最初は体系的に学べる書籍がいいのではないかと思っています。この本ではタイトルにもある通り「しっかりと基本が身につく」内容になっています。サンプルアプリを作るときに、いきなりUI部分から始めるのではなく、先にロジックを整理して実装していくとカプセル化された良いコードが書きやすいなど、OJTで先輩エンジニアから言われそうなことが書かれています。上に貼った画像はActivityのライフサイクルですが、例えばここではそれぞれのメソッドでは何をすべきか、何を意識すべきかが厚く書かれるなど、仕事でやる上では理解しておくべきポイントはしっかり書かれています。そのため難しい部分は何度か読まないと理解できなかったりはしますが、しっかり理解できれば実戦でも良いコードが書けると思います。ありがたいサンプルコードつき本書で登場するサンプルアプリのソースコードはこちらのページからDLして動かせます。Studioでサンプルコードを開いておくと、メソッド間をジャンプしながら処理を追えたりなどして便利です。自分は本に出ているコードを写経しながら勉強する派なのですが、自分の書いたコードでコンパイルエラーが出て原因が分からないときにとても助かりました。まとめ自分はしっかり読んで理解しながら進めていきましたが、とりあえず動かしたいばの方はサンプルコードを動かしながら勉強していくこともできます。『基本から身につくAndroid開発入門』は、これからAndroidに入門する方にピッタリな本だと思いました。夏休みの間に勉強しようと思っていた方はぜひ読んでみてください。見るこの本は過去に実際にあったマーケティングの話をベースに、「こうしなければいけない」「こうしちゃうと死ぬ」みたいな法則をまとめている本です。一部ではマーケティングの教科書とも呼ばれているみたいです。自分は以前から「似たような機能をもったプロダクトは沢山あるのに、なぜこのプロダクトだけが流行るのか?」を不思議に思っていて、マーケティング系の本はたまに読んでたんですが、この本は自分の持っていた疑問の多くを解決してくれた気がします。良い本だったので、自分の頭の中を整理する意味も込めてまとめてみます。効率よくiOSアプリ開発を行うために、効率よくデバッグを行いたいですよね。このエントリでは「print文を書く以外デバッグの方法を知らなかったあの頃の自分」を初級者と定義して、自分がやってるデバッグ方法について書いてみます。いう以下の3つの変数が宣言されています。"sample.jpg")これらの変数の中身をチェックしたい時、printで出力するのでも良いですが、それでは出力する値を変えたくなった時(print(age)をprint(age*2+1)に変更とか)に再度ビルドが必要になって時間がかかります。printではなく、LLDBコマンドを使って確認することができます。以下のように入力します。Hiramatsu"単純に変数の値を出力するだけではなく、式の評価もできます。変数に対して、printやpoコマンドではどんな画像なのか確認できません。現れたポップアップの目のアイコンをタップすることで画像が確認できます。左のエリアからも可能です。変数名の横に値が出ていて一目で確認できます。選択した状態で目のアイコンをクリックして画像を表示することも可能です。単純な変数の確認であればこちらの方が便利ですね。自作クラスのdescriptionをカスタマイズする例えば以下のようなクラスを作ったとします。}}以下のようにPersonクラスのインスタンスを生成します。coverImage)このインスタンスのプロパティを確認しようと思ってprint(person)としてみると、Consoleには以下のように表示されます。print(person)XcodeDebugPractice.Personこれは知りたい情報ではありません。person.nameなどとすれば確認はできますが、少し手間がかかります。いうシーンではクラスのログ出力をカスタマイズしましょう。クラスを編集して、以下のようにします。}}この状態で再びprint(person)するとコンソールには以下が出力されます。指定した値が出ています。