こんな感じ。その2

こんな感じ。その2

胡散臭い話からどうでもよい話まで。

Amebaでブログを始めよう!
アメブロのブログデザイン変更が嫌になったので
ブログをお引越ししましたよ。


新ブログ Blogicarythm


今後はこちらに記事を書いていきますので皆様なにとぞよしなにー

記事のエクスポート機能さえついてないとかどんだけ囲い込みたいんだアメブロ
節操のない感じに勉強していてわかんないことを覚え書くブログだよ。
今回は前回までの流れをまるで無視してphpです。
例によって自分が調べた範囲で書いてるので間違いがあれば指摘お願いします。

phpで見る「$this」って何なん?


元々ある程度独学でC言語を勉強してたんで変数とか関数とか宣言とか型とかそのへんはある程度知ってるつもりでいますが、
phpのソースコードを読ませてもらったりすると

$a = $this->******(); //******は適当なクラスとか関数

みたいなのが出てきて意味分からんってなりますよね。僕はなりました。
ソースの中を探してもどこにも「$this」なんて変数は宣言されてねぇじゃねぇか!と。
あとその後ろに続いてる「->」とかも何なんだ、と。

で、調べてみるとこの$thisはどうやら「擬似変数」と言うみたいです。
意味はそのまま「この(クラス)」という意味らしいです。
そして「->」は無理やり訳すと「~の中の」。
なので先ほどのコードはこういうふうに訳してみましたよ。

変数 $a に、このクラスの中の******というクラス(または関数の戻り値)を代入します


そんじゃあ「クラス」ってなんだよ、と。関数との違いは?とね。

クラスは値や動作をひとまとめにした「オブジェクト」


出ましたオブジェクト。
オブジェクトというのは直訳すると「物体」「対象」と言った言葉になります。
現実世界で言えば、「机」「猫」「宮崎あおい」など、
いろんなモノをオブジェクトということが出来ると思います。
で、各オブジェクトにはソレをソレたらしめる特徴を持っています。
phpではそれらの特徴を値と関数に分けて、「メンバ変数(プロパティ)」「メンバ関数(メソッド)」と呼ぶわけですね。

メンバ変数で言うと「机」が「木製」であることや「宮崎あおい」が「死ぬほどかわいい」こと
メンバ関数で言うと「机」を「2回」たたくと「コン、コン」となることや、宮崎あおいに「カエル」を見せたら「きゃあ!」と言うこと、(そしてその様子が死ぬほどかわいいこと)などが挙げられます。宮崎あおいのくだりは忘れましょう。

で、このクラスの定義はこういうふうに書きます。
例として先ほど挙げた机を取り上げてみましょう。

class Desk
{
//メンバ変数(プロパティ)

$color = "brown" ;
$material = "wood" ;
$height = 800 ; //単位:ミリメートル
$weight = 5000 ; //単位:ミリグラム
$sound = "コン "

//メンバ関数

function knock($times){
for($i = 0; $i <= $times; i++){
echo $this -> sound ; //同じクラス内のメンバ変数を使用するので$thisを使用
}
return 0;
}
}
//ここまでがクラスの定義

$desk = new Desk() ; // new <クラス名>で、クラスの中身を使用できる状態にする

echo $desk -> color ;
$desk -> knock(2) ;


はい、これでクラスの宣言と、宣言の使い方を書いてみましたよ。
このコードの実行結果はこうなるはずです。


brownコン コン 


ならなかったらごめんなさい

こうすることで、「特定の「何か」に対する処理であること」をわかりやすく、また、ひとまとまりにすることで扱いやすくする事ができるのがクラスの特徴だと思っています。

で、サラリと書きましたがクラスの外でクラスを使う場合は
最初に「new<クラス名>」で、適当な変数にクラスの中身を代入しておく必要があります。

クラスの宣言にもabstractとかpublicとかを頭に足すことで使える範囲が変わってきたりとかあるんですけど
そこまでやりだすと記事が終わらない気がしてきたのでやめときます。また別の機会に。


おや?


で、ここまで書いてきて「メンバ関数knockを作るとき、$this使わなくてもそのまま変数名でよくね?」と思ったわけなんですが。
つまり

function knock($times){
for($i = 0; $i <= $times; i++){
echo $sound ; //同じクラス内の変数なのでそのまま使用
}
return 0;
}

ってことですね。

クラス内では問題なく動くと思うんですが、
多分、それをやるとクラスの外でこの関数を呼び出した時には呼び出し側は変数$soundを持たないから

「$soundって変数知らないよ?」

ってなっちゃうんじゃないですかね(ふんわりとした解釈)


ということでものすごい初歩の部分だとは思いますが、phpのおさらいでした。

以下参考URL。
【 ほでなすPHP 】 PHPの基本 -> クラス
PHP: クラスの基礎 - Manual


ゼロからわかる PHP超入門
星野 香保子
技術評論社
売り上げランキング: 178320


Webサイト制作者のための PHP入門講座
鈴木 憲治 安藤 建一 小出 範明
技術評論社
売り上げランキング: 21140


ノン・プログラマのためのPHP入門 10日間コース
アシアル株式会社 海原 才人 笹亀 弘
翔泳社
売り上げランキング: 96455

前回のブログ
素人が素人なりにRuby on Railsを習得してみる勉強の備忘録ですよ。

↓参考書籍↓


で、今回のおさらい内容


必須ではないけどRubyでの開発にはほぼ不可欠(必須でいいやんけ)と言われているRubyGemsさん。

RubyGemsとは、


Rubyに関連するプログラムをネットワーク経由でダウンロード、インストールするプログラム
だそうです。
道具を取り出すための道具みたいな。ドラえもんの4次元ポケットみたいなもんですかね。

上記のように、実質不可欠なプログラムなので、殆どの場合はRubyとセットでインストールされます。
Macの場合も、はじめから入ってるRubyに含まれています。
で、まずはRubyGemsがちゃんと入ってるかを確認。
Windowsの場合はExplorerで見られるんですけど、Macの場合はFinder上の操作だけでは見ることができません(多分)
ので、ターミナルを使ってアクセスしてみましょう。

ターミナルを使ったファイルの確認


[パソコンの名前(~~'s MacBookAirとか)]:/ [ユーザー名]$ 

ターミナルを開くとこの状態になっていると思います。
もし[ユーザー名]の手前が「/」になっていなかったら、
> cd  /

と打ち込んでEnterを押しましょう。これでディレクトリ(フォルダ)を移動できます。

それではまず最初にrubyのディレクトリに移動します。
> cd library/ruby

と打ち込みます。
ディレクトリの位置が
[パソコンの名前(~~'s MacBookAirとか)]:ruby [ユーザー名]$ 

という表示に切り替わっていれば移動成功。
ここで
> ls

というコマンドを打ち込むと、そのディレクトリの中に入っているファイルやディレクトリを見ることができます。
打ち込んでみるとこんな結果が表示されました。
Gems	Site

つまり現在Rubyというディレクトリの中には「Gems」と「Site」の2つのディレクトリが入ってまっせ、ってことです。
ちゃんとありましたね、Gems。

Gemsが入っていることが確認できたら、次にGemsを最新版にアップデートしますよ。

RubyGems-updateの入手


最初に行うのは「RubyGemsをアップデートするプログラムのインストール」です。
まずは一旦
> cd /

で、ディレクトリを元の位置に戻しておきます。
移動したら次のコマンドを入力してみてください。
> gem install rubygems-update

プログラムっぽくなりました。
でもでもあれれ、なんかエラー出てる?
ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions into the /Library/Ruby/Gems/1.8 directory.

適当に訳しますと、「あんたにはこのディレクトリの情報を書き換える権限がない」
っていう意味ですね。
今扱ってるディレクトリは、Finderでは覗けないことからも想像できるように、割とシステムの根幹に関わる部分になります。
そのためMacでは、こうやって不正なアクセスやミスからシステムを守ってるわけですね。
ではどうするかというと、コマンドを一つ足します。
> sudo gem install rubygems-update

sudo 通称「須藤さん(嘘)」
これは「Super User DO」から来ているコマンドで、
「スーパーユーザー(権限のある人)として命令します」って意味です。
こうすると
Password:

と、パスワードを求められます。
これは使っているMacの起動時とかに求められるパスワードと同じです。
入力しても「***」とかは表示されず、カーソルも動きませんが、
ちゃんと入力は受け付けられているのでそのまま入力してEnterでOKです。

正常に受け付けられたら少し時間をおいて下記のような表示が出てきます。
Successfully installed rubygems-update-1.8.11
1 gem installed
Installing ri documentation for rubygems-update-1.8.11...
Installing RDoc documentation for rubygems-update-1.8.11...


無事入手できたみたいですね。

update_rubygemsを実行


ここまできたらあと少しです。
インストールしたアップデートを実行します。
>update_rubygems

「updateとrubygemsの順番逆になっとる」とかは気にしない。
RubyGems 1.8.11 installed

こういう応答が出たらOK。(数字部分はバージョンなので、変動あり)
これでRubyGemsは最新版にアップデートされましたよっと。

コマンドに対して文字がバーっと流れていくのを見るとなんだか妙にプログラムに精通した気分になりますね。
今回はこの辺で。次はやっとこさRailsのインストールですよ。