windows10でRails開発環境⑤データベース(PostgreSQL)のインストール

WindowsのPCでRailsの開発ができるように

www.michidemy.com

www.michidemy.com

www.michidemy.com

www.michidemy.com

手順

Railsを利用する場合は、データベースをインストールします。 のちにherokuというサービスでの公開を考えているので、今回はPostgreSQLをインストールします。 ※MySQLの場合はここから他の方のサイトをご参考にしてください。

インストール

パスを通します。※すべてUbuntuで作業を行ってください。

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" >/etc/apt/sources.list.d/pgdg.list'

キーを取得します。簡単に言うと、セキュリティの設定を施すようなイメージです。

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

あとはaptを更新します。 前回からよく出てくる"apt"とは、Ubuntuへのアプリケーションを管理するコマンドです。macを利用している方はHomebrewがイメージに近いかもしれません。

sudo apt update

aptコマンドでpostgreSQLをインストールします

sudo apt install postgresql

インストールを確認

psgl -V

→これでバージョンが表示されたらOKです。

PostgreSQLのスイッチを入れます

よく使いますのでメモしておきましょう

sudo service postgresql start

開発環境用のユーザーを作成(ここからは必要な方のみ)

開発環境ユーザー名とUbuntuユーザー名を同じに設定

sudo su postgres -c 'createuser -s Ubuntuで設定したユーザー名'

※私はここでユーザー名に””や{}などをつけないようにお気をつけください。ユーザー名が{○○}となったりしてしまいます。

railsのGemをインストール

sudo apt install libpq-dev

これでDBの設定は完了です。

windows10でRails開発環境④Node.jsのインストール

WindowsのPCでRailsの開発ができるように

www.michidemy.com

www.michidemy.com

www.michidemy.com

手順

Node.jsをインストールします。 Node.jsとはRailsのフロント(画面に表示されている部分)にJavaScriptを用いる場合に利用するためのものです。

インストールのみでOKです

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt install nodejs

今回はこれだけ!

windows10でRails開発環境③Rubyのインストール

WindowsのPCでRailsの開発ができるように

www.michidemy.com

www.michidemy.com

手順

rbenvを経由して、Rubyをインストールします。

rbenvでインストールできるRubyのバージョンを確認

rbenv install --list

その中から利用したいバージョンを選択して記述します。

rbenv install ※バージョン

次に、標準で使うrbenvの設定をします。

rbenv global ※バージョン

Rubyのバージョンを確認

ruby -v

このコマンドで正しく指定したバージョンが表示されればOKです。

gemの更新

gem update --system

windows10でRails開発環境②rbenvのインストール

WindowsのPCでRailsの開発できるように

前回の記事はこちら

www.michidemy.com

手順

Ubuntuの環境にrbenvを導入します。 rbenvとはRubyをインストールするときに用います。

rbenvを利用することで、バージョン管理ということが簡単になります。 ※バージョン管理→たとえば複数のアプリケーションを作っているとき Aのアプリ→Rubyの最新バージョンで作ろう Bのアプリ→安定性の高いちょっと前のバージョンで作ろう

といったことが可能となります。

GitHubからrbenvをインストール

Ubuntuを起動し、下記を入力。

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

パス設定

Linux環境では「パスを通す」という作業が必要になります。 簡単に言うと利用可能にする設定を施す、という認識でよいです。 Ubuntuで下記を入力します。

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

$HOME→これは変数で、自分のPCのホームを指しています。 この指定したパスを.bashrcというファイルに書き込む、という意味合いです。 .bashrcは起動設定などが書き込まれているファイルになります。

最後に初期化処理を施します。

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

ここまできたら設定を反映させるために、Ubuntuを再起動しましょう。

インストール成功か確認

rbenv -v

→ -vは基本的にバージョンを確認するコマンドです。これでエラーが出なければ、正常にインストールできてます。

プラグインのインストール

rbenvでRubyのインストールを容易にするため、ruby-buildをセットアップします。

git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

のちのエラー回避のため、下記のパッケージをインストールしておきます。 詳しくはこちら

 sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev

windows10でRails開発環境①Ubuntuのインストール

WindowsのPCでRailsの開発できるように

自宅にゲーム用などでWindowsデスクトップPCがあって プログラミングするときだけMacに切り替える方へ。

プログラミングスクールや実際のWeb開発エンジニアの会社ではMacが推奨されているパターンが実際に多い。 理由は、Web系の開発に適したツールがすでにインストールされていたりするから、という至極納得な内容です。

納得ですが、WindowsPCの魅力はバリエーションが広いこと。
軽いPC、丈夫なPC、スペックだけとても高いPC、動画編集に適したPC、とにかく安いPCなど 何かに特化したPC が多い。 そんな中から自分のお気に入りのPCを見つけ出して、自分の好きな環境作ろう、ということで今回Windows10のPCでプログラミングする方法を書いておきました。

※ちなみにCloud9などのクラウドIDEを用いた方法ではない。

手順

大枠、下記のことをやります。

WindowsUbuntuと呼ばれるOSをダウンロードし、Linuxの環境をインストール

WSLを有効にする

Windowsの設定を開く

Windowsの機能の有効化または無効化」を検索。

選択肢から、「Windows Subsystem for Linuxチェックボックスをオンにして、「OK」 ※日本語版で「LinuxWindowsサブシステム」と書いてある場合もある。

画像1
WindowsSubsystemforLinux

Ubuntuのダウンロード

windows10では標準でインストールされている「MicrosoftStore」で「Ubuntu」を検索→入手

画像2
Ubuntuダウンロード

Ubuntuのインストールと初期設定

起動するとユーザー名とパスワードの設定を求められる。 →設定(できればどちらも英数字が望ましい)

パッケージ管理ツールで最新にアップデート ※いずれも少し時間がかかります。

sudo apt update

→パスワードを求められる場合は入力

sudo apt upgrade -y

Ubuntuから参照するwindowsファイルへのリンクの作成

※これをしておくとコマンドでのアクセスが早くなる 例えばcドライブ→(ユーザー名)フォルダ→projectsにプログラムを作っていくのであれば、「~/projects」というリンクを作成する場合は下のコマンド。

ln -s /mnt/c/User/projects ~/projects

UbuntuWindowsのファイルを参照する場合

ls/mnt/c

Ubuntu上のファイルの文字コード(=書式のようなもの)はUTF-8となるため、エディタで保存するときはUTF-8で保存する

2020年のプログラミング必修化とは

「2020年プログラミング必修化」とは  

文部科学省が2020年から行う新指導要項で「小学校にプログラミング教育を導入します」と発表しています。   今はこぞって学習塾や、書籍が出ていますね。  

What「つまり何か」

実は国語、算数、理科、のように ”プログラミング”  という授業が導入されるのでありません。国語や算数などの授業のカリキュラムの中に、プログラミングで使われる要素が盛り込まれることという表現が正しいです。

Why「なぜ」→「目的」

 大きく下記3つの能力の育成が目的です。

  1. 知識及び技能:問題解決には必要な手順があること

  2. 思考力、判断力、表現力:プログラミング的思考を養う

  3. 学びに向かう力、人間性等:コンピュータの働きを、よりよい人生や社会づくりに生かす。

これまでの学校での学習は、知識の習得に偏った形であったため、これから世の中に必要とされる『課題解決能力』『創造性』などを育むためには物事をプログラミング的に考えることが適切ということです。

 日本のこれまでの教育は、決まった手順を覚え、より早くより正確に再現できる人材を作るには最適でしたので、“ものづくり"が中心だったこれまでにはとても適していたのです。今は”ものづくり”は新興国などで低コスト化されたので、これからは仕組み作り課題解決の力を伸ばそうという考えです。

プログラミング的思考

今後よく出るワードかもしれませんが、プログラムそのものではなく、「物事を論理的に考えていく力」を指します。 解決したい課題に必要な動きを考える→命令を考える→動かす順番を決める、というプロセスを学びます。

How「どうやって」

 コード自体は考えません。それは各個人で学ぶことが起きますが、それ自体を目的とはしていません。

例)正三角形の作図

必要な動き 命令 動かす順番
・まっすぐ進む・左に曲がる・2回曲がる・終わる ①基点Oから右へ移動・②5cm進む・③左に60°回転 ①→②→③→②→③→終了|  

上記からプログラミングを学習中の方でしたらお気づきだと思います。   

必要な動き・命令→変数、オブジェクトやメソッド
動かす順番→アルゴリズム

上記は算数で例えてますが、これが理科、音楽、総合など各項目に1例ずつほど盛り込まれていく予定のようです。

まとめ

2020年からのプログラミング必修化とは、コードを実際に学ぶのではなく、プログラミングで使われる要素を学ぶということです。 その学習を通じて、課題解決の能力や物事を論理的に思考する能力を鍛えていきましょう、というものです。もちろん学校での教育を通じて、プログラミングへの興味を持つ人材が増えてくるのは間違いないです。ですが、『課題解決の能力』や『仕組みを作る』というアクションは普段皆さんのお仕事の中で、当たり前のように行われていることでもあります。もし興味が湧いたのであれば、何か一つ、プログラミングを始めてみてはいかがでしょうか。

最初のプログラミング言語の選び方(言語の特性)

f:id:MichiDemy:20200310021418j:plain
最初のプログラミング言語の選び方(言語の特性)

Who(誰向けな記事か)

 今からプログラミング学習を始めたいが何から始めたらいいのか?と悩まれてる方がいらっしゃると思います。インターネットで検索をかけても「○○は時代遅れ、これからの時代は☓☓」や「この言語を学習すれば稼げる!」と言った表現が多いです。プログラミング学習を始めるときは言語の選択が最初の関門かもしれません。

Why(なぜそうなるのか)

 プログラミングの考え方で「プログラミング=言語であり、誰でも学べます」とあります。もっと噛み砕くと「プログラミングの考え方の基礎はほぼ共通です。こんにちは、なのか、Helloなのかの違いでしかない。使われる国(ITの領域)が異なる」というだけです。そのため、大別して今日はご紹介します。 「ちなみにすべての言語を完璧に理解したい!」は危険です。2020年現在、200語以上あります。

言語の選ばれ方から考える視点

一般的に下記のような要素から使用する言語は選ばれます。

  1. 言語の特性
  2. データベースとの連携
  3. 使用するフレームワークによる生産性

2と3については「ニーズによる」としか言いようがなく、普段から予測するのは難しいかもしれません。ですが、これから学ばれる方は1. の特性だけでも知っておくと、どこから学び始めればいいか、がわかるかもしれません。

業務システム開発

→業務システム:お客さん(ユーザー)の業務の中で必要とされるシステム。汎用性ではなく、その会社に合わせた専用品を作ることが多いです。そのため、より自由度の高い言語が選ばれ、きめ細かい設定が可能な言語が選ばれます。

代表的な言語

Java : 大企業のシステム開発などに利用されている。最も大きな特徴は、“様々な環境で動く"という点。WindowsMacLinuxサーバ、組込コンピュータでも動く。特に銀行などの大企業システムで利用されているため、ここ20年に渡る信用度がとても高い。現時点では需要ある言語世界1位であり、世界の30億を超えるデバイスで稼働している。


C:組込システム(たとえば自動販売機など)に利用されている。取得難易度が非常に高いとされているが、メモリ・CPUなどハードウェアを意識したプログラムを書くため、言語の知識だけでは利用が難しいためである。大学では情報工学部などが専門で学んでいる。


SQL:データベースで使われる世界共通の言語。データベース設計者でなくとも基本的な文法は学んでいる。一度習得すれば様々な領域で使えるが、MVCモデル(Railsなど)のフレームワークでは自動でSQLが発行されるなど、学習の奥深さそのものはあまり深くない。効率的に情報を取り出すことのできるデータベース設計などは重宝される。

Web開発

→Webアプリケーション、Webサイト:インターネットを通じて利用できる(正確にいうとWebサーバーを利用した)システム。専用のプログラムを1から組むのではなく、毎度使う設定などは使いまわしたり、ある程度の型(フレームワーク)を用意します。インターネットに関わるシステムはウイルスセキュリティの観点から仕様の変更がとても早くて多いため、対応へのスピード感が重視されます。言語としてはわかりやすく、ある程度決まった型に当てはめれる=誰か書いても近くなる、言語が選ばれます。

代表的な言語~サーバーサイド~

Ruby:Web開発で主にサーバーサイドで利用される言語。書き方がシンプルであり直感的である点、開発者が日本人であるため、Q&Aも日本語で対応されている点などから、『日本人が、初めて、学習する言語』としてはよく選ばれます。初心者でもプログラムの実行やデバッグを行いやすい(インタプリタ)。

有名なサービス
クックパッドGunosy


Python:もとは機械学習やデータ分析に適した言語だが、最近はWebアプリ開発に使われるようになり、人気が上昇している。特徴としては「1つのやりたいこと」→「みんな同じ書き方で」という考えに基づき、初心者からプロまで扱える点や、標準及び外部のライブラリ(機能がひとまとまりになったパッケージのようなもの)が豊富である点から初学者にも人気が出ている。また様々なハードウェアで使える点も長所であり、様々なメーカーによるPC・スマートフォンへの適応能力が注目されている。

有名なサービス
YouTubeDropbox


PHPWebサービス、Webアプリ開発のサーバーサイドにおける最も使われている言語。ブログやホームページづくりで使われるWordpressPHPで制作されており、世界中のホームページの30%以上がWordpressによりできている以上、PHPの人気は続く可能性が高い。Webサイトであれば、ほぼすべて作れる。

有名なサービス
ぐるなびfacebook


サーバーサイド言語まとめ
Rubyは汎用性がとても高いですが、突出した機能がありません。そのため案件シェアトップクラスのPHPや、今流行ってきている、機械学習には専用のライブラリの多いPythonなどが人気になってきています。

代表的な言語~フロントエンド~

→Web開発における、見た目を司る言語のこと。 正確にいうとプログラミングには含まない言語(コード)も含めて紹介。

HTML:ホームページの骨組みを作るコード。Web開発の人々にとっては必ず触れるため、一般教養的な側面がある。


CSS:HTMLで作成したページに装飾するコード。これも一般教養的な側面がある。


JavaScript:HTMLやCSSと合わせ、クライアント側(要はPCでのブラウザ)で動くプログラムや変数を組み合わせることができ、Webサイトに動きを付け加えることができる。近年はWebサイトやアプリ開発には必要不可欠な言語となっている。実はサーバーサイド側の開発も可能。世界中で使われている言語の1位を取得しており、フロントエンドエンジニアには必須となる。


フロントエンドまとめ
HTMLやCSSは特に演算や処理などが動いていないスライドを作成するレベルであり、独学で学べるレベルである。またフレームワークや、前述のWordpressのようなCMSの浸透により、近年のWeb制作ではHTML、CSSが扱えるのみではあまり評価されない風潮がある。そのため、JavaScriptJavaScriptを用いたライブラリが用いるレベルが求められる。

まとめ

  • プログラミング言語は必要とされる領域によって異なるが、基本的な考え方は同じ。特に業務システム開発系なのか、Web開発系なのかによって必要とされる特性が異なる。

  • 現状の市場を抑えていく考え方か、これから伸びるところを学ぶのか、など悩ましいが、基本的なプログラミングの考え方は同じなので、まずは足掛けとして何か一つ始めるのがよい。

※筆者はRubyからはじめることをオススメします。特化をしていない分、まずはプログラミングそのものの考え方を学べます。ただRubyのみで案件を獲得しようとするのではなく、ニーズのある案件や自分の適性、やりたいことに対して必要となる言語を自分で選び、そちらにコンバートしていくのが良いでしょう。