Your SlideShare is downloading. ×
  • Like
Potatotips_7
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Potatotips_7

  • 1,288 views
Published

PotatoTips #7でLTした資料。

PotatoTips #7でLTした資料。

Published in Engineering
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,288
On SlideShare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
3
Comments
0
Likes
6

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. iOSエンジニアの前で Androidエンジニアが ドヤ顔しようとしたら 大変だった話 Potatotips #7 NAMITO SATOYAMA
  • 2. 自己紹介 なまえ: 里山 南人 (さとやま なみと) しゅっしんち: 鹿児島県 奄美市 しょぞく: 株式会社ディー・エヌ・エー Japanリージョンゲーム事業本部 ビジネス開発統括部 メディアディベロップメント部 ぞくせい: 渋谷の企業を渡り歩く酔っぱらいAndroidエンジニア ガジェヲタ(所有Android端末 20台程度) 現在のメイン端末: moto x 日本Androidの会のコミュニティ運営委員やってた (ABCは数年間実行委員として参加してた) ツイッターほぼやってません! Facebook : https://www.facebook.com/ns.face
  • 3. Androidエンジニア の 憂鬱
  • 4. こんなことないですか?
  • 5. (cocoa) Podで いいライブラリ 見つけましたー。 俺も同じようなライ ブラリ作ったよー。 iOSエンジニア iOSエンジニア Android エンジニア Android エンジニア 業務中のクライアントエンジニアあるある
  • 6. (cocoa) Podで 公開してくださいよ 〜。 公開しちゃおうか な〜。 iOSエンジニア iOSエンジニア Android エンジニア Android エンジニア 業務中のクライアントエンジニアあるある
  • 7. iOSエンジニア iOSエンジニア Android エンジニア Android エンジニア 業務中のクライアントエンジニアあるある リア充 先輩、eclipseで外部から もってきたプロジェクトが関連 付けられませんー。
  • 8. iOSエンジニア iOSエンジニア Android エンジニア Android エンジニア 業務中のクライアントエンジニアあるある ・・・・・・
  • 9. よくわからないけど iOSまわり のエコシステム かっこいい
  • 10. Androidエンジニアも なにがしかのライブラリを 公式な場所に共有できる ようにしたい
  • 11. そういえば buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradl e:0.9.+' } } あった
  • 12. 男は黙って MavenCentral でしょ
  • 13. 「適当なライブラリを作って MaveCentralで公開して AndroidStudioで取得し てドヤ顔をしよう」 そしてリア充になりたい
  • 14. やろうと思ったら、すでに先駆者がまとめてた http://qiita.com/KeithYokoma/ite ms/e9ee24e7f6a62623f2fb MixiのKeithYokoma さんのQiita 「Android のライブラリプロジェクトを 爆速で Maven Central にデプロイす る」
  • 15. 爆速で終了
  • 16. とはならなかった。 結構たいへん。
  • 17. OSS初心者が 公開するまでの 道のりを 紹介します
  • 18. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. AndroidStudioでライブラリプロジェクトを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  • 19. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  • 20. 1.ライブラリを作る とりあえず簡単なカスタムViewでも作ってみようということで タグをレンダリングして横幅を計算して自動改行するシンプルなViewをつくってみた。 TagCloudLinkView (https://github.com/namito/TagCloudLinkView) TagCloudLinkView view = (TagCloudLinkView) findViewById(R.id.test); view.add(new Tag(1,“さとやま”)); view.add(new Tag(1,"なみと")); view.add(new Tag(1,"です")); view.add(new Tag(1,"しょんぼい")); view.add(new Tag(1,"ライブラリ作ったよ")); view.add(new Tag(1,"for potatotips")); view.add(new Tag(1, "xxxxxxxxxxxxxxxxxxxxxx")); view.add(new Tag(1, "aaaaaaaaaaaaaaaaaaaaaa")); view.drawTags(); view.setOnTagSelectListener(new TagCloudLinkView.OnTagSelectListener() { @Override public void onTagSelected(Tag tag, int position) { // selected. } }); view.setOnTagDeleteListener(new TagCloudLinkView.OnTagDeleteListener() { @Override public void onTagDeleted(Tag tag, int position) { // deleted. } }); Tagクラスを突っ込んでdrawTagsするだけ リスナを設定して、選択と、削除テキストの選択を検知できる
  • 21. <com.ns.developer.tagview.widget.TagCloudLinkView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/test" android:layout_width="500px" android:layout_height="match_parent" android:padding="4dp" android:background="#ffffff" app:isDeletable="false" app:tagLayoutColor="#ffff0000" app:tagTextSize="8sp" app:tagTextColor="#ff9acd32" app:deletableTextSize="8sp" app:deletableTextColor="#ff9acd32"/> CustomのAttributeで、タグ色や、文字サイズ/色、削除機能のon/offを切り替えられる 1.ライブラリを作る とりあえず簡単なカスタムViewでも作ってみようということで タグをレンダリングして横幅を計算して自動改行するシンプルなViewをつくってみた。 TagCloudLinkView (https://github.com/namito/TagCloudLinkView)
  • 22. よっしゃ。 あとはMavenにあげたらおしまいや!
  • 23. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  • 24. 2.SonaTypeのJIRAに登録 Registrationすると500エラー。 そのアカウントでログインするとPermissionエラーで問い合わせすら出来ない。。。 2回やって2回失敗。2個のメアドを登録メアドとしてあきらめるはめに。。。 数日待って、登録したら普通に登録されたので障害っぽい。 SLA的にアレなので、捨てアドレスになっても良いように Gmailのエイリアス(acount+xxx@gmail.xom)で試したほうがよさげ。 MavenCentralリポジトリのメンテナンスを行い、 管理ツールを提供しているSonaTypeのJIRAアカウントを作る。 https://issues.sonatype.org
  • 25. こんなところでつまづくなんて。 いや、たまたまだ。 たまたま障害がおこったんだ! まだだ、まだ終わらんよ!
  • 26. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. PGPツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  • 27. 3.SonaTypeのJIRAからプロジェクト作成依頼 SonaTypeのJIRAから、オープンソースプロジェクトの作成依頼チケットを出す。 問題なく対応されても、2〜3日かかる。 Community Support - Open Source Project Repository Hosting - Sonatype JIRA → http://goo.gl/fjqYu3 適当に申請したらgroup_idが、実在するドメインじゃなかったので、差し戻された… githubのドメインにしなさいと言われたけどなんかアレだったので個人のドメイン取得して申請した。 2回やりとりが発生し、合計5日ほどかかった。
  • 28. 先が長すぎる。。。 あきらめようかな。。。 いや、まだだ、まだ終わらんよ!
  • 29. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  • 30. 4.GPGツールのインストールと署名の作成 ■ GPGツール □ keyを作成して署名管理サーバにアップロード gpg --gen-key □ 署名管理サーバに公開鍵をアップロードする gpg --keyserver hkp://pool.sks-keyservers.net --send-keys <keyのID> 5. Mavenへアップロードするgradleのプラグインでデプロイ □ Macに入ってないのでインスコ https://gpgtools.org/ ■ Gradle MVN push プラグインでビルド&アップロード https://github.com/chrisbanes/gradle-mvn-push ※ 詳しくは上記githubに書いてある 1. USER_HOME/.gradle/gradle.propertiesの作成 2. AndroidStudio Projのrootにgradle.propetiesを作成 3. AndroidStudio Projのライブラリモジュールのbuild.gradleにプラグインの追加 4. AndroidStudio Projのライブラリモジュールにgradle.propertiesを作成 5. プロジェクト直下で、ビルドコマンド実行
  • 31. すんなりいったっぽいけど 始めてのものをいくつも使ってるから 公開されなかったら、問題の切り分けできな さそうだ。 不安だ−。 いや、まだだ、まだ終わらんよ!
  • 32. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  • 33. 6. リリース作業 SonaTypeのMaven管理ツールNEXUSにアップすると、ステージングリリース状態 なので、NEXUSにログインしてリリース作業をする必要あり https://oss.sonatype.org ① Staging Repositories ② 自分のリリースを探す ③ 内容がOKならClose ④ Release出来るように なるのでRelease とにかくわかりづらい。あっているかどうかもよくわからずやる怖さ…orz
  • 34. ツールわかりづれー。 心が折れそうだー。 いや、まだだ、まだ終わらんよ!
  • 35. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  • 36. 7. AndroidStudioで確認 リリース作業をしてしばらくすると、 build.gradleに以下の記述をすることでMavenCentralから ライブラリを取得出来るようになった。 ・・・ dependencies { compile 'com.ns- developer:tagcloudview:0.1.0' } ・・・ でも、AndroidStudioでの検索にはナゼか出てきません ><; 誰か教えて!!
  • 37. (ぜえ、ぜぇ) や、やっと辿り着いた。。。
  • 38. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  • 39. ドヤ顔できない
  • 40. ドヤ顔の前に疲弊
  • 41. 結論
  • 42. ドヤ顔出来るほど 素敵なエコシステム じゃなかった 一度やってしまったら、かなり便利なのですが、 万人うけするフローじゃないのです。。。orz
  • 43. Googleさん シンプルな エコシステム 作ってください><;
  • 44. ご清聴 ありがとうございました