Coldplayのアルバム出てたので買いました。
落ち着きがあっていい感じ。
こっちは爽快感がある。
ずっといい感じだからおすすめです。
Coldplayのアルバム出てたので買いました。
落ち着きがあっていい感じ。
こっちは爽快感がある。
ずっといい感じだからおすすめです。
(Andy Myers and the CocoaPods Dev team. Creative Commons - Attribution-NonCommercial 4.0 International)
iOSアプリを作るとき、今日ではCocoaPodsを用いて簡単に便利なライブラリの力を借りることができる。
ライブラリを利用するメリットは多い。自分でメンテナンスする必要がないので、放っておいても勝手に改善されていく。潜在的な問題があったとしても、多くの人が利用しているものなら誰かが気付いて直してくれる可能性も高い。また自分より優れたエンジニアの手によって、優れたインターフェースや実装になっているということも多い。何より、自分で実装する手間が省けるのがよい。
反面、デメリットについても考えなければならない。ライブラリがメンテナンスされなくなったとき、なにか問題が起こったり、あるいはAppleの気まぐれでコンパイルが通らなくなったらどうするのか。乗り換えるコストや、あるいは自分自身でメンテナンスすることを考慮する必要がある。またライブラリのインターフェースが全く変わってしまったら、これに対応するコストも必要である。リリースサイクルとの兼ね合いもある。
iOSアプリ開発においては、iOSが毎年大きなメジャーバージョンアップを繰り返すことや、言語仕様まで含めて開発環境が変わっていくことまで考慮しなければならない。もしアプリを一度リリースしてそれっきりで良いのなら何ら心配要らないだろう。しかし継続的なアップデートを数年にわたって続けていくつもりなら、無思慮なライブラリの選択はコードベースの寿命を縮める結果になりかねない。
ここで憚りながら、筆者のライブラリ選択の指針を公開する。参考になれば幸いである。
もう先週ですが、表題のタイトルで「Consumer Service Engineer MeetUp Vol.1 ~iOS編~」という会でお話しさせていただきました。
このようなタイトルの発表にした理由についてですが、はてなとしてお話しするということで、ちょっと硬派な方に振ってみました。結果としては良いバランスだったのではないでしょうか。
発表資料を掲載します。
また以下に発表の概略を書いておきました。ご参考ください。
続きを読むきょうの料理ビギナーズは非常に良いシリーズです。料理というのは毎日続けないといけない家事であって、だからほんの一度すごく凝った料理を作るより、簡単でも毎日作り続けることが重要なのです。きょうの料理ビギナーズはちょうどそういう要件にマッチしていて、それで非常に良いのです。
昨今ではCookpadのようなサイトも利用しますが、食べたい、あるいは作りたいものが決まっているときに検索することが多い気がします。きょうの料理ビギナーズの良いところのひとつは、なんとなく眺めているうちにおいしそうに見えて作ってみようと思う、そういった偶発的な出会いをもたらしてくれるところでしょうか。
NHK きょうの料理ビギナーズ 2014年 04月号 [雑誌]
テキストが販売されているので毎月だいたい買っています。電子書籍版もありますが、iBooks StoreやKindle Storeといった最大手での販売はなく、またPDFなど将来にわたって安心できるフォーマットのものも見つからないので、諦めて紙の書籍を買って自炊しています。
家に裁断機があれば、きょうの料理ビギナーズも簡単に裁断できて便利です pic.twitter.com/9ivJSE7TmN
— Hiroki Kato (@cockscomb) 2014, 4月 5
裁断するとScanSnapでスキャンしやすくて便利です pic.twitter.com/Iz2ZQ8myyf
— Hiroki Kato (@cockscomb) 2014, 4月 5
スキャンした後AcrobatでOCRし直すと精度が良くなりファイルサイズも減ります。最後にNASを介してiPad Airへ転送することで、料理しながらきょうの料理が手軽に参照できます。これが本当の自炊ですね(笑)
— Hiroki Kato (@cockscomb) 2014, 4月 5
これが本当の自炊ですね(笑)
FUJITSU ScanSnap iX500 FI-IX500
HomebrewでMySQLをインストールすると、post_installメッセージとして
To have launchd start mysql at login: ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents Then to load mysql now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist Or, if you don't want/need launchctl, you can just run: mysql.server start
このように表示されます。ここには、launchdというOS Xの仕組みを使ってMySQLを自動的に起動するやり方と、手動で毎回起動するやり方が書いてあります。
launchdは、OS Xの根幹を為す仕組みのひとつで、特にコマンドラインからはlaunchctl
コマンドを使ってやり取りします。Property List形式のファイルを特定のディレクトリ、この場合は~/Library/LaunchAgentsディレクトリに置いて(ソフトリンクして)、これをlaunchctl load
することで、launchdを使ったMySQLの自動起動ができるようになります。
さて、ではこの自動起動をやめたくなったときどうしたらよいかというと、launchctl unload
してソフトリンクを消したら元通りになります。launchctl
コマンドに十分精通していればこれくらい簡単ですし、いま起動している一覧なども得ることができます。他にもman launchctl
すると大変詳しい説明を読むことができます。
brew services
ここまで読むと、OS Xは非常に優れたOSで、launchdの柔軟さやlaunchctl
コマンドの使いやすいインターフェースにただ感謝、という気持ちになったことと思います。
そうは言っても、他人のMacパソコンに親切でMySQLの自動設定をしてあげるのには躊躇われるものがあります。相手がlaunchdに詳しければよいのですが、launchctl unload
などを知らなければ二度と元に戻すことができないでしょう。
そこで今日はbrew services
コマンドを紹介します。このコマンドでMySQLを自動起動するには
brew services start mysql
とするだけです。いま自動起動の設定をしているもの一覧は
brew services list
自動起動を止めたければ
brew services stop mysql
これだけのコマンドで先ほどのlaunchctl
と同等のことが行えます。この方法ならlaunchdの柔軟な仕組みについてあまり明るくなくてもMySQLの自動起動ができて便利です。またhomebrew/versionsのmysql55
などを使っていたとしても、brew services start mysql55
とすればよいようです。
この方法であればlaunchctl
でなんの設定をしたかを忘れることもなく、リラックスしてMacパソコンを利用することができるので安心です。
Homebrewはこのように便利な仕組みを(こっそり)用意してくれていて侮れないものがありますね。こちらからは以上です。
京都に本社を置きWebサービス事業を展開する会社で、WebサービスやiOSアプリを作ったりしている。会社にはたくさんの技術書があるが、iOSアプリ開発関連の書籍がすこし足りないと感じていた。しかしながら読んでみたい本があったら自分で買ってしまうから、別に不自由すると言うこともなかった。というつもりだったのだけど、ちょっと気が変わって、会社にいい本が置いていないことは技術を重視するという社風から考えても好ましくない、という気になった。そこで上司に相談したところ、本はいくらでも買おう、ということだったので、買ってもらうことにした。
新しく買ってもらったものに加えて以前から会社にあったものも少し含むけれど、いま会社にあるいい本を以下に紹介します。
『詳解 Objective-C 2.0』は、Objective-C言語の言語仕様からFoundation.frameworkくらいまでをいわゆるObjective-Cと呼ぶとすると、そのほとんどすべてを正確にカバーしている。少し内容が古くなったとはいえ、そういうことは他の書籍で補うということにして、まず定番を抑えておくのがよい。
エキスパートObjective-Cプログラミング ?iOS/OS Xのメモリ管理とマルチスレッド?
ARC・Blocks・GCDの3つのトピックについて専門的に書かれている。ARCの細かな挙動に気を配ることはメモリ関連の問題を減らすために必要となるし、BlocksやGCDの細かな部分は少し複雑かもしれないが便利な仕組みが多い。『エキスパートObjective-Cプログラミング』で詳しく学んでおいて損になることはない。
少し前までだったらここまでの2冊が特によかったと思うが、いまだったらこの1冊も推したい。コードを書く上で、言語毎に好ましい習慣があるように思う。そういったことを自力で習得するのは容易ではない。『Effective Objective-C 2.0』にはそういうことが丁寧に書かれている。
上を目指すプログラマーのためのiPhoneアプリ開発テクニック iOS 7編
iOSはメジャーバージョンが上がる毎にその開発環境も大きく変わっていく。昨今であれば、StoryboardやAuto Layoutなどは、大きく開発の仕組みを変えたといってよいだろう。そのときそのときで十分キャッチアップしていくのがいちばんよいし、これにはApple自身のドキュメントやサンプルコードが役立つ。とはいえ、細かい部分は見逃しがちであるし、ちょっと離れているとまるで分からなくなってしまう。そういったときにこのような書籍が役立つと思う。
単なるフレームワークの解説にとどまらず、便利なテクニックまで紹介されているのがよい。会社には新たにiOS 6とiOS 7の2冊を買ってもらったが、古いバージョン向けの『iOS4プログラミングブック』と『iOS5プログラミングブック』も役立つと思う。
Core DataはiOS/OS Xで使われる標準的なデータベースの仕組みである。かなり高レベルに抽象化され、一種独特とも言える。その分iCloudとの連携など非常に高度な機能が備わっており、必要な場合に利用できることは大きな助けになる。そういうCore Dataについて、かなり網羅的に書かれているのが『iOS Core Data徹底入門』である。
最初の2/3ほどはあまりCore Dataと関係なく、データの永続化についてのいくつかのやり方やSQLiteを使う方法などが書かれており、残りでCore Dataを説明する。Core Dataについては簡単な利用法からマイグレーション、さらに例えば大きなバイナリデータをどうしても格納したいときにパフォーマンスをなるべく劣化させないテクニックといったところまで、かなり広く書かれている。
反対に、書かれていないこともある。例えばマルチスレッドからCore Dataを扱うということがよくあるが、NSManagedObjectContext
が持っているキューを利用するやり方や、あるいはNSManagedObjectContext
の親子関係を用いる方法といった、比較的新しい (といってもiOS 5から使える) 部分について特に記載がない。昔ながらのやり方だと煩雑なので、この辺りの記述がほしかった。またNSIncrementalStore
というおもしろいやつがあって、あまり使われることはないけれど、書いてあるとおもしろかったと思う。
とはいえ、日本語でCore Dataについてこれほどの情報源はなかなかないから、持っておくとよいと思う。マルチスレッドのときの新しいやり方はWWDC 2012のセッションがよかった。
『iPhone/iPad グラフィックスプログラミング』はiOS/OS Xのグラフィックス関連のAPI群を紹介している。グラフィクス関連のフレームワークは非常に多く、Core GraphicsやCore ImageにCore Animation、ImageIOなど多岐にわたる。例えばアニメーションGIFを作るやり方みたいなところまで詳細に書かれており、便利なことも多いと思う。
バグに繋がりやすい部分をよく理解し、効率的なデバッグのやり方を知っていると、開発の効率もよくなる。パフォーマンス上の問題にぶつかったとき、何より計測することが解決の近道である。そういうことを専門的に取り扱ったのが『iOSデバッグ&最適化技法』で、いくつかのトピックについて必要な情報が書かれている。ちょっと経験のある人だったら大体わかっているようなことが大体書いてあるので、とても役立つと思う。
スマートフォンのためのUIデザイン ユーザー体験に大切なルールとパターン
スマートフォンアプリのUIには一定の規則性がある。そういった規則を意識することで統一された使用感が得られる。『スマートフォンのためのUIデザイン』ではそういった規則を、実際のたくさんの事例を元に紹介している。どういったときにどういったUIコンポーネントが使われるのか、どういった意味合いがあるのか、といったことを学ぶことでいきなり異常なUIを作ることがなくなってよい。
iOS 7デザインスタンダード 最新のフラットデザインに対応-iPhoneに最適なUI・UXを徹底的に解説!
iOS 7になってUIが全面的に見直された。いわゆるフラットデザインであるが、コンテンツを重視してUIパーツを従属的なものとし、リアリティのある奥行きの表現や物理法則の採用によって現実の延長線上にUIを位置づけた、といった風な大きな変更である。『iOS 7デザインスタンダード』はそういった変化を丁寧に説明している。好ましいことに、UIコンポーネントの名前が正確に記述されていて、コミュニケーションにも役立つと思う。
上に紹介した書籍の多くは、自分で既に買っていてよかったものである。iOSアプリ開発関連の書籍をすべて読んでいるわけではないから、もっとよい本があるのを知らないということも多いだろうと思う。そういうのがありましたら是非、ご教示いただけたら幸いです。
今回紹介した10冊のうち2冊は以前から会社に置いてあったもので、8冊は新規に購入していただけた。これらの書籍からよく学び、またこの知識を拡大し、社内におけるさらなる技術向上に努めたい。そしてその結果を必ず製品に反映させたい。
iOS/OS Xアプリ開発関連の書籍について、昔からのよい本もあるけれど、やはり年々充実してきている。Objective-Cについて丁寧に書かれた本もどんどん増えていて、チェックが追いつかないほどになっている。そういった中で、すべての領域が網羅されたかと言えば決してそういうわけではない。書籍から学べる領域というのはいまもむかしも限定的で、必要に応じて自ら学び取っていかなければならない。
とはいえ、書籍でカバーされたら良いだろうと思う領域はある。例えばテストについて、テストは誰にでも関係あるのだから、そろそろ書籍としてまとめられても良いのではないか。『iOSテストについて書かれているおすすめ電子書籍情報(洋書) - laiso+iphone』ここで書かれているように、洋書ではいくつか書かれたものがある。少し特化すると、例えばiOSにおけるオーディオ処理について以前は『iPhone Core Audioプログラミング』というのがあったが、絶版となってしまった。
今後ますますよい本が発刊されていくことに疑いの余地はないし、とても楽しみである。