2014年8月10日日曜日

ブログを引っ越しました

お引っ越ししました

はてなブログです。 
今後ははてなで更新を行います。今後ともよろしくお願いします。

http://sakebook.hatenablog.com/

2014年7月28日月曜日

Android Studioの構成で、既存のプロジェクトをEclipseからAndroid Studioへ移行する

EclipseとAndroid Studioではプロジェクトの構成が異なる

ビルドシステムが異なるので、構成も異なります。

Eclipse
.
├── AndroidManifest.xml
├── assets(アセットなど)
├── bin(自動生成)
├── gen(自動生成)
├── libs(ライブラリなど)
├── project.properties
├── res(リソースなど)
│   ├── drawable
│   ├── layout
│   ├── menu
│   ├── values
│   └── xml
└── src(ソースなど)

Android Studio
.
├── プロジェクト名.iml
├── app
│   ├── app.iml(自動生成)
│   ├── build(自動生成)
│   ├── build.gradle
│   ├── libs(ライブラリなど)
│   └── src
│       └── main
│           ├── AndroidManifest.xml
│           ├── assets(アセットなど)
│           ├── java(ソースなど)
│           └── res(リソースなど)
│               ├── drawable
│               ├── layout
│               ├── menu
│               ├── values
│               └── xml
├── build(自動生成)
├── build.gradle
├── gradle(自動生成)
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties(Gradleのバージョンを変えるときに稀にいじる)
├── gradle.properties(ビルドするときの変数などを記述)
├── gradlew(自動生成)
├── gradlew.bat(自動生成)
├── local.properties(Android SDKのパスなどを記述)
└── settings.gradle(ビルドするモジュールを記述)



Android Studioから Eclipseのプロジェクトをインポートする

Preview以前は無かった気がするのですが、Android Studioから直接インポートできるようになっていました。
Eclipseからエクスポートする場合と比べて、プロジェクトの構成まできちんと変換してくれます!
これでAndroid Lに触れますね。



既存のリポジトリを活用したい

Android Studioからインポートすればうまいことできるのですが、SCMの設定はうまく引き継がれません。
そういうときは、Android Studioで空のプロジェクトを作り、そこに既存のプロジェクトから、必要なフォルダ/ファイルだけ外部参照してあげると良い感じになります。

Subversionの場合は以下のようにします。

[studio app]$ svn propedit svn:externals . --editor-cmd=vi
リポジトリ/libs libs

[studio main]$ svn propedit svn:externals . --editor-cmd=vi
リポジトリ/res res
リポジトリ/assets assets
リポジトリ/AndroidManifest.xml AndroidManifest.xml
[studio java]$ svn propedit svn:externals . --editor-cmd=vi
リポジトリ/パッケージ パッケージ


複雑でないプロジェクトならこれで解決します。こうすることによって、EclipseとAndroid Studio同時に開発を進めることが出来ます!環境が異なるのであまりお勧めできませんが、会社などでいち早くAndroid Studioを検証したいときなどに使えると思います。



参考

Qiita / EclipseからAndroid Studioに移行する
うさがにっき / EclipseからAndroidStudioへの開発環境移行、疑問編
WEBTECH WALKER / svnコマンドの覚え書き



2014年7月26日土曜日

Maven Centralに自作ライブラリを登録するまでの長い道のりと挫折と回り道

ライブラリを簡単に使えるように

Maven Centralというところに登録すればライブラリの導入が簡単になるらしいということで、自作ライブラリを登録した。

  • Maven
    • プロジェクト管理ツール。ビルドもできるし、依存性も解決してくれるらしい。

環境

  • Eclipse() : 4.2 Juno
    • 通常のAndroidプロジェクトを作成。
    • AndroudStudio版も調べます!てか今後は全部移行すべき。
  • Eclipse ADT Plugin : 22.6
  • Apache Maven : 3.1.1

Sonatypeアカウント作成

  • Maven Centralにライブラリを登録するために必要。
    • Sonatypeのリポジトリを通して公開する。
  • https://issues.sonatype.org/

EclipseプロジェクトのMaven対応

  • プラグインを入れてなければ入れる
    • Maven Integration for Eclipse
  • Configure -> Convert to Maven
    • pom.xml が作成される(pom = Project Object Model)
      • 作成時の項目は後から変更できる。
      • GroupId
      • com.github.sakebook
      • ArtifactId
      • DialogHelper
      • Version
      • 0.0.1
    • Packaging
      • jar
    • Name
      • DialogHelper
    • Description
      • Easy way to make dialog for everyone.

  • 変更前の.classpath

 
 
 
 
 
 



  • 変更後に追加される
...
 
  
   
   
  
 
...
 
  
   
  
 
 
  
   
  
 
...


  • 変更前の.project

    DialogHelperSample
    
    
    
    
        
            com.android.ide.eclipse.adt.ResourceManagerBuilder
            
            
        
        
            com.android.ide.eclipse.adt.PreCompilerBuilder
            
            
        
        
            org.eclipse.jdt.core.javabuilder
            
            
        
        
            com.android.ide.eclipse.adt.ApkBuilder
            
            
        
    
    
        com.android.ide.eclipse.adt.AndroidNature
        org.eclipse.jdt.core.javanature
    

  • 変更後に追加される
...
        
            org.eclipse.m2e.core.maven2Builder
            
            
        
...
    
        org.eclipse.m2e.core.maven2Nature
        com.android.ide.eclipse.adt.AndroidNature
        org.eclipse.jdt.core.javanature
    
...

  • 作成されるpom.xml

  4.0.0
  sample.convert.maven
  MavenConvertSample
  0.0.1
  MCS
  sample
  
    src
    
      
        maven-compiler-plugin
        3.1
        
          
          
        
      
    
  


JREが、J2SE-1.5に変更されるので、プロジェクトデフォルトに戻す。
* BuildPath -> Configure Build Path -> Java Build Path -> Libraries -> JRE SystemLibrary -> Edit -> Workspace default library

    pom.xmlの設定

    • Mavenでビルドする際に必要な記述を追加していく。
      また、Maven Centralに登録して皆が使えるようにするには、誰が作ったのか?どのようなライセンスなのか?なども記述しないといけない。先に完成系を張っておく。
    
        4.0.0
    
        
            org.sonatype.oss
            oss-parent
            7
           
    
        com.github.sakebook
        DialogHelper
        0.0.1
        jar
        DialogHelper
        Easy way to make dialog for everyone.
        https://github.com/sakebook/android-library-dialog-DialogHelper/
    
        
            
                Apache License 2.0
                http://www.apache.org/licenses/LICENSE-2.0
                repo
            
        
    
        
            https://github.com/sakebook/android-library-dialog-DialogHelper
            scm:git:git://github.com/sakebook/android-library-dialog-DialogHelper.git
            scm:git:git://github.com/sakebook/android-library-dialog-DialogHelper.git
        
    
        
            
                sonatype-nexus-staging
                Nexus Staging Repository
            https://oss.sonatype.org/service/local/staging/deploy/maven2/
            
        
    
        
            
                sakebook
                Shinya Sakemoto
                sakebook@gmail.com
                http://sakebook.blogspot.com/
                
                    developer
                
            
        
    
        
            GitHub
            https://github.com/sakebook/android-library-dialog-DialogHelper/issues
        
    
        
            UTF-8
            UTF-8
            UTF-8
            UTF-8
            4.1.1.4
            16
            r7
            1.6
            3.1.1
        
    
        
            
                
                    com.google.android
                    android
                    ${android.version}
                    provided
                
                
                    com.google.android
                    annotations
                    ${android.version}
                
                
                    com.google.android
                    support-v4
                    ${android.support.version}
                
            
        
    
        
            ${base.dir}src
            
                
                    res
                     
            
            
                
                    
                        org.apache.maven.plugins
                        maven-compiler-plugin
                        3.1
                        
                            ${java.version}
                            ${java.version}
                            true
                            ${project.build.sourceEncoding}
                            ${project.reporting.outputEncoding}
                        
                    
                    
                        com.jayway.maven.plugins.android.generation2
                        android-maven-plugin
                        3.8.2
                        
                            ${project.basedir}/AndroidManifest.xml
                            
                                ${env.ANDROID_HOME}
                                ${android.platform}
                            
                        
                        true
                    
                    
                        org.apache.maven.plugins
                        maven-javadoc-plugin
                        2.9
                            
                                ${project.build.directory}
                            
                    
                    
                        org.apache.maven.plugins
                        maven-source-plugin
                        
                            
                                package
                                
                                    jar
                                
                            
                        
                    
                
            
            
                
                    org.apache.maven.plugins
                    maven-release-plugin
                    2.4
                    
                        ${project.build.sourceEncoding}
                        ${project.reporting.outputEncoding}
                        forked-path
                        true
                    
                
            
        
    
        
        
            
                release-sign-artifacts
                
                    
                        performRelease
                        true
                    
                
                
                    
                        
                            org.apache.maven.plugins
                            maven-gpg-plugin
                            1.4
                            
                                ${project.build.sourceEncoding}
                                ${project.reporting.outputEncoding}
                            
                            
                                
                                    sign-artifacts
                                    verify
                                    
                                        sign
                                    
                                
                            
                        
                    
                
            
        
    
    
    

    • parent
      • 親プロジェクト。sonatypeのレポジトリを利用するため。
    • licenses
      • プロジェクトのライセンス。
    • scm
      • プロジェクトのソースコード管理システムを記述。
    • distributionManagement
      • リモートリポジトリにでプロイするために必要な情報を記述。
    • developers
      *プロジェクトの開発者を記述。 貢献者がいる場合はcontributorsへ書く。
    • issueManagement
      • バグ管理システムを記述。
    • properties
      • 変数を定義。pluginで同様のプロパティ名を持つ場合、pomに記述した内容が用いられる。
    • dependencyManagement
      • 依存関係を定義。dependenciesのみで定義した場合との違いは、Managementで括ると、子pomに依存関係は、明示的に宣言しないといけない。その代わりバージョンは親pomのものが継承される。
    • build
      • buildに関する情報を定義。
      • sourceDirectory
        • ソースディレクトリを相対パスで定義。今回はEclipseのプロジェクトをConvertしたので、通常のMavenプロジェクトとは構成が異なる。
      • resources
        • リソースを定義。ソースと同様に、EclipseのプロジェクトをConvertしたので、通常のMavenプロジェクトとは構成が異なる。
      • pluginManagement
        • 依存関係を定義。dependenciesのみで定義した場合との違いは、Managementで括ると、子pomに依存関係は、明示的に宣言しないといけない。その代わりバージョンは親pomのものが継承される。
      • plugins
        • プラグインに関する情報を定義。
    • profiles
      • プロジェクトのプロファイルを定義。環境に依存する設定を記述。今回はperformReleaseビルド時のみmaven-gpg-pluginを利用するように。

    • ローカルの設定やpasswordの設定は ~/.m2e/setting.xmlに記述。
    
        
            
                
                sonatype-nexus-staging
                xxxxxxxxx
                xxxxxxxxx
            
        
        
            
                android-sdk
                
                    
                    xxxxxxxxxx/xxxxxxx
                
            
        
        
            android-sdk
        
    
    
    

    issue作成

    • 先ほど作成したSonatypeで、リポジトリを作成してもらうようにissueを作成します。
      • 僕が作成したissueはこちらです。Group Idに問題があり、やりとりがありました汗
      • 作ってもらったら、今度はライブラリをデプロイしたときにまたコメントしましょう。

    pgp署名確認

    • Maven Centralに登録するには、公開物に対して署名をしなければなりません。
    • 未インストールの場合はこちらから。

    鍵作成

    • 聞かれる値はデフォルト値でOK
    $ gpg --gen-key
    
    • 作成された鍵の確認
    $ gpg --list-keys
    
    • 対象ファイルの署名
    $ gpg -ab FILE
    
    • 署名の確認
      • sub鍵で署名されていないか確認
        • 45yH63G3 の様な8文字が鍵のID
        • pub(公開鍵) のIDと一致していればOK
    $ gpg --verify FILE
    
    • 公開鍵の配布
    $ gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 45yH63G3
    
    • 確認
      • 45yH63G3 が帰ってくればOK
    $ gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 45yH63G3
    

    コマンドラインからビルド

    プロジェクトのルートディレクトリで

    $ mvm clean package
    
    • ライブラリ本体のjarを作成
    $ mvm deploy
    
    • distributionManagementに記述したリポジトリにライブラリ本体とpom.xmlをデプロイ。
    • デプロイしたら、次のURLからstagingリポジトリに上がったことを確認できます。
    $ mvm source:jar
    
    • ソースファイルのjarを作成
    $ mvm javadoc:jar
    
    • javadocのjarを作成
    $ mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=pom.xml -Dfile=target/DialogHelper-0.0.1.jar -Dgpg.passphrase=yourpassphrase
    
    • jarを署名してリポジトリにアップロード
    $ mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=pom.xml -Dfile=target/DialogHelper-0.0.1-javadoc.jar -Dclassifier=javadoc -Dgpg.passphrase=yourpassphrase
    
    • javadocを署名してリポジトリにアップロード
    $ mvn gpg:sign-and-deploy-file -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ -DrepositoryId=sonatype-nexus-staging -DpomFile=pom.xml -Dfile=target/DialogHelper-0.0.1-sources.jar -Dclassifier=sources -Dgpg.passphrase=yourpassphrase
    
    • sourceを署名してリポジトリにアップロード
    • ここまでくれば、Stagingにある自分のリポジトリをCloseして、しばらくすると、Releaseできます。

    issue追記

    • Releaseが完了したので、その旨をコメントに記入しましょう。
    • 返事があり、その後しばらくすると、登録完了です!

    使ってみる

    • pom.xml
    
    
        com.github.sakebook
        DialogHelper
        0.0.1
        jar
    
    
    • build.gradle
    compile 'com.github.sakebook:DialogHelper:0.0.1'
    

    初めて上がったときは感動です!サンプルアプリや、CI済みなどがわかるとより使われやすくなると思います。皆さんも自作ライブラリを作り、職場や家でも簡単に使い回せるようにしましょう!


    参考

    #侍ズム / 【最新版】Maven Central Repository へのライブラリ登録方法 #maven
    @vvakameの日記 / JsonPullParser が Maven Central Repository に入るようです
    ノウハウ共有サイト!Knowledge Enabling / appendix. mavenセントラルリポジトリに公開する
    エルピーベ / MacOSXでGnuPGを使おう
    SlideShare / Maven基礎
    Unlimited Island / pom.xml

    2014年4月23日水曜日

    テックブログまとめに掲載されたブログのRSSまとめ

    全部一気に登録したい

    成長志向のエンジニアならブックマークすべきテックブログまとめ
    に掲載されていたものを読みたいと思ったので、RSSをまとめました。 

    以下がまとめです。

    【国内WEB・IT企業】
    クックパッド http://techlife.cookpad.com/feed/
    サイバーエージェント http://feedblog.ameba.jp/rss/ameblo/principia-ca
    ミクシィ http://alpha.mixi.co.jp/atom.xml
    ヤフー http://techblog.yahoo.co.jp/atom.xml
    グリー http://labs.gree.jp/blog/feed/ 
    DeNA http://developers.mobage.jp/blog?format=rss
    LINE http://tech.naver.jp/blog/?feed=rss2
    Googlehttp://googledevjp.blogspot.com/feeds/posts/default
    セプテー二 http://labs.septeni.co.jp/?feed=rss2
    VOYAGE GROUP http://tech.voyagegroup.com/index.rdf
    GMOメディア http://tech.gmo-media.jp/rss
    はてな http://developer.hatenastaff.com/feed
    サイボウズ http://developer.cybozu.co.jp/tech/?feed=rss2 
    ヌーラボ http://nulab-inc.com/ja/feed/
    Hackist(博報堂アイ・スタジオ) http://hackist.jp/?feed=rss2
    DMMツチノコブログ http://tsuchinoko.dmmlabs.com/?feed=rss2 
    KLab(DSAS開発者の部屋) http://dsas.blog.klab.org/index.rdf

    【国内スタートアップ】
    VASILY http://tech.vasily.jp/feed/
    nanapi http://nanapi.co.jp/blog/feed/
    Pixiv http://times.pixiv.net/rss
    Qiita http://blog.qiita.com/rss 
    Wantedly http://engineer.wantedly.com/feed 
    MUGENUP http://mugenup-tech.hatenadiary.com/feed

    【海外(英語)】
    Dropbox https://tech.dropbox.com/feed/
    Evernote http://blog.evernote.com/tech/feed/
    Twitter https://blog.twitter.com/api/blog.rss?name=engineering
    Facebook https://www.facebook.com/feeds/page.php?id=9445547199&format=rss20 ※FacebookページのRSSを使いました。
    Tumblr http://engineering.tumblr.com/rss
    Pinterest http://engineering.pinterest.com/rss
    GitHub https://github.com/blog/engineering.atom
    Yammer http://eng.yammer.com/feed/ 
    AirBnB http://nerds.airbnb.com/feed/
    Square http://feeds.feedburner.com/corner-squareup-com
    Foursquare http://engineering.foursquare.com/feed/
    Hulu http://tech.hulu.com/blog/feed/
    Spotify http://labs.spotify.com/feed/


    何を使って読むか 

    feedlyでもいいですが、Feetrを使いました。適宜置き換えてください。
    今回は、

    国内WEB・IT企業 http://myfeetr.com/s/78
    国内スタートアップ http://myfeetr.com/s/79
    海外(英語) http://myfeetr.com/s/80 

    で3つのレシピを作成したので、Feetrユーザはご活用ください。


    参考
    CAREER HACK
    PushBullet
    フィード(RSS)を取得・検出します
    バイラルクラブ 1分で終わる!FacebookページのRSSフィードを取得する3つのステップ

    2014年4月6日日曜日

    MacでChef + Vagrant 環境構築メモ

    環境だけを手っ取り早く整えたい方用

    用語などは別サイトで学んでください。


    Chefのインストール
    OfsCodeが提供しているChef配布用スクリプト

    $ curl -L https://www.opscode.com/chef/install.sh | sudo bash
    


    knifeの設定
    色々聞かれるがとりあえず全部Enterで良い

    $ knife configure
    
    

    VirtualBoxのインストール
    サイトから入手
    [VirtualBox download]


    Vagrantのインストール
    gemでの配布は更新されていないのでサイトから入手
    [Vagrant download]


    VagrantでVM初期設定
    VagrantloudからOSイメージを探す
    [Vagrantcloud]

    例:centos-6.5の場合
    vmの設定を置きたいディレクトリで下記のコマンドを入力

    $ vagrant init chef/centos-6.5
    
    

    作成されたVagrantfileを編集
    コメントアウトを外す
    ➡ Vagrantを入れた環境からアクセスできるようにし、VMのIPを192.168.33.10に設定

    config.vm.network "private_network", ip: "192.168.33.10"
    
    

    VM起動
    Vagrantfileがあるディレクトリで

    $ vagrant up
    
    

    ssh接続
    ~/.ssh/config に下記を追加編集
    sshコマンドでvmへ接続できるように

    HOST 192.168.33.*
    
     IdentityFile ~/.vagrant.d/insecure_private_key
    
     User vagrant
    
    

    下記のコマンドでも可
    ssh設定を出力して書き出し

    vagrant ssh-config --host 192.168.33.* >> ~/.ssh/config
    
    

    内容は以下

    Host 192.168.33.∗
    
      HostName 127.0.0.1
    
      User vagrant
    
      Port 2222
    
      UserKnownHostsFile /dev/null
    
      StrictHostKeyChecking no
    
      PasswordAuthentication no
    
      IdentityFile /Users/$HOST_NAME/.vagrant.d/insecure_private_key
    
      IdentitiesOnly yes
    
      LogLevel FATAL
    
    

    ssh接続(まだしなくても良い)

    $ ssh 192.168.33.10
    
    

    knife-soloインストール
    gemコマンド

    $ sudo gem install knife-solo
    
    

    XCode5.1でClangエラーが出る場合は以下のコマンドを用いる

    $ sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install knife-solo
    
    

    ~/.chef/knife.rb に下記を追加編集
    tmpディレクトリの設定とCookbookをインポートする際の設定

    knife[:solo_path] = '/tmp/chef-solo'
    
    cookbook_path            ['./cookbooks']
    
    

    knife-soloでChef Solo環境を生成
    Chefレポジトリを作成
    レポジトリを管理したいディレクトリで実行
    下記だと chef-repoレポジトリが作成される

    $ knife solo init chef-repo
    
    

    合わせてgit管理
    Chefレポジトリ直下で以下のコマンドを入力
     
    $ git init
    
    $ git add .
    
    $ git commit -m "first commit"
    
    

    Chefレポジトリ直下で以下のコマンドを入力
    vmにChefをインストール

    $ knife solo prepare vagrant@192.168.33.10
    
    

    作成されたjsonファイルをコミット

    $ git add nodes/
    
    $ git commit -m "add node json file"
    
    

    Cookbook作成
    nginx というCookbook作成
    Chefレポジトリ直下で以下のコマンドを入力

    $ knife cookbook create nginx -o site-cookbooks
    
    

    Recipe編集
    site-cookbooks/nginx/recipes/default.rb を編集

    package "nginx" do
    
      action :install
    
    end
    
    
    
    service "nginx" do
    
      supports :status => true, :restart => true, :reload => true
    
      action [ :enable, :start ]
    
    end
    
    
    
    template "nginx.conf" do
    
      path "/etc/nginx/nginx.conf"
    
      source "nginx.conf.erb"
    
      owner "root"
    
      group "root"
    
      mode 0644
    
      notifies :reload, 'service[nginx]'
    
    end
    
    
    
    

    上記recipeで使うtemplate(nginx.conf.erb)を作成
    site-cookbooks/nginx/templates/default/ に作成

    user nginx;
    
    worker_processes 1;
    
    error_log /var/log/nginx/error.log;
    
    pid /var/run/nginx.pid;
    
    
    
    events {
    
      worker_connections 1024;
    
    }
    
    
    
    http {
    
      include /etc/nginx/mime.types;
    
      default_type application/octet-stream;
    
    
    
      server {
    
        listen <%=node['nginx']['port']%>;
    
        server_name localhost;
    
        location /{
    
          root /usr/share/nginx/html;
    
          index index.html index.htm;
    
        }
    
      }
    
    }
    
    
    
    Cookbookをインポートする
    centosでnginxを取得するにはyumのEPELというアドオンパッケージのyumレポジトリを有効にする必要がある
    yumのCookbookを取得

    $ knife cookbook site vendor yum
    
    $ knife cookbook site vendor yum-epel
    
    

    Nodeの設定
    jsonファイルはサーバ(node)の状態を示す
    nodes/192.168.33.10.json
    下記のように編集

    {
    
      "nginx":{
    
        "port":80
    
      },
    
      "run_list":[
    
        "yum-epel", "nginx"
    
      ]
    
    }
    
    

    vmへChef Soloを実行
    実行後、http://192.168.33.10 へアクセスし、nginxが起動しているか確認

    $ knife solo cook vagrant@192.168.33.10
    
    

    以上。お疲れさまでした。

    参考
    Amazon.co.jp 入門Chef Solo
    Qiita 「入門 Chef Solo」 on MacOSX ではまったこと
    2noの日記 【Mac】clang によるビルドエラー【Xcode 5.1】

    2014年3月18日火曜日

    ダイアログのレイアウトをカスタムできる、DialogFragmentを呼ぶライブラリ (Android)

    DialogFragment

    ダイアログのレイアウトをカスタムする機会があったので、なるべく使い回しができるようライブラリを作成しました。
    APIレベル13から、showDialogは非推奨となってますので、DialogFragmentで実装しました。

    android-library-dialog-DialogHelper



    設定

    ライブラリプロジェクトとして取り込んでください。
    APIレベル10以上じゃないと動作しません。



    ソース

    一行で呼べます。
    カスタムレイアウトも利用できるメソッドを用意してあります。
    DialogHelper.callDialog(this, "title", "message", "positive", "negative", "neutral", "tag");
    



    今後

    キャンセルの有効無効や、その他のオプションを追加していくといたずらに引数が増えていくのでオプションを作成したい。
    Builderで組み立てられるようにしたい。
    テーマも変更できるといいな。
    pull requestや要望があると喜びます。



    参考

    Y.A.Mの雑記帳 / Android DialogFragmentを使うときの注意点。
    Y.A.Mの雑記帳 / Fragment から Activity にコールバックする方法
    暇なメモ帳 / DialogFragmentでのカスタムダイアログ実装方法
    ケーワン・エンタープライズのエンジニアメモ(`・ω・´)ゞビシッ!! / Fragmentを使ってみる(画面回転時のライフサイクルについて)