Unyablog.

のにれんのブログ

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 以上で使えるらしいです

続きを読む

Android の CI テストがたまに落ちるので戦った

前々回と前回の記事です。

結局 travis でも CircleCI でも確率的に落ちるじゃん的な話でした。

travis だと 1/2、 CircleCI だと 1/4 ぐらいで落ちてしまいます。さすがにこれだけ落ちると鬱陶しいのでなんとか直したいところ。

ということで直すために頑張った話です。

状況

続きを読む