新年も宜しくお願いします

皆様方 新年も宜しくお願いします

暮からお正月は如何お過ごしでしたでしょうか? 僕は毎年の如く自宅から一歩も外出せずにぐうたらした生活を過ごしてきました

そんな訳で仕事始めの本日も未だ調子に乗りません という訳で 昨夜から rubyの勉強を始めました 以前も何回か挑戦したのですが、挫折の連続でした 今度はどうでしょうか?

挫折した理由の多くは、rubyをシステムにインストールせねばならない、ということでした それはそれで簡単で良いのですが、問題は OSが汚れる、ということです

去年末よりとっつき始めた VirtualBoxに Vagrantを用いて guest OSをインストールするのはその点で良いのです guest OSと host OS、僕の場合には MacOS Sierraですが、その間は ssh (Secure Shell)を用いて通信し、あたかも host OS端末上で各種コマンドを走らせるかの如くとなるのです

今回は、Vagrantを用いてサーバー版の Ubuntu14.0LTSをインストールしたのです そして、その上で rubyをインストールして、というか Ubuntu14LTSにははじめから ruby 1.9.3がインストールされているので、rubyは最初から走ります ところがこの rubyは /usr/bin/rubyにマッピングされていて、要するにシステム領域なので色々と色付けできないのです

ちなみに、gemを用いて railsをインストールしようとしても、エラーが出ます 困り果てていて、挫折寸前になったのですが、エラーメッセージからgoogleさんに相談したところ、ありましたね この HomePageに回答があったのです この通りにしたところ、見事 ruby on railsをインストールできましたよ

と、これで $rails new rails_sample というコマンドで rails_sampleの下で各種ファイルが出来るべし と思ったのは甘かったのです なんとこれだと 2つの訳の分からないエラーがでてきたのです

そこで例によってもそのエラーをコピーして googleさんに問い合わせたらば、見つかりましたね ここですよ これによれば、そもそもの Vagrantfileという Vagrantが ubuntu serverを立ち上げる各種設定のためのファイル内容に間違いがある、ということになりますよね でもここで用いた Vagrantfileは純正のものであり、それが間違いを含んでいるとなると問題ですねえー 何れにしてもここに記載されているものに、Vagrantfileの内容を変更したところ、めでたく rails をインストールすることができました

[追記]

実はまだ難関があったのです bundle fileが同定できないみたいなエラーがこのままだと出現するのです これについても googleさんに聞きました その結果、

 $cd /home/vagrant/rails_sample/

としてから、

$bundle install --without development test

とすることにより bundleも成功してどうやらrailsを使えるようになったみたいです ここに至るにはこのページを参考にしました

次から次と

Webの進化は激しく、僕のような素人が追跡していくのはとても大変です 昔のように、Webと言えば、htmlだけであったのはもう石器時代の話であり、その後、cssや DOMという考えが出てきてすぐにjavascriptそして、それから派生というか発展させた Frameworkが様々出現、もちろん Server側ではこの間に凄まじいスピードで進化しているようです

その中で僕がかろうじてついてきたのは、html5, css3.0, javascript, jQuery, Twitter Bootstrap, php, rubyぐらいでしょうか そして、現在は Ruby on Railsの勉強開始、さらに、angularJSを開始しようか? と思っているところです

そして、さっきふと「bootstrap + angularJS」の組み合わせはどんなことになるのか? と疑問に思い調べていると何と今まで知らなかった言葉 “Yeoman”というのが出てきました

これは何と、これらの各種 Frameworkのインストールを簡単にするツールのようです とても便利そうなのですが、下手に手を出すと火傷しそうなので、自分のスキルが十分になるまではこのまま手をつけずにいることにしましょう

しかし、早い とっても早い 次から次とテクノロジーが進化していくのですね

これは便利!!

今岡山空港ラウンジです これから羽田に戻ります
さて、Rubyのお勉強ですが、今話題の Sublime Text 3という「恋に落ちるエディタ」をインストールしました
これで準備は整ったのですが、ふと、ShellからこのSublime Textを起動するにはどうすれば良いのか? と思い調べたところ、Qiitaで見つかりました

sudo ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/bin/subl

だったのです リンクを貼るだけですね ここにありました でもこれは相当便利ですよ

Rubyの初歩

未だまだ初歩ですが、Rubyについて勉強していて学んだことを忘れないように記載します

Rubyでは徹底的なオブジェクト指向が使われています それは整数や文字列についてもそうであり、それぞれ整数オブジェクトクラスや文字列オブジェクトクラスに属しています だから以下のような C/C++では考えられないことが普通に最初から行われます

puts 5
puts 5.to_i
puts 5.to_f

puts "SAITO"
puts "SAITO".reverse

この出力結果は

5
5
5.0
SAITO
OTIAS

となります つまり、何も自分では定義していないにもかかわらず最初から、整数クラスや文字列クラスが保持しているメソッドを読み出すことができます つまり、to_i (整数に変換する)、to_f (浮動小数点に変換する)、reverse (文字列を逆順にする)というメソッドを呼び出したのです

それでは自分で定義したクラスではどうでしょうか

class Animal
	def say
		puts "Nyaon Nyaon"
	end
end

animal = Animal.new
animal.say

この出力は

Nyaon Nyaon

となります このまでは C++などでもともとオブジェクト指向プログラムをしている私としては簡単に普通に理解できます

しかし、ふと思いました これを C++で書くとどうなるか?

class Animal {
public:
  Animal() {}
  ~Animal() {}
  void say() {
    std::cout << "Nyaon NYaon" << std::endl;
  }
};

int main() {
  Animal cat * new Animal();
  cat->say();
  delete cat;
}

このようになります ここで、catという変数名はその変数のアドレスを指しています そして、新たにnewで生成したならば、最後にdeleteしなければ、メモリーリークが発生します これに対して、Rubyではもともと言語にゴミ集め (ガベージコレクション)の機能が備わっているので、いちいち deleteせずともメモリーリークは発生しません ここいら辺は JAVAや BASICなどと同じです 本質的なことは、Rubyでは変数名というのは、全て変数のアドレスつまりポインタだということなのです たとえば C++で今のcatという変数生成を以下のようにした場合にはどうなるでしょうか

int main() {
  Animal cat();
  cat.say();
}

このようになり、矢印によるメソッド指定ではなく、ピリオドによる指定となります そして、この場合にはcatという変数そのものを指していて、アドレスを指しているのではありません そして、このcatというのは newで生成した場合には、HEAP領域に作られますが、このように直接生成した場合には、STACK領域に取られるのです つまり、もしもこの catというものの実態が非常にメモリーを浪費するものであったとすれば、一挙に Stackを消費尽くしてしまい、プログラムは破壊され システムも障害を受けるでしょう

Rubyの場合変数であれ、何であれ全て(多分) HEAP領域に確保され、そこに対するポインターのみが存在するのです これは新たに知った大きな知識でした

お盆の季節はとても忙しい

何でしょうか 会社が休みだからでしょうか あるいは クリニックの多くもお休みをとられているからでしょうか まあその両方でしょうか この季節 外来診療をやっているととても忙しく また重症例が多いのです 今日の僕の外来診療だけでも入院指示どうでしょうか 20名ぐらいに発行しました その内の 3例は今日緊急入院です 一人は冠動脈にステントが入り、一人は巨大な易破裂腹部大動脈瘤に対して ステントグラフトが入り、お二人ともあっという間に元気に回復です

そうかお盆は既に旅立たれた人の魂との交流ですから、呼ばれるのでしょうか

僕も明日から週末まで短い休みを取ろうと思っていたのですが、急遽休みを取られた同僚の代わりに外来診療を行います でも緊急例が多い時期なのでやり甲斐がありますね

とわ言ってもプログラミングが中断したままです しかも悪いことに僕の浮気性が出てきて、それは何かと言えば、日本発の完全オブジェクト指向言語である Rubyの勉強なのです 実はこれまで数回行おうとしたのですが、なかなか進まず挫折していたのです その大きな原因は Windows環境での Ruby Programmingが相当やりにくい、ということがあったのです でもその初めてとりかかってから既に 10年以上が経過する間に状況は一変し、 Windows環境でもバッチリとなっていました それに何より僕の現在のプログラミング環境は OSXであり、Unixであるので Rubyはすいすい走るのです それに世界は Web開発は Ruby一色になりつつあります そんなこんなで再び Rubyの勉強を始めたので Qtによる DIB programmingは中断しています 結局こんな自分では何もものにならないのかも知れませんね