Unyablog.

のにれんのブログ

iOS 入門 3日目

iOSチュートリアル自体は今回で終わりです。

今回は画面遷移の実装、データの編集、データの永続化あたりです。

画面遷移

  • どうやら iOS における IntentSegue と言うらしい。
    • 段々マウスクリックして伸ばすのが面倒になってきた。
  • Segue にもいろんな種類の遷移があって、それぞれアニメーション等が微妙に違う。こういうのが apple っぽくて良いですね。
  • NavigationControllerActivity みたいなもので、 ViewControllerFragment みたいなものだというざっくりした認識を得た。
  • Push SegueModal Segue というのがある。
    • 前者はタップしたものの詳細を示すような画面で使い、後者は新しいものを登録するような画面で使うということでよい?
    • 後者の場合 NavigationController も入れ替わるが、前者ではそんなことない。
  • prepareForSegue は自分から離れるときに呼ばれる。
    • このとき相手先の ViewController が降ってくるので、そこのメンバ変数に入れたいものを突っ込む…らしい
    • Android だと Intent に一旦突っ込むので直接入れるのは意外だった
  • 遷移先からデータを受け取りたいときは、 StoryBoard から関数まで Ctrl + ドラッグ をしてイベントを発火する
    • この時も遷移先の ViewController が降ってくるのでそこからデータを受け取るとのこと。

データの編集

メソッド一つ設定するだけでいい感じの編集UIができあがる。

編集UI、横スクロールした時に View がはみ出していてつらい気持ちになった。

iPhone6S だったらならなかった。あまり横幅を広くするなということだろうか。

データの永続化

Android よりも楽にモデルごと保存できるようでよかった。この程度になると Android では SQLite 使わないといけなさそう?

こうして公式チュートリアルは終わりました。あとは自分で軽いアプリを作ってみたいと思います。

その他

  • iOS、 String でコールバック関数とかクラスとか指定するのはそういうものらしい。

一日目

nonylene.hatenablog.jp

二日目 nonylene.hatenablog.jp

iOS 入門 2日目

1日目の記事はこちらです。

さて今日は二日目です。果たしてサークルの合宿に間に合うのか…

今日はモデルを定義して TableView を作成しました。

TableView での感想

  • Androidでいう ListViewRecyclerView の中間っぽい。

    • recycle がつよい ListView という感じ。。
  • iOS はこんなに簡単に ListView が作れるの最高ですね…!

    • Android だととにかくいろいろめんどくさくて…
    • Xcode の手厚いサポートのおかげという感じがする
  • でも RecyclerView のほうが型的には安心だという気がした。

tableView.dequeueReusableCellWithIdentifier("MealTableViewCell", forIndexPath: indexPath) as! MealTableViewCell

ってなんだよ…そこクラス入れていい感じに型安全にできるじゃん…!って思ってしまう。

とにかく文字列で指定という感じ、obj-C の遺産だったりするんだろうか。

その他

  • ViewController のクラスを指定するときに存在しないクラスを指定してもビルドできちゃうんですね
    • Run したときにコケました。
  • StoryBoard 上でパーツ削除した時、コードから消すのは手でチマチマやるのは少しつらい。
    • なんで StoryBoard に存在しないのにビルド通るのか。

最高だけど UI 周り案外いろいろだるいのでは、と思った日でした。

iOS 入門 1日目

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

目標

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

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

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

続きを読む

CircleCI で Android Library Project を GitHub Pages にデプロイ

こんにちは。最近 build.gradle をゴニョゴニョするのに慣れてきました。

ここ数日、 PhotoLinkViewerモジュール分けしたいなーと思って一部分を切り離しました

切り離したものは他のアプリでも使いたいので、プロジェクトとして独立させることにしています。

ここで切り離し元から参照するには 2つほど方法があり、

  1. submodule などでプロジェクト直下等に置いて管理する

  2. aar 化してレポジトリに置き、 build.gradledependencies に組み込む。

という感じです。

submodule で管理する方法を使えば ManifestMergerAndroidManifest をよしなにマージしてくれるので、切り離し元の AndroidManifest に Activity の情報を書く必要がありません。

続きを読む

Android 6.0 がおかしいと思ったらバージョンが古かった

marshmallow のつづりが未だに覚えられないです。

原因わかったので追記しました。

症状(preview 3 で確認されていた症状)

さて、自分の作っている PhotoLinkViewer には「他のブラウザで開く」機能があります。例えば画像の開くアプリで PhotoLinkViewer をデフォルトのアプリに指定していて、その後画像だけではなくウェブサイトが見たくなった時などに重宝します。

これはどのように実現しているかというと、

startActivity(Intent.createChooser(new Intent(Intent.ACTION_VIEW, uri), getString(R.string.intent_title)))

として行っています。 createChooser を用いることでこのアプリをデフォルト設定している時でもアプリ選択画面が現れるようにしています。

しかし、この機能が Andorid 6.0 からうまく動かなくなってしまい、デフォルト設定していればまた PhotoLinkViewer が立ち上がってしまうようになりました。

続きを読む

Raspberry pi 2 に GitLab を入れた

最近体調が悪いです。

さて、今回は自宅の Raspberry pi に GitLab を導入した話です。

GitLab とは、GitLab Inc. が開発しているサービスで、GitHub のクローン的なやつです。といってもインターフェースまでそっくりというわけではないですし、GitLab 独自の機能もあります。

昔は気持ち悪い生き物のアイコンで有名だったのですが、最近ロゴが変わってスッキリしました。

GitLab は自分のサーバーに設置することができ、さらにオープンソースの "Community Edition" なら無料です。無料でも十分な機能が使えそうでした。

導入理由

僕は書いたコードは GitHub で大抵オープンソースにしているのですが、レポートを tex で書いているのをオープンにするわけにもいかないので private repository にしようかなあと迷っていました*1

実際 private repository でもよかったのですが、 .xlsx とか .numbers 的なファイルもそこそこあったので外部に上げるのになんとなく抵抗があり*2、GitLab で管理することにしました。元々興味もあったし。

導入

*1:元々は Raspberry pi のあるディレクトリ上にレポジトリを作っていたのですが、webから気軽に見れないのが不便だなあと感じたので

*2:でかいバイナリや、どんな情報あるかわからない xlsx をGitHubにアップロードするのがなんとなく好まなかった

続きを読む

Android Studio 2.0 preview で Instant Run を使ったら最高だった

この記事は KMC アドベントカレンダー 1日目 の記事です。

さて、先日 Android Dev SummitAndroid Studio 2.0 (以下 AS 2.0) が発表されましたね。この会自体は結構前から告知されていたのですがまさかこんな機能が来るとは思っていませんでした。

Android Developers Blog: Android Studio 2.0 Preview

目玉機能は 'Instant Run' というもので、デバッグ中コードを書き換えた時に差分を高速にビルドし、 再インストール・Activityを再起動せずとも アプリのコードを変えられるというものです*1。実際にそんなことがありえるのか...?と疑いたくなりますが、動画も上がっているし正しそう。

これは自分で試してみるしかない!ということで試してみた話です。

Android Studio 2.0 preview をインストール

*1:Android 4.0 以上で使えるらしいです

続きを読む