アウトプットを頑張る

初めてのプログラミング学習期間中の記録と、日頃読んでいる本をメモのアウトプットをがんばります。

【プログラミング学習】Ruby on Rails  Railsコマンドについて

■プログラミング学習

f:id:yuma6128:20210807212847j:plain

Rails アプリを作るため、最初にコマンドを使って雛形を作成していくそのコマンドを
rails コマンドという。
このコマンドに様々なコードが自動で含まれているため素早くWebアプリケーションが作成できる。 

◎アプリケーションの作成

rails new コマンド

◎データベースの作成

アプリケーションのコマンドでアプリケーションの箱が出来たが、まだデータベース側ができていないため、データベースの作成をする

rails db:create

◎サーバーを起動

開発しているPC環境で動きを確認するためにサーバーを起動する。

rails s

サーバーを止めるためには
Control + cで停止。


◎ルーティング

リクエストを振り分けるためのコマンド
route.rbファイルの中に記述が必要。

HTTPメソッド 'URIパターン', to: ’コントローラー名#アクション名’

ルーティングの確認をするためのコマンド
rails routes


Prefix |Verb    | URI Pattern   |
  Controller#Action
              HTTPメソッド  |URLのようなもの  |リクエスト処理するコントローラーとアクション

※結果の画面とは異なります

◎コントローラー

MVCにおける橋渡し役としてルーティングから受け取った処理を行い、
他の役割と連携して、データ取得、受け渡しを行いレスポンスを完成させる。

コントローラーを作成するためのコマンド

rails g controller コントローラー名(複数形)


コントローラー内のアクション一覧

  1. index  | 一覧ページを表示するリクエストに対応して動く
  2. new    |新規投稿ページを表示する
  3. create |データ投稿を行う
  4. show  | 個別詳細ページを表示する
  5. edit    | 投稿編集ぺーじを表示する
  6. update | データの編集を行う
  7. destory | データの削除を行う

 

◎ビュー ERB(Embedded Ruby)

RubyのようなWEBアプリケーションではデータを扱って表示するため、Rubyで表示をしたい。
そのため、データでもHTMLを使用したいときは、Rubyを埋め込める、ERBを使用する。
ERBとはひな形となるテンプレートとそのテンプレートにデータとなる記述を埋め込むことで、最終的に別のファイルとして生成出来る仕組み。
このような仕組みをテンプレートエンジンと呼ぶ。

○○.html.erb ファイル

ビューにRubyで記述するためには、
コントローラーのにインスタンス変数で定義をし、そのインスタンス変数を
ビューで呼び出す。
その際に、表示する場合と表示しない場合のタグの使い分けを行う。

<表示する場合>
<%=  %>

<表示しない場合>
<%   %>

MVCの流れは一つひとつ設定していくと、わかりやすく設定を確認しながら
学習することで定着できた。
コントローラーのアクション一覧はグループでわけ整理して覚えるように意識をしていった。



■読書

f:id:yuma6128:20210710180648j:plain

最近読んだDaiGoさんが書いた「知識を操る超読書術」は本を読む方法や捉え方について、改めて知識を得ることが出来た。
本をたくさん読んでいても、その場では何か変わった気がするが、結局身についていないのでは?と思うことがあり、そんなときにはこの本を読むことをおすすめします。
まず、目次の時点で4つのパターンに振り分けがあり、
・読書が苦手な方
・本を読み切ることが出来ない方
・本の内容を今以上に自分のものにしたいと願っている方
・読んだ本を仕事や生活に役立てる方法を知りたい方
で章ごとに分かれているため、読みたいところから読んでいくことをおすすめします。
個人的には、アウトプット大全などでも本を読む前と読んだあとでの変化をアウトプットする大切さの再認識と、まず読む前にこの見出しからどんな話が来るのか、予測読みや視覚化読みで定着をはかり、アウトプットの仕方としてのテクニカルターム
SPICEという実践的な話すためのインプット方法が学べてよかった。
さらに、よりすぐりの名書も挙げられており今年読む本はしばらく困らなそう。

【プログラミング学習】Ruby on Railsとは

■プログラミング学習

f:id:yuma6128:20210801205258j:plain

Ruby on Railsとは
Railsとは、Rubyのなかのフレームワークの一つで、
最小のコストでWebアプリケーションの作成が出来る仕組みになります。
Ruby on Rails2つの理念から構成されているフレームワーク
・DRY(Don't Repeat Yourself)
同じコードを繰り返し書くことが避け、保守管理しやすい状態に保ち、バグを減らす。

・CoC(Convention Over Configuration)
Ruby on Rails自体で規約を用意しているため、規約に則ったコードを書くことで、記述量が少なくすることができ、スピーディーな開発が可能。

Rails コマンド
Railsでアプリケーションを作成するためにターミナルで使うコマンドを整理していく。
rails コマンド名
でさまざまな動作を実行していく。

・新しいアプリケーションの作成
 rails new アプリケーション名

・新しいデータベースの作成
 rails db:create

・ローカルサーバーの立ち上げ
 rails s

Railsにおける処理の流れ MVC
この内容を最初理解するのに、何周も何周も一通りの流れをやっていくことで
動きは理解していった。
実際のWebアプリケーションの挙動の順番、動きを整理する。
・ルーティング
・コントローラー
・モデル
・ビュー

 

■読書

f:id:yuma6128:20210710180648j:plain

◎「 ビジネスモデル図鑑 2.0 」 著者:近藤哲朗 氏
この本にかかれている企業のビジネスモデルは、今まで考えもしなかった痒いところに手が届くタイプのものや、純粋に社会課題を解決するだけでなく、きちんとビジネスとしてボランティア的な活動以上の成果を出している企業の紹介などが多数100社紹介されている。
個人的にはこの内容をトレースして、きちんと頭の中に落とし込んでいけば
なにか自分の中でも足し算、掛け算で新しいものが浮かぶのではと期待をして、
読んでいました。(まだ何も思いつきませんが・・)
良い企業の発見や、ビジネスのあり方について考えるきっかけをくれる1冊です。

【プログラミング学習】Webアプリケーションとは

■プログラミング学習

f:id:yuma6128:20210731183954j:plain

◎Webアプリケーション

Web上で使用されるアプリケーションのことで、このWeb上で公開されている「ある目的」のために作成されたプログラムのことを、Webアプリケーションと呼ぶ。
たとえば、
Hatena Blog → 無料でしっかり書けるブログサービスです。日々の生活から感じたこと、考えたことを書き残しましょう。

Facebook → 友達とのつながりや、家族共通の興味・関心をもっている人たちとのつながり

Google → 調べたいものを検索する

など。
かなりざっくりとですが、日頃Web上で使っているものほとんどが、
Webアプリケーションだと思っています。

◎動的・静的
このWEBサイトには、動的なものと、静的なものの2種に分かれる。
Webアプリケーションはほとんど動的なもので、ユーザーや管理者が更新するたび
ページの表示が変わっていく。
反対に静的なものはいつきても、常に同じ内容が表示される仕組みです。

◎HTTP通信
Webアプリケーションが表示されるまでの仕組みとして、
インターネットを通して、必要な情報のやりとりが必ず発生する。
そのやり取りをする場所をURLが示している。

◎リクエス
このデータのやり取りの名前もあり、こういった情報を見せてほしいと
URLからデータを要求することを「リクエスト」

◎レスポンス
要求された情報を返すことを「レスポンス」という

◎クライアントサイド
このリクエストをする側を「クライアント」といい、Webアプリケーションのサービスの利用する側のこと。

◎サーバーサイド
反対にレスポンスを返す側、Webアプリケーションが存在する側がサーバーサイドという。
このサーバーサイドには、大きく3つに分けられる。
アプリケーションサーバ
・ウェブサーバー
・データベースサーバー

普段使っているものの裏側を改めて、どんな仕組みなのかアウトラインを
学ぶ機会でとても良かった。

■読書

f:id:yuma6128:20210710180648j:plain

外資系コンサルが教えるプロジェクトマネジメントについて、読み終えたため
ざっと感想になります。
心に残ったのは、トラブルのときにどう対処するのか、そのときにリーダーの本質が
その人の人格が出るというところで、トラブルの起きた原因ではなく
ともかく、「問題解決に前向きに取り組む」という姿勢を見せ、その場を乗り切る姿勢を自分自身もつけていきたいと思った。
キャリアとして、身につけるスキルは3種あって、
「その会社で評価されるスキル」
「その業界で評価されるスキル」
「どの業種であっても評価されるスキル」
の3つで、一番大事なのはこの3つ目のどこでも通用するスキルと御説明されていました。
この本の発行年が2016年時点でしたので、今まさに1社や1業界にしがみつくことより
いかに幅広くプロジェクトを回せる人材が必要なのかと
この時代から言っている筆者にとても驚きました。
改めて私自身もプロジェクトマネジメント能力を磨いていきたいと思います。

 

 

【プログラミング学習】プログラミング言語 Ruby 基礎5

■プログラミング学習

f:id:yuma6128:20210727213843j:plain

これまでの学習で用いていた文字列や数値の値は、Rubyにはじめから用意された値を使っていました。
クラスとインスタンスを使って、新しい種類の値を自分で設定が出来るようになることを学びました。


・クラス

値の元となる共通のルールを定義する。
共通の属性処理(メソッド)を決める。
設計図のような概念的なもので実体がないものになる。
```
class クラス名

 #変数やメソッドの定義
end

```

インスタンス

クラスを元にして作られるデータのこと。
設計図を元に作られたもの。
newメソッドを実行して、生成をする
```
# インスタンスを生成し変数で扱う

変数名 = クラス名.new

```


・メソッド

データが持つ動作となるメソッドの定義について学んでいった。
このあたり混乱をしていたので、自分で書いたノートなど確認しながら
アウトプットしていく。
クラスとインスタンスでデータを作る場合は、それぞれの動作つまりは「メソッド」をあらかじめ決めておく。
メソッドはクラスに定義をするが、それぞれクラスメソッドインスタンスメソッドをそれぞれまとめていく。

インスタンスメソッド
データによって、変わる処理の場合はインスタンスメソッドで定義をする。

インスタンスメソッドを定義したクラス」から生成されるインスタンスが使用できます。
定義の方法は下記手法を使う
```
class クラス名
  def メソッド名
         # 処理
     end
end
```
呼び出し方法は
```
インスタンス名.メソッド名(引数)
```
ここで注意をしたいのが、(引数)をする場合は、スコープの範囲が、
メソッドの外で定義した変数をメソッドの中で使えない
メソッドの中で定義した変数はそのメソッドの中でしか使えない
というルールのため、ここで特殊な変数を使用する。


インスタンス変数
データが持つ属性を定義する変数。
属性とは、みんなが持っている共通の項目でそれに当てはまる値を
属性値と呼ぶ。
```
人で例えると
属性 【性別  身長 体重】
属性値【男性 170cm    60kg】

```
インスタンス変数を定義することで、インスタンス全体の属性を共通にし
その中の属性値を個別に設定ができる。
インスタンス変数は、クラス内のメソッドの中で
変数名の始めにアットマーク@
1つつけて定義します。
```
class クラス名
  def メソッド名
        @変数名 = 値 #インスタンス変数
     end
end
```

・クラスメソッド

クラスメソッドを定義したクラス自身が使用することができ、クラスで共通の情報を使った処理に使用します。
定義方法は下記
```
class クラス名
 def self.メソッド名
   # 処理
 end
end
```

クラスメソッドの呼び出し

 ```
クラス名.メソッド名(引数)
```

・initializeメソッド

インスタンスの生成と同時に、実行して欲しい処理が出てくるときに使用するメソッド。
Rubyのクラスから生成されるすべてのインスタンスはクラスに記述がなくても
自動でinitializeメソッドが実行されている。
このときは基本的には何も処理行っていない。
インスタンスの生成時に処理を行いたい場合に、定義をして実行する。
定義の方法は下記
```

class クラス名
 def initialize
  # インスタンス生成したときに実行される処理(以下は例)
  puts "クラス名のインスタンスが生成されました"
 end
end

インスタンス = クラス名.new # initializeメソッドが呼ばれ文字が表示される
```

ここまでがRubyの基礎学習の内容の振り返りになります。
かなりつまんでいるので、自分自身の理解を深めるために
気になったところをピックアップして、自分なりにまとめています。
まだ完全にひとに說明ができるほど理解をしていないため、
定期的に振り返って学習をして行きたいと思います。

次の記事からWEBアプリケーションの概要などについてを記事作成していきます。


■読書

f:id:yuma6128:20210710180648j:plain

最近読み始めた本は、私がとても好きな作者山口周さんの
外資系コンサルが教えるプロジェクトマネジメント 」についての読んでいます。
実践的な内容で、個人的には「プロジェクトの最初が肝心」と「キーマンを抑える」

一番印象に残ったのが、アイシン精機の事例が初めて見たときに、「価値観の共有」の大事さ、そしてそれがあることで主体的、自律的に動くPJTが出来上がる力を感じました。
読み終えてはいないため、また次回の記事でも感想を書いていきたいと思います。

 

 

【プログラミング学習】プログラミング言語 Ruby 基礎4

■プログラミング学習

f:id:yuma6128:20210725072827j:plain

◎繰り返し処理

同じ内容を繰り返して行う処理について、学んだ。
ループ処理とも呼ばれていて、同じ内容の記述を繰り返す時に用いる。
コードの記述はなるべく単純に作るためにもこの処理もきちんとアウトプットして
自分の中で理解を進めていきたい。

・timesメソッド
指定した回数を繰り返し処理を行えるメソッド
```
数値.times do
#繰り返す処理
end
```
メソッドの中だけで使用できる変数を「 | | 」で囲うブロックを使うこともできる。

```
数値.times do |ブロック変数|
#繰り返す処理
end

```

・eachメソッド
配列やハッシュの要素一つひとつに対して、要素の数だけ繰り返し処理が行えるメソッド。
要素の数というのを私はよく見逃していたので、そこを意識しています。
```
[配列 or ハッシュ].each do | [変数] |
 #処理
end
```
繰り返し処理の実行のたび、配列 or ハッシュの値がそれぞれブロック変数に格納されて
その値を処理の中で使用できる。

◎メソッドの定義

Rubyの元々あるメソッド「puts ,to_s, to_i」など以外にも、自分で定義・作成をすることができる。
作成する理由としては、処理の内容を一つにまとめて、読みやすくしたり、再利用ができるというメリットがある。
・定義方法
```
def メソッド名
 #実行する処理
end
```
メソッドとは決まった処理のまとまりになり、定義をしたらプログラム中ではメソッドを描くだけで、#実行する処理の部分が実行される。
#メソッドの定義
def hello
 puts "Hello World"
end
# メソッドの実行
hello

でhelloが実行され、メソッドの定義部分が呼び出され、実行される。

・戻り値
メソッドから呼び出された場所に渡される値のこと。
定義されたメソッドの処理の最後の行の結果が戻り値になる。

・return文
戻り値を途中の行の結果に設定したい場合は、メソッド内の戻したい行に
return ○○と記述した行の値が戻ってくる。

◎引数
定義した変数の扱える範囲のことをスコープとよび、メソッドの外で定義されている変数はメソッドの中では使えず、逆にメソッドの中で定義された変数はメソッドの外では使えない。
そのため、メソッドの外から値を受け取る引数(ひきすう)を利用する。
```
def メソッド名 (仮引数)
 #処理
end

メソッド名(実引数)
```

最初の頃、混乱していてなかなか理解ができていなかった。
スコープの範囲やメソッドの定義を改めて振り返り
理解が深まった。


■読書 

f:id:yuma6128:20210710180648j:plain

今のお金を取り巻く環境、資本主義社会の変化に対して、これからの生き方を考えるための1冊でした。
貨幣の本質の例でピカソの絵の売り方を例がとてもわかりやすく、自分自身も物語を
買うことのほうが多いと思った。
また、お金が生まれたのが物々交換からと思っていた私としては、はじめは記帳(記録)から始まっていたというのも驚きでした。
昨今のブロックチェーン技術の発展もそうした原点回帰の部分があるのではとも思った。
今の時代に必要なのは、「信用」をためていくことの重要性、数値を追い求めていくだけの現在の貨幣のありかたについての話がお金についての理解が深まった。


 

 

【プログラミング学習】プログラミング言語 Ruby 基礎3

■プログラミング学習

f:id:yuma6128:20210720211953j:plain

◎ハッシュ

前回学んだ配列の場合は複数の性質が異なる値が管理が複雑になる。
そのために、「データ」とそれに対応する「名前」を管理する。
ハッシュを学んだ。
生成するためには、下記のような宣言が必要。
```
変数 = {データ1 => 名前1,データ2 => 名前2,データ3 => 名前3}
```
宣言時には「: コロン」を用いることが多い。
```
fruits = {:name => "Apple"}

fruits = {name :"Apple"} #よく使用される
```
ハッシュに対して、追加、値の取得、値の変更などが出来る。
・追加
ハッシュ[追加するキー] = 値

・値の取得
ハッシュ[取得したい値のキー]

・値の変更
ハッシュ[変更したい値のキー] = 値

最終的には、ハッシュと配列を組み合わせて管理することにより
まとまりとしての管理がとてもしやすくなる。

```
fruits = [] #配列
fruits << {name:"apple" , color:"red"} ハッシュ
fruits << {name:"grape" , color:"purple"}ハッシュ
fruits << {name:"peach" , color:"pink"}ハッシュ
puts = fruits  #全部出てくる
puts = fruits[1][:name] #grape 
```
が出てくるはず。。

配列、ハッシュというのが理解をできればより見やすくなると感じて学んでいた。
宣言記号を見間違えてしまうのと区別があまり出来ていなかったが
行列で考えて整理、見ていくと整理ができるようになった。

◎条件分岐処理

比較演算子で条件が正しいかどうかによって、返し値
true /falseで戻してくれる。
if (文)条件式の書き方としては、下記の通り。
```
if 条件式
 処理
end
```

else(if文)
```
if 条件式
 #条件式がtrueのときに実行する処理
else
 #条件式がfalseのときに実行する処理
end
```

elsif (if文)
```
if 条件式 1
 #条件式がtrueのときに実行する処理
elsif 条件式 2
 #条件式1がfalseのときかつ
  条件式2がtrueのときに実行する処理
elsif
 #条件式1と2がどちらともfalseのときに実行する処理
end
```

このあたりはエクセルのアンケート集計でVlookupを使っていて、
なんとなく入ってきやすいところもあった。
ただ、プログラム言語に置き換えたりするのが、
まだ慣れていなくワークなどを進めて理解を深めていった

■読書

9割の社会問題はビジネスで解決できるというボーダレスグループ代表田口様の著作。
会社の姿勢として、社会問題の解決にしか取り組まないという姿勢を聞いて、自分の仕事が社会に対しての影響というのを改めて考えるきっかけになりました。
自分のやっている仕事は社会のどの部分に役立っているのか、誰かの役に立っているのだろうかと考え直しました。
プログラミング学習を始めたきっかけとしても他者貢献をしたいという思いから学習を始め、はじめは世の中に使えないサービスになるかもしれないが、無料で使えて便利になるサービスを作っていけたらと考えています。
本書の中では、社会起業家たちの熱い思いや取り組みの内容、ビジネスモデルの考えかたシートの配布など、とても良い内容の本でした。
個人的にはボーダレスグループに入り、一人でも多くの社会起業家を増やすことに取り組んでいきたいと感じた1冊でした。

 

 

【プログラミング学習】プログラミング言語 Ruby 基礎2

■プログラミング学習

f:id:yuma6128:20210718110636j:plain

◎変数

変数を定義すると、値の再利用をする場合に便利に使用することができる。
定義の仕方としては下記方法。
```
変数名 = 格納する値
```

Rubyにおいて「 = 」は右側の値を左の変数に代入する。

学習を進めている中で、変数の宣言忘れや、見落としが私は多く、
意識的に、変数の定義はみるようにしていました。


```

PC = "mac book"

```

変数の命名規則としては、以下の点を意識する。
前提としては、プログラミングが一人で進めるものではなく、他の人と共有しながら
使うため意味や再利用をしやすくすることを意識する
・変数の中身が誰がみてもわかるもの
・小文字で開始する
・アンダーバーで始めない
・数字で始めない
・日本語を使わない
・スペースを含めない
予約語を使用しない

◎出力機能、入力機能

出力・入力をするために必要な機能
出力には「puts メソッド」
入力には「gets メソッド」
getsメソッドで入力された情報は、「文字列+
改行」になる。
そのため、「chompメソッド」を使い、「gets.chomp」を使用する。

```

PC = get.chomp

```

 

◎配列

1つの変数で複数の値を持つことのできる値のこと
定義の仕方としては、 を使用する。
```

変数 =

```


```

fruits_basket = ["りんご", "みかん","バナナ"]
puts = fruits_basket

```

この配列に追加したい場合につかう処理を<<という演算子を使用する。

配列 << 追加する要素 

 

改めて、自分でアウトプットようにワークを見返しながら
ブログ記事を書いていると、変数の定義についての理解が深まった。
途中にも書いたが、コードが多くなってきたときに、変数の定義をせずに
進めるエラーがあったため、今後気をつけていけると感じた。

 

■読書

昨日、下記の本を読み終えた。
色々な技が書いてあり、個人的に今実践しているのは
・「呼吸法」
・「日々の瞑想」
・「毎日の感謝」
・「睡眠」

などを意識的に変えていくよう実践をしている。
自然の中に身を置くや泥遊びなども書いてあったので、もう少し落ち着いたら、そういったところも実践していきたい。
また意識的に外に15分間散歩や公園で緑を感じるだけでも、健康や意識改善につながるというのもあったので実践をしていきたい。