読者です 読者をやめる 読者になる 読者になる

特別天然記念物

日本ぱんだ(@nihonpanda)です。エンジニアです。プログラム談義とかします。

インターン生に出したアプリ開発の基礎を学ぶための課題を公開します

お久しぶりです。
僕です。

まず、軽く近況報告を。
ガルパンはいいぞ

以上です。

嘘です。
Twitterなんかではよく言ってますが、弊社にはエンジニアが1人しかいません。サーバサイドには外部からお願いしてる人がいますが、アプリエンジニアとしては僕だけです。
なので、とても寂しかったのです。寂しかったので、母校に連絡してインターンを1人来てもらうことにしました。

ここからが本題

インターン生にはiOSアプリ開発の勉強をしてもらうつもりですが、来てもらう子はAndroidアプリの開発経験はあれど、iOSアプリの開発経験は無いらしいので、まずは弊社でリリースしているアプリに触ってもらう前に、iOSアプリ開発の基礎を学ぶための課題をやってもらうことにしました。

ところで、アプリ開発の基礎ってなんですかね。っていう話なんですけど。
賛否両論あるかとは思いますが、僕は以下の事ができればAndroidiOS、WP問わず最低限のことはできるのかなぁとは思っています。

  1. 開発環境を構築できる
  2. gitが使える
  3. ライブラリ管理ツールが使える(cocoapodsとかnugetとかGradleとか)
  4. ライブラリを用いてWebAPIを叩ける
  5. ライブラリを用いてJsonをパースできる
  6. パースしたJsonの中身を表示できる

くらいです。まぁ多くのエンジニアが「1時間くらいでできるじゃん・・・」と思うでしょうが、アプリ開発学んだことのない学生にやらせる課題としては、これくらいのことが2週間程度でできれば僕は充分だと思っています。
なので、上記を満たすような課題の仕様を作ってやってもらう事にしました。っていう話をTwitterに書いたら、誰とは言わないけど、怖いデザイナー達が、その課題をよこせ。と言ってきたの公開します。

公開しようと思ったのですが、インターン生の課題に使ってるWebAPIが非公開のAPIで、それごと公開するわけにはいかないので、APITwitterに置き換えたやーつで書いていこうと思います。インターン生に渡した課題と大意は離れていないはずなのでやってみてください。
ちなみに、怖い人達にはswift3.0を学びたいと言われましたが、そんなものは「ものづくりしながら公式ドキュメント読んで覚えろ」派なので、課題の中で言語仕様について言及はしていません。(もちろんインターンの学生にはちゃんとレビューします。)

課題

概要

以下の仕様を満たすアプリを作ることによって、アプリ開発の基礎、使用する言語の言語仕様を学ぶこと。

課題の狙い

  • iOSアプリ開発&Swiftの基礎を学ぶ
    • 言語仕様を理解すること
    • Xcodeを使用できるようになること
    • 情報の一覧表示ができるようになること
    • 画像の表示ができるようになること
    • 画面遷移ができるようになること
    • Interface Builderを使用できるようになること
    • 非同期通信処理を書けるようになること
    • JSONのパースができるようになること
    • ライブラリをCocoaPodsから導入できるようになること
    • Githubによるバージョン管理ができるようになること
    • レビュー時にコードの説明を論理的にできるようになること

アプリ仕様

以下の機能を満たすTwitterクライアントを開発する。

  • ログイン・ログアウト機能
  • タイムライン表示機能
    • ツイートの内容
    • ツイートの日時
    • ツイートしたアカウントのID
    • ツイートしたアカウントの表示名
    • ツイートしたアカウントのアイコン
    • ツイートに画像が含まれている場合はその画像(可能であれば複数画像にも対応すること)
  • ツイート機能
  • タイムラインに表示しているツイートをタップでツイートをお気に入りする機能

開発環境

  • 最新のSwiftを使用すること
  • 最新のcocoapodsを使用すること
  • 最新のxcodeを使用すること
  • リポジトリgithubを使用すること
  • Swifterを使用すること

まとめ

ちょっと仕様の提供の仕方もざっくりすぎて、ほんとに賛否両論あるかとは思うんですけど、非エンジニアの人達はエンジニアのために懇切丁寧に仕様を説明してはくれないし、学生の事を考えればざっくり仕様からプロダクトオーナーやユーザーの要求を抽出するのも大事な能力なので・・・(目を逸らしながら)
ただ、上記の簡単なアプリを2週間程度で作る事ができれば、即戦力とは言わないまでも、アプリ開発における初歩の初歩くらいは学べるかと思います。 iOS以外でも、仕様を適宜読み替えてもらえればある程度は学べると思います。たぶん。

で、わからないこともあるかと思うので、僕で良ければなんですけどSlackチャンネル用意したので、時間があれば質問なんか答えようかななんて思ってます。
とりあえずTwitterでDMかなんかくれれば招待しますので。

今回はこんな感じで終わりです。
次はインターン生から僕が得た気づきなんかの記事が書ければいいなぁ。