Potatotips_7

1,835 views

Published on

PotatoTips #7でLTした資料。

Published in: Engineering
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,835
On SlideShare
0
From Embeds
0
Number of Embeds
517
Actions
Shares
0
Downloads
7
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Potatotips_7

  1. 1. iOSエンジニアの前で Androidエンジニアが ドヤ顔しようとしたら 大変だった話 Potatotips #7 NAMITO SATOYAMA
  2. 2. 自己紹介 なまえ: 里山 南人 (さとやま なみと) しゅっしんち: 鹿児島県 奄美市 しょぞく: 株式会社ディー・エヌ・エー Japanリージョンゲーム事業本部 ビジネス開発統括部 メディアディベロップメント部 ぞくせい: 渋谷の企業を渡り歩く酔っぱらいAndroidエンジニア ガジェヲタ(所有Android端末 20台程度) 現在のメイン端末: moto x 日本Androidの会のコミュニティ運営委員やってた (ABCは数年間実行委員として参加してた) ツイッターほぼやってません! Facebook : https://www.facebook.com/ns.face
  3. 3. Androidエンジニア の 憂鬱
  4. 4. こんなことないですか?
  5. 5. (cocoa) Podで いいライブラリ 見つけましたー。 俺も同じようなライ ブラリ作ったよー。 iOSエンジニア iOSエンジニア Android エンジニア Android エンジニア 業務中のクライアントエンジニアあるある
  6. 6. (cocoa) Podで 公開してくださいよ 〜。 公開しちゃおうか な〜。 iOSエンジニア iOSエンジニア Android エンジニア Android エンジニア 業務中のクライアントエンジニアあるある
  7. 7. iOSエンジニア iOSエンジニア Android エンジニア Android エンジニア 業務中のクライアントエンジニアあるある リア充 先輩、eclipseで外部から もってきたプロジェクトが関連 付けられませんー。
  8. 8. iOSエンジニア iOSエンジニア Android エンジニア Android エンジニア 業務中のクライアントエンジニアあるある ・・・・・・
  9. 9. よくわからないけど iOSまわり のエコシステム かっこいい
  10. 10. Androidエンジニアも なにがしかのライブラリを 公式な場所に共有できる ようにしたい
  11. 11. そういえば buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradl e:0.9.+' } } あった
  12. 12. 男は黙って MavenCentral でしょ
  13. 13. 「適当なライブラリを作って MaveCentralで公開して AndroidStudioで取得し てドヤ顔をしよう」 そしてリア充になりたい
  14. 14. やろうと思ったら、すでに先駆者がまとめてた http://qiita.com/KeithYokoma/ite ms/e9ee24e7f6a62623f2fb MixiのKeithYokoma さんのQiita 「Android のライブラリプロジェクトを 爆速で Maven Central にデプロイす る」
  15. 15. 爆速で終了
  16. 16. とはならなかった。 結構たいへん。
  17. 17. OSS初心者が 公開するまでの 道のりを 紹介します
  18. 18. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. AndroidStudioでライブラリプロジェクトを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  19. 19. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  20. 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. 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. 22. よっしゃ。 あとはMavenにあげたらおしまいや!
  23. 23. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  24. 24. 2.SonaTypeのJIRAに登録 Registrationすると500エラー。 そのアカウントでログインするとPermissionエラーで問い合わせすら出来ない。。。 2回やって2回失敗。2個のメアドを登録メアドとしてあきらめるはめに。。。 数日待って、登録したら普通に登録されたので障害っぽい。 SLA的にアレなので、捨てアドレスになっても良いように Gmailのエイリアス(acount+xxx@gmail.xom)で試したほうがよさげ。 MavenCentralリポジトリのメンテナンスを行い、 管理ツールを提供しているSonaTypeのJIRAアカウントを作る。 https://issues.sonatype.org
  25. 25. こんなところでつまづくなんて。 いや、たまたまだ。 たまたま障害がおこったんだ! まだだ、まだ終わらんよ!
  26. 26. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. PGPツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  27. 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. 28. 先が長すぎる。。。 あきらめようかな。。。 いや、まだだ、まだ終わらんよ!
  29. 29. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  30. 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. 31. すんなりいったっぽいけど 始めてのものをいくつも使ってるから 公開されなかったら、問題の切り分けできな さそうだ。 不安だ−。 いや、まだだ、まだ終わらんよ!
  32. 32. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  33. 33. 6. リリース作業 SonaTypeのMaven管理ツールNEXUSにアップすると、ステージングリリース状態 なので、NEXUSにログインしてリリース作業をする必要あり https://oss.sonatype.org ① Staging Repositories ② 自分のリリースを探す ③ 内容がOKならClose ④ Release出来るように なるのでRelease とにかくわかりづらい。あっているかどうかもよくわからずやる怖さ…orz
  34. 34. ツールわかりづれー。 心が折れそうだー。 いや、まだだ、まだ終わらんよ!
  35. 35. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  36. 36. 7. AndroidStudioで確認 リリース作業をしてしばらくすると、 build.gradleに以下の記述をすることでMavenCentralから ライブラリを取得出来るようになった。 ・・・ dependencies { compile 'com.ns- developer:tagcloudview:0.1.0' } ・・・ でも、AndroidStudioでの検索にはナゼか出てきません ><; 誰か教えて!!
  37. 37. (ぜえ、ぜぇ) や、やっと辿り着いた。。。
  38. 38. AndroidのライブラリをMavenCentralにあげるためにやったこと 1. ライブラリを作る 2. SonaTypeのJIRAに登録 3. SonaTypeのJIRAからプロジェクト作成依頼 4. GPGツールのインストールと署名の作成 5. Mavenへアップロードするgradleのプラグインでデプロイ 6. リリース作業 7. AndroidStudioで確認 8. ドヤ顔
  39. 39. ドヤ顔できない
  40. 40. ドヤ顔の前に疲弊
  41. 41. 結論
  42. 42. ドヤ顔出来るほど 素敵なエコシステム じゃなかった 一度やってしまったら、かなり便利なのですが、 万人うけするフローじゃないのです。。。orz
  43. 43. Googleさん シンプルな エコシステム 作ってください><;
  44. 44. ご清聴 ありがとうございました

×