Code Monkey home page Code Monkey logo

flutter_tinder_learn's Introduction

画面設計。機能設計。データ設計 はgoogle driveに保存。

インセプションデッキ

プロジェクトの名前

[instantLearn]

名前をつけた理由

  • [学び始めるまでの心理的な壁を低くしたいからinstaってつけた]
  • [中等教育、高等教育における学びはインプットを指すものが多く、インプットに費やす時間を効率化したいと思ったから]
  • [中高生にわかりやすいかなって思ったから、あとダサくない名前じゃないと友達に勧めづらいかなと思ったから]

1. 我われはなぜここにいるのか?

  1. [インプットに費やす時間を効率化し、]
  2. [一人一人の興味関心のある物事に取り組んでほしいから(アウトプット)]
  3. [暗記力で成績をつけ周囲と競わせることを強制するのではなく、]
  4. [実社会で行われているそれぞれが得意なことを持ち寄る協力体制を矯正する]
  5. [行動を促すために]

プロジェクトの根幹に関わる理由

[何で自分の興味のないことを学ばなきゃいけないんだよ!!fuck you、 学力だけで選べる進路が制限されるとかちょっとイカれてる]

2. エレベーターピッチ

  • [潜在的なニーズを満たしたり、抱えている課題を解決したり]したい
  • [中高生]向けの、
  • [instantLearn]というプロダクトは、
  • [学習効率化ツール]です。
  • これは[協力学習、反復学習、視覚化]ができ、
  • [AnkiDroid]とは違って、
  • [story学習機能、直感的なUI、画像へのテキスト挿入機能、共同学習サポート機能]が備わっています。

3. パッケージデザイン

[instaLearn]

素敵な写真

最高のキャッチコピー

[1秒だって無駄にできない君に届け]

ユーザーへのアピール

  1. [「全然勉強してないよ?」って言って高得点とるあいつも使ってる]
  2. [直感的で馴染み深いUI]
  3. [友達と協力して授業の内容やワークをstoryに追加しよう]
  4. 協力して宿題を終わらせよう
  5. 先生に提出する前にわざと違う所を少し間違えましょう!

4. やらないことリスト

カテゴリ 項目 やる / やらない / あとで決める 理由
[機能] [やること] story反復学習機能 [競争優位性があるから]
[機能] [やらないこと] markdown機能 [コンテンツを作るのがだるいから]
[機能] [あとで決める] 協力学習機能 [データの権限やデータ設計を現段階で決め切ることができないから]
[機能] [あとで決める] 通知機能 [通知するためのコンテンツがないから]

5. プロジェクトコミュニティは...

プロジェクトコミュニティの画像

このプロジェクトに参加したい人! 👇のtwitterからDMちょうだい! https://twitter.com/neco3coffee

❓常に自分自身に問いかけよう

❓我々が解決しようと思っている問題に消費者は気づいているか? =>YES ,勉強だるいって言ってるよ ❓解決策があれば消費者はそれを買うか? =>YES ,現に塾に行ってる人は多いよ ❓我々から買ってくれるか? =>No ,そもそも認知されてないよ ❓その問題の解決策を我々は用意できるか? =>YES ,必要なパーツは既に先人達によって形作られているよ

6. 技術的な解決策の概要

概要レベルのアーキテクチャ設計図の画像

採用する技術

  • [プログラミング言語]
  • Dart,flutter
  • [ライブラリ]
  • flutter
  • get
  • firebase_core
  • firebase_auth
  • cloud_firestore
  • firebase_storage
  • story_view
  • image_editor_pro(image_picker,screenshot,zoom_widget,
  • dev-----
  • flutter_launcher_icons
  • [ツール]
  • [その他の要素技術]

7. 夜も眠れなくなるような問題は何だろう?

  • [もし起きたらこわーいこと、その1]
  • センシティブな写真がアップロードされる
  • [もし起きたらこわーいこと、その2]
  • マーケティングで負けること
  • [もし起きたらこわーいこと、その3]
  • コスト > 利益
  • [もし起きたらこわーいこと、その4]
  • 既存にあるからと諦めて、途中で投げ出すこと
  • [もし起きたらこわーいこと、その5]
  • 精神的に落ちて、開発を継続できないこと

8. 期間を見極める

ざっくりしたタイムラインの画像

2021/10/31/15:00までにリリース申請を行う。

あくまで推測であって、確約するものではありません。

9. トレードオフ・スライダー

典型的なフォース

max >>> >>> >>> min 項目
o 期日10/31リリースを死守する(時間)
o MVPをロケットスタートで形作る⌛️2割10/28、8割10/31
o コスト、N1+だけ対応
o 高い品質、少ない欠陥(品質)

上記以外で重要なこと

max >>> >>> >>> min 項目
o シンプルで直感的なUI
o ユーザー導線
o 価値観の教育、不満に訴える or 潜在的な不満を認知させる
o

10. 何がどれだけ必要なのか

要素
人数 1名
期間 3日
予算 2687¥(starbucks cardの残額)

俺たちのチーム(1人3役)

人数 役割 強みや期待すること
1 アナリスト 作った後にいらなくなるようなものを作らないように情報を満遍なく収集し、現実を正しく捉えて、仮説の裏付けまたは否定を行ってほしい
1 開発者 要件を満たす必要最低限のpackageを素早く選定し、3時間以内に機能を作り上げてほしい。
1 マネージャ タスクの難易度の見積もりをし3日をどのように使うのかの判断を3秒以内に決断し続けてほしい。

flutter_tinder_learn's People

Contributors

neco3s avatar

Stargazers

 avatar

Watchers

 avatar

flutter_tinder_learn's Issues

when flutter run, warning

What u want to achieve
I want to make it ~~~~

Describe the bug
A clear and concise description of what the bug is.

注意:/Users/shunta/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-2.5.4/android/src/main/java/io/flutter/plugins/firebase/firestore/streamhandler/TransactionStreamHandler.javaの操作は、未チェックまたは安全ではありません。

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots, error message
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

reference site, source URL
HTTPS/www

hypothesis
-add text or image etc
-Let's carefully consider potentially affected areas before we move on.

what have u done to solve

what u did to solve

見ていないstoryがある場合はインスタのようにボーダーが表示されるようにする

  • まずは条件にtrue falseを与えてボーダーが切り替わるようにする。

  • homeController にshownという名のRxBoolをfalseで定義

  • home_viewの条件分岐をshownで行う。

  • show_story_pageのonComplete(){shownの値(value)をtrueにする}

  • アプリが再起動してもshownの状態が保持されるように(1度見たら、storyのボーダーは次の日まで現れない)する
    👆hot restart(stateの削除とre-compile)でshownの状態がfalseになってしまっていた。
    📱 hot restartはandroidの端末の操作で、起動しているアプリを□マークで表示し、アプリの画面を上にスワイプして消すことに該当する?
    https://www.geeksforgeeks.org/difference-between-hot-reload-and-hot-restart-in-flutter/

  • 新しいstoryを追加した場合はshowの値をfalseにする。

  • storyが後日に表示された時にもボーダーが表示されるようにする。(shownの値をどこかのタイミングでリセット)
    https://pub.dev/packages/workmanager

https://stackoverflow.com/questions/68309140/flutter-and-getx-how-an-observable-emit-changes

https://stackoverflow.com/questions/67223914/is-it-possible-to-access-getxcontroller-value-from-another-getxcontroller-flutt

https://www.codegrepper.com/code-examples/dart/toggle+button+color+onclick+flutter

userに使ってもらうにはどうするの?

案1

https://www.youtube.com/watch?v=r9bbR50rNzU
のyoutube動画にTrueViewディスカバリー広告を表示し、遷移先をPWA対応のentanglementサイトに設定する。

プレースメントターゲティングとは
https://anagrams.jp/blog/all-of-managed-placements-target/
TrueViewディスカバリー広告(ディスプレイ広告の中の)
-YouTube動画が再生される直前、再生中、もしくは再生後
-CPV | ユーザーがその動画広告を視聴完了した、もしくはクリックしてサイト遷移した際に発生

ディスプレイ広告は、潜在的に悩みやニーズを抱えているユーザーに、クリエイティブを通して訴求することで「衝動買い」を促せることが強みです。そのため、BtoCを対象とした低単価の商材との相性が良い傾向にあります。化粧品や健康食品は、その代表例です。

案2
。。。

pod install

Command

```
/usr/local/bin/pod install --verbose
```

Report

* What did you do?
   $ git clone https://github.com/kboyflutteruniv/businessSupport.git
   Launching lib/main.dart on iPhone 12 Pro Max in debug mode...
   lib/main.dart:1
* What did you expect to happen?
   ios emulator上でflutter run してbuildしたものをdebug modeで.実行したい 
* What happened instead?
  buildが停止しExitedした。

Stack

```
   CocoaPods : 1.11.2
        Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]
    RubyGems : 3.0.3
        Host : macOS 11.2.1 (20D74)
       Xcode : 12.5.1 (12E507)
         Git : git version 2.33.0
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
Repositories : trunk - CDN - https://cdn.cocoapods.org/
```

Plugins

```
cocoapods-deintegrate : 1.0.5
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.1
cocoapods-trunk       : 1.6.0
cocoapods-try         : 1.2.0
```

Podfile

```ruby

Uncomment this line to define a global platform for your project

platform :ios, '9.0'

CocoaPods analytics sends network stats synchronously affecting flutter build latency.

ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,
}
def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  end
  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return matches[1].strip if matches
  end
  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
  use_frameworks!
  use_modular_headers!
  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
  end
end
```

Error

```
Errno::ENOSPC - No space left on device - write
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1387:in `copy_stream'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1387:in `block (2 levels) in copy_file'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1386:in `open'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1386:in `block in copy_file'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1385:in `open'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1385:in `copy_file'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1353:in `copy'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:478:in `block in copy_entry'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1484:in `wrap_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1487:in `block in wrap_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1486:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1486:in `wrap_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1487:in `block in wrap_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1486:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1486:in `wrap_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1487:in `block in wrap_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1486:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1486:in `wrap_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1487:in `block in wrap_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1486:in `each'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1486:in `wrap_traverse'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:475:in `copy_entry'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:453:in `block in cp_r'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1557:in `block in fu_each_src_dest'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1573:in `fu_each_src_dest0'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:1555:in `fu_each_src_dest'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/fileutils.rb:452:in `cp_r'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader/cache.rb:287:in `block in copy_and_clean'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader/cache.rb:128:in `lock'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader/cache.rb:99:in `write_lock'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader/cache.rb:285:in `copy_and_clean'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader/cache.rb:244:in `block (2 levels) in uncached_pod'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader/cache.rb:242:in `each'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader/cache.rb:242:in `block in uncached_pod'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader/cache.rb:266:in `in_tmpdir'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader/cache.rb:238:in `uncached_pod'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader/cache.rb:33:in `download_pod'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/downloader.rb:42:in `download'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/installer/pod_source_installer.rb:118:in `download_source'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/installer/pod_source_installer.rb:69:in `install!'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:563:in `install_source_of_pod'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:514:in `block (2 levels) in install_pod_sources'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/user_interface.rb:86:in `titled_section'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:513:in `block in install_pod_sources'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:496:in `each'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:496:in `install_pod_sources'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:255:in `block in download_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/user_interface.rb:64:in `section'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:254:in `download_dependencies'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/installer.rb:162:in `install!'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/command/install.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/lib/cocoapods/command.rb:52:in `run'
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.11.2/bin/pod:55:in `<top (required)>'
/usr/local/bin/pod:23:in `load'
/usr/local/bin/pod:23:in `<main>'

####hypothesis

-add text or image etc
-Let's carefully consider potentially affected areas before we move on.

write error: No space left on device
自身のローカルの開発環境に起因する問題である可能性が高い。
=>storage不足
=>[!] Automatically assigning platform `iOS` with version `13.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.



**what have u done  to solve**

**what u did to solve**

反復学習のstory(今日学ぶべきもの)をqueryできるようにする。

  • createdDayをcreatedAt
  • story登録時にiterationArrayに今日の日付+フィボナスッチ数 の年月日をarraytとしてセットする。
  • arrayContainsでiterationArrayの日付に今日の日付があればqueryする。

https://nabettu.hatenablog.com/entry/array-contains-any

https://firebase.google.com/docs/firestore/query-data/queries?hl=ja

https://firebase.flutter.dev/docs/firestore/usage/#querying

工数見積もり

⌛️
1.5h
実現したいこと
タスクを程よい粒度で分割し、1task-15mの状態を作り、タスクを追っていく感覚を知り、時間を制して自分より2倍〜5倍能力の高い人と対等に渡り合いたい。

午前中
5:007:00-🔥20倍界王拳-2h
8:00
10:00-🔥20倍界王拳-2h
10:30~12:30-🔥20倍界王拳-2h
=6hを用いて自分の仕事を終わらせる

午後
13:30~ 😌relax
=> 自身がrelaxして暇な状態にあれば、初めて入った人がいろいろな質問をしやすい。(みんながせかせかしてて、困っても聞けない状態を作らないこと❗️)なんなら、zoomをずっと開いてて、質問がある人は適宜入室できるようにする。

手順

  • アプリのcontents(data)の流れを追う 1
  • 画面設計×機能設計×データ設計を1つにまとめた図を参照して切れる単位で大まかなtaskに分ける 2
  • 大まかに分けたtaskを切れる範囲で分割していく3
  • 分割したtaskを15mで終わる程度に分割していく 5

手順にかかる時間の見積もり
0, 2m
1, 5m
2, 10m
3,15m
5, 25m
8, 1h
13, 1.5h
21, 2h
34, 3h
55, 5h
89, 9h
144, 12h
233, 23h

reference site URL, Image, etc...
Add any other context or screenshots about the feature request here.

🧘‍♂️ 🗺 🏁

**⌛️ **
0🧘‍♂️

全体像
🏁

実現したいこと
api情報取得&表示から情報を取得して表示したい!

手順
コメントに残す。

手順にかかる時間の見積もり
0, 2m
1, 5m
2, 10m
3,15m
5, 25m
8, 1h
13, 1.5h
21, 2h
34, 3h
55, 5h
89, 9h
144, 12h
233, 23h

reference site URL, Image, etc...
Add any other context or screenshots about the feature request here.

Image.network() is not working

##実現したいこと

internet 上にある画像を表示したい

##、

##参考ソース
Image.network constructor doc
https://api.flutter.dev/flutter/widgets/Image/Image.network.html

Android エミュレーターでネットワークに繋がらない時
https://qiita.com/maaaaaiiiisan/items/fdcf1c370fc381bb9dd2

androidのManifestファイルにインターネットアクセスの許可を記述する。
https://stackoverflow.com/questions/59638309/image-not-showing-from-internet-using-image-network

dartでのconstructorのparameterの渡し方、書き方
https://stackoverflow.com/questions/55915675/flutter-use-image-network-with-cookies

システムアーキテクチャ

This is the Image overview 👇

https://github.com/neco3coffee/flutter_tinder_learn/blob/main/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3.drawio.png

Rule1手を動かす前に全ては決まっている
設計が命である

Rule2後から見る人に説明する気持ちで書こう
図やイメージでとっかかりを作り、文章で齟齬なく伝えよう

タイトル
firebaseを使うと、localにcacheを持ってる。(これはproxyではなくwebでいうbrowerのcookieやsessionのようなもの)

メモの作成の時だけ、getxを用いてメモの内容を保持して

localできおつけたいのは、戻るボタンを押したときに変更が削除される可能性がありますが大丈夫ですかのdialogを表示する。

reference site, URL, etc..
Add any other context or screenshots about the feature request here.

機能設計memo, sync, stack

⏳1h5m*
全体像
https://github.com/neco3coffee/flutter_tinder_learn/blob/main/%E7%94%BB%E9%9D%A2%E8%A8%AD%E8%A8%88%C3%97%E6%A9%9F%E8%83%BD%E8%A8%AD%E8%A8%88.drawio.png
実現したいこと
必要な
function
data
を明確にしたい。
また処理の流れを視覚化して、自然言語でプログラムを記述し、自然言語の処理ごと(15分task)に工数を分けられるようにしたい!

手順

  • 画面設計 3
  • pageごとの機能名、処理内容、必要なデータ、ユーザー操作を表にする。5
  • 機能設計の仕上げとして、画面設計と機能設計を繋げてあげましょう。5

画面間でどういった ユーザー操作・裏側の処理 が行われているのか可視化します。👇図
https___qiita-image-store s3 ap-northeast-1 amazonaws com_0_555158_ebae8222-33d5-6fba-21ec-8d1b1cb2c0d7

手順にかかる時間の見積もり
0, 2m
1, 5m
2, 10m
3,15m
5, 25m
8, 1h
13, 1.5h
21, 2h
34, 3h
55, 5h
89, 9h
144, 12h
233, 23h

reference site URL, Image, etc...
Add any other context or screenshots about the feature request here.
https://qiita.com/digisaku_tamori/items/741fcf0f40dd989ee4f8

MVPアンドロイドリリース手順

Rule1手を動かす前に全ては決まっている
設計が命である

Rule2後から見る人に説明する気持ちで書こう
図やイメージでとっかかりを作り、文章で齟齬なく伝えよう

手順

  • 1Googleのデベロッパーアカウントを作

  • 2デジタル署名を付けてapkファイルをビルドする

  • 3Play Consoleからアプリを登録する

  • 4アプリの審査

  • 5配信の申請する

reference site, URL, etc..
Add any other context or screenshots about the feature request here.
https://creatorhiro.com/archives/1539

💀 🦜審査結果がよくわからないmailadressから届く。

画面設計×機能設計×データ設計

⌛️60m
全体像
https://github.com/neco3coffee/flutter_tinder_learn/blob/main/%E7%94%BB%E9%9D%A2%E8%A8%AD%E8%A8%88%C3%97%E6%A9%9F%E8%83%BD%E8%A8%AD%E8%A8%88.drawio.png
ER diagram
https://github.com/neco3coffee/flutter_tinder_learn/blob/main/ER%20diagram.drawio.png

実現したいこと
処理の流れを明らかにし、工数見積もりの難易度を下げる!

手順

  • データの具体的な中身を書き出す 3
    データベース設計-er図 2
  • テーブルの役割を「マスター」と「履歴」に分ける
  • テーブル間の参照関係を整理する
  • 参照関係をER図に書き起こす
  • データの流れ(データフロー)画像参照 5

意識する点
❗データは4種類
・プログラムに「入力する」データ(引数)
---Web画面からユーザーが入力するデータ
---データベースから読み取るデータ
・プログラムから「戻ってくる」データ(戻り値)
---Web画面に表示させるデータ
---データベースに保存するデータ
❗️マスターと履歴に分ける
マスター:基礎情報(他のテーブルから参照されるデータ)
---会員テーブル(以降「会員マスタ」と表現)
---商品テーブル(以降「商品マスタ」と表現
履歴:システムが利用される中で蓄積するデータ
---購買履歴テーブル

https___qiita-image-store s3 ap-northeast-1 amazonaws com_0_555158_1a4f6990-c7fb-86b0-9d00-b7ff101bb427

👇ER図
https___qiita-image-store s3 ap-northeast-1 amazonaws com_0_555158_8936eb59-aca8-b7fd-549a-d56bdd1ed7e4

データの流れ
https___qiita-image-store s3 ap-northeast-1 amazonaws com_0_555158_73b04fb5-b48d-005e-b9b6-d68f7d743a40

手順にかかる時間の見積もり
0, 2m
1, 5m
2, 10m
3,15m
5, 25m
8, 1h
13, 1.5h
21, 2h
34, 3h
55, 5h
89, 9h
144, 12h
233, 23h

reference site URL, Image, etc...
Add any other context or screenshots about the feature request here.

データ設計の方法👇
https://qiita.com/digisaku_tamori/items/741fcf0f40dd989ee4f8#%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AA%E4%B8%AD%E8%BA%AB

ER図 書き方(IE記法を採用)
https://it-koala.com/entity-relationship-diagram-1897

プロジェクトのリファクタリング

  • rootPage以下でputしてしまっている(Binding)controllerの記述を省き、動作することを確認する。

  • add_storyとshow_storyのコントローラーを統合する。

  • firebaseとのやりとりを関数に切り出してapiに分割する。

❗️Bindingを用いるのであれば、controllerの依存関係はStatelessWidget内に直書きしない!

  • RootPageに直書きされているRootControllerをBindingに。

❗️getXを用いるのであればstatefulWidgetは必要ない。

  • show_story_pageをstatelessWidgetに変更し、状態はGetxControllerで管理する。

  • user, story コントローラーに集約する。+ tabコントローラー

  • 肥大化したuser, storyをインデントとコメントで分割できそうなところをリスト化する。

  • 1つ1つ分割しつつ動作することを確認していく。

スクリーンショット 2021-11-08 23 01 55

アーキテクチャ

⏳40m

全体像(image or URL)
https://github.com/neco3coffee/flutter_tinder_learn/blob/main/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3.drawio.png

実現したいこと
詳細技術、ライブラリ、構成をきめる。

手順

  • 図を書く 2
  • ライブラリを選定 3

手順にかかる時間の見積もり
0, 2m
1, 5m
2, 10m
3,15m
5, 25m
8, 1h
13, 1.5h
21, 2h
34, 3h
55, 5h
89, 9h
144, 12h
233, 23h

reference site URL, Image, etc...
Add any other context or screenshots about the feature request here.

136714302-f03d1d84-7e2d-4929-8667-2b57ce2f3b32

hiveをgetxにする。

画面設計sync , memo, stack ページ

実現したいこと
sync, memo, stackページのUIの遷移を視覚化する。

手順

  • sync 1
  • memo 1
  • stack 2

手順にかかる時間の見積もり
0, 2m
1, 5m
2, 10m
3,15m
5, 25m
8, 1h
13, 1.5h
21, 2h
34, 3h
55, 5h
89, 9h
144, 12h
233, 23h

reference site URL, Image, etc...
Add any other context or screenshots about the feature request here.

stack library=>https://pub.dev/packages/vertical_card_pager

memo repo=>https://github.com/neco3coffee/done_it
memo icon=> https://api.flutter.dev/flutter/material/Icons/sentiment_very_satisfied_outlined-constant.html

私が学生なら解像度の高い画像を見たい

**⌛️ **

全体像

実現したいこと
api情報取得&表示から情報を取得して表示したい!

手順

  • データを取得 0
  • データを整形 3
  • データを表示 2

手順にかかる時間の見積もり
0, 2m
1, 5m
2, 10m
3,15m
5, 25m
8, 1h
13, 1.5h
21, 2h
34, 3h
55, 5h
89, 9h
144, 12h
233, 23h

reference site URL, Image, etc...
Add any other context or screenshots about the feature request here.

サーバーのデータとローカルのデータが同期していない。

What u want to achieve
サーバーのデータとローカルのデータが同期するようにしたい。

Describe the bug
現状の挙動は、Updateボタンを押すとサーバーのデータが更新されるが、再度UpdateしたCardをtapして編集を始めるとUpdata前のデータの状態に戻ってしまっている。

To Reproduce
Steps to reproduce the behavior:

  1. Go to NotePage()
  2. Click on Card
  3. edit title or description & push UPDATE
  4. See firestore cosole & see data updated correctly.
  5. reopen the Card which Updated
  6. see data still same as before editing one

Expected behavior
再現手順の6の段階でdataが正常に更新されている(同期されている)

Screenshots, error message
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

reference site, source URL
HTTPS/www

hypothesis
titleやdescriptionの変更を監視していないからではないか?

what have u done to solve
ObxでListViewに表示される値を監視する。

what u did to solve

ライブラリの挙動を単体で確かめる 30

**⌛️ **
2h30m
全体像repository
firebase authentication(anonymous) 認証login 8
https://firebase.flutter.dev/docs/auth/usage/#anonymous-sign-in
❗️匿名認証でアプリを使い始めたuserがlogoutしたりuninstallすると、アカウントがfirebase側から削除されてしまうので、signoutボタンではなくuser登録ボタンをsetting modalに追加する。uninstall時にアプリの情報がなくなってしまうことを警告する。

swipable_stack スワイプsync 3
https://github.com/neco3coffee/flutter_swipable_stack
vertical_card_pager スクロールstack 2
https://github.com/neco3coffee/vertical_card
get(getX) 8

実現したいこと
作り始めてからlibraryを頻繁に変えたくない!
使用するLibraryの動作を確認して、開発中のerrorの原因探索の速度を上げたい!
工数の見積もりの精度と速度をあげたい!

手順

  • firebase authentication(anonymous) 認証login 8
  • swipable_stack スワイプsync 3
  • vertical_card_pager スクロールstack 2
  • get(getX) 8
    navigation
    key/value storage
    state manager(trigger with data change)
    change Theme

手順にかかる時間の見積もり
0, 2m
1, 5m
2, 10m
3,15m
5, 25m
8, 1h
13, 1.5h
21, 2h
34, 3h
55, 5h
89, 9h
144, 12h
233, 23h

reference site URL, Image, etc...
Add any other context or screenshots about the feature request here.

📝 工数見積もり

Rule1手を動かす前に全ては決まっている
設計が命である

Rule2後から見る人に説明する気持ちで書こう
図やイメージでとっかかりを作り、文章で齟齬なく伝えよう

タイトル

reference site, URL, etc..
Add any other context or screenshots about the feature request here.
📚 scrum bootcamp

W/DynamiteModule(12153): Local module descriptor class for providerinstaller not found.

What u want to achieve
リリースの前にエラーメッセージの内容を理解し、解決したい。
before releasing the application to PlayStore, want to fix the error.

Describe the bug
A clear and concise description of what the bug is.

firestoreからdataを取得して表示することができるが、以下のようなerrorが出ている。
can read data from Firestore, but error occur.

To Reproduce
Steps to reproduce the behavior:

  1. create flutter app
  2. add firestore (cloud_firestore && firestore initial setting && connect firestore && add data from console && read the data from app)
  3. add multiDexEnabled true to android/app/build.gradle
  4. flutter run
  5. see error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots, error message
If applicable, add screenshots to help explain your problem.

`💪 Running with sound null safety 💪

An Observatory debugger and profiler on AOSP on IA Emulator is available at:
http://127.0.0.1:60091/f7-cK_haJtI=/
W/DynamiteModule(12153): Local module descriptor class for providerinstaller not found.
I/DynamiteModule(12153): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller(12153): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
W/er_tinder_lear(12153): Unknown chunk type '200'.
I/er_tinder_lear(12153): The ClassLoaderContext is a special shared library.
I/chatty (12153): uid=10102(neco3coffee.flutter_tinder_learn) AsyncTask #2 identical 1 line
I/er_tinder_lear(12153): The ClassLoaderContext is a special shared library.
V/NativeCrypto(12153): Registering com/google/android/gms/org/conscrypt/NativeCrypto's 294 native methods...
W/er_tinder_lear(12153): Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (light greylist, reflection)
D/NetworkSecurityConfig(12153): No Network Security Config specified, using platform default
I/ProviderInstaller(12153): Installed default security provider GmsCore_OpenSSL
W/er_tinder_lear(12153): Accessing hidden field Ljava/nio/Buffer;->address:J (light greylist, reflection)
The Flutter DevTools debugger and profiler on AOSP on IA Emulator is available at:
http://127.0.0.1:9102?uri=http://127.0.0.1:60091/f7-cK_haJtI=/
W/er_tinder_lear(12153): Accessing hidden field Ljava/net/Socket;->impl:Ljava/net/SocketImpl; (light greylist, reflection)
W/er_tinder_lear(12153): Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (light greylist, linking)
W/er_tinder_lear(12153): Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (light greylist, linking)
W/er_tinder_lear(12153): Accessing hidden method Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V (light greylist, reflection)
W/er_tinder_lear(12153): Accessing hidden method Ldalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; (light greylist, linking)
W/er_tinder_lear(12153): Accessing hidden method Ldalvik/system/BlockGuard$Policy;->onNetwork()V (light greylist, linking)`

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

reference site, source URL
HTTPS/www

hypothesis
-add text or image etc
-Let's carefully consider potentially affected areas before we move on.

what have u done to solve

what u did to solve

機能設計

Rule1手を動かす前に全ては決まっている
設計が命である

Rule2後から見る人に説明する気持ちで書こう
図やイメージでとっかかりを作り、文章で齟齬なく伝えよう

タイトル

reference site, URL, etc..
Add any other context or screenshots about the feature request here.

https://qiita.com/digisaku_tamori/items/741fcf0f40dd989ee4f8

私が学生なら解像度の高い画像でstory(ノートや教科書)を見返したい

**⌛️ **
blackmann/story_view#50
👆fileに対応させたrepo null safetyではない可能性あり
全体像

実現したいこと
api情報取得&表示から情報を取得して表示したい!

手順

  • データを取得 0
  • データを整形 3
  • データを表示 2

手順にかかる時間の見積もり
0, 2m
1, 5m
2, 10m
3,15m
5, 25m
8, 1h
13, 1.5h
21, 2h
34, 3h
55, 5h
89, 9h
144, 12h
233, 23h

reference site URL, Image, etc...
Add any other context or screenshots about the feature request here.

データ設計

将来的に実装する設計。=>Entanglementの本領を発揮させるためにはfirebaseが必要。
appは1つのデータソースから情報を取得するのが望ましい。
よって👇の構成にする。
10/27のAWSのイベントでfunction周りの注意点などを確認していく。

スクリーンショット 2021-10-11 7 01 06

👇データ設計の方法、手順、コツ
https://qiita.com/digisaku_tamori/items/741fcf0f40dd989ee4f8#%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AA%E4%B8%AD%E8%BA%AB

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.