garumとmeteoriteと私 3nd edition ver0.04

42
GarumMeteoriteと私 3nd EDITION Ver0.04 オープンソースライブラリ研究会

Upload: shinobu-okano

Post on 10-Feb-2017

1.057 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: GarumとMeteoriteと私 3nd Edition ver0.04

GarumとMeteoriteと私3nd EDITION Ver0.04

オープンソースライブラリ研究会

Page 2: GarumとMeteoriteと私 3nd Edition ver0.04

About me

• Shinobu Okano(@operandoOS)

• Mercari, Inc.

• Android Framework Code Reading の勉強会運営

• Android最高!!(遠い目…

Page 3: GarumとMeteoriteと私 3nd Edition ver0.04

※いつもどおり 釣りタイトルです

Page 4: GarumとMeteoriteと私 3nd Edition ver0.04

なぜライブラリを作るのか??

Page 5: GarumとMeteoriteと私 3nd Edition ver0.04

なぜライブラリを作るのか??

• 既存の仕組みや作業がクソすぎる

• 当然楽したいから

• キレイ事言ってる場合じゃねぇぞ!!

Page 6: GarumとMeteoriteと私 3nd Edition ver0.04

ライブラリを作るときに大事にしてること

• ライブラリ名は提供する機能に準じない

• RailsのKaminari

• SwiftのAlamofire

• AndroidのDagger

• キラキラname最高!!(子につけるのは別...

Page 7: GarumとMeteoriteと私 3nd Edition ver0.04

ライブラリを作るときに大事にしてること

• Github上で公開してるならGithub Pagesを作る

Page 8: GarumとMeteoriteと私 3nd Edition ver0.04

ライブラリを作るときに大事にしてること

• Github上で公開してるならGithub Pagesを作る

Page 9: GarumとMeteoriteと私 3nd Edition ver0.04

ライブラリを作るときに大事にしてること

• Github上で公開してるならGithub Pagesを作る

全然アクセスない

Page 10: GarumとMeteoriteと私 3nd Edition ver0.04

Androidのライブラリ作成で気をつけたいこと

• ProGuard

• 導入のしやすさ(Mavenでいっぱつ導入)

• Bintray便利

• 導入方法とUsageを書く

• Licenseの表記

• Sample Code or Wiki

Page 11: GarumとMeteoriteと私 3nd Edition ver0.04

Androidのライブラリ作成で気をつけたいこと

• Javadoc

• NDK使うなら対応してるcpufeatures

• ARM,x86,MIPS

• UIライブラリなら動きのanimation gifとか貼ってあげよう

• 動きを確認できるアプリをGoogle Playに上げるケースもある

Page 12: GarumとMeteoriteと私 3nd Edition ver0.04

Androidのライブラリ作成で気をつけたいこと

• Androidはライブラリが標準API化されることがある

• DEPRECATEDって書いてあげよう

Page 13: GarumとMeteoriteと私 3nd Edition ver0.04

Garum

Page 14: GarumとMeteoriteと私 3nd Edition ver0.04

Garumってどんなライブラリ??

Annotation style SharedPreferences

https://github.com/operando/Garum

Page 15: GarumとMeteoriteと私 3nd Edition ver0.04

Shared Preferences

The SharedPreferences class provides a general framework

that allows you to save and retrieve persistent key-value pairs

of primitive data types.

Page 16: GarumとMeteoriteと私 3nd Edition ver0.04

Shared Preferences

SharedPreferences pref = getSharedPreferences("FilaName", MODE_PRIVATE);SharedPreferences.Editor editor = pref.edit();editor.putString("key", value);editor.putInt("key int", valueInt);editor.commit();

Page 17: GarumとMeteoriteと私 3nd Edition ver0.04

Shared Preferences

• たったこれだけなのにアンチパターンが多すぎる

• 使い方が複雑すぎる

Page 18: GarumとMeteoriteと私 3nd Edition ver0.04

SharedPreferences Anti Pattern

• getSharedPreferencesが色んなところに書いてある

• 何でもかんでも一つのPreferenceに保存する

• セキュアじゃないMODE使ってる

• Key名がベタ書き→定数化してない

• グローバルな変数格納用に使用される

• などなど・・・

Page 19: GarumとMeteoriteと私 3nd Edition ver0.04

Garumはどのようにして生まれたのか?

• Android 開発アンチパターン勉強会 #1でLTすることになった

• http://connpass.com/event/10028/

• http://www.slideshare.net/shinobuokano7/shared-preferences-anti-pattern

• Androidのアンチパターンなんて腐るほどあるわ

• Shared Preferencesへのイライラが限界だった...

Page 20: GarumとMeteoriteと私 3nd Edition ver0.04

Garum - Initialize

Garum.initialize(getApplicationContext(), true);

Page 21: GarumとMeteoriteと私 3nd Edition ver0.04

Garum - Model

@Pref(name = "app_status")public class AppStatus extends PrefModel {

@PrefKey public String appName;

@PrefKey public int startupCount;

@PrefKey public boolean showNotification;}

Page 22: GarumとMeteoriteと私 3nd Edition ver0.04

Garum - Save

AppStatus appStatus = new AppStatus();appStatus.appName = "Garum";appStatus.startupCount = ++appStatus.startupCount;appStatus.showNotification = true;appStatus.save();

Page 23: GarumとMeteoriteと私 3nd Edition ver0.04

Garumの思想

• よりオブジェクトを意識した設計に

• 直感的な操作

Page 24: GarumとMeteoriteと私 3nd Edition ver0.04

Meteorite

Page 25: GarumとMeteoriteと私 3nd Edition ver0.04

Meteoriteってどんなライブラリ??

This library provides the ability to upload a screenshot

of your app to Slack.

Page 26: GarumとMeteoriteと私 3nd Edition ver0.04

Meteoriteはどのようにして生まれたのか?

• Roppongi.aar #2とpotatotips #23で発表することになった

• アプリのデザイン崩れとかのフィードバック方法に悩みを感じてた

• 隕石という名のスクリーンショットをSlackに落下させる話

• http://www.slideshare.net/shinobuokano7/slack-55455661

• Upload a screenshot to Slack

• http://www.slideshare.net/shinobuokano7/upload-a-screenshot-to-slack

Page 27: GarumとMeteoriteと私 3nd Edition ver0.04

スクリーンショットどうしてたか

QA

Engineer

Page 28: GarumとMeteoriteと私 3nd Edition ver0.04

スクリーンショットどうしてたか

QA < 画面崩れてまーす

Engineer

Page 29: GarumとMeteoriteと私 3nd Edition ver0.04

スクリーンショットどうしてたか

QA < 画面崩れてまーす

Engineer スクリーンショット REDMINEに貼ってくださーい>

Page 30: GarumとMeteoriteと私 3nd Edition ver0.04

QA何かしらの方法でスクリーンショットを取って貼る

スクリーンショットどうしてたか

Engineer

Page 31: GarumとMeteoriteと私 3nd Edition ver0.04

QA何かしらの方法でスクリーンショットを取って貼る

< 貼りましたー

スクリーンショットどうしてたか

Engineer

Page 32: GarumとMeteoriteと私 3nd Edition ver0.04

QA何かしらの方法でスクリーンショットを取って貼る

< 貼りましたー

Engineer見まーす

ありがとうございます!>

スクリーンショットどうしてたか

Page 33: GarumとMeteoriteと私 3nd Edition ver0.04

クソすぎる

Page 34: GarumとMeteoriteと私 3nd Edition ver0.04

• スクリーンショット撮りたい画面でNotificationをタップをタップして、必要な情報入れてSlackにPostする

• https://github.com/operando/Meteorite

Meteorite

Page 35: GarumとMeteoriteと私 3nd Edition ver0.04

Demo

Page 36: GarumとMeteoriteと私 3nd Edition ver0.04

Meteoriteの思想

• より素早いフィードバックと簡単な操作感

• 自分たちが好きなツールを限界まで使い倒す

• 1Post1URLが発行されるのでチケットにそれはる

• オープンなフィードバックとエビデンス

• 誰かの仕事を楽にしたいという気持ち

Page 37: GarumとMeteoriteと私 3nd Edition ver0.04

Page 38: GarumとMeteoriteと私 3nd Edition ver0.04

私ってどんなライブラリ??

• PDD(Presentation Driven Development)でライブラリを作ってきた

• 誰かの仕事を楽にしたいという気持ちがとても強い

• ユーザ目線を重視したものづくり

• 誰かが感じている不便さや疑問をそのままにしない

Page 39: GarumとMeteoriteと私 3nd Edition ver0.04

ライブラリ作りはProduct作りと同じ

• 自分の哲学をのせる

• 使う人のことを考えて設計する

• ライブラリ一つ管理できねーやつが

いいProduct作れるとは思えない(なんかごめん…

Page 40: GarumとMeteoriteと私 3nd Edition ver0.04

もらったissue達…

Page 41: GarumとMeteoriteと私 3nd Edition ver0.04

管理できてねー

Page 42: GarumとMeteoriteと私 3nd Edition ver0.04

Thanks!!