Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebプログラマがAndroidアプリ開発をやってみた / infra_workshop_20...
Search
FORTE
September 02, 2018
Technology
0
130
WebプログラマがAndroidアプリ開発をやってみた / infra_workshop_20180902
FORTE
September 02, 2018
Tweet
Share
More Decks by FORTE
See All by FORTE
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
29
Micronautで入門!実践!サーバーサイドKotlin/sskm1_sample
fortegp05
0
9
ITエンジニアとして生きる技術/tlie-sample
fortegp05
0
260
入門!実践!Kotlin Compose Multiplatformでデスクトップアプリ開発! / cmd_01_sample
fortegp05
0
460
いろいろ実践!サーバーサイドKotlin Vol.2【サンプル】 / server_side_kotlin_3_2_sample
fortegp05
0
240
いろいろ実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_3_sample
fortegp05
0
420
まいにち続ける技術【サンプル】 / tech_to_continue_on_daily
fortegp05
0
700
【無料サンプル】もっと実践!サーバーサイドKotlin / server_side_kotlin_2_sample
fortegp05
1
340
技術同人誌によって得られたもの / infra-workshop-20200301_What_was_obtained_in_the_book
fortegp05
0
100
Other Decks in Technology
See All in Technology
強いチームと開発生産性
onk
PRO
35
11k
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
110
複雑なState管理からの脱却
sansantech
PRO
1
150
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
Engineer Career Talk
lycorp_recruit_jp
0
180
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
160
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
940
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
190
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
7
2.7k
Application Development WG Intro at AppDeveloperCon
salaboy
0
190
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.5k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
97
Making the Leap to Tech Lead
cromwellryan
133
8.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Statistics for Hackers
jakevdp
796
220k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
What's in a price? How to price your products and services
michaelherold
243
12k
Transcript
【ITエンジニア向け】 Webプログラマが Androidアプリ開発をやってみた【1 から始める】 - 2018/09/02 インフラ勉強会 - Twitter:@FORTEgp0
名前:FORTE(フォルテ) Twitter:@FORTEgp05 9月からスマホアプリ開発会社に、 未経験で転職した現Webプログラマです。 趣味:ゲーム(直近はMarvel's SPIDER-MAN購入予定)、 ネトゲ(DQ10、FF14(Tiamat))、スパロボ、ガンダム、ミステリ、SF、ガンプラ、 ミニ四駆(来週レース予定)、電子工作(ニキシー管時計)、ボドゲ(カタン好き)、 お酒(ビール、果実酒好き)、ニコニコ動画(ゆっくり実況動画UP) 自己紹介
スキル その他(業務経験あり言語): C/C++、Perl、basic、Tcl/Tk、VB、AS3など…
アジェンダ ・注意事項 ・お勉強の目的 ・Androidアプリの基本 ・MVVMについて ・今回開発したアプリ(Desire Manager)の概要 ・開発時にハマったこと ・リリース(オープンβ版)のやり方 ・感想
・終わりに
注意! あくまで個人的にお勉強した結果の共有になります。 そのため、この資料内の情報を活用する際は内容の正誤に気を つけてご利用ください。 なお私が勉強に用いた資料はすべてインターネットの情報か、私 が経験した内容になります。 なるべく出典は明示するように致します。 (出典はこのように青字下線でリンクを貼るようにします)
お勉強の目的 Sier(Web系業務sys) Web系 (BtoC) スマホアプリ開 発(BtoC) 2007年入社 2016年転職 2018年9月 未経験で転職
未経験で転職するから勉強しよう!
開発環境 開発環境のバージョンは以下の通りです。 Windows 10 HOME Version 1803, OS build 17134.228
Android Studio Version 3.1.4 出典:Android Studioのダウンロード 出典:公式のインストール方法(Mac含)
Androidアプリの基本 .apk ファイル インストール
Androidアプリの基本 インストール方法 .apk ファイル 自作 例:フォートナイト 検索してダウンロード 公式サイトから 直接ダウンロード 自作してUSBケーブルでイ ンストール
Androidアプリの基本 公式ドキュメントから個人的に重要と思う部分を抜粋。 ・AndroidはLinuxシステムで動作している。 ・Androidアプリは基本的にJava言語で記述される。 ・Android は各アプリのいずれかのコンポーネントを実行する必要 があるときプロセスを開始し、 それが必要なくなったときなどにプロセスをシャットダウンします。 出典:公式ドキュメント アプリケーションの基礎
Androidアプリの基本 開発環境 アンドロイドスタジオ (公式) インテリJアイディア (非公式だがAndroidStudioのベースらしい) その他 eclipseやVS Codeでも可能らしいが、 プラグインが必要と思われる。 出典:統合開発環境(IDE)はどれを使えば善いか?(独断と偏見の遥か彼方)#Android開発向け
今回はAndroidStudioを使用して開発しました
.apk ファイル Androidアプリの基本 主なファイル XAML(ザムル) (.xmlファイル) Java (.javaファイル) 見た目を管理するファイル 見た目”以外”を管理するファイル その他(画像とか設定とか)
Androidアプリの基本 XAML (.xmlファイル) 見た目を管理するファイル 実際の開発画面(抜粋)
Androidアプリの基本 XAML (.xmlファイル) 見た目を管理するファイル その他(画像とか設定とか) 実際の開発画面(抜粋)
設計方針について(MVVMの説明) ソフトウェア開発の世界では、 ソフトウェアアーキテクチャという設計方針のようなものがありま す。 AndroidアプリではMVVMという考え方があるので、 次のページからMVVMについて説明していきます。
MVVMについて 今回開発に用いた「ソフトウェアアーキテクチャパターン」は MVVM(Model View ViewModel)パターンの一種です。 ソフトウェアアーキテクチャ(Software Architecture)は、ソフトウェアコ ンポーネント、それらの外部特性、またそれらの相互関係から構成され る。また、この用語はシステムのソフトウェアアーキテクチャの文書化を 意味することもある。~中略~プロジェクト間でのコンポーネントとパ
ターンの設計を再利用することを可能にする。 出典:ソフトウェアアーキテクチャ
MVVMについて ソフトウェアアーキテクチャとは なるほどわからん。つまりソフトウェアアーキテクチャって何? 【自分なりの解釈】 自由すぎるシステム環境にある一定のルールと縛りを与える事で、コ ミュニケーションロスの低減や再利用を狙った考え方。 例:NASにファイル置く時にルールがないと崩壊しますよね? ある一定のルール(構造)に則って置くとみんなハッピーみたいな。
MVVMとは MVVMはModel、View、View Modelの略称。 ・ModelはUI以外(ビジネスロジックやデータソースへのアクセス等)を担当する (P.10で あげたJavaが該当する)。 ・Viewは、見た目を制御する部分(P.10であげたXAMLが該当する)。 ・ViewModelは、PDS(Presentation Domain Separation)を実現しつつ、 View(XAML)の都合を吸収する部分。
出典:MVVMとは? 勉強結果と参考資料の共有
ViewModelとは まとめ(図解) XAML (View) Java (ViewModel) Java (Model)
XAML(ザムル)について AndroidアプリのViewに一般的に用いられるXML言語。 その昔、Silverlightで使われていた(らしい) 似たようなものだと、 FLASHのFLEXではMXMLと言うものがあります。
PDS(Presentation Domain Separation)とは Presentation(UI)とDomain(その他の機能)を分けること。 PDSは以下のような経緯から生まれた(と理解した)。 ・UIはテストしづらいので、UI(View)とそれ以外を分けたい (UIは自動テストとかしづらいがJavaとかはしやすいので分けたい) ・Viewとそれ以外を分けると理解しやすい ・見た目の変更がその他の機能に波及しない(しづらい) (見た目の変更はよくあるので…)
・デザイナーとの分業の達成
View(XAML)の都合とは? 1.XAMLの特徴(コントロールの状態保持について) 操作に対してコントロールの状態を保持するには、 バインディングしたオブジェクトが必須(XMLだけではダメでJavaが必要) 無いとスクロールしただけで再描画されて状態が消える。 (チェックボックスのチェックが消えるなど) 2.バインディングしたオブジェクトからのみ操作可能な定義が存在する! XAMLはXML形式でコントロールの定義が可能だが、 中にはバインディングしたオブジェクトからのみ操作可能な定義が存在する。
ViewModelとは まとめ P.15で以下のように説明しました。 ViewModelは、PDS(Presentation Domain Separation)を実現しつつ、 View(XAML)の都合を吸収する部分。 つまり「見た目」とそれ以外(Java)を分離しつつ、 View(XAML)の都合であるオブジェクトが必要であるという部分を担保するのが ViewModelとなります。
ViewModelとは まとめ(図解) XAML (View) Java (ViewModel) Java (Model) オブジェクト化 データのやり取り 見た目とそれ以外の分割のため、
ViewとModelが直接やり取りはしない。 Presentation(UI) Domain(その他の機能)
今回開発したアプリの概要 今回はDesireManagerというアプリを開発しました。 現状ではオープンβテスト状態で公開済みです。 Android端末があればインストール可能です。 このアプリはもともとは自分用に開発したWebアプリを、 スマホアプリに移植したものになります。 (なのでUI/UXとかスゴイ適当です…) ▶Google Play
アプリの概要説明 ・やりたい事を管理するアプリ ・やりたい事を登録して、 それがやれたら実績を登録する。 ・実績はグラフで確認可能で、 振り返りに使える。 ・やりたい事は毎日やりたい事と、 そのうちやりたい事の2種類登録可。 ・データは端末内のローカルDB(sqlite)に保存する やりたい事リスト画面
アプリの概要説明 ・登録した実績は右図の様にグラフ化可能。 ・グラフは幅の都合で、 1ヶ月を10日ごとに3分割表示。 ・(画像では見切れてますが) グラフの下には表で今日の実績を表示。 実績リスト画面
アプリの概要説明 画面遷移 やりたい事リスト画面 過去の実績リスト画面 やりたい事リスト画面
アプリの概要説明 構成とデータの流れ sqlite View (画面) ViewModel Model 画面 データ入力・表示 データ読み込み 書き込み
SQL データベース
開発時にハマったこと 実際に開発してみてハマったことを いくつか紹介します。
デザインに何も表示されない問題 Hello World!を表示するだけの サンプルプロジェクトなのに、 「Hello World!」というテキストが デザイン画面に表示されない。
【正常時の開発画面】 ちゃんとラベルが 出ている。
【異常時の開発画面】 何も出てない…。
デザインに何も表示されない問題 原因 原因:開発環境が新しすぎた! Androidの開発環境はバージョン28が最新。 が、Android Studioが追いついていないようで、 28だとこういった現象が発生するらしい…。 インストールしてサンプルプロジェクトを作った直後でこれでした。 なので正直、前途多難だなぁ勘弁してくれ…って感じでした。 対策としては設定ファイルでバージョン設定を変えることで治りました。 (詳細はリンク先で…)
出典:Designタブのpreviewにテキストボックスなどが表示されない
ネットの情報が古い問題 これはある程度覚悟していた問題ですが、 やはりネットの情報が古いことが多い。 例えばあるライブラリの使い方をググるとバージョンが明記されておらず、 自分の環境では動かなったり(そもそもコンパイルが通らない)、 ネットでよく引っかかるサンプルコードが既に非推奨になっていたり…。
ネットの情報が古い問題 対策 ・ライブラリは公式ドキュメントを見る 基本ですが、英語しかないとメンドイなぁとなって、 日本語のページを検索してしまったりするので…。 結局英語の公式ドキュメントを眺めたり、 サンプルコードをみたら解決する事がよくあります。
ネットの情報が古い問題 対策 ・Googleの検索結果の期間を1年以内とかにする
アプリアイコンとアプリ名がデフォ問題 これは問題というか、単純に自分の思い込みでハマっただけだったのですが…。 AndroidアプリをGoogle Playにリリースする際に、 アプリ名やアイコンを登録する必要があります。 画像のような感じ。 自分はこれがインストールした後のアプリアイコンと、 アプリ名になると思いこんでいたのですが…。
アプリアイコンとアプリ名がデフォ問題
アプリアイコンとアプリ名がデフォ問題 開発時に設定ファイルで、 アイコン画像やアプリ名を設定する必要がありました。 思い込んでいると疑問に思わない例だなぁと…。
リリース(オープンβ版)のやり方。 Webサービスであればネットに公開して終わりですが、 Google Playという基盤でアプリ公開をするためには様々な設定 が必要でした。 個人的にはこういった設定や審査が意外だったので、 共有させていただきます。
設定項目 一覧 右の画像のように最低4つは設定が必要です。 基本情報に加えて以下の3つです。 ・ストアの掲載情報 アプリ名や説明などの基本情報。 ・コンテンツのレーティング アプリの種類(SNS、ゲームなど)や、 暴力表現や課金有無、音声要否など。 ・価格と配布 有料/無料の他、配布先の地域(国)を選択する。
国によって制限が異なります。
まずGoogleに25ドル払う。 調べるまで知りませんでしたが、 Google Playにアプリ登録するには登録料が必要です。 正確にはデベロッパーアカウントというのが必要で、 これの登録に25ドル要ります。 公開せずに自作アプリとして使うのであれば無料です。 ちなみにiOSは年11,800円必要なので安いですね。
ストアの掲載情報 アプリ名や説明、 アイコン画像やスクショを登録します
ストアの掲載情報 動画情報など ・テレビバナー? AndroidTV用バナー ・Daydream? Android用の VRプラットフォーム。 出典:公式ヘルプ
コンテンツのレーティング
コンテンツのレーティング 設定 アプリのカテゴリの選択。
コンテンツのレーティング 設定 アンケートに答えると、 自動的にレーティングが設定される。
価格と配布
価格と配布
価格と配布
リリース
感想 ・思ったより簡単にできたなーという印象 もともとJavaをやっていたので、 そこで詰まらなかったのは大きかったと思います。 久しぶりすぎてStringを=(イコール)で比較して、 なぜtrueにならない!?とかやってましたが…。 Android特有の環境とかお約束でハマることはありましたが、 結果的に全てググって解決出来たのでそこまでシンドクはありませんでした。 初心者がWebサイトを作るのもいいですが、 Androidアプリもかなり敷居が低いのでオススメだと思います。
感想 ・開発期間は11日、一日数時間(4~8時間程度?) 久しぶりにPHPとjQuery意外の言語や環境だったので楽しくなっちゃって、 ダラダラ書いていたなぁという感じでした。 楽しかったのはスゴク良かったのですが、 もう少しメリハリ付けて作業したかったなーという感じです。 転職前の休みだったこともあって、 明け方4時くらいまでずっと作業してたりしていたので…。
終わりに。 最後になりましたが、 アウトプットの場を頂いたインフラ勉強会に大感謝です。 本当にありがとうございます! まったくインフラに関係ない内容で恐縮です…。 ですが、インフラ勉強会で学んだ精神で登壇させていただきました。 その精神とは…
None
終わりに 勝手に宣伝 インフラ勉強会に参加したキッカケなので勝手に宣伝…。 自分も”しがない”勢なので非常に楽しく聞けました。 もちろん元SIerじゃない方もゲスト出演されてます! インフラ勉強会でよく見る方も出演されてたり、これからしたりするっぽいです! おすすめです! しがないラジオ公式サイト
おわり