質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.11%

機能などを実装する時の勉強方法

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 159

Rnabe

score 9

swift2ヶ月目の初心者です。基礎はやってきたつもりですが、機能を実装する時は基礎以外の知識が必要となります。
そこで私はネットに書いてない情報は公式ドキュメントやライブラリの説明を読みました。
ですがコードの説明を読んで「そういう意味なのか」と思うだけでコードは書けません。
RealmSwiftは2週間必死にコードを書いてみたり動画をみたりしましたが、全然扱えず結構へこみます。
2ヶ月やっても勉強方法は全くわからず、この先不安でしかないです。

質問

アプリ開発する上で公式ドキュメントを読むしかないのは明らかですが、そこからコードを書くのに流れ的なものはあるのでしょうか?
20時間ほどで一つの機能(RealmSwift等)を実装できずに凹んでいるのは甘い考えですか?

時々くる不安から質問をさせていただきました。もし甘いなら「そんな短時間でできるわけない」と厳しくいってもらって大丈夫です。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hoshi-takanori

    2020/07/02 11:01

    Realm に限らず、データの永続化は難しいテーマなので、初心者がたったの 20 時間で使いこなせたらむしろ天才ですね。特に、Realm はいろんなことを自動化して短いコードで書けるようにしてくれる一方、独自の作法も多いので…。

    学ぶべきポイントですが、
    ・一般論として、自分の扱いたいデータをデータ構造として設計できること
    ・使用する言語 (Swift) のクラスや構造体などがメモリ上にどのように配置されるか
    ・一般論として、データをストレージに読み書きするとはどういうことか
    ・使用するライブラリ (Realm) が、どのようにデータを取り扱うか
    ・アプリの設計として、データをどこでどう取り扱い、UI と連携させるか
    など、たくさんあります。2 週間どころか、普通に年単位の時間がかかると思った方がいいでしょう。

    キャンセル

  • Rnabe

    2020/07/02 11:40

    なるほど。やはり考えが甘すぎたようですね。
    モチベーションが上がるコメントありがとうございます🙇‍♂️
    焦ることなく頑張ろうとございます!

    キャンセル

回答 2

checkベストアンサー

+3

始めに、独断と偏見の回答になることをご了承ください。
(質問の内容的に主観がどうしても入ります)

機能を実装する時は基礎以外の知識が必要となります。

知識は、ない場合はひたすら、調査です。
というか、現場でも、新機能とか実装する時は、今までの知識があったとしても、
新しい知識、まだ身についてない技術が入りようになるので、
どんなに経験しても、それは必要なんです。

さて、本題です。
基本はわかるが、実装ができないと言う人の多くは、
要件定義ができていない人と思われます。
なぜなら、これができれば、多くの実装は後はただやるだけになりますので。

例えば、
チャットアプリを作りたいとしましょう。
であるならば、要件は下記になります。

  • チャットをする際のUI
  • サーバー間通信、プッシュ通知
  • 会員制、そのシステム

もっといっぱいあるかもしれませんが、上記が最低限必要な機能としましょう。

あとは、さらに細かく要件を絞っていきます。
UIはLINEっぽいやつで、それをやるには、UIViewControllerではこれをやって、
それをやるにはどれが必要で・・・といった具合に。
そこまで絞れば、大まかな機能ではなく、機能単体での調査が可能になりますので、
よほど頓珍漢なキーワードでなければ、絶対何かしら見つかります。

そして、そのUIについて、調査と実装を終えたら(もしくは同時並行で)次の要件をまた分割して、
細かい要件を絞っていきます。

というように、作りたいものに対して、
要件を細分化していくのが、ある大枠の機能を実装していくことに直結していくんです。
大枠の機能をそのままの言葉で調べたって、方法が出てくるわけがありません。
なぜなら、その大枠の機能は、まだ世に出てないんですから。
そして、既存の機能とか細分化したものを組み合わせて新しい機能を作るもんですしね。

スティーブジョブスは、iPhoneの3Dタッチを開発する際、他のエンジニアや、会社が、
一つの機能だけで実装しようとして、ことごとく失敗していたのに対し、
いくつかの既存の技術を組み合わせて、実装しました。

  • 歪むガラスで、圧力の強さを特定
  • 既存のタッチパネルで、タッチ箇所の特定

を使って、3Dタッチを実装しました。
コロンブスの卵ではありますが、
一つの機能でまとめてやろうとしていたら、いつまで経っても完成していなかったと思われます。

これも、要件定義がしっかりとなされているからこその完成と言えましょう。

なので、知識もそうなんですが、
まず、実装したい機能の要件定義をやれるように目指されてはいかがでしょうか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/01 21:27

    なるほど。アプリ開発特有の悩みかと思ってました。
    参考にさせていただきます🙇‍♂️

    キャンセル

  • 2020/07/01 21:35 編集

    「作りたいものがある時にどうしたらいいか」ということなら
    https://teratail.com/questions/122705
    「そもそもどうやって引き出し増やしてるの、言語をマスターするにはどうしたらいいの」ということなら
    https://teratail.com/questions/139165

    キャンセル

  • 2020/07/02 11:36

    わざわざそこまでしてくれて頭が上がりません💦。
    独学でそのようなことを教えてくれる人がいないので本当に助かります🙇‍♂️
    常に心にその思考を置いておきたいと思います。

    キャンセル

+2

アプリ開発する上で公式ドキュメントを読むしかないのは明らかですが、そこからコードを書くのに流れ的なものはあるのでしょうか?

定型的な流れというものはないかと思いますが、多くの方は「何らかのサンプルコード」を作ることで実装方法を学習しているのだと思います。

逆に質問です。

質問者さんは何らかの理由があって RealmSwift を学習しているのだと思いますが、その理由は何でしょうか。

「こういう理由があるから使いたい」という目的があれば、ある程度学習したらそれを実装すべく簡単なアプリを作ってみるのが一番いいのではないでしょうか。

そういう過程を得ることで具体的な問題点を発見したし、整理したり、あるいは解決するものだと思っています。

逆に、積極的に扱う理由もなく、単に漠然とやっているのであれば、身近な疑問として生まれるものは少ないでしょうし、それは身につけにくいかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.11%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る