Git Product home page Git Product logo

yumemi-assignment's Introduction

株式会社ゆめみ Android エンジニアコードチェック課題

概要

本プロジェクトは株式会社ゆめみ(以下弊社)が、弊社に Android エンジニアを希望する方に出す課題のベースプロジェクトです。本課題が与えられた方は、下記の概要を詳しく読んだ上で課題を取り組んでください。

アプリ仕様

本アプリは GitHub のリポジトリを検索するアプリです。

環境

  • IDE:Android Studio Flamingo | 2022.2.1 Patch 2
  • Kotlin:1.6.21
  • Java:17
  • Gradle:8.0
  • minSdk:23
  • targetSdk:31

※ ライブラリの利用はオープンソースのものに限ります。 ※ 環境は適宜更新してください。

動作

  1. 何かしらのキーワードを入力
  2. GitHub API(search/repositories)でリポジトリを検索し、結果一覧を概要(リポジトリ名)で表示
  3. 特定の結果を選択したら、該当リポジトリの詳細(リポジトリ名、オーナーアイコン、プロジェクト言語、Star 数、Watcher 数、Fork 数、Issue 数)を表示

課題取り組み方法

Issues を確認した上、本プロジェクトを Duplicate してください(Fork しないようにしてください。必要ならプライベートリポジトリにしても大丈夫です)。今後のコミットは全てご自身のリポジトリで行ってください。

コードチェックの課題 Issue は全て 課題 Milestone がついており、難易度に応じて Label が 初級中級ボーナス に分けられています。課題の必須/選択は下記の表とします。

初級 中級 ボーナス
新卒/未経験者 必須 選択 選択
中途/経験者 必須 必須 選択

課題 Issueをご自身のリポジトリーにコピーするGitHub Actionsをご用意しております。
こちらのWorkflow手動でトリガーすることでコピーできますのでご活用下さい。

課題が完成したら、リポジトリのアドレスを教えてください。

参考記事

提出された課題の評価ポイントに関しては、こちらの記事に詳しく書かれてありますので、ぜひご覧ください。

AIサービスの利用について

ChatGPTなどAIサービスの利用は禁止しておりません。

利用にあたって工夫したプロンプトやソースコメント等をご提出頂くことで、加点評価する場合もございます。 (減点評価はありません)

また、弊社コードチェック担当者もAIサービスを利用させていただく場合があります。

AIサービスの利用は差し控えてもらいたいなどのご要望がある場合は、お気軽にお申し出ください。

yumemi-assignment's People

Contributors

blendthink avatar ykws avatar tatsutakein avatar daimarom avatar mickie895 avatar watanavex avatar

Watchers

もふたろう avatar

yumemi-assignment's Issues

Fat Fragment の回避

本プロジェクトは Fragment が必要以上の責務を抱えており、いわゆる Fat Fragment 状態です。最低限の責務の切り出しをしてあげましょう。

※本課題は #6 の下位互換です。

プログラム構造をリファクタリング

本プロジェクトは様々な原則に違反しています。下記のリストを参考にプログラムをリファクタリングしましょう。

  • DRY 原則
  • CQS 原則
  • 単一責任原則
  • インターフェイス分離の原則
  • 驚き最小の原則

新機能を追加

本アプリの機能は極めて単純です。使いやすさが損なわれない前提で、様々な新機能を追加してあげてください。

ソースコードの安全性の向上

本プロジェクトには安全性の低いがコードたくさんあります。下記のリストを参考に、安全性の低いコードを撲滅し、安全性を高めましょう。

  • 非 null 表明演算子
  • 強制ダウンキャスト
  • 不必要な lateinit 修飾子
  • 想定外の null の握り潰し

テストを追加

現在のプログラムではテストがありません。UnitTest や UITest を追加してください。

UI をブラッシュアップ

本アプリの UI は極めてシンプルです。これでも特に問題はありませんが、やはりいまいち映えないです。使いやすさが損なわれない前提で、UI をブラッシュアップしてください。方向性(エレガント、ゴージャス、モダン等)は問いません。また Jetpack Compose の導入も OK です。

アーキテクチャを適用

最近巷では MVC や MVVM などの GUI アーキテクチャから、Redux や VIPER などのアプリアーキテクチャまで様々なアーキテクチャが話題になっています。どれでもいいので本プロジェクトを自分の慣れたアーキテクチャに修正してください。

※本課題は #4 の上位互換です。

バグを修正

本プロジェクトには、至る所にバグが潜んでいます。下記のリストを参考にバグを修正してください。

  • レイアウトエラー
  • メモリリーク
  • パースエラー
  • 例外の処理漏れ
  • クラッシュ

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.