こんにちは。学校も始まり最近は健康な時間に起きています*1。
今回は 手元の Android Studio からビルドのみをクラウドで行う ことによって快適な生活を手に入れる話です。
概要
- ビルドを移譲できる Android Sutudio のプラグインを書きました
- これを使ってクラウドのリッチなマシンでビルドを行い高速化
- ビルドのみが移譲されるので操作感は変わらない
- 実装は割りと無理矢理
*1:ちなみに現在風邪を引いて寝込んでいます
昔 Raspberry Pi に GitLab を入れた記事を書きました。
この時、重い重い言いながら運用していました*1が、ニヶ月ほど前にSDカードが壊れる事件が起きて、再構築した時に入れるのがめんどくさくて*2入れてませんでした。そもそもSDカードが壊れたのが GitLab をアップデートして reconfigure
中に突然再起動した後だったのでちょっと怖いというのもあります((
しかし4月になり実験用のレポジトリを作る必要が出てきたため、今回は GitLab をやめて GitWeb を使うことにしました。
続きを読む※実用性はほぼありません。
Andorid のビルドが最近遅くて、ブラウザで動画流しながら StackOverflow 調べながら twitter 流しながら…とやっているとすぐに mac がファンファンなりだして音声は途切れるわ熱くなるわという状態になります😭
メモリ 8GB だし、数年前の mac だから仕方ないといえばそうなのですが新しい mac を買うのはまだ早い気もする。
結局いい感じの IaaS を借りてそこでビルドすると早いのではという結論にたどり着き、ここ三週間ほどいろいろ試行錯誤してる中で出てきた一つのネタです。
Android Studio をクラウドで動かしてリモート操作しよう
ビルドだけ Linux 側でやるのはコマンド打てばいい話なのですが、そうするとせっかくの IDE の機能を活かすことができません。どうやら ADB の remote port forward はできる*1という話を見たので、それなら向こう側で Android Studio ごと動かしちゃえばいいじゃんと考えました。
続きを読む自分の所属している京大マイコンクラブ (KMC) では毎年3月に春合宿を行っており、60分ほど講座を行います。
今年は iOSアプリ作成入門 を行いました。
また、書いたけど没になった Android 編も公開しました。
続きを読む今回は画面遷移の実装、データの編集、データの永続化あたりです。
Intent
は Segue
と言うらしい。
Segue
にもいろんな種類の遷移があって、それぞれアニメーション等が微妙に違う。こういうのが apple っぽくて良いですね。NavigationController
は Activity
みたいなもので、 ViewController
は Fragment
みたいなものだというざっくりした認識を得た。Push Segue
と Modal Segue
というのがある。
NavigationController
も入れ替わるが、前者ではそんなことない。prepareForSegue
は自分から離れるときに呼ばれる。
ViewController
が降ってくるので、そこのメンバ変数に入れたいものを突っ込む…らしいIntent
に一旦突っ込むので直接入れるのは意外だったViewController
が降ってくるのでそこからデータを受け取るとのこと。メソッド一つ設定するだけでいい感じの編集UIができあがる。
編集UI、横スクロールした時に View
がはみ出していてつらい気持ちになった。
厳しい雰囲気 pic.twitter.com/u2AU7UKMDD
— のにれん(うにゃ)) (@nonylene) February 29, 2016
iPhone6S だったらならなかった。あまり横幅を広くするなということだろうか。
Android よりも楽にモデルごと保存できるようでよかった。この程度になると Android では SQLite 使わないといけなさそう?
こうして公式チュートリアルは終わりました。あとは自分で軽いアプリを作ってみたいと思います。
一日目
1日目の記事はこちらです。
さて今日は二日目です。果たしてサークルの合宿に間に合うのか…
今日はモデルを定義して TableView
を作成しました。
Androidでいう ListView
と RecyclerView
の中間っぽい。
ListView
という感じ。。iOS はこんなに簡単に ListView
が作れるの最高ですね…!
でも RecyclerView
のほうが型的には安心だという気がした。
tableView.dequeueReusableCellWithIdentifier("MealTableViewCell", forIndexPath: indexPath) as! MealTableViewCell
ってなんだよ…そこクラス入れていい感じに型安全にできるじゃん…!って思ってしまう。
とにかく文字列で指定という感じ、obj-C の遺産だったりするんだろうか。
ViewController
のクラスを指定するときに存在しないクラスを指定してもビルドできちゃうんですね
StoryBoard
上でパーツ削除した時、コードから消すのは手でチマチマやるのは少しつらい。
StoryBoard
に存在しないのにビルド通るのか。最高だけど UI 周り案外いろいろだるいのでは、と思った日でした。