Giter Club home page Giter Club logo

searchgithubuserapp's Introduction

SearchGitHubUserApp

概要

GitHubのユーザーを検索し ユーザーごとに詳細を閲覧できるシンプルなアプリ

前提

  • iOS11.0以上対応
  • 対応機種:iPhone8、iPhoneSE、iPhone8Plus、iPhoneXS, iPhoneXS Max, iPhoneXR, iPad Air, iPad Pro
  • 言語:swift5.0
  • 画面向き:縦

利用方法

  • 本PJをダウンロードし、"pod install"コマンドを実行後ビルドしてください。

目的

以下の理解と実装

  • RxSwift * MVVMを用いた実装
  • 汎用的なAPI通信部分を元に、個別API部分の追加

機能

  • [ユーザー検索]キーワードを元に検索結果としてユーザー一覧をtableViewに表示する
  • [ユーザーページの閲覧]任意のユーザを選択するとユーザ情報表示画面に遷移する

工夫した点

  • 大型もしくは縦長のデバイスでも使いやすいよう、操作が親指の届きやすい画面下部のみで済むようにボタンを配置しました
  • 時間内API制限(GitHubUserAPIのrate limit)による煩わしさを緩和するため、ページネーション型のUIにしました
  • 汎用API通信部分と、個別通信部分を分けて作ることで柔軟性を高めようと試みました
  • エディタのような雰囲気を感じられるデザインにしました

利用ライブラリ(選定理由)

  • Rx関連

    • RxSwift (RxSwiftでの実装のため)
    • RxCocoa (RxSwiftでの実装のため)
    • Unio (RxSwiftでの実装のサポート用)
  • 通信簡易化

    • Alamofire (APIリクエスト通信の実装を簡易化するため)
    • SDWebImage (fetchした画像の表示簡便化するため)
  • UI

    • SVProgressHUD (ローディングの表示を簡便化するため)
    • R.swift (各種リソースの表示を簡便化するため)
    • lottie-ios (アニメーションを簡単に実装するため)
  • その他

    • SwiftLint (コーディングルールの統一のため) ※全てCocoaPodsを介して導入しています。

操作動画

AppGif2

PJ内容について補足

  • 実装の大まかな流れは下記になります

    • 1.API汎用通信部分作成
    • 2.今回利用するAPIに合わせた通信部分作成
    • 3.jsonデコードテスト
    • 4.UIの作成
    • 5.ViewModelの作成い
    • 6.データバインディングを行う
    • 7.レイアウトやデザインの調整
    • 8.細かな修正
  • ブランチ運用の流れは下記になります

    • 1.各機能の開発をfeature/XXX ブランチで行い
    • 2.developブランチにマージ
    • 3.ブランチ分けの必要がないと考えた修正はdevelopブランチにて実装
    • 4.アプリとして動く状態まで進んだタイミングでmasterブランチにマージ
    • 5.以後修正の必要があればまたdevelopに戻り、feature/XXXブランチを立てるか判断する
  • 検索結果0件のときの表示: searchBar下のラベルに検索結果が0件の旨を表示しています

searchgithubuserapp's People

Contributors

ykkd avatar

Forkers

doihei

searchgithubuserapp's Issues

ページネーションの問題

サーチ結果が0件以上の検索の直後に、サーチ結果が0件の検索を行った時の問題
理想:サーチ結果0件のときはページネーションボタンが左右共に隠れる
現状:ボタンが残ったままになる

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.