Unyablog.

のにれんのブログ

iOS 入門 1日目

春休みなので iOS 学んでみることにしました。*1

目標

作りたいアプリは特になくて、ただ iOS / Swift 学びたいなあという気持ちがあるという感じです。Swift で書かれた iOS のコード理解できるようになりたい。

当方ほぼ初心者です。(夏に Hello World ぐらいならしたことがある)

環境セットアップ

  • Xcode アップデート

入れたプラグイン

  • Alcatraz

Xcode 用のパッケージマネージャらしい。プラグイン探してると大体ここに対応してるので入れました。

途中で

mktemp: too few X's in template ‘com.mneorr.Alcatraz’ 

というエラーが出たのですが、

Make install script work if GNU mktemp is present. by idrisr · Pull Request #421 · alcatraz/Alcatraz · GitHub

によれば coreUtilsbrew で別に入れてるのが原因っぽいので

$ export PATH=/usr/bin/:$PATH

として一旦内蔵のコマンドを使うように切り替えるとインストールできました。

あとはこのパッケージマネージャを使って入れます。

  • XVim

vim キーバインド

  • monokai-revisited

monokai テーマだとこれが一番よさそう。

  • FuzzyAutoCompletePlugin

XcodeIntelliJ とは違って VC と打っても VC から始まるものしか出ないのですが、これを入れると ViewController とかが出てくれるようになる。

  • GitDiff

git の変更行に対して色を変更してくれる。

した設定

  • 行番号表示

プロジェクト作成

  • とりあえずOKっぽいのクリックする

チュートリアル

アップルの公式チュートリアルがあったのでそれを進めていっています。

このチュートリアル、ちゃんと最新の仕様に従っているし、とにかく丁寧だし、いろんなことやってくれるので非常に良い。

詰まった

感想

とりあえず CustomControl のあたりまでやりました。

  • StoryBoard 上でマウスをふんだんに使ってレイアウト決定するのは面白い。Android だとそういう機能はあるけど結局自分で xml ゴリゴリ書いてたし。
    • callback もドラッグで引っ張って指定するのは面白いですね。でも CustomControl のようにコード内部で指定するほうが Android では慣れてるし楽かなぁ。
    • 無名クラスは作れないって聞いたので複数のタップイベント処理するときどうするんだろう、と思った。
  • 内部実装のソースが見れなくてもコメントあるから割りとなんとかなりそう
  • 絵文字入力すると落ちる?

これ、XVim のせいかと思っていたけど調べてみるとそんなことなさそう。致命的になったらまた原因調べてみよう…

  • たまに Xcode 固まって渋い
    • ただ思ってるより Xcode は快適で、いろいろコーディングに強い機能もあった。あとプラグインで結構カスタマイズできるのは知らなかった。
  • Swift 自体は全体的に良い感じ。スマートに書けるし、ちょっと Kotlin と似ているので馴染みやすい。
    • 関数呼び出しの時に引数名必須なのは難しい
  • addTarget、関数名を文字列で指定するのか… ラムダ式でいい感じに渡したいなぁとか思った。
  • Android だとリソースは R.drawable.hogehoge のように自動的に作成されるクラスを通じて数値で呼び出すのだけど、 iOS だと文字列で名前をそのまま渡すのかな。(少なくとも今の項まではずっとそうしてる)補完とか働かないのは少し不便かもしれない。

ちなみに下のレポジトリでやってます。少しずつ頑張るぞい。

*1:Haskellをしないわけではないですよ!!