No'jReply今年一躍注目を浴びることとなったKotlin。UdemyでJavaプログラマ向けのコースが94%引きだったので購入した。個人的にはもう少しアカデミックなedXの方が好みだけどコースがないのでこちらに。今朝Udemyでコースを探していて$200だったのが同日夜に$12なのでお買い得感はある。コースの内容と質次第ではあるけれど。Kotlinでマヤのそろばんアプリを作成してみようかな。No'jReplyボタンのデザインを少し変えた。No'jReplyマヤの象形文字を使ったアプリ開発の練習として以前作ったアプリをアップデートしてみた。No'jReplygitを使い始めたのは比較的最近だ。博士論文の時に使っていればなぁ。Latex、StataとRのソースコードの管理は大分楽だったはず。そんなこと言っても仕方ないけど。gitだけど初めはGithubを使っていた。ここってプライベートのレポジトリの作成は有料版のみで、また、その他の理由もあり他の方法がないかと模索。考えついたのがオンライン・ストレージをレポジトリとして利用出来ないかということ。Driveは大学のお陰でほぼ無制限で使えるのでこれを活用しない手は無い。他からのアクセスもGithubや他のサービスと比べて楽そうだし。Driveを使って紹介するけど、他のストレージ・サービスでも同じ方法が使えるはず。gitの説明は省くとしてWindowsの場合、gitをインストールするところから始まる。ココでダウンロード出来ます。Cygwinにもgitが含まれているらしいけど、最近使ってないんだよなぁ。gitの準備が出来たら次にTortoiseGitをダウンロードしてインストール。管理したいプロジェクトが保存してあるフォルダをローカル・レポジトリとする。ここにレポジトリを作成」という選択肢があるのでこれを選択。その際、以下のダイアログが表示されるはず。「Bareを生成」という項目のチェックはされていないと思うけどそのままで。その理由は括弧内を見れば分かるはず。これは作業ディレクトリなので。OKを押すと次のメッセージが表示される。フォルダを開いてみると.gitというフォルダが作成されていることに気付く。このフォルダ以外の全てのファイルを選択して右クリックを押すと追加という項目が現れるはずなので選択する。それから「全てを選択/解除」にチェックを入れてOKを押す。追加が無事終了したらコミットへ。メッセージ欄に何かしらの記入をする必要がある。私は日付と変更内容を記入する様にしている。コミットしたらプッシュ画面が現れるはず。これを一旦キャンセルして消す。次にローカル・レポジトリのフォルダがあるディレクトリに戻る。そこで何も選択しないで右クリックを押すと「Gitクローン(複製)という項目を選択する。すると下記のウインドウが表示される。URLにローカル・レポジトリのフォルダのアドレス、ディレクトリにはGoogleDriveのフォルダ内に作成したリモート・レポジトリのフォルダを選択。通例としてはローカル・レポジトリのフォルダ名に「.git」を付ける。ここで気をつけなくてはならないのが、今回は「Bareレポジトリにクローン」にチェックを入れること。リモート・レポジトリは作業ディレクトリではないから。ここのチェックを忘れないように!こういうこと。これでやっとOKを押せる。最後にローカル・レポジトリからリモート・レポジトリへのプッシュを行う。ローカル・レポジトリのフォルダを選択して右クリック、TortoiseGitを選択するとプッシュの選択肢が現れる。したリモート・レポジトリのフォルダを選択。下のウインドウが出るのでURLにリモート・レポジトリのディレクトリを記入。OKを押すとプッシュ画面が現れるので再度OKを押す。プッシュ出来れば成功!リモート・レポジトリにあるものをローカルに引っ張って来るには逆の方法を使えば良い。リモート・レポジトリから新規に指定したローカル・ディレクトリにコピーする形となる。Driveやメジャーなストレージ・サービスに限定されることもなく、手軽にGitを使えるのでこの方法は重宝している。Playに登録されていることを前提としていることが多いけど、これが少しやりずらく感じる。いうのも登録してからAdMobの広告とアプリをリンクしようとしても、AdMobのデータベースに登録したアプリが現れるのに二、三日要するからだ。全ての作業を一度に行いたいと思うせっかちな人には向かない。いうことで、広告の実装からアプリ登録前までに行う方法を紹介。この方法だと、その後アプリを登録して、リンクの作業を数日後に行えば良いのでAdMobの実装をアプリ登録数日後まで待つ必要がない。プロジェクトが求められる。AdMobのサイトに行きまずは収益化ボタンを押す。収益化のページ上で「新しいアプリを収益化」ボタンを押す。下のページが現れるので「アプリを手動で追加」を選択してアプリ名を記入。それからプラットフォームを選択。「アプリを追加」ボタンをクリック。広告のフォーマットを選択。それから広告ユニット名の記入。私は単純にアプリ名を記入しているが広告を2つ以上作成する場合は、各々分かりやすい名前を付ける必要がある。保存したら次の画面が現れるはず。広告ユニットIDを取得出来る。このIDが後ほど必要となる。「FIREBASEにリンク」をクリック。スキップすることも可能らしいけれど、ここではFIREBASEを利用することとする。これまでに同じパッケージ名を用いたプロジェクトをFirebaseで作成しているなら次の選択肢が現れる。なければプロジェクトを新規作成する。次に1.の「こちら」をクリックして設定ファイル(google-services.json)をダウンロード。Androidプロジェクトにこのファイルを取り込む。StudioでProjectを選択。Studio上の「app」を選択した上でペーストする。google-services.jsonが「app」下に配置されているはず。「Project」から「Android」に変更してProjectレベルのbuild.gradleを開く。'com.google.gms:google-services:3.0.0'上記のコードを記入。それからAppレベルのbuild.gradleを開く。'com.google.firebase:firebase-ads:10.0.1'ここに記入。'com.google.gms.google-services'を最後の行として記入。build.gradleを同期する。次にstrings.xmlを開き広告ユニットID1広告ユニットID先程取得した広告ユニットIDを含むコードを挿入。広告を入れたいアクティビティのレイアウト・ファイルを開いてxmlns:ads="http://schemas.android.com/apk/res-auto"1xmlns:ads="http://schemas.android.com/apk/res-auto"を記入。AdViewのコードも追加する。1続いて広告の読み込みに必要なネット接続のパーミッションの取得をマニフェスト・ファイルで行う。1広告を表示したいアクティビティ(.java)にコードを記入。インポートするコード。com.google.android.gms.ads.MobileAds;それからAdViewオブジェクトの宣言。mAdView;最後にonCreate内に以下のコードを追加。getResources().getString(R.string.banner_ad_unit_id));分かりやすい場所であれば何処でも。エミュレータで広告が表示されるか確認してみる。Playに登録してから数日後に広告とアプリをAdMob上でリンクする。「アプリのリンクを設定」をクリックしてアプリを検索して見つかれば選択して終了。