Giter VIP home page Giter VIP logo

yumemiapp's Introduction

YumemiApp

概要

URLに問い合わせてContributorを表示するアプリ

使用技術など

  • MVVM architecture
  • Retrofit
  • DataBinding
  • Dagger-Hilt
  • Coroutine
  • Navigation
  • Fragment
  • RecyclerView
  • Glide
  • Room
  • JUnit4, Truth

工夫点

  • 設計をGoogle developers 公式サイト記載の MVVM architecture とした。
  • 画面遷移時に Navigation の SafeArgs を利用した。
  • いいね画面の Adapter に パフォーマンスを考慮し、DiffUtil を採用した。
  • APIを利用した通信中に通信状態を確認できるように State class を導入した。付録: ネットワーク ステータスの公開
  • 各Contributor の画面からそのContributor のGithubページを表示する際に WebView を採用し、ローディング中にProgressBar を表示するようにした。
  • BottomNavigationView のアイコンの色が押下状態によって変わるようにした。
  • 機能によってGitブランチをちゃんと使い分けた。
  • issue PRを作成し、紐づけ、後から見直し、理解できるようにした。

うまく実装できなかった点

  • Coroutine Flow の導入...正直あまり理解していないので導入できなかった。
  • テストの実装...YumemiDao の簡単な(=ほぼ無意味な)テストを書いたが、意味のあるテストを書くことができなかった。(書き方を知らない)
  • Data Bindingの有効活用...DataBinding の強みを活かせてないと思う。(data タグにViewModel を渡して、、、みたいなことができなかった)
  • Room の Delete...アイテムを削除してもスムーズにいいね画面が更新されないことがある。(原因不明)
  • Event.kt を使用し、一度だけ通知するような遷移ボタンを実装したかったが、実装方法がよくわからなかった。

yumemiapp's People

Contributors

rikuyu avatar

Watchers

 avatar

yumemiapp's Issues

【Github画面】実装

【概要】

  • 詳細画面からそのContributerのGithubのプロフィールをwebViewで表示する。
  • BottomNavigationMenuをDestinationによって出し分ける。

【Home画面】ほとんど実装

【概要】
スタブをもとにHome画面のほとんどを実装する。

  • model の作成
  • repository の実装
  • ViewModel の実装
  • API の実装
  • HomeAdapter の実装
  • Fragment 内の実装
  • DI の作成
    etc

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.