アウトプットを頑張る

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

【プログラミング学習】WEBアプリケーションのサービス設計

■プログラミング学習

f:id:yuma6128:20210926073338j:plain

アプリケーション企画

アプリケーションの制作における「企画」とは、「どのようなアプリケーションを作成するか?」から「開発をスタートさせる」までを考えることです。
企画の方法はたくさんあるため、重要と個人的に思っていることを書いていきます。

まずは大切な前提として、「誰かの問題を解決する」か「誰かの欲求を満たす」ものというのを意識します。
その誰かのに着目するために、「ペルソナ」を使用いたします。

ペルソナ

ペルソナはマーケティング用語で「サービスを使用するユーザー」のことです。
似た言葉でターゲットなどもありますが、それらよりも詳細に「サービスを使用するユーザー」を決めます。
年齢層、職業、性別や現在の境遇などまで、決めることで、よりリアルに使用者の目線でサービスを考察できます。

ユーザーストーリー

ペルソナの課題に対して、どのような機能で解決していくのかを明確にしたものです。
そして、その課題を解決できる機能を考えます。

要件定義

要件定義とは、開発者などがアプリケーションの仕様を把握するために、詳細まで言語化することです。
アプリケーションの機能をページごとに言語化する

ex.
```
実装したい機能 | トップページ
要件【ボタン】 | サインイン/ログインへ遷移できるボタン
        | ログイン時は、ログアウトできるボタンがある

```
のようなイメージです。

何も考えず作るよりも目的を明確にし、そしてきちんと要件定義して作っていく、
その中で、軌道修正が必要な場合は早めに対処することを個人的には目指していきたいと思っています。

■読書

f:id:yuma6128:20210811073847j:plain

2030年:すべてが「加速」する世界に備えよ ピーター・ディアマンディス (著), スティーブン・コトラー (著) を読んでいます。
内容としては、これから10年以内にテクノロジーの進歩によって起きる変化や進歩の予想が書かれている本です。
現実に起きることが信じられない夢のような世界で、それが実際今すでに行われている
実験などから、想像しているためあながち遠く離れていないと個人的には納得感を持って読んでいます。
この本書の冒頭にかかれていた「世界の変化のスピードと規模を一気に高めてきた〜中略〜シートベルトを締めて、相当荒っぽいドライブになるぞ」というところが、この速度で進歩とどんな世界になるのかを知らずにずっと乗っていたら、振り落とされること間違いないなと思いました。

個人的に、ワクワクした具体的な内容などは次回また書いていきたいと思います。
まだ、読まれていないかた、楽観主義的に未来を感じたい方はぜひ、読んでみてください。


【プログラミング学習】アプリケーションの開発手順

■プログラミング学習

f:id:yuma6128:20210922071845j:plain

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

アプリケーション制作の一般的なフローとエンジニアが関与する部分について
整理しました。

 

◎企画〜設計

企画   |アプリケーションの内容を考案
要件定義 |アプリケーションの仕様や、要件を洗い出します
設計   |開発に必要なDBの設計などを行います(基本設計と詳細設計の2つのフェーズに分かれる)

上記3つののち、プログラミング言語を用いて、開発を行う。

◎デプロイと保守運用

開発後、アプリを外部のサーバーに移して、全世界からアクセスできるよう設定することで、デプロイ後に動いているアプリに以上がないかを定期的に確かめることや

トラブルが発生したら対処すること。

 

■読書

f:id:yuma6128:20210811073847j:plain

◎DX進化論 つながりがリブートされた世界の先 
尾原 和啓  (著), 宮田 裕章 (著), 山口 周 (著) を読み終えました。
チャプターが5個に分かれ今私たちが生きている世界の捉え方について
3名の鼎談とnoteの深津さんも交えたりしたclubhouseでの話を書籍化した内容になります。
個人的に、すごく重要なキーワードとしてテクノロジーによって個別最適化がすすみ、「最大多数の最大幸福ではなく、最大”多様”の最大幸福」を実現していくこと。
「多様な価値観が尊重され、個々人が自分で暮らしを選択していける未来の社会」
GDPに変わる指標として、GDW(Gross Domestic Well-being)などの指標が提唱されている
など今まで、指標となっていたところから変換が今起きている時代で、その方向性を決めるのは、一人ひとりの毎日の行動から全体が変わっていくと感じました。

ひとつの商品を買うにしても、その商品が製造されている背景を知った上で、
その商品が環境破壊や悪質な労働環境のもと作られているのであれば、購入をしない選択をする。

ひとつの国の中で、それぞれ社会制度が違うことをやってみる例えは、とても興味深かったです。
その時々で、全然違う環境に身を置ける、自分の今の価値観に近い環境に身を置けるといった選択が出来るような未来も楽しみに思いました。

【プログラミング学習】Ruby on Rails エラー

■プログラミング学習

f:id:yuma6128:20210718110636j:plain

◎エラー画面

f:id:yuma6128:20210919074408p:plain

今エラーと戦っており、エラー画面からどこが問題なのか
確認しその部分から、解決の仮設を立て修正、検証をしていく。
仮設が建てられない場合、その他の情報を加味しながら、仮設を立て、検証を行う繰り返しの作業になる。

 

デバック
デバッグとは、プログラムの誤りを見つけて、手直しすること。
デバッグの作業には、pry-railsというGemを利用する。

Gemfile
~省略~
gem 'pry-rails'
~省略~
を記述し、

bundle install

◎binding.pry(バインディングプライ)
pry-rails
を追加すると扱える機能で「binding.pry」という機能がある。
この記述をソースコードの中にすると、記述した箇所でRailsの処理を一時停止し、
その状態で、コンソールを起動できます。

 

■読書

f:id:yuma6128:20210811073847j:plain

スタンフォードの脳外科医が教わった人生の扉を開く最強のマジック ジェームズ・ドゥティ (著)を読み終わりました。
今の社会でいう成功者(資産、豪邸、高級車などを多数所持)になったあと、ドットコムバブルの崩壊ですべてを失い、多額の借金を背負う。
ただ、たまたま、一つの書類があり、その書類はもう一度億万長者になれることを選択できる書類だった。
ただ、それを受け取らず、自分の心のコンパスの自由に従って行動した、彼をとても尊敬します。

人間が変わらず信じている幻想のひとつが、富が幸福をもらたし、お金がすべての問題を解決するという思い込み
〜中略〜
富が幸せをもたらす方法は、たった、一つだとわかった。それは人に与えることだ
その後の活動もすばらしく、マインドフルネスをもっと続けていきたい。
そして、彼の活動の少しでも後押しを出来ることに携わりたいと感じました。

今は下記を読んでいます。
DX進化論 つながりがリブートされた世界の先 
尾原 和啓 (著), 宮田 裕章 (著), 山口 周 (著) 
全員好きな方の鼎談なので、楽しく読んでいます。
中国のスコア化の事例など、まだ半分程度なので、また次回更新いたします。

【プログラミング学習】Ruby on Rails 投稿検索機能

f:id:yuma6128:20210829071916j:plain■プログラミング学習

searchアクション
search
という命名で、7つのアクション以外のアクションを定義する。
collection memberをルーティングを設定する際に使用する。
これを使用することで、生成されるルーティングのURLと実行されるコントローラーを任意にカスタムが可能。

collectionには、ルーティングに :id がつかない
memberには、ルーティングに :id がつくという違いがある。

```記述例
Rails.application.routes.draw do
  resources :tweets do
    collection do
      get 'search'
    end
  end
end
```
```記述例
Rails.application.routes.draw do
  resources :tweets do
    member do
      get 'search'
    end
  end
end
```
ビジネスロジック
ビジネスロジックとは、データに対する処理などを行うプログラム処理のこと。
「データをどのように処理するのか」「どのデータを取得するのか」「どのような手順で処理をしていくのか」などを指します。

検索したキーワードが含まれている投稿を取得するために、whereメソッドLIKE句を利用する。

whereメソッド
モデルが使用できる、ActiveRecordメソッドの一つ。
モデル.where(条件)のように、引数部分に条件を指定することで、テーブル内の「条件に一致したレコードのインスタンス」を配列の形で取得できます。

```whereメソッド
モデル.where('検索対象となるカラムを含む条件式')
```
条件式には、'カラム名 > 5'やキーバリューの形で カラム名:値 などの記述が可能
また、whereメソッドを連続して記述することで、複数条件に一致したレコードを取得することもできます。
```whereメソッド
モデル.where('検索対象となるカラムを含む条件式').where('検索対象となるカラムを含む条件式')
```

LIKE句
LIKE句は、曖昧な文字列の検索をするときに使用するもので、whereメソッドと一緒に使用する。
たとえば、「1文字目に'a'という文字列が入ったデータ」や「最後の文字に'c'と入っているデータ」、「文字列の途中に'f'が入ったデータ」などを検索するものです。

・曖昧文字列について
文字列 | % 
意味  |任意の文字列(空白文字列含む)

文字列 | _
意味  |任意の1文字

```例 aから始まるタイトル
where('title LIKE(?)',"a%")
```
```例 aで終わるタイトル
where('title LIKE(?)',"%a")
```
```例 aが含むタイトル
where('title LIKE(?)',"%a%")
```
```例 aで始まる2文字のタイトル
where('title LIKE(?)',"a_")
```
 ```例 aで終わる2文字のタイトル
where('title LIKE(?)',"_a")
```
「テーブルとのやり取りに関するメソッドはモデルに置く」

f:id:yuma6128:20210811073847j:plain■読書
スタンフォードの脳外科医が教わった人生の扉を開く最強のマジック ジェームズ・ドゥティ  (著), 関 美和 (翻訳) がKindleでセールになっていたため、購入して読んでいます。
内容としては、著者の自伝?の形で幼少期の壮絶な環境から、一人の女性と出会いマジックと言うなのマインドフルネスを教えてもらい、そこから人生が好転してと書くと運のように感じてしまうが、筆者の努力や瞑想を取り組むことでのメタ認知の向上からの医者になるという夢を掴むための行動がとても心動かされました。
まだ、半分くらいなので、次回も続きを書いていきます。

【プログラミング学習】Ruby on Rails ルーティングのネスト

■プログラミング学習

f:id:yuma6128:20210811072008j:plain

ルーティングのネスト

ネストは、ある記述の中に別の記述をして、親子関係を示すことで
入れ子構造」とも呼ばれす。
ルーティングのネストは、あるコントローラーのルーティングの中に、別のコントローラーのルーティングを記述すること。
``` 例

Rails.application.routes.draw do

 resources :親となるコントローラー do

      resources :子となるコントローラー

  end

end    

```

これを設定することで、子の情報が、どの親に紐づくのかパラメーターが送られて
判別できるようになる。

つまり、アソシエーション先のレコードのidをparamsに追加して、コントローラーに送ることができるためにネストをする。


■読書

f:id:yuma6128:20210710180648j:plain

◎今週は、別の気になる本が出てきてしまいそちらを優先して、読み終えてしましました。2冊になります。
日本につけるクスリ 安部敏樹 氏(著), 竹中平蔵  氏 (著)

いつかリーダーになる君たちへ 東大人気講義チームビルディングのレッスン

株式会社Ridiloverの代表 安倍さんが書かれた本を2冊読みました。
社会課題をみんなのものに、社会の無関心を打破するという企業理念に惹かれ、どんな社長が率いているのだろうというところから、本を出されていたのでそちらの方で考えかたにふれることにしたのが経緯です。

 日本につけるクスリでは、竹中平蔵 氏との対談をまとめたものになり、本書の構成としては大きく、前編後編の2部構成です。
前編で問題点の前提条件をそろえ、後編でその処方箋として解決するにはどうしたらよいかを議論する。

社会問題に対してのアプローチが現場に足を運んでのアプローチというのが、本気だなと思いました。
ご本人が昔自分自分が社会問題だったことから、興味を持ったとも書かれていて、その起こる背景や解決されづらい構造について、現場と関わりない人たちとの距離の問題を3つの壁「関心の壁」「情報の壁」「関与の壁」として書かれていたりします。

当事者意識を持たないことが最大の原因というところで、「社会全体で意味味も含めてみな共有し、ともに未来を作り出していける国民をできるだけ多く生み出す」ことが処方箋と信じているというのに、私も同感です。
環境問題なども、今の自分には関係ないと感じている人が多く止まらない、次の世代を生きる人達に対しての考えや当事者意識を持てれば、世界の見え方は変わると信じています。


 いつかリーダーになる君たちへは、東大で行ったワークショップの内容についてまとめられている本です。
チームでやることのメリット人が集まれば良くなるわけではなく、そこには一定のルールを決めた上で、合意形成があり進めていく必要がある。
リーダーシップだけではなく、フォロワーシップが大事になってくるという点もとても納得しました。何かを起こすには、フォロワーもとても重要な要素になってくる。
ファシリテーションの重要さで、下記STEPは図解もされていてたしかに、理想の進め方でこのタイプのものに参加すると段取り良かったなと感じていました。
STEP1 ハブ&スポーク ファシリテーターから投げかけて誰かに答えてもらう
STEP2 中心コミュニケーション つなぎてとなってメンバー同士の議論を促す
STEP3 メンバー同士のやり取りが活発になる

後編では各チームの発表もあり、さすが東大生と思いながらビジネスプランを読んでいた。貧困の問題解決が個人的に、なるほどなぁと感じました。

このような会社で自分自身も社会問題・課題解決に一緒に取り組んでいきたいと
とても強く思いました。

【プログラミング学習】Ruby on Rails 部分テンプレート

■部分テンプレート

f:id:yuma6128:20210815071710j:plain

部分テンプレート

 ビューファイルにおいて繰り返し使用するコードを切り出し、再利用をする仕組みのこことで、コードの記述量を減らし管理しやすくするために使用をする。
 Railsでは、繰り返し使用されている部分を「_〇〇.html.erbというファイル名で切り出し、使用するファイルで割り当てる。
 ファイル名の命名規則は、_(アンダースコア)を先頭に記述する。

 

renderメソッド

 renderメソッドは部分テンプレートを呼び出す際に利用するメソッド。

 

partialオプション

 partialオプションはrenderメソッドで使用できるオプションです。partialというオプションをつけ、部分テンプレート名を指定することで、該当する部分テンプレートを表示できる。
``` 例 _sample.html.erbを呼び出す場合

<% render partial: "sample" %>


```

呼び出すディレクトリが別にある場合は、tweets/tweet のようにどのディレクトリの部分テンプレートを使用しているかを明示的に記載する。

 

localsオプション

 renderメソッドで使用できるオプションです。localsというオプションをつけることで、部分テンプレート内でその変数を使えるようになる。

```

<% render partial: "sample", locals:{ post:"hello!"} %>

```
helloという文字列の代入されたpostという変数が使えるようになる。

 

■読書

f:id:yuma6128:20210710180648j:plain

◎未来を実装する――テクノロジーで社会を変革する4つの原則 著馬田 隆明 氏を読んでいます。
この本は、テクノロジーをどのようにすると社会に実装が出来るのかといったことを、
図などを用いて説明をしてくれてます。
視点としては「社会の変え方」のイノベーションになります。
日本国内に入ってきたUberAirbnbなど入ってくる際の障壁や入り方の違い、その後の浸透度合いなどの説明があり、言われてみればたしかにという点がありました。
読破してはいないので、読んでいるところで印象に残ったのは、インパクト(理想)を設定し、理想と現状のギャップを見つけ新たなイシューを生み出し、インパクトを提示することで人々がそのイシューを解決していく」
という一文が、今自分に足りないのはここだなと感じました。
理想を描くのが苦手なので、まずはそこを言語化できるようにしていきたいと思って、読み進めています。

【プログラミング学習】Ruby on Rails 表示順番の並べ替え

■プログラミング学習

f:id:yuma6128:20210818071318j:plain

orderメソッド

モデルが使用できるメソッドの一つ。
orderメソッドでは、並び順を変更する。
引数には、「並び替えの基準となるカラム名」と並び順を半角スペースでつなげて指定をする。
``` 
インスタンス = モデル名.order("基準となるカラム名  並び順")

```

並び順は下記の2種類
・ASC(昇順):小さいものから大きいものになる。古いものから新しいものになる
・DESC(降順):ASCの反対

 

読書

f:id:yuma6128:20210811073847j:plain

◎知的戦闘力を高める 独学の技法 山口周氏の本を読み終えました。
 最後の章では、各ジャンルごとのおすすめの本が書いてあり、単元ごとに読んでいきたいと思う。
 心理学や脳科学など、ビジネスと直結しなそうで、だけど結局ひとの理解という意味で学ぶべきものとして発見がありました。
 変化の激しいこんな時代だからこそ、長く読み続けられている名著の価値を改めてインプットしていきたいと思える本でした。