2015_12_25AndroidのwebViewでオレオレ証明書に対処する他

毎日会社で新しく学んだこと・調べたことをメモベースで公開することにしました! なんとなく知識が蓄積していないかを可視化するためにも。

build.gradle内のbuildTypesにタスクを作成する

noboru.hatenablog.jp

vividcode.hatenablog.com not fount buildConfig()とか言われたけどな

android webViewの設定

javascriptの設定など

http://y-anz-m.blogspot.jp/2010/07/androidwebview.htmly-anz-m.blogspot.jp

オレオレ証明書の対処法・仕組み

http://y-anz-m.blogspot.jp/2012/08/androidwebview-https.htmly-anz-m.blogspot.jp

開発用のwebViewを表示するためにこういう対処が必要になりました。 この対処法にいきつくまでに、SSLの知識?とか開発用のサーバーがどんな構造になっているかを問題を切り分けて考えることが必要でした。 (つまり時間かかった〜涙)

2015_12_24onDestroyで参照を切るもの他

最近続けている今日学んだことのメモ(調べたこととか、調べて参考にした記事)を公開していきます。 Androidメイン。

onDestroyで参照を切らなきゃいけないもの

  • ポイントは"Activity"への参照が残らないようにするという視点
  • なんでも切れば良いワケじゃないね

Utilクラスに移譲するもの

  • 経験則だが、versionNameを取得するものなどは、Utilクラスに移動することを検討したほうがいい

@Nullableについて

  • 何らかの原因で返り値が null になるケースがあるときは、メソッドに@Nullable アノテーションを付けておく。(例えばtry/catch が必要になっているとか)
  • 何故つけるかというと、もし他の人がこの画面に追加実装することになった場合でも、null が返されるケースがあることを明示的に書いておけば、実装者はそれに気をつけて実装が可能なので、バグ・不具合の発生を抑えれる。

nullが入り得るかどうかでバグにどれだけ繋がるか、その情報をどう伝えるかについて

d.hatena.ne.jp

nullは型を持つかどうかの話(というよりoptionalやmaybe?(使ったことない)の話) bleis-tift.hatenablog.com

TargetSDKversionの話

onlineconsultant.jp

minSdkVersionとTargetSdkVersionの関係

何も考えずに実装していたなぁと実感。 最近出たAPIは確認しておくべきなのかもしれない。

qiita.com

ちなみに今のプロジェクトはminSdkVersion=16,targetSdkVersion=22となっていた

じゃあcompileSdkVersionは? http://assam-at-night.blogspot.jp/2015/05/androidcompilesdkversionbuildtoolsversi.htmlassam-at-night.blogspot.jp

qiita.com

一方compileSdkVersionにはcompileSdkVersion=23になっていたので、targetとcompileがバージョン違うと何がいけないのかな?

Argumentsとは

bundleにsetArguments()するときのキーの値の名前の流れでARGS_HOGEという名前にした方がいいよと指摘を受けて、あれ、argumentsってなんだっけとなった。引数やんけ

その流れで引数とパラメータの違いを説明している記事があったのでメモ。

blog.masahiko.info

Support Libraryについて

minSdkVersionとかTargetSdkやらはわかったけど結局supportLibraryって何が違うんだっけ?となったので改めて。

vividcode.hatenablog.com

2015_12_22AndroidのversionNameを取得する他

Fragmentでsetterを使わない理由

DialogFragmentを実装したため、復習。 わかっているようで、わかっていないような…。ココらへんの話定期的に復習したい。

http://y-anz-m.blogspot.jp/2012/04/androidfragment-setarguments.htmly-anz-m.blogspot.jp

Materialデザインの要素名

qiita.com

photoshopvip.net

上に載ってるコンポーネントのことをなんて名前つけたらいいのかなと

OutOfMemory対策

onDestroyで参照切るお話。 結局何を切るべきで何は切らなくてもよいのか?みたいなところを見ていた

http://htomiyama.blogspot.jp/2012/08/androidoutofmemoryerror.htmlhtomiyama.blogspot.jp

ButterKnifeのunbind

qiita.com

上と関連してFragmentの場合は、onDestroyView()でunbindしようと書いてある。 ソースレビューで指摘されたため何が必要で何が必要じゃないか気になった。

たまに@InjectViewが使われているソースコード見つけて!?となることがあったのでありがたい記事。

AndroidのversionNameを取得する

techbooster.jpn.org

qiita.com

PackageManager manager = ((Context) mAboutThisAppsView).getPackageManager();
            PackageInfo packageInfo = manager.getPackageInfo(
                    ((Context) mAboutThisAppsView).getPackageName(), 0);
            mAboutThisAppsView.initViews(packageInfo.versionName);

AndroidManifestに書いてあるversionNameを取ってくると書いてあったが、 実際にはapp/build.gradleに記述してあるversionNameをとってきているみたい

 defaultConfig {
        applicationId "jp.co.hoge.hogeproject"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0.0"
    }

同じファイルの中でcommitを分けたいとき

qiita.com

git add -pを使うとよい。 自分はtigでaddを管理しているので、オプションがあればもっとコミットログが綺麗になりそう!

結局Contextとは

http://individualmemo.blog104.fc2.com/blog-entry-41.htmlindividualmemo.blog104.fc2.com

毎回わかった気になって毎回わかってなかったてなってる気がする

アプリ全体の情報を統括してる

というイメージ。わかるけど使いこないしてるかわからん

androidではシステムが元々結構resource用意してくれてる

http://developer.android.com/intl/ja/reference/android/R.string.htmldeveloper.android.com

ok cancelなどよく使うものはある。

Dialogの二重起動をどう防ぐか

こういったメソッドが参考になるみたいな fragmentManagerのexecuteを忘れててずっとnullがかえってくるからどうしようかとおもった

stackoverflow.com

ここのをコピペしてきたっぽいものを吟味せずに使ってて指摘された。

http://eggdev.mobaegg.com/2012/08/blog-post_4.htmleggdev.mobaegg.com

2015_12_21Javaのオーバーロード他

毎日情報量が多くて蓄積していない感覚を感じているので何かアウトプットを、と思っているものの、毎日記事を書こうとすると後回しになってしまうので、 毎日参考に見た記事を頭にいれたいものベースでピックアップして載せてみる。 いつまで続くか知らないけど。

Gradleで認証エラー

Error:(1, 0) Cause: unable to find valid certification path to requested target

ameblo.jp

mike-neck.hatenadiary.com

→結局社内でアクセスしていたbuild設定ファイルのしわざでした。ビビる。

ローカルとリモートのブランチ名を変更する

gist.github.com

URLの管理はURI

koseki.hatenablog.com

  • 文字列の比較ではなく、ドメインの比較なども入ってくるとUriで管理しておいた方が後々便利である

github.com

こんなかんじでUri.parseで初期化・定数化しているみたいだった

暗黙的インテント

http://mitoroid.com/category/android/android_implicit_intent.phpmitoroid.com

  • 他のアプリの機能を使ってデータを開く
  • 今回はデータの表示をURLを渡した
  • これはブラウザが開くことになる

Drawableで角丸縁ボタン

qiita.com

strokeとsolid、考えたらわかるんだけど久しぶりにどうするんだっけ、とまた調べてしまった…

Javaオーバーロード

www.javadrive.jp

返り値の型だけが違うだけだとコンパイルエラーになってしまう。

vim

  • ctl+[でエスケープするの癖つけよう

コマンドライン

  • ctl+jでエンターと同じ
  • ctl+aで先頭に戻る
  • ctl+fで進む
  • ctl+bで戻る

javadocについて

qiita.com

javadocも奥が深い。文字だけ書いてるだけじゃなくて色々使いこなせるようになりたい限り…。 <code></code>を使って書くだけでもわかりやすさなど変わりそう…

Androidのguidesやら

何か形になればよいな〜日記的な感じでもよいし。ということで初日終了。

Potatotips(iOS/Android開発Tips共有会)#24に参加しました

ずっと行ってみたいと思っていたpotatotipsにブログまとめ枠として初参加してきました!

ブログまとめ枠て何かすごいこと書かなきゃいけないのでは…!とこわいこわい!でしたが、 エイヤで申し込んで参加してきちゃいました。

概要

  • PotatotipsとはiOS/Android開発Tips共有会です
  • 参加者全員がスピーカーという趣旨(?)らしく、一人5分で結構な人数を回す
  • ビール飲みながらゆるく
  • Tips共有後にはお寿司を食べながら懇親会…!
  • 毎回主催されている会社が違うみたい(今回はGoodPatchさんでした)

詳しくは connpass.com

当日は途中からの参加となったのですがメモしていたところからまとめます

Android

Analytics - event properties-

www.slideshare.net

joaoさん(drivemode) * Google Analytics * appversionで分けて解析 * signボタンが横にしたときにはみ出る * 発見が遅れてコンバージョン下がるのをなくすためにどういうデータを取ればいいのか * facebookのdevice year classがすごいよ(アニメーション出し分けたり)

9patchの異常な仕様

dagezi.github.io

dageziさん(quipper)

  • メンテが面倒くさい
  • エディタ使いにくい、dpiごとに必要
  • バリエーションごとに必要
  • テストが面倒
  • 広がる部分をコードでかける
  • プラグイン作った (作り方気になる!確認したい)

SWIG for Android

www.slideshare.net

橋本さん(goodpatch)

  • SWIGを動かしてみる
  • NDK動かせるようになった(NDK?)
  • soファイル作るのが手間だった
  • jniファイル?
  • nativeコード(C/C++)をJAVAでラップしたもの→何に使う?

RxJava+Retrofit

(資料見つからず…)

nakahara shun さん

  • Reactive Extensions Java
  • リアクティブプログラミング
  • 遅延実行,同期処理と非同期処理で処理をまとめられる
  • RxAndroidもあるよ
  • AndroidScheduler,Handler Scheduler

Is Activity God? - The MVP Architecture-

www.slideshare.net

KENJUさん(Recruit Technologies)

  • AndroidにおけるMVP設計の話
  • MVCと名前が変わっただけ?
  • modelとviewでコミュニケーションがない

リソースの整理整頓

speakerdeck.com

yuichi maekawaさん (Cyber Agent)

  • RejectKaigiのくだり、面白かった
  • drawableのリソースを再利用する
  • 色しか変わらないリソースがたくさんある
  • 明度を変えて色を変える、ColorFilterで色を変える

感想

  • 初めてAndroidの会社外のイベントに参加してみて、やっぱり会社ごとに開発環境・標準って全然違うんだ!(小並感)
  • 自分の知らない開発を知っている皆様スゴイ
  • いろんな視点&いろんな方法が聞けて刺激になった!
  • まだペーペーすぎて発表なんてできないと思ってるけど、いずれこういうところでアウトプットできるようになりたい
  • エイヤ!でブログまとめ枠で行ってよかった。次もまとめ枠でいきたい。

Rails Girls Tokyoに参加してきました

9/11,12にRails Girls Tokyoというイベントに参加してきました。

2年前くらいにJS Girlsというイベントに参加したことがあって、そこで知り合った人のTwitterで知り申し込みました。

Rails Girls - Japanese

申し込みは想定よりも多かったとのことで初心者に限定して抽選が行われるくらい人気。

参加したきっかけ

入社してから何かとrubyやらrailsのことを耳にするようになりました。

あの会社・サービスはrailsで開発しているとかとか。

一番大きかったのは、Javaの研修中に同期のできる人たちがJavaMVCを理解するためにrailsのコードを見て理解した、と言ってたこと。

railsってなんかしらんけどすごいんや〜と思っていたところで、このイベントを見つけたので参加してみました。

もちろんrailsの知識は0です。

Day 1

一日目は金曜の夜からインストールデイということでrubyrailsをインストールしたり、

railsのプロジェクトを作ってみたり、こちらの

http://tryruby.org/levels/1/challenges/0

rubyのコードがためせるサイトで試してみたり。

新しい言語を始めるときって、環境設定が大変なんだな、ってイメージだったのですが想像以上に環境を作るのが簡単で驚きでした。

Day2

二日目は朝から夕方までrailsのワークショップ。

scaffoldを使ってフォームからDBに挿入する機能を作ってみたりなど、簡単なwebアプリを作ってみるところをやりました。

会社の研修ではJavaフルスクラッチで開発していたので、え!これでできちゃうの!という驚きばかり。

研修でJavaをやったからこそ中身はどういう動きをしているのかを聞くのがとても楽しかったです。

Ruby界は温かい世界

そんなにたくさんイベントに参加していないくせに言うのもなんですが、

このrails girls、かなり手厚かったです。参加者25名につき、メンターさんが15名ほどいたのではないでしょうか。

メンターさんつきっききりで1:2くらいで教えてもらっていました。なかなかこんなイベントはないと思います。

後半のLTで話されていた営業事務からrailsエンジニアとして就職された方が

railsじゃなきゃ続けられていなかった」

おっしゃっていたことが印象的でした。

ruby界隈の方たちはコミュニティの結束が強く、初心者向けの勉強会にもすごい方たちが参加してくださるそうです。

実際に当日のメンターさんにもrubyの開発者の方や書籍を執筆されている方など、すごい方たちが参加してくださっているそうです。

ということで、かなり刺激を受けた濃い2日間を過ごしました。 定期的に勉強会なども開いているようなので、参加してみたくなりました。

技術への関わり方として、開発者だけではなく教育者だったりこういうきっかけを提供する立場というのもあるんだなぁと印象的でした。

会社以外にこういうコミュニティがあったらとても楽しい。実際によく知っている会社の方の話など聞けてとっても楽しかったです。

またこういう機会があったら積極的に参加していきたいと思います。

お酒飲んだら、知らない人とも話せる!