コードを書けない人が0からコードを書くための3ステップ

#今回の記事の想定
***⚫︎プログラミング学んだけど0からコードが書けない人***向けです。
下の動画をベースに記事を書いて行きます。

#参考動画
この動画をベースに描いて行きます。

https://m.youtube.com/watch?v=AdguxgpH514&list=PLs3eD4QT7ow6HKbWLHLL6rgnmyguyfR5V&index=2&t=49s


#なぜ手が動かないか
理由は***いきなり大きなことをやろうとして何をしたらいか整理できていないことです***。

これを解決するためには？

1.```日本語でやりたい処理を言語化```

2.```言葉にしたことをコードに置き換える```

3.```小さく動かす```

上の３つができれば書けるようになるみたいです。

#実際のコードでやってみる
動画もRubyでやっていますが自分もRubyでやって行きます。
まず以下の前提でコードを書いて行きます。

```rb

#次のFootball_playerクラス内にdataメソッドを追加し、期待する出力結果になるようにする
class  Football_player
   
end

Football_player1 = Football_player.new('メッシ','アルゼンチン',169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()
```

⚫︎期待する出力結果

```rb
名前: メッシ
国籍: アルゼンチン
身長: 169
名前: ロナウド
国籍: ポルトガル
身長: 187
```
やりたいことを言語化して書いて行きます。

```rb
class  Football_player  
#コード追加 名前と国籍、身長を受け取る
　#名前と身長の情報を出力
end

Football_player1 = Football_player.new('メッシ','アルゼンチン',169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()
```
⚫︎追加
1.コード追加 名前と国籍、身長を受け取る
2.名前と身長の情報を出力
この２つを追記しました。

そこで***Ruby 文字出力で検索***します。

この記事がヒットします。
https://www.sejuku.net/blog/16119

putsを追記します。

```rb
#次のFootball_playerクラス内にdataメソッドを追加し、期待する出力結果になるようにする
class  Football_player
 #コード追加 名前と国籍、身長を受け取る
　　#名前と身長の情報を出力
　name = 'メッシ'
 nationality = 'アルゼンチン'
 heigth = 169
 puts name
 puts nation
 puts height
end

Football_player1 = Football_player.new('メッシ','アルゼンチン',169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()
```

しかし出力結果は期待する結果にはならないです。
文字が連結しているので***Ruby 文字連結***で調べます。
するとこちらの記事がヒットします。
https://qiita.com/Kta-M/items/c7c2fb0b61b11d3a2c48

```rb
#次のFootball_playerクラス内にdataメソッドを追加し、期待する出力結果になるようにする
class  Football_player
    #コード追加 名前と国籍、身長を受け取る
    #名前と身長の情報を出力
name = "メッシ"
 nation = "アルゼンチン"
 height = 169
 puts "名前:"+ name     #追記
 puts "国籍:"+ nationality  　#追記  
 puts "身長:"+ height　　　　#追記
end

Football_player1 = Football_player.new("メッシ","アルゼンチン",169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()
```
上のコードのように追記します。
ただこのままだとエラーが出てしまします。

```rb
名前:メッシ
国籍:アルゼンチン
Traceback (most recent call last):
        2: from study_time.rb:819:in `<main>'
        1: from study_time.rb:827:in `<class:Football_player>'
study_time.rb:827:in `+': no implicit conversion of Integer into String (TypeError)
```
数値と文字は連結できないという意味です。
"身長:"+ height　と height = 169の部分のことです。

```Ruby 整数 文字列変換で検索```します。

この記事がヒットします。
https://www.javadrive.jp/ruby/numeric_class/index4.html


```rb
class  Football_player
    #コード追加 名前と国籍、身長を受け取る
    #名前と身長の情報を出力
name = "メッシ"
 nationality = "アルゼンチン"
 height = 169
 puts "名前:" + name
 puts "国籍:"+ nationality 
 puts "身長:"+ height.to_s  //.to_sを追記
end

Football_player1 = Football_player.new("メッシ","アルゼンチン",169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()
```
height.to_s に変更しました。

以下のエラーが出ます。

```rb
名前:メッシ
国籍:アルゼンチン
身長:169
Traceback (most recent call last):
        2: from study_time.rb:830:in `<main>'
        1: from study_time.rb:830:in `new'
study_time.rb:830:in `initialize': wrong number of arguments (given 3, expected 0) (ArgumentError)
```

その後に

```rb
class  Football_player
    #コード追加 名前と国籍、身長を受け取る
    #名前と身長の情報を出力
name = "メッシ"
 nationality = "アルゼンチン"
 height = 169
 puts "名前:" + name
 puts "国籍:"+ nationality 
 puts "身長:"+ height.to_s 　 //.to_sを追記
end

Football_player1 = Football_player.new("メッシ","アルゼンチン",169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()
```
次はこのコードを書いて行きます。
```コード追加 名前と国籍、身長を受け取る```

***Rubyクラス変数初期化***で検索し以下の記事がヒットします。
https://www.javadrive.jp/ruby/class/index5.html

```rb
class  Football_player
    #コード追加 名前と国籍、身長を受け取る
def initialize(name,nationality,height)
   @name = name
   @nationality = nationality
   @height = height
end

    #名前と身長の情報を出力
name = "メッシ"
 nationality = "アルゼンチン"
 height = 169

 def data
 puts "名前:" +  @name
 puts "国籍:"+ @nationality 
 puts "身長:"+ @height.to_s
end
end

Football_player1 = Football_player.new("メッシ","アルゼンチン",169)
Football_player2 = Football_player.new('ロナウド','ポルトガル',187)

Football_player1.data()
Football_player2.data()
```
これで期待通りの挙動になります。

#最後に
かなりわかりづらい記事になり申し訳ありませんでした。
この記事はほぼ```自分のアウトプット```のための記事です。
動画は詳しく載っているので見てみてください。