背景
AWS Amplify を使って、GCP からのアプリ移植をやる必要に迫られてきたので学習とその記録
自身の状況
- AWS ほぼ初心者。6年ぐらい前に C# でアプリ開発してた環境で少し触った程度
- Web ほぼ初心者。10年ぐらい前に C# でバックエンドの開発に数年関わった程度。
- 正直、blazor をやりたい・・
- スマフォ 完全初心者
こんな状況でもなんとかするしかない、という危機的状況のおっさん
把握
まずは、以下動画を見て、なんとなくわかった気になる
準備
AWS すら素人なので、無償環境を用意
カード入力が嫌だったのでこの手のは自宅ではやらない方針だったんだけど・・諦め
Windows Terminal インストール
CLI 動かすなら、便利なはず、と
Amplify でアプリ構築
試行を開始
- Sample を作成?
- アプリタイプを選んで(といっても、二種類しかないが・・
- Flamework を選んで
- 作成
Amplify CLI のインストール
Amplify CLI インストールの説明はここ
Windows 版のとこと一緒なので、どちらでもよいのでコピーをして、コマンドプロンプトでインストール
動作と version 確認
amplify -v
pull Data Model
amplify pull --sandboxId 8c682c7d-f6a9-4f51-85b5-13c351e96231
type は、android を選択して進めたのが以下
Install Amplify library and initialize
compileOptions {
// Support for Java 8 features
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
// Amplify plugins
implementation 'com.amplifyframework:core:1.6.5'
implementation 'com.amplifyframework:aws-api:1.6.5'
implementation 'com.amplifyframework:aws-datastore:1.6.5'
// Support for Java 8 features
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10'
try {
//Amplify.addPlugin(AWSApiPlugin()) // UNCOMMENT this line once backend is deployed
Amplify.addPlugin(AWSDataStorePlugin())
Amplify.configure(applicationContext)
Log.i("Amplify", "Initialized Amplify")
} catch (e: AmplifyException) {
Log.e("Amplify", "Could not initialize Amplify", e)
}
test CRUD
val item: Post = Post.builder()
.title("Lorem ipsum dolor sit amet")
.comments([])
.content("Lorem ipsum dolor sit amet")
.build()
Amplify.DataStore.save(
item,
{ success -> Log.i("Amplify", "Saved item: " + success.item().name) },
{ error -> Log.e("Amplify", "Could not save item to DataStore", error) }
)
で、Dploy o AWS へと進む
アプリの作成?
この先 Authentication と UI を設定すると完成?
なんかよくわからないので、立ち止まったら、チュートリアル発見・・
チュートリアルやり直してみよう
チュートリアル
前提条件が違うことを踏まえて・・
Windows でもだいたい同じでしょと信じて
項目は以下
Android プロジェクトを作成する
Android Studio インストール
やっぱり必要なのね、ということで、準備。
新規プロジェクト作成
チュートリアルの指示に従って
Basic Activityで
Default の Kotlin のままで、Project Nameをチュートリアルのままにつけて
Minimum SDK も指示通り 8.0 にして Finish
暫く待つと完了
IDE のエラー対処
Firewall 系は適宜対処
再起動したら、一応全部消えてたので良しとする
不要なファイルを削除して、プラグインを追加する
UserData データクラスを作成する
チュートリアルに従って、新規Class File を追加
UserData として
リストの各セルにGUIを追加する
指示通り リソースファイルを content_note として作成
NoteRecyclerViewAdapter も指示通り作成
メインアクティビティを更新する
指示通り MainActivity を更新すると・・以下のようにエラーになる
エラーは以下四件
MainActivity.kt のエラー:kotlinx.android.synthetic が廃止されている・・
チュートリアル放置されてるのね
ってことで、回避策は、以下を使ってやればよさげ
具体的には
package com.example.androidgettingstarted
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import com.example.androidgettingstarted.databinding.ActivityMainBinding
import com.example.androidgettingstarted.databinding.ContentMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var rootBinding: ActivityMainBinding
private lateinit var contentMainBinding: ContentMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
rootBinding = ActivityMainBinding.inflate(layoutInflater)
contentMainBinding = ContentMainBinding.inflate(layoutInflater)
setSupportActionBar(rootBinding.toolbar)
// prepare our List view and RecyclerView (cells)
setupRecyclerView(contentMainBinding.itemList)
}
// recycler view is the list of cells
private fun setupRecyclerView(recyclerView: RecyclerView) {
// update individual cell when the Note data are modified
UserData.notes().observe(this, Observer<MutableList<UserData.Note>> { notes ->
Log.d(TAG, "Note observer received ${notes.size} notes")
// let's create a RecyclerViewAdapter that manages the individual cells
recyclerView.adapter = NoteRecyclerViewAdapter(notes)
})
}
companion object {
private const val TAG = "MainActivity"
}
}
ビルドの依存関係を検証する
ん-、チュートリアル自体が古いから、ここはパス
ビルドとテスト
Run (Shift + F10) で実行してみると・・
無事動いたけど、最初の段階なので全く面白みもない
あとがき
今日の収穫
- Windows でもチュートリアルを進められそう
- Android Studio を初めて使ってみて、VS 並みに使いやすそうだと実感
- チュートリアルが古くても、広い意味で同じソフトウェアだし、公式ドキュメントが詳しいのでなんとかなる
また週末に、モジュール2をやろう
前提条件にあるものを何一つ満たしていないこともあったけど、10分じゃ初心者には出来ませんでした。
分かっててサクサク実施するならいけるんでしょうけど、初心者にとっては何故?っていう疑問が沢山あるので