システムアーキテクト勉強 2,3,4日目
2日目
1日目と同じページ数ほどさらっと読んだ
計算問題はほぼ飛ばしていたのでまたやる
3日目
1日目+40ページほど読んだ
4日目
3日目から1日だけ間空いた
最初から1日目+100ページほど読んだ
3章に入って知っている単語が多くなってきた(データベース周り)
今度からはここから始めて回数こなしたい
SQLを紙の上で読み解くということをしたことがないので初めは苦労しそうな予感がする
システムアーキテクト勉強 1日目
うかる!高度試験午前 Ⅰ・Ⅱ を使用
方針
- とりあえず読み進め、1日で理解しようとしすぎない
結果・感想
- p75まで軽く読んだ
- 解いた問題もあるが、基本わからないので考えずに答えを見ていた
- 問題文のような長くて硬い文章を読むのが10年ぶりだったので全然頭に入ってこなくて悲しくなった
- やってたら慣れると信じている
- 他作業中の気分転換に取り込めるようになれればいいな と思っている
openapi-generator dart でError: The language version override has to be the same in the library and its part(s).
起きたこと
openapi-generator generateで dart-dio を生成してアプリをデバッグしようとしたところ The language version override has to be the same in the library and its part(s).エラー
エラー詳細
ファイル名は変更しています
Launching lib/main.dart on iPhone SE (3rd generation) in debug mode... main.dart:1 Xcode build done. 15.0s Failed to build iOS app Error (Xcode): lib/client/lib/src/model/sample_request.dart:9:6: Error: The language version override has to be the same in the library and its part(s). sample_request.dart:9 Could not build the application for the simulator. Error launching application on iPhone SE (3rd generation). Exited
自分の解決法
openapi関連ディレクトリをlibと同じ階層に持ってくる
エラーが起きた当初、下記コマンドでgenerateしlibの中にclientディレクトリを入れていた
openapi-generator generate -i openapi.yaml -g dart-dio -o ./lib/client
これでは実行時に先述のエラーが出たため以下で実行し直した
openapi-generator generate -i openapi.yaml -g dart-dio -o ./openapi/client
これでいけました。
なぜlibの中にclientディレクトリを入れていたか
dart関連のファイルをlibの外に出すのが何となく違和感があったため
参考記事
uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:cloud_firestore]
エラー
/Users/【ユーザ名】/VScodeProjects/【プロジェクト名】/android/app/src/debug/AndroidManifest.xml Error:
uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:cloud_firestore]
/Users/【ユーザ名】/VScodeProjects/【プロジェクト名】/build/cloud_firestore/intermediates/merged_manifest/debug/AndroidManifest.xml as the library might be using APIs not available in 16
Suggestion: use a compatible library with a minSdk of at most 16,
or increase this project's minSdk version to at least 19,
or use tools:overrideLibrary="io.flutter.plugins.firebase.firestore" to force usage (may lead to runtime failures)
やってみたこと
- エラーに書かれている通り、
android/app/build.gradleのminSdkVersionを19にしてみた
結果
別のエラーが出た
これについて細かく見ていないが、SDKバージョン19というのはAndroid4.4相当らしく、今デバッグ端末で使っているAndroid端末はバージョン12なのでもう少し新しくすれば動くのではと思った
参考 APIレベルとAndroidバージョンの関係
最終的に動いた方法
android/app/build.gradleのminSdkVersionを30にすると動作した
【Flutter】 このファイルは何のファイル?メモ
はじめに
主に設定ファイル系で色々見たこと無いものがあったのでメモ
ios/Podfile
- iOSやMacOSアプリを作る際のライブラリのバージョンを指定するファイル
- CocoaPodsというツールで使う
Podfile.lockは、インストールされたライブラリのバージョンが書かれたファイル(自動生成)
- RailsでいうGemfile
ios/Runner/Info.plist
実行ファイルのための構成情報を書くファイル
以下のようにkeyと指定内容をセットで書く
<key>CFBundleName</key>
<string>helloworld</string>
android/app/src/main/AndroidManifest.xml
- アプリに関する重要な情報を Android ビルドツール、Android オペレーティング システム、Google Play に対して説明するもの
pubspec.yaml
Flutterプロジェクトの設定ファイル
【メモ】Flutter学習にあたり難しそうだと思う箇所
何のためにこの記事を書くか
- アウトプットありきで勉強した方が身につくとどこかで見たし確かにそうだなと思ったので、今の自分が大喜びしそうな内容の記事を未来の自分が書くためにどこにハードルを感じているか残しておきたい為
前提
- モバイルアプリエンジニアではない
- Webアプリケーションエンジニア
- サーバーサイド5年
- フロントは修正程度にたまに書く位、新規では書けない
- インフラ(AWS)を触っていた期間も1年位あった
- デザインをコードに起こすフェーズは未経験
- サーバーサイド5年
本題(Flutterで難しそうだと感じているところ)
デザインから見た目をコーディングするところ
Webでもやってこなかったところなので、どういう考え方でやっていけばいいかわからない
Firestore
- NoSQL未経験なのと、KVSも使ったことないので不安
- モバイルアプリにとってDBがどのように使われているかがピンとこない
- API側でDBに繋いでいるアプリケーションしか触ったこと無いので
状態管理
- ちゃんと勉強したことがない概念なので不安
- 業務でReduxを触ったときに混乱した記憶がある
CI/CD
右も左も分からないレベル
おわりに
未来の自分がいい記事を書いてくれることを期待しています さあ、勉強頑張るぞ...!!
【Flutter】企業系アプリによくある機能を考えてみる
これの内容を実際作るとしたらどうするかという話
はじめに
How to記事ではなく、個人メモになります。
目次
- 会員証
- 通知
- ポイント機能
- クーポン
- ニュース
- 店舗検索
会員証
- 会員番号のバーコード
- ポイント機能がついていることも
作り方を考えてみる
だいたいパッケージ化されている
ぱっと見これでいけそう
感想
会員証の画面は意外と簡素
通知
アプリ内で見れるものだけでなく、push通知を伴うことが多い印象
作り方を考えてみる
アプリ内通知
- APIでサーバーから取ってくるだけ
- 遷移先
- アプリ内の任意の画面
- 内部ブラウザで開く
- 外部ブラウザで開く
push通知
- FCM
- 遷移先
- アプリ内の任意の画面
- 内部ブラウザで開く
- (外部ブラウザ)
- push通知をタップしたときにいきなりブラウザが開くパターンはあまり見ない気がする
技術面
Flutterのパッケージで見つかったのはこれ
Railsで送信するならこれ(gem)
fcmという名前のgemもあるが、公式ではないらしく遅いらしい
自分が昔作ったときはこれ
感想
自分的にはサーバーサイドで送信するイメージなので、Flutterパッケージは何をしているんだろうと気になる
ポイント機能
会員証画面と同じこともある印象
作り方を考えてみる
...と言っても、サーバーサイドで作ってアプリ側では表示だけしている印象
以下2つのAPIをサーバーサイドで作ってアプリ側で叩く
- 現在のポイント情報API
- 残高
- 総獲得
- 会員ランクなどがある場合、次のランクまでいくつ
- クーポンや別のアプリのポイントに交換できる場合そのためのAPI
感想
アプリ側でできることの種類はもっと色々アプリ入れて観察してみないとわからない
クーポン
- 所持クーポン一覧
- クーポン使用 これもサーバーサイドで作ってアプリ側は表示だけの印象なので略
ニュース
webviewが多いイメージ webviewでなくとも、API叩いて表示している印象
- 以下のAPIを作る
- ニュース一覧
- ニュース詳細
店舗検索
webでよくある、セレクトボックスから都道府県選択して...という形式もあるが、 googlemapにピンが立っている形式をよく見かける印象
これはどうやっているのかイメージできない。 店舗情報はAPIサーバーが持っている気がするから、それをどうにかしてマッピングする方法があるのだろう。
自分のレベルではまだわからない。
まとめ
- 考えてみると面白い
- 案外シンプル
- サーバーサイドありきな構成が多いのかもしれない
- 管理用にCMS作るだろうし当然っちゃ当然