---
slideOptions:
transition: slide
---
# Section0-1 (ruby)
*この資料は初回授業前にまずやっておいてほしいことをまとめたものです*
----
> 今回の目標
- 環境構築の完了
- rubyのコードを書いて理解する
----
> 今後の予定
- 学んでいく言語
- 型を意識しない簡単な言語 ruby, rails, (HTML&CSS javascript)
- 型の意識が必要なC++, C#
- オブジェクト指向の代表格 java
- Section0, 1
- 環境構築, ruby
- [レジュメ](https://hackmd.io/@6CrGmykWQgSwSwNYI0c5ww/H1xhudlvw)
- Section2, 3
- git, github, rails
- [レジュメ](https://hackmd.io/@6CrGmykWQgSwSwNYI0c5ww/rJ8POpQvD)
- Section4
- rails実践
- [レジュメ](https://hackmd.io/@6CrGmykWQgSwSwNYI0c5ww/S1l0B42Pw)
- Section5
- 準備中...
----
> まず,エンジニアになるために
- どんな職業なのか
- ざっくりいうと「形のないものづくり」
- PCやスマホ(ハードウェア)と違って無形物(ソフトウェア)
- 今回のコーチングではソフトウェアのみ扱います
- 暗記する職業ではない(覚えておくことはあるけど)
- **「今,これから確実に必要とされる職業!」**
- 達人エンジニアになるためには?
- 言語の全てを知る必要はない
- **「問題やエラーに対してちゃんとググれるか」** がだいじ
- 他に必要な技能は?
- チームとコミュニケーションが取れる
- 作りたいものの設計や工数を予見できる
- インフラ,ネットワーク,データベース,サーバ,フロント,機械学習,解析など分野は異なるため,興味のあるカテゴリで達人になるだけでも十分すごい
----
> 今後,授業を進めていくにあたって
- 大切なこと
- エラーと向き合う
- 書いたコードを動かしてみると画面が赤くなることがある!
- エラー画面が出るたびにため息が出るかもしれないけど,,
- **「誰しもが通る道!乗り越えないとエンジニア人生始まらない!」**
- どうやって解決するか
- まずググってみる(検索する力が一番大切)
- 5~10分悩んでわからないなら質問する(初心者でずっと悩んでても何も解決しない)
- **「わからないことは恥ずかしいことではないのでガンガン質問しよう!」**
- コマンドやコードはできるだけタイピングしない
- 初心者のうちはタイピングでミスすると何が間違えているのかわからなくてツムため
- **「まずはやり方と動き方を覚える」**
- **そして楽しむ!!**
- コーチとしてできること
- teachではなくcoach
- 基本などは自動的に学習していただいて,我々コーチとしては困ったときのサポートや,正しい学習の方法,ステップアップしていくための正しい目標設定などにコミットします
- つまり **「意欲的な学習が大事!」**
- なぜcoachingなのか
- 企業や社会で即戦力として活躍するには **「自分で問題解決する力」が重要**
- 「教えられる」ことに慣れてしまうと目まぐるしく技術が移り変わるITの世界では,最新技術を学ぶことができなくなってしまう
- 以上から **「エンジニアとして1人前になれるようにサポートする」** のがコーチである自分にできることです
----
> まずやりたいこと
- コードを共有するためのサービス(github)のアカウント作成
- 自前PCでコードを書くための環境構築
- ちょっとしたコードを書いてみる
----
> githubアカウント作成
- githubとは
- コード管理するwebサービス
- エンジニアなら絶対使っている(と言っても過言ではない)
- 履歴やみんなとのコードの共有ができてめちゃくちゃ便利
- アカウント作成方法
- https://qiita.com/okumurakengo/items/848f7177765cf25fcde0
- https://note.com/snmal_jp/n/n3ef510a8181e
- リポジトリ(コードを保存する先)はまだ作成しなくても大丈夫です.興味ある方はやってみましょう!
- githubコマンド
- githubを使いこなすためにはコマンドと言われるものを使えるようにならないといけません!(できるとエンジニア感が50%くらいアップします!)
- https://employment.en-japan.com/engineerhub/entry/2017/01/31/110000
- 私のアカウントはこちら
- コーチングにあたり書いたコードのチェックをするため,フォローしてもらえると!
- https://github.com/0084takuya
----
> 環境構築とは
- プログラミングをする(コードを書くための環境作り)ために**言語やフレームワークをPCにインストール(準備)しておくこと**
- ex) 料理と一緒
- キッチン(PC)があるだけでは足りず,
- 包丁,まな板(フレームワーク)や
- 必要な食材(言語)を揃えてようやく料理できる!
- なぜ必要なのか?
- しないとコードが書けない
- はっきり言って「最初の山場」
- あなたのOSは?
- OSとは
- アプリケーションをPC上(物理的,ハード)で動作させるために必要なもの
- 難しいのであまり深く理解していなくてもOK
- 有名なのものはmacOS, WindowsOS
- 言語によって揃えないといけないものは少し違う
- 
- [参考画像URL](https://cdn-ak.f.st-hatena.com/images/fotolife/Y/Yuki-F/20170816/20170816165914.png)
- OS,言語ごとに準備することが異なる
- (項目が多いので記事を参照してください)
- 共通
- https://qiita.com/GAO69/items/26d3140ad30871b8dc4b
- macOS(UNIX系)
- https://qiita.com/yano404/items/406341021892e08e5d81
- [rails]
- https://qiita.com/kodai_0122/items/56168eaec28eb7b1b93b
- ```brew install rbenv```
- https://qiita.com/TAByasu/items/47c6cfbeeafad39eda07
- windowsOS
- https://note.com/akazawa_studio/n/nda7b97038e5c
- https://qiita.com/genchi-jin/items/f5b478215040e59a1f27
- [rails]
- https://qiita.com/miriwo/items/ad07f1b05f4e75d8a6f8
- https://qiita.com/ksh-fthr/items/64a4e86c8bad08322c94
- 他必要なアプリケーション
- Atom
- エディタ
- コードを書くための「ノートやメモ帳」的存在
- vim
- コマンド
- https://qiita.com/hide/items/5bfe5b322872c61a6896
----
> プログラミング言語 Rubyとは
- まつもと ゆきひろ氏が作成した言語(1993)
- いわゆる **オブジェクト指向スクリプト言語** と言われるもの(深く触れない)
- 動的型言語で型を意識しなくて済む(とにかく簡単!)
----
> フレームワーク Railsとは
- そもそもフレームワークとは
- Webアプリケーションやシステムを開発するのに必要な機能が予め用意された骨組み
- つまり **「ある言語でアプリを作るときに必要な他のものをもう準備しといたよ!という便利なもの」**
- じゃあ,Railsとは
- つまり **「Rubyでアプリ作るなら〇〇とか〇〇はもう準備しておいたから!」という優しいやつです!**
- 具体的には
- HTML&CSS, javascriptなどのフロントエンド(画面を構成する)言語と
- Ruby, Mysqlなどのバックエンド(データを保存する処理など)言語を準備
----
> とりあえずフレームワークは抜きにしてコードを書いてみよう
- 以降の表記
- [code]
- コード
- [ans]
- 実行結果
- OSごとに準備するもの
- macOS
- ターミナル
- WindowsOS
- ubuntu
----
> 文字の出力
- p (printの略)
- [code] ```p 'hello world!'```
- [ans] hello world!
----
> 計算
- 四則演算
- + 足し算
- [code] ```4 + 7```
- [ans] 11
- - 引き算
- [code] ```7 - 4```
- [ans] 3
- * 掛け算
- [code] ```7 * 4```
- [ans] 28
- / 割り算
- [code] ```8 / 4```
- [ans] 2
- その他
- % 余り
- [code] ```7 % 4```
- [ans] 3
----
> IF
- 条件を示す
- 信号で例を示すと
- もし「赤」なら”止まれ”「青」なら”進め” それ以外なら”気をつけて”を出力
- [code]
```
signal = "赤" #signal
if signal == "赤"
p ”止まれ”
elsif signal == "青"
p ”進め”
else #それ以外なら〜
p ”気をつけて”
end
```
- [ans] ”止まれ”
----
> FOR
- 繰り返しを示す
- 1〜5まで足した結果を出すとき
- [code]
```
# 合計値を保持するためにsumを0で宣言
sum = 0
# 1..5は[1,2,3,4,5]を示し,順にiに1,2,3,4,5を代入している
for i in 1..5
# iの値を順次,足している
# sum = sum + iとも
sum += i
end
p sum
```
- [ans] 15
----
> コーディング課題
- 身近な現象をIF文で表現してみる
- ex) 池袋駅なら”乗る”,新宿駅なら”降りる”
- [code]
```
next_station = "" #現在地など
if next_station == "池袋駅"
p "乗る"
elsif next_station == "新宿駅"
p "降りる"
end
```
- 1から100のうち,3の倍数なら”FIZZ”,5の倍数なら”BUZZ”,双方の倍数なら”FIZZ BUZZ”を出力する(FOR, IF両方使う)
- ※FIZZ BUZZ: 英語圏で長距離ドライブ中や飲み会の時に行われる言葉遊び
- 中学数学の動点P問題くらいプログラミングでは有名な問題です
----
> rails習得の近道
- 1. progateでruby, railsを2周回してみる(3日)
- まずは基礎基本から
- 2. rails tutorialをやってみる(1週間)
- ちょっと難易度高め
- https://railstutorial.jp/chapters/beginning?version=5.1
- 3. プロダクトをアイデア出して作ってみる(1週間〜)
- 実行に移す前に相談していただければ,アドバイス出せます!
----
> おすすめの書籍など
- IPA基本情報技術者試験
- ITに関する基本的な知識を身に付けるための試験
- IT関連の仕事をする,エンジニアになるなら必須の内容
- 試験を受けなくても **参考書を読むだけで大分違うので「まずこれを読んでください!」**
- https://www.jitec.ipa.go.jp/
- https://www.fe-siken.com/
- progate
- プログラミングをwebで体験してみることができるサービス
- デメリットはここで自分のアイデアしたものは作れない(PCで環境構築が必要)
- **「言語を書くことの楽しみを知るにはもってこい」**