アラフォーからのプログラミングとデザイン

大人から始めたプログラミングとデザインについてのあれこれ

Railsチュートリアル復習中:HTTPメソッドについて

f:id:simpledancer:20171208143315p:plain

今更ながらHTTPメソッドについて全然理解してませんでしたので今日はチュートリアルの中のSample_appの途中のコラムからちょっと勉強してみようと思います。

(ちなみに今日もCanvaを使ってみました。)

railstutorial.jp

HTTPメソッドとは

HTTP (HyperText Transfer Protocol)メソッドとは:

 4つの基本的な操作があり、それぞれGET、POST、PATCH、DELETEという4つの動詞に対応づけられています。クライアント (例えばFirefoxやSafariなどのWebブラウザ) とサーバー (ApacheやNginxなどのWebサーバー) は、上で述べた4つの基本操作を互いに認識できるようになっています (ローカル環境でRailsアプリケーションを開発しているときは、クライアントとサーバーが同じコンピュータ上で動いていますが、一般的には、それぞれ別のコンピュータで動作しているという点を理解しておいてください)。Railsを含む多くのWebフレームワークは、HTTPの各操作を発展させたRESTアーキテクチャの影響を受けています。

うーん、ちょっとわかりそうでわかりにくい。なんとなく行ってることはわかるっちゃわかるけどチュートリアルの文章だとふに落ちない感じです。

http://wa3.i-3-i.info/word11405.html

のブログ内では

WebブラウザさんからWebサーバさんに対する「お願いの種類」をカッコ付けて専門用語っぽく言ったのが「HTTPリクエストメソッド」です。

HTTPリクエストメソッドには以下の種類があります。

1.GET:ページをくれよ(HTTP1.0/1.1)
2.POST:このデータをくれてやるよ(HTTP1.0/1.1)
3.PUT:このファイルをやるよ(HTTP1.0/1.1)
4.DELETE:このデータを消しちゃって(HTTP1.0/1.1)
5.HEAD:ヘッダ情報だけくれ(HTTP1.1)
6.CONNECT:プロキシサーバさん、ちょっくら通しておくれ(HTTP1.1)
7.OPTIONS:サーバさん、どんなオプションを持ってるの?(HTTP1.1)
8.TRACE:どんな経路でそっちに届いたかそのまま返してちょ(HTTP1.1)
9.LINK:ちょっくらそのURLとこっちのリソースをくっつけさせてね(HTTP1.0)
10.UNLINK:「LINK」を解除するよ~(HTTP1.0)

……など。

これだとすごくわかりやすいかも。命令の内容が腑に落ちます。

ちなみにRailsでは4つ。

さらに多くはGETとPOSTが使われるためこれさえ覚えていれば困ることがないとか?

じゃあとりあえずGETとPOSTだけ今日は理解しよう。

ちなみに、あれ?PUTじゃなくてRailsはPATCH??

と気になりますと

d.hatena.ne.jp

qiita.com

とこの辺りのブログで参考に勉強させていただきました。

Rails4からはPUTではなくPATCHがデフォルトになったようです。

qiita.com

PUT→全置き換え

PATCH→部分置き換え

ということだそうです。

ちなみにHTTPメソッドなんて今まで一切意識してなかった。。。だから余計に理解できなかったのね。。単語の意味全くわかってませんでした。。

 

simpledancer.hatenablog.com

 

失敗を元に戻す方法:コードの自動生成とmigrationを元に戻す

f:id:simpledancer:20171207113042j:plain

今日はコードを打ち込んで失敗しちゃった時の元に戻す方法をまとめてみます。(出張前で今日は時間がないのです)ちなみに昨日気になってこの本お金2.0 新しい経済のルールと生き方 (NewsPicks Book)を買いました!

 

新幹線に乗ってる間に読もう!今日は岐阜県までいくのです。

simpledancer.hatenablog.com

生成したコードを元に戻したい場合

  • コードで自動生成したファイルはファイルを消すだけでは元に戻らない
  • ルーティングのroutes.rbファイルも自動的に変更されるのでそれを変更しなくてはならないため

$ rails generate controller StaticPages home help

で自動生成したファイルを消したい場合ファイル名の前にdestroy

$ rails destroy controller StaticPages home help

引数が後についいている場合は

$ rails generate model User name:string email:string 

↓引数はつけなくて、モデル名だけでおけー

$ rails destroy model User

 

マイグレーションを元に戻す方法

$ rails db:migrate

データベースのマイグレーションを元に戻す時

一つ前の時: $ rails db:rollback

最初に戻す時: $ rails db:migrate VERSION=0

 マイグレーションは逐次的に実行され、それぞれのマイグレーションに対してバージョン番号が付与されます。したがって、上記の0を別の数字に置き換えることによって、指定したバージョンの状態に戻すことができます

参考 

www.rubylife.jp

rake db:migrate - リファレンス - - Railsドキュメント

Railsチュートリアル復習中:第3章で気になったGitリポジトリ作成とキャメルケースorスネークケースについてメモ

simpledancer.hatenablog.com

simpledancer.hatenablog.com

Gitのリポジトリでなぜかつまずく

新しいappを作りました。(今回はsample_app)

ところがgit pushしてもエラーが出るし、リポジトリを作ってそれに入れようとしても全く更新ができてない。

src refspec.....と出てしまいます。

d.hatena.ne.jp

私のやったこと

  1. 一旦作ったsample_appリポジトリを削除する
  2. もう一度リポジトリを作り直す際(すでにプロジェクトがありますの方にチェック)

    f:id:simpledancer:20171206133934p:plain

  3. $ git remote add origin git@bitbucket.org:ユーザー名/sample_app.git $ git push -u origin --all # リポジトリやその参照先もすべてプッシュする

これでリポジトリに無事今までのコミットがpushされました。

ただこの方法だと以前のリポジトリを全部削除してしまうので初期段階なら問題ないと思いますが、結構進んでしまってからなどだと厳しいかも?

その場合削除せずに新たに別のリポジトリを作ってしまうほうが良いのかな?と思います。

 キャメルケースとスネークケース

あまり気にしてなかったのですが

キャメルケース:

www.weblio.jp

キャメルケースとは、アルファベット複合語フレーズ表記する際、各単語要素語の先頭の文字大文字表記する手法のことである。

スネークケース:

www2.olisys55.com

単語をわかりやすく判別するために、文字の一部をアンダーバーで連結することを指す。

pg-kura.hatenablog.com

命名規則:キャメルケース 対 スネークケース | 株式会社INDETAIL - インディテール

個人的にはどちらがいいのか。。。?スネークケースの方がわかりやすいのかなあ?

Rubyはクラス名をキャメルケースで 作られる慣習がありファイル名はスネークケースで作られる慣習があるとのこと

 このためRailsのgenerateスクリプトでは、underscoreメソッドを使ってキャメルケースをスネークケースに変換しています

 なるほどね!改めて見てみるとコマンドに打ち込んでいた言葉の意味がちょとずつわかるようになってきました。

Railsチュートリアル(Toy_app)でできることまとめ

f:id:simpledancer:20171205111557p:plain

ここまで割とサクサク進めました。以前やっていたせいもあるのですが

toy_appはScaffoldというRailsの自動生成してくれる機能を使ったので特にコードを自分で書いたわけではありません。

そういうわけでToy_appでできること・できないこと・理解できたことなどをサクッとまとめたいと思います。

Scaffold機能

  • Scaffold機能でコードを自動生成すると、Webのあらゆる部分からモデルデータにアクセスしてやりとりできるようになる
  • Scaffoldは何よりも手っ取り早いのがとりえだが、これを元にRailsを理解するには向いていない

Railsのscaffoldは、rails generateスクリプトにscaffoldコマンドを渡すことで生成されます。

techacademy.jp

 railsアプリケーションの開発をする際には、モデルやコントローラー、ビューを作っていき、さらに必要なルーティングを作成していく必要があります。 railsにはこれらの作業をまとめて行って、簡単にアプリケーションの雛形を作ってくれる機能があります。 それがscaffoldです。 scaffoldを使うことで素早くrailsアプリケーションを作ることができます。

 簡単に土台を作ってくれる代わりにscaffoldだけではシンプルすぎて実用の開発では使えない。けれど最初にアプリケーショを個人で作るにはとても便利な機能である。

MVC (Model-View-Controller)の概要を理解

 

f:id:simpledancer:20171205113514p:plain

MVCの挙動についてざっくり理解することができます。

www.rubylife.jp

blog.codecamp.jpMVCについてはこの辺の記事がわかりやすいと思います!↑

Model(モデル)

データを扱う部分になります。データベース(後述)に対してデータの登録・取得・更新・削除などを行うことができます。

View(ビュー)

ユーザーの見ることができる部分の作り込みを行います。つまり、ブラウザに描画されているHTMLを作り込む部分になります。

Controller(コントローラー)

ユーザーからの要求に対して、Modelとの連携やどの画面を表示するのかといった処理行う部分になります。

 

 

 

RESTについて

simpledancer.hatenablog.com

バリデーション

データモデルの属性に制限をかけることができる方法

文字数の制限などがあるとエラーを表示するようにできます。

udemy.benesse.co.jp

techacademy.jp

クラスの継承構造

simpledancer.hatenablog.com

Railsコンソールについて

simpledancer.hatenablog.com

まとめ

Toy_appはScaffoldを使っているため、あれよあれよという間にできてしまいます。

ですが細かく見ていくとRailsの基本的な部分が大まかにですが理解できるようになるのかあな?と思いました。

もちろんこんなに簡単に複雑なアプリが作れたらいいのですがそうもいかないのですねー

Railsチュートリアル学習を続けます!

 

 

クラスの継承構造について整理する

継承の階層

Toy_appではコントローラとモデルのクラス階層について触れています。

techacademy.jp

モデルの継承構造

f:id:simpledancer:20171204112259p:plain

UserモデルとMicropostモデルはいずれも、ApplicationRecordというクラスを継承しています (Rubyでは継承関係を<記号で表現します) 

ApplicationRecordクラスは、Active Recordが提供する基本クラス ActiveRecord::Base を継承しています。

このActiveRecord::Baseという基本クラスを継承したことによって、作成したモデルオブジェクトはデータベースにアクセスできるようになり、データベースのカラムをあたかもRubyの属性のように扱えるようになります。

 コントローラの継承構造

f:id:simpledancer:20171204112402p:plain

UsersコントローラとMicropostsコントローラはいずれもApplicationControllerを継承しています 

ApplicationControllerがActionController::Baseというクラスを継承していることがわかります。このクラスは、RailsのAction Packというライブラリが提供しているコントローラの基本クラスです。

 

 モデルの継承関係と同様に、UsersコントローラもMicropostsコントローラも最終的にはActionController::Baseという基本クラスを継承しています。

このため、どちらのコントローラもモデルオブジェクトの操作や、送られてくるHTTP requestのフィルタリング、ビューをHTMLとして出力などの多彩な機能を実行できるようになっています。

Railsのコントローラは必ずApplicationControllerを継承しているので、Applicationコントローラで定義したルールは、アプリケーションのすべてのアクションに反映されます

 

引用:Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

ちなみにAction Packとはなんぞや??と思ったのでこちらも参考までに

Rubyist Magazine - RubyOnRails を使ってみる 【第 4 回】 ActionPack

URL を解析してアクションメソッドを呼び出してレスポンスを返すことが ActionPack の大事な仕事その一。 この機能は特に ActionController というくくりでまとめられている。 ActionController を構成するファイルは lib/action_controller/ に置かれている。

ActionPack の大事な仕事その二はテンプレートを元にレスポンスを作ること。 このうち、テンプレートを作成するのに役立つ機能が ActionView としてまとめられている。

Rails では ERB で HTML テンプレートを書く。このテンプレートを書きやすくするのが ActionView の仕事。

 つまりAction packとは

  • アクションメソッドを呼び出してレスポンスを返す
  • テンプレートを元にレスポンスを作る

ちょっと理解が及ばないのでここはメモに止めておこうと思います。

参考

techacademy.jp

 

www.geocities.jp

Railsコンソールについて(Railsチュートリアルtoy_app編)

Rails コンソールについて

Railsのconsoleとは、Railsアプリケーションを対話的に操作することができる便利なツールです。

ターミナルにrails console(rails cでもOK)打ち込む

f:id:simpledancer:20171204103458p:plain

ちなみに終了する時はexitと打ち込む

ちなみに今やっているRailsチュートリアルのToyappではrails consoleを使って何をするかというとユーザーとマイクロポストの関連付けを確認するだけです。

まあ、今までざっくり良くわからずにrails consoleって打っていました。

他にもいろいろな使い方があるので忘れないように参考ブログを貼っておきます。

参考

techacademy.jp

rails console は主に次のような場面で役に立ちます。

いろんなメソッドを試しながら実装したいとき

何かのロジックを実装するときにどういった処理を書けば良いのか試行錯誤したいときがあります。
そのとき、毎回 rails 内のコードを書いて動かして試してみるというのを繰り返すのは大変です。
rails console を使えば、すぐにコードを実行することができますし、色々なメソッドの動きを確かめながら実装することができます。

エラーが起こったが原因がわからないとき

rails console はデバッグにも役立ちます。
エラーが起きたけどエラー文を見ても原因がわからないときなどは rails console を使ってみましょう。
rails console を使えば、実装したコードを1行ずつ実行して結果を見ながらデバッグすることができます。そのため、どの行でなぜエラーが起きたのかという原因を突き止めやすくなります。

www.sejuku.net

 とりあえず、毎日勉強したらその内容をブログにアウトプットして脳内を整理する習慣をつけることにしました!まとまってませんが今回はこれだけ!

simpledancer.hatenablog.com

RailsのRESTful構造について調べてみた。

f:id:simpledancer:20171203100907j:plain

今日は昨日突き指した手でキーボードをカタカタしてます。

なんていうか、打ちにくいし包帯し直しましたが薬指のテーピングが他のキーを干渉氏まくって打ち間違いが多い。

Restってなんだろう

今までざっと呼んでいたから全く理解してませんでした。RESTって何よ。意味がわからない。読んでもわからないw

RESTは、コンピュータ科学者Roy Fieldingによって提唱された「REpresentational State Transfer」という概念に基づいています 

 謎です。ではREpresentational State Transfer とは?

インターネットそのものやWebアプリケーションなどの、分散・ネットワーク化されたシステムやアプリケーションを構築するためのアーキテクチャのスタイルの1つです。 

 

REST理論そのものはかなり抽象的ですが、RailsアプリケーションにおけるRESTとは、アプリケーションを構成するコンポーネント (ユーザーやマイクロポストなど) を「リソース」としてモデル化することを指します。これらのリソースは、リレーショナルデータベースの作成/取得/更新/削除 (Create/Read/Update/Delete: CRUD) 操作と、4つの基本的なHTTP requestメソッド (POST/GET/PATCH/DELETE) の両方に対応しています

Rails開発者にとっては、RESTfulなスタイルを採用することで、作成すべきコントローラやアクションの決定が楽になります。作成(C)・取得(R)・更新(U)・削除(D)を行うリソースだけでアプリケーション全体を構成してしまうことすら可能です。

まあ、Railsチュートリアルの説明読んでもなんかよくわからないのでRESTについていくつか検索してみました。

参考ブログ

qiita.com

wp.tech-style.info

  • HTTPの技術を最大限活用する、シンプルな設計方法
  • 「何のリソースを」「どのように」操作するかをURIやHTTPメソッドで表現する
  • リソース指向の設計

 

ちょっと砕けてきました!で、リソースっって?何に当たるの?

RESTは「リソース」を扱うための考え方であり、「リソース」とは、ブログの記事であったり、アップロードした写真であったり、もしくはWebページ全体のコンテンツであったりといった、ひとかたまりの情報を指します。

thinkit.co.jp

 

まとめRESTとは

WEB上のひとかたまりの情報を扱うための考え方

これでどうでしょうか??砕いてみると。

本当、理解に苦しみます。でもってすぐに理解できるものでもないのでしょうが。。

REST (API)が理解できないのでまとめてみる:株式会社サブスレッド

simpledancer.hatenablog.com

simpledancer.hatenablog.com

プログラミングブログが100記事を超えました!

f:id:simpledancer:20171202111438p:plain

等プログラミングブログが100記事を超えました。(ちなみに試しにCanvaを使ってみました)

www.canva.com

このブログあまり有益な情報がかけてないのと、メモ代わりってのもあって

さらに私自身よく心が折れたり

時間がないとか、眠たいとかしんどいとかの理由で

結構勉強をサボってます。

だらだら書いていましたがそんなこんなでも100記事を超えました。

プログラミングを知って2年が経ちました

何気にプログラミングの存在を知って2年が経ちました。

最初はいけあやさんの本をたまたま手に取ったところから始まりましたが

そこから独学でJavascript(挫折)→就職前提の0円スクールでJava(挫折)→独学Ruby→テックアカデミーRuby(コンテスト間に合わず)→デザインにはまる→Pythonに浮気(飽きる)→Rubyに戻る(イマココ)

就職活動はやめてしまいましたが一時期PHPの仕事をするかもしれない。。という話になったのですがそれも流れ、とりあえずコーダーの仕事でもしようかと思ったけれどあまり興味がわかず、やっぱりやりたいことやりたいし作りたいもの作れたらいいかな。。なんて割と甘い考えのイマココ状態です。

で、ややこしいけどやっぱり今の所Rubyが一番いいな〜と思ってます。

Javaは一生やりたくないです。

Pythonはまたそのうちかじるかもしれません。

個人的にはリンダリウカスさんのようなオシャンティな女性に憧れます。

www.huffingtonpost.jp

北欧ってなんでこんなにおしゃれなんでしょうか。。

一押しのプログラミングスクールはテックアカデミーだと思う

なんとTechAcademy [テックアカデミー] オンラインブートキャンプ全12コースの「ウケ放題」 でお安くなっているメールが届きました。

大学生の人は受験シーズン学校休みになるからこの機会に受けたりするといいかもしれませんね。私ももし大学生に戻ったならば迷わずプログラミングの勉強をしてるとお思います。

f:id:simpledancer:20171202104128p:plain

ちなみにいろんなオンラインスクールを調べましたが、私が受けたTechAcademy [テックアカデミー] が一番評価が高いです。

simpledancer.hatenablog.com

実際メンターに質問したらフィードバックが秒速で帰ってきます。

時々時間外でも返信くれます。(これは有り難かった!)他のオンライン受けた知人に話すとテックアカデミーにすればよかった。。と言われました。

ちなみに無料体験1週間もできるのでかなりオススメです。

 オンラインブートキャンプ 無料体験

 今後の予定

先日某ブログでお世話になってる人経由でコンサルを受ける機会がありました。

ブログの方向性についていろいろ相談に乗っていただいたのですが

このプログラミング×パフォーマー という掛け合わせはかなり希少性が高いということで少し内容を絞って集中することを勧められました。

simplelifedancer.hatenablog.com

そういうわけでパフォーマンスの仕事もしますがプログラミング(特にRuby)を集中することにしようと思ってます。そもそもの勉強時間が少ないのと今月は鬼のように出張が入ってしまったのですが、出張先でも勉強できるように有線Lanの接続コネクタもゲトしたのでwifi繋がらないいわけを出来なくしました。

  • ブログのリライト
  • Railsチュートリアルを引き続き
  • Udemyで買った教材アプリを再度勉強
  • 1月末にテックアカデミーのコンテストがあるのでそれに向けてのアプリを考える(テックアカデミーは受講終了していてもコンテスト応募できます)

私がプログラマーとなるのはきっと当分先だとは思いますがこれからもじわりじわりとプログラミングを続けます(多分)

 

simpledancer.hatenablog.com

 

復習中:Railsチュートリアルを細かく見ていきます。

先日からの復習Railsチュートリアル

simpledancer.hatenablog.com

細かく細かく:ルーティングの文法など

f:id:simpledancer:20171129201419p:plain

表示したい文字列を定義

def hello
render html: "hello, world!"
end

 

root 'controller_name#action_name'

ルーターはコントローラとブラウザの間に配置され ブラウザからのリクエストをコントローラに振り分ける (=ルーティング) 役割を果たします

 root コントローラ名#アクション名

 

gitについてももう一度

gitはバージョン管理システムですがgitってなんとなくはわかるけどあまりちゃんと使いこなしていないと思う。そういうわけで改めてちょっと読み込もうと思いました。

GitについてWeb上で読める本

Git - Book

これを読み込む!

 

GithubとBitbucketの違い

どちらも登録しているのGitリポジトリを管理するサービスですが

Github→リポジトリを一般公開する場合は無料、公開しない場合は有料

Bitbucket→共同作業者が一定数以下ならリポジトリを公開しなくても無料、共同作業者が一定数を超えると有料 

基本的にGitHubを使ってますがこうしてみるとBitbucketの方が自由度が高いのかなあ??

どっちもリポジトリを管理するというのは同じなのでどちらを使ってもいいようです。

GitLabと言うサービスもあるそうですが日本語の情報が少ないのだとか。

qiita.com

無料プログラミングサービスを使う

無料でもたくさんプログラミングを学べるサービスがありますが

去年有料のテックアカデミーをやった時は結構手取り足取り教えてもらえたので

有料is betterです。

でもできることならば無料ほどお得だしなということで

有名どころのドットインストール、Progateの他に動画学習だとPaizaラーニングとかSkillhubとかがあります。特にskillhubは動画の説明の仕方がわかりやすかったです

skillhub.jp

できるところまで無料でやってほんわかわかってきたあたりで有料に移行するのがいいのかしら?と思ってます。でもプログラミングもやってないと全然忘れてます。去年あんなにやったのにテックアカデミーの内容忘れちゃったよ。

 

simpledancer.hatenablog.com

Railsチュートリアルを復習して気がついたこと:Hello app編

f:id:simpledancer:20171127125722p:plain

先日から久々にRailsを復活しました。

で、Railsといえば、やっぱりとりあえずはRailsチュートリアルでしょう!

ということで久々に最初からRailsチュートリアルを始めることにしました。

で見落としていた部分をメモ代わりに記して行こうと思います。

railstutorial.jp

simpledancer.hatenablog.com

設定編

Railsチュートリアル他、わたしはだいたいCloud9で行っているのですが

インデントの設定を変えられるんですね、かなり見落としていました。

Rubyの世界では、インデントに2つのスペースを使うのがほぼ常識になっているので、このエディタのインデント設定もデフォルトの4から2に変えておくことをおすすめします。インデント設定を変更するには、右上の歯車アイコンをクリックして [Code Editor (Ace)] を選択し、[Soft Tabs] 設定を開いて編集します (図 1.4)。設定の変更はその場で反映されるので、[Save] ボタンをクリックする必要はありません。 

 ワークスペースの設定が終わったので、設定の歯車ボタンからインデントを変更します。4→2に変更しました!

f:id:simpledancer:20171127122033p:plain

 

理解して使ってなかったコマンドライン

コマンドラインをあまり理解せずに使っていました。

割と簡潔に書かれているのでちゃんと読めばよかった。。

知ってて使っていたのは上半分くらいでした。(反省)

説明 コマンド コマンド例
ディレクトリ内容の表示 ls $ ls -l
ディレクトリの作成 mkdir <ディレクトリ名> $ mkdir workspace
ディレクトリの移動 cd <ディレクトリ名> $ cd workspace/
上のディレクトリに移動   $ cd ..
ホームディレクトリに移動   $ cd ~ もしくは $ cd
ホームディレクトリ直下のworkspaceに移動   $ cd ~/workspace/
ファイルの移動やリネーム mv <移動元> <移動先> $ mv foo bar
  mv <現在の名前> <変更後の名前>  
ファイルのコピー cp <コピー元> <コピー先> $ cp foo bar
ファイルの削除 rm <ファイル名> $ rm foo
空のディレクトリの削除 rmdir <ディレクトリ名> $ rmdir workspace/
中身のあるディレクトリの削除 rm -rf <ディレクトリ名> $ rm -rf tmp/
ファイルの内容の結合と表示 cat <ファイル名> $ cat ~/.ssh/id_rsa.pub

 

gemの~>について 

あまり意味を考えずにとりあえず消したりたしたりしてたgemの内容ですが

gem 'coffee-rails', '~> 4.0.0'

このように指定すると、coffee-rails (これもAsset Pipelineで使うgemです) のバージョンが4.0.0より大きく、4.1より小さい場合にインストールされます。つまり、以下のコードを実行すると、>=という記法では常に最新のgemがインストールされ、~> 4.0.0という記法ではマイナーバージョンの部分に相当するアップデート済みのgem (例: 4.0.0から4.0.1) をインストールします。後者の場合、メジャーバージョン (例: 4.0から4.1) のリリースはインストールされません12。残念ながら、経験上ちょっとしたマイナーアップグレードですら問題を引き起こすことがあります。このため、Railsチュートリアルでは基本的に事実上すべてのgemでバージョンを「ピンポイントで」指定し、がっちり固定してあります。ベテラン開発者であれば、Gemfileで ~> を使って指定し、最新のgemを使って進めてもらっても構いません。ただし、バージョンが異なると本チュートリアルに記載されている挙動と異なる可能性がありますので、その場合は各自でご対応願います。

 

 ~> に関して全く気にしていなかったのです。

固定するために~>を消します。今知りました。今初めてこいつ→~>

の存在意義を知りました。

f:id:simpledancer:20171127124421p:plain

railsサーバーの実行

cloud9の場合は

rails s -p $PORT -b $IP

でサーバが立ち上がります。

が、普通に今まで何も考えずにこれを打ち込みサーバーを立ち上げていました。

ちなみにローカル開発環境ではただ rails s でオK。

$IP・PORT→ 環境変数 (IPアドレスとポート番号のこと)

全然気にしてませんでした。

Hello world を出すだけでここまで今まで無視していたとは自分でもびっくりです。

(最初はでも何もわからなくてもとりあえずやってみる方がいいのかな)

とりあえず引き続きチュートリアルを最初からゆっくりじっくり進めて行ってみようと思います。

simpledancer.hatenablog.com

 

プログラミング勉強を一旦整理する。やりたいことは全部やりたい!

f:id:simpledancer:20171021143155j:plain




プログラミングを始めたりデザインを学んだり、人工知能について調べたりブログのカスタマイズにはまったり。。。

 

最近自分の方向性がわからなくなってきました。

あれ、就職するんじゃなかったっけ??

と、自分自身でも突っ込みたくなるくらいですが就職活動休止中です、というかむしろ今は就職じゃなくて在宅でなんとかなるように行動中です。

なぜなら会社に毎日通うのがいやということと、自身のパフォーマンスでやりたいことがどんどん出てきてしまって時間がないんですよね〜(という言い訳)

 

なのでこの先やりたいこととかをまとめてみようと思いました。

プログラミング

f:id:simpledancer:20171104033510j:plain


プログラミングをやり始めて、フリーランスに憧れて勉強したはいいが、若干迷子

結局何をやりたいんだっけ私?

Webサービスを作ってみたい

マッチングサービスとか作ってみたい、というのが当初の目標でした。

しかし、勉強すればするほどマッチングサービスってめっちゃ難しいやん!

例えばRailsで作ってるサイトが確かPairsみたいなサイトなんだけど

そういう大きい規模じゃなくていいんだけど。

ブログサービスみたいなのとか掲示板のサンプル作るだけでも結構大変。

できるだけ簡略化した設計図を作ってオリジナルサービスを作ってみようとは思っている。

simpledancer.hatenablog.com

機械学習・Python

Udemyで購入した機械学習の教材。

なぜかこれだけがやたら音声がプツプツ切れるんですよね〜後半部分。

で、ちょっと集中してPython勉強するか!と思いPyQという有料オンライン教材を初めて見ました(1ヶ月)

simpledancer.hatenablog.com

確かにわかりやすいのですが、レベルアップすることを目標としてしまって

あれれ、結局Pythonで何やりたいのよ。って感じ。

教材の量が膨大なのでついついこなすことに注力してしまい、このままだともったいないなと思い先日レッスンを一時中断することにしました(ただし料金は日割り計算で返ってきます!)

ただPythonをやったおかげで、rubyのコードを見たときに今までいかにインデントを適当にやっていたかに気がつけました!

それが一番の気づきかもw

基本的な文法は書き方が少し違うだけでどの言語も同じような感じですね!

需要は今後かなり増えるようなのでプログラミングまずはじめにやるならもしかしたらPythonの方がいいのかもしれないなあ〜なんて思います。

simpledancer.hatenablog.com

戻ってきたRails

そんな感じで久々にこの間Rubyのコードを書いたら

結構忘れてたけどPythonやったおかげでインデントを気にしながらコードを書いたら

なんかわかりやすくなっていた(気のせい?)気がする。

あと、やっぱりやっててRubyの方がなんとなく好きな気がする(気のせい?)

私はまあ、あまり深くやっていないので今後もいろいろ浮気をすると思うけど

エラーで挫折して放り出す癖をやめたいです。

この本プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)が気になるので、今やってる課題が終わったら買ってみようかな〜と

結局文法を覚えたり勉強したりしても自分で開発できなければ意味がないわけで

なんだろう、ここを超えたら楽になるのに、みたいな通過点とかがきっといくつもあるのだろうけど、それを越える前に休憩したりとかしてるからなかなか前に進まないのかなあ〜うーん。

でも、その割には地味にやめずに続いてる私ってすごいかもしれない。(ここだけ自分褒め)

私はこのブログは技術メモにしようと思っていたけど、今後は弱音をどんどん吐くことにしました!

simpledancer.hatenablog.com

圧倒的にかけてる時間が短いというだけの話

f:id:simpledancer:20171021142929j:plain


と、ここまで書いてきて

ちょっと勉強したくらいでプログラマーになれるとか、よっぽどの天才じゃない限り無理ですよね。そんなことはわかっているはずなのに

「私には才能がないんだ。。」なんて思ってしまいます(いや、確かにあまり向いているタイプではないと思うけれども)

冷静に考えて今の仕事(ダンサー)なんて何十時間どころか練習も本番も含めてどんだけやってきたんじゃい!って話なわけで。

それをプログラミングに当てはめてみると、いや、少なすぎでしょ!って。

まあ、生きていくためには仕事もするし、ダンスの仕事自体はやめたくない。ということは時間を作り出すしかないわけです。

そういうわけでちょっとくらいはストイックにプログラミングに時間をさく時がきたようです。テックアカデミーをやっていた時は10時間以上1日やってましたけど(太りましたけど)なぜできたかというとやっぱり「作ろうとしてるもの」があったからだと思うんですね。あと、プレッシャー。

なので年内に何かこれっていう課題を決めて(レッスンに行くのもあり)一つ取り組んでみようと思います。

やりたいことは全部やりたい!!

ということで今日からその環境作りを始めます!効果が出たらまたブログにします♪

simpledancer.hatenablog.com

Pythonの学習サービスPyQを一旦やめることにした理由

f:id:simpledancer:20171022180002p:plain


先月から始めたPython学習のPyQですが一旦学習を中止して購入をやめることにしました!

simpledancer.hatenablog.com

教材としてはとても優れているし(だんだん難しくなってきたけど)

レベルアップしていくので達成感もある。

しかしやっていて思ったことを書きます!

やめた理由

教材としてはとっても素晴らしいしお値段もリーズナブル!

ただしやめた理由は私の性格の問題です。

というのも、私のざっくりとした性格のため、説明をほとんど読まずに流してしまったり(模範解答があるので)写経ばかりで考えることを難しいレベルになるとついつい後回しで「こなす」というのを重視してしまったがために

全く理解できていないのにガンガン進めてわけわからなくなってきました。

それはそれでありなのかもしれませんが、もう少し丁寧にしなければ結局なんだかやっている意味ないかな〜なんて思ってしまいました。

あとPyQは途中でやめても日割りで返金してくれるという、優しいサービスです!

昨日2回目の請求で支払いが終わったんですが、残りの日数分は日割りで返金されるそうです。

あと、物理的に今月〜来月は仕事の関係であまりPythonが勉強できなさそうなので月単位なのもあってちょっともったいないな〜と思ったのです。なんとか時間を捻出することもできたとは思いますが優先順位を考えて一旦やめることにしました。

PyQのいいところ

やめてはみましたがPyQのサービス上のいいところは

  • やめても復活した時に学習履歴が引き継げる
  • 日割りの返金がある
  • ヘルプが丁寧(カジュアルに始めたり、やめたりできる)

だと思います。

結構サービス系ってやめるときの手続きがめんどくさかったりしますが、すごく簡単に中止することができました。こういうのありがたいし、またやりたいなと思ったら簡単に始めることができます。

月単位なので余裕があると見越して始めないとちょっともったいないかな?と思います。

simpledancer.hatenablog.com

今後の予定

年内はやたらと仕事が入ってしまったのでそれをこなしつつ

隙間時間にrailsを少し復活したり行けるか微妙だけど勉強会など参加できるものは参加していきたいと思ってます。

なかなか進まないし、私には向いてないんじゃないだろうかって悩むこともあるけどエラーが解決した時は嬉しいし、やっぱりアプリとか開発できたら楽しそうだし。

マイペースでも今後も続けて行こうと思ってます。

あと、買いきりタイプのUdemyはそういう意味でも復習するにはとってもいいなと(半永久的に教材が見れるので)。購入した教材を再度ちょこちょこ復習します。

simpledancer.hatenablog.com

いちいち調べるのがめんどくさい。。意外と躊躇する特殊文字の入力の仕方

f:id:simpledancer:20171112183818p:plain

特殊文字、これプログラミングをしていてもブログを書いていても

あ。。あれどうやって入力するんだっけ、しかもなんて読めばいいかもわからない。。。毎回調べるのってめんどくさいなあ〜

そんな時Macだとキーボードビュアーを使ってカンニングすることができます!

参考にさせていただいたサイト

miki73.com

久しく使ってなかったんですがˆ  「 ˆ 」とか、しかも読み方わからないし!!

Pythonだと集合の演算のところで出てきました!

f:id:simpledancer:20171112183734p:plain

キーボードビュアーの使い方

詳しくは上記のブログに詳しく書いてくださっています。

流れ的には

システム環境設定

キーボードを選択

右上の文字マークのところをクリックしキーボードビュアーを表示を押すと

キーボードが出てきてくれます。

そしてoptionキーを押すとキーボードビュアーのキーボードの押す部分がオレンジ色に変わりますので、そこに該当するキーボードを押せば特殊文字の入力が可能となります!

 

macを長年使っていながらこの機能は使っていませんでした!これで特殊文字の度に調べるという手間が省けます!

simpledancer.hatenablog.com

 

 

Pythonで頻発するエラーの種類

f:id:simpledancer:20171104033510j:plain


頻発するエラーがAssersion Error

これ調べるとPythonではなくてJavaの説明がたくさん出てきました。

そもそもAssersion Errorってなんなんだよってことで(Rubyの時は出てこなかった)

 

Java 入門 | アサーション

アサーションは、プログラムの仕様をソースコードに明記するものです。具体的には、プログラムの実行時には発生し得ない場合を false とする boolean 式を含み、仮に false になるようなら java.lang.AssertionError を発生させます。AssertionError が発生する場合は、プログラムが予期しない動作を実行していることを示しています。当該行に制御が渡るまでに、なんらかのバグが作り込まれているということです。

Python入門 - 制御構文

Pythonの方で調べてみると

assert はテストの際に値が期待通りに設定されているかを確認するための仕組みです。__debug__ が True の時のみ動作し、式を評価して偽であれば、AssertionError例外を発生させます。python を -O オプション付きで起動することで、__debug__ の値は False になります。

こっちのほうがちょっとわかりやすいですね。

simpledancer.hatenablog.com

写経しても出てくるエラーの対処

とにかく、最初は意味わからなくても写経をしまくります。

なんかそのうちに文のリズムというか。あ、なんとなくこういう法則で書かれているのかっていうのがわかってきます。(もしかしたらこれって遅い学習方法かもしれないけど)

でも写経しても出てくるエラーが冒頭のアサーションエラー。

あとはinvalidって出てきます。

だいたいが{}とか回答の日本語が違う、とか spaceが一個足りないとか。

PyQでやると、一応実行はできるものの、判定を押すとエラーが出て先に進めない!

コードをコピーして貼り付けるのが一番早いので、問題の意味がわかれば、先に進めない時はこれで行ってしまいますが、コードをコピペすると結局どこが悪かったのかわからないので最終手段にします。

そしてインデントエラーが頻発します。これはとにかく他の言語では経験できないくらい頻発。ただ今までインデントってあまり意識せずにきてしまったので癖付けるっことができるのでいいのかな。(Pythonは;で括らずにfor文などはインデントがカッコ代わりになるのです。スペースがインデントで決まるというか)

simpledancer.hatenablog.com

いかんせんまだまだ勉強が滞りますが地道に。地道にやっていこうと思います。

あと、圧倒的に勉強量が少ないのでもう少しプログラミングの時間を増やしてあげないとと。。(思いながらもなかなかねえ。。。)