フィヨルドブートキャンプで、オブジェクト指向プログラミングが難しいと感じている人が多いようなので、そこに至るまでの流れを正確さは度外視してざっくりお伝えします。

 1 # xxxまでfile読み込みの処理
 2 # ...
 3 # ...
 4 # ...
 5 # ...
 6
 7 goto 1 # read処理の行番号
 8
 9 goto 101 # write処理の行番号
10
11 goto 201 # delete処理の行番号

同じ処理を呼び出すにはそれが書いてある行へジャンプする命令を呼んでた。

関数の時代

同じ処理をまとめて名前つけて呼び出せたらいいよね。(終わったら自動で戻ってくる)

def file_read(filepath)
  # ...
end

def file_write(filepath, data)
  # ...
end

def file_delete(filepath)
  # ...
end

filepath = "foo.txt"
text = file_read(filepath)

filepath = "bar.txt"
data = "ham egg spam"
file_write(filepath, data)

filepath = "buz.txt"
file_delete(filepath)

「めっちゃ便利!」

モジュールの時代

困ってること1

関数ってめっちゃ便利なんだけど、たくさん増えるとごちゃごちゃになるのよね。イケてるプログラマーは似ている用途の関数を一つのファイルにまとめて呼び出してるけど、みんなそうすればいいのに。

関数時代のイケてるプログラマーのプログラム。

# file.rb
def file_read(filepath)
  # ...
end

def file_write(filepath, data)
  # ...
end

def file_delete(filepath)
  # ...
end
require "file"

filepath = "foo.txt"
text = file_read(filepath)

filepath = "bar.txt"
data = "ham egg spam"
file_write(filepath, data)

filepath = "buz.txt"
file_delete(filepath)

困ってること2

同じ用途の関数をまとめたのはいいけど、必ずセットで使う変数があるんだよね。イケてるプログラマーは変数のprefixを揃えたり、コメントに書いたりしてるけど、みんなそうすればいいのに。

関数時代のイケてるプログラマーのプログラム。

# file.rb

# file_xxx系の関数と一緒につかってネ!
file_path = ""

def file_read(file_path)
  # ...
end

def file_write(file_path, data)
  # ...
end

def file_delete(file_path)
  # ...
end
require "file"

file_path = "foo.txt"
text = file_read(filepath)

file_path = "bar.txt"
data = "ham egg spam"
file_write(filepath, data)

file_path = "buz.txt"
file_delete(filepath)

モジュールの導入

このfile.rbみたいなやつのことみんなモジュールって呼んでるね。モジュラーアプローチとかモジュールプログラミングと呼ぶらしい。

それがやりやすいように言語でもモジュールをサポートしよう!(Modular, Modular-2)

モジュール構文のサポート

# file.rb

Module File
  name = ""

  def read()
    # ...
  end

  def write(data)
    # ...
  end

  def delete()
    # ...
  end
end
require "file"

File.path = "foo.txt"
text = File.read()

File.path = "bar.txt"
data = "ham egg spam"
File.write(data)

File.path = "buz.txt"
File.delete()

同じ用途の関数が集まってるってわかるし、変数もそれらと一緒に使うってわかりやすい!嬉しい!

「めっちゃ便利!」

クラスの時代

困っていること

Fileモジュールは便利なんだけど、fileがたくさんあるときに変数の管理が大変なんだよね。

require "file"

paths = ["apple.txt", "orange.txt", "grape.txt"]

paths.each do |path|
  File.path = path
  puts File.read()
end

これ、それぞれのモジュール(変数)を別個のものとして持ち歩けたら便利なのになあ。

files = [File, File, File]

こういう感じにできたら似た処理をする変数と関数一式を持ち歩けて便利なのになあ。

クラス・オブジェクトの導入

クラスを雛形として書いて、newするとそれぞれ別個のものとして持ち歩けるよ!(Simula, C++)

# file

Class File
  @name = ""

  def initialize(name)
    @name = name
  end

  def read()
    # ...
  end

  def write(data)
    # ...
  end

  def delete()
    # ...
  end
end
require "file"

paths = ["apple.txt", "orange.txt", "grape.txt"]
files = []

paths.each do |path|
 files << File.new(path)
end

puts files # => [#<File:apple.txt>, <File:orange.txt> #<File:grape.txt>]

「めっちゃ便利!」

宣伝

ss

現場の即戦力になれるプログラミングスクール フィヨルドブートキャンプ

フィヨルドブートキャンプでいつも話すのでここに書いておきます。

入りたい会社が無い

勉強を始めたばかりで、

「プログラマーとしてどういう会社に入りたい?」

と聞かれても特に無くて当然だと思う。

会社のホームページや求人サイトに書かれるパブリックな情報は良いことしか書いてないし、将来性とか言われてもピンとこない。

せいぜい「ブラックじゃない会社が良い」「給料の高い会社が良い」とか。

おすすめの探し方

おすすめの探し方はプログラミング関係のイベントに色々行って、どこかのコミュニティに属してみることです。(プログラマ自身が主催してるところがいい)

コミュニティに属すると「こういうプログラマーになりたい」とか「この人と一緒に働けたらいいな」とか「この評判のいい会社で働きたい」など、自然と自分の中に好き嫌いができてきます。

普通の社会人は自社の悪口を社外で言わないものらしいですが、(僕を含めて)現場のプログラマーはイベントや懇親会で普通に悪いところも話しがちです😭

悪いところを含めて色んな会社のリアルな情報が聞けるので、コミュニティ内での会社の評判というのは概ね現実に即しているという印象です。

イベントに行く前に

そもそもある程度プログラミングの知識が無いとイベントに行っても話される意味がさっぱりでクッソつまらないのでいきなり行くのはおすすめしません。

rubyやrailsを噛り始めたぐらいで行き始めるのがおすすめ。

イベントの探し方

イベントの探し方はrubyだったら近所の地域rubyコミュニティを探してみるか、connpassで自分の使ってる技術で検索してみると良いと思います。

サンクトペテルブルクRubyConf1日目 - komagataのブログ

1日目はYandex Taxi(ロシアのUber的なやつ)で行ったので2日目はバスと地下鉄で会場に向かいました。

Yandex TaxiはSMSが受け取れれば登録して利用はできるけど、支払いのカードはロシアのやつじゃないとだめっぽくて手持ちのカードは全部ダメ。UberというよりJapan Taxiみたいにその場での現金払いもできるのでそっちで利用してました。値段は30分乗って500ルーブル(825円)ぐらいでやすい。

サンクトペテルブルクはトラムとか大きめのバンみたいなやつとかバスが色々あって迷いました。そのバンみたいなやつは現金手渡しで、バス停とかはなく、みんな降りたくなったら運転手に行って降りるみたいな感じ。一律40ルーブル(66円)。

Image from Gyazo

地下鉄は大江戸線よりクッソ深くて、一律45ルーブル(74円)で安いけど登ったり降りたりで意外と時間がかかる。迷ったりして会場まで1時間半ぐらいかかった。

Image from Gyazo

2日目のトークはGraphQLとMicroservicesの話が多かった。Twitterはまったく使われて無く、Telegramっていうメッセンジャーをみんな使ってるらしいんだけど、登録にSMSが必要で使ってない。

お昼や休憩時間は特に決まってなくて、軽食や弁当も適当に並べられるのを自由に取る感じ。

Image from Gyazo

弁当は豆と色々を似たのをライスにかけたもので、美味しい。ロシア料理は全体的に煮込んだものとかが多くて個人的に口に合いました。

午後は途中で予定にないライトニングトークマラソンが始まった。登壇予定のNickさんという人が来ないらしくて急遽開催されたらしい。

Image from Gyazo

そして@hsbtさんの発表。

standard libraryのgem化の話やbundler, rubygemsの現状とこれからのお話。よかった〜。

ruby committer側からのこれからお話だったのでイベント全体が締まった感じがしましたね。

クロージングの言葉とスケジュールに書いてあったので最後までいたら、

「That's it.」

で終了してたのが衝撃的だった。次回の話とか何もないのかな?😅

これから夜行列車でモスクワに行ってクレムリンとか見て帰る予定です。

Saint P Rubyconf 2019

1日目始まりました。

Image from Gyazo

会場はクッソでかいJetbrainsのイベント会場。(普段何に使ってるのコレ・・・?)

Image from Gyazo

Image from Gyazo

発表は1時間毎でお昼や途中休憩は特にスケジューリングされてなく、勝手に休んだり勝手にお昼食ったりする感じらしい。

発表内容はEurukoよりはテックよりが多い。(というかEurukoがエモい話オオスギィ)

発表者はフリーランスかEvil Martiansみたいなグローバルで有名な会社の人が多くて、ロシアの会社の人は少ない感じ。

ごたごたしていて会場到着が遅れちゃったけど @hsbt さんとお会いできた。

Googleが使われて無くて全部Yandexとか、地下鉄で荷物チェックされるとか、みんな休日にはコード書かないしPC開かない?などなどロシア情報を交換しました。

@hsbt さんの発表はDay 2の最後なのでリラックスできなくて嫌そうでした😅

先週、asakusa.rbに初参加させてもらいました。

毎回、RubyKaigiに行くたびに、皆さんの圧倒的成果物を見るにつけ、

「あ〜、俺はRubyに食わせてもらってるのに何の貢献もできてない、フリーライドしててもうしわけないなあ〜」

と思ってました。

最近はメイン仕事がUnity/C#ということもあってRuby成分が減っていたのでRubyKaigi2019から戻ってから趣味のプログラミングとして「ruby関連の作業をしたい!」と思い、rubyのredmineやML、githubのruby organizationのIssueをみて何か俺にもできる作業は無いかなと探していました。

その中でloggerにPRを送ってみたりしつつ、ruby作業の気合を入れるためにasakusa.rbに初参加させてもらいに言ってきました。

結果、行ってよかったし、これからも行こうと思いました。

やはりrubyのコミッターがたくさんいて生で話せるというのは日本に住んでる圧倒的メリットだなーと思います。

だって、もしロシアのCプログラマーが日本に来てたら、

「うわ、本場の(nginxの)やつがきた、なんか話聞きたい!」

って思うし、

ヨーロッパのRubyイベントで日本人が来てたら、

「うわ、本場の(rubyの)やつがきた、この機会になんか聞いときたい!」

ってなるでしょ。

来月ロシアのサンクトペテルブルクRubyConf行きますけど、@hsbtさんがトリで発表するやつ、地元の人は、

「うわ、本場のやつがくる!」

ってなると思うんですよね(妄想)

それにrubyや有名ライブラリにcommitしてるのが当たり前のコミュニティーに行くと、

「自分も頑張らねば!」

と思うのでruby心が高まりますね。

今日はruby organizationに移ったTryRubyが日本語だと見づらい(右から読む言語でも見づらいらしい)をどうにかするのをやりたいなとおもいます。

ここ数年、毎日寝る前に見て癒やされているニキビ動画。

中国に行ったとき、Youtubeが遮断されているのでニキビ動画ロス待ったなしかと思ったんですが、中華が誇る動画サイトYoukuで「blackheads」で検索すれば見れるというチャイニーズハックを発見したので、早速@bluerabbit777jpさんにお伝えしたら、

「え?何ですかそれ?」

と言われたのでニキビ動画の世界をご紹介したいと思います。

ニキビ動画とは

ニキビをつぶすところを収めた動画のことです。ほとんどが専門のクリニックが公開している動画なんですが、そのいやし効果と中毒性によってなかなかの再生数を叩き出すため、クソカスアフィリエイターに動画転載されまくってる1ジャンルです。

そもそもニキビをつぶすことは治療になるのか?とか、ニキビで悩んでいる人の気持を考えろ!など言いたいことも出てきますが、それはそれ、ニキビ動画の魅力とは関係のない話です。

おすすめ動画

拙作のマイリスト「ブラックヘッズ特選」よりおすすめのニキビ動画をご紹介します。

言わずとしれたインドのブラックジャックことドクターVikramの動画。

どこから連れてくるのかわからないが、底が知れないインドの強力ニキビタレントの発掘力。高画質でのニキビの押し出しと淡々としたインドなまり英語ボイスのコラボは完全なASMR。そんな動画群に魅了さた人は数知れず。もちろん筆者もドクターにニキビ動画の魅力を教えられた一人である。

どのニキビもハズレ無し。こんなに取れるんだったら燃やして燃料とかにならないですかね?

このさすまたがリングになっているような道具!これ使ってるやつが一番好きなんですよね。なんていうんですかね、これ・・・。心の中では「Acne Remover」と呼んでおります。

「クリーミーなニキビ、そういうのもあるのか」と衝撃をうけた動画。

思った以上に出てくるやつ。

おじいちゃん系

おばあちゃん系。おじいちゃん・おばあちゃん系にハマるようになってきたられっきとした中毒者。

すごいのに画質が悪いのだけが惜しまれる。俺が新しいカメラ買ってやるから・・・

鼻はずるいと思うんスよね、鼻は。

ニキビのダークサイド

ニキビ動画を見続けていると「もっとすごいのがみたい」「もっとでかいニキビが見たい」と段々と心が暗黒面に支配されていきます。

「嚢胞」で留まってる内はまだいいんですが「マンゴーワーム」とか検索しだしたらもう戻ってこれない。絶対に検索するなよ!?

プログラミングスクールで、企業の研修で、同じ趣旨のことを毎回言ってるのでここに書いておきます。

斜に構えてる場合じゃねえ

特に哲学もなく、

「Twitter使ったことないんですよね〜」

「Mac/iPhoneってスタバでドヤるために持つものでしょ?」

とか言ってませんか?

SNSにケチを付けて玄人ユーザー気取りの消費者の立場は今日までだ!

オマエはこれからそのSNSを作る側の人間になるんだよぉおお!!

MacでiPhoneアプリを作る側になるんだよ!

だったらすることはなんだ?

使いまくって研究してくしかねーだろー。

「この機能はどうやって実装されている?」

「このキャンペーンはどのユーザー向けにどんな目的で行われている?」

Twitter使ってないだあ?

知らないサービスがあったら片っ端から登録せんかい!

Macがイキってる?

WindowsとMacとAndroidとiPhone全部買わんかい!

ガシガシ使ってガンガン作らんかい!

宣伝

このエントリーはプログラミングスクールの戸塚ヨットスクールフィヨルドブートキャンプの提供でお送りしています。(自作自演)

ss

現場の即戦力になれるプログラミングスクール フィヨルドブートキャンプ

あえて分けられているのでその認識の上でやるならば、

Rakefileに下記を追加する。

Rake::Task["test"].enhance ["test:system"]

使い辛さにイライラしていたお名前.comからやっと移行できました。

Image from Gyazo

それに伴ってやっとこのブログがhttps対応になりました。

フィヨルドブートキャンプ、2ヶ月程新規応募を停止してたのですが、月29,800円の有料のスクールとしてリニューアルして再開しました。

Image from Gyazo

FJORD BOOT CAMP(フィヨルドブートキャンプ)

やることは変わらないのですが、弊社紹介の企業に就職しなきゃいけないという縛りがあったのがなくなっています。

この縛りが、実際にやってみるといろいろと無理があったので一般的な有料スクールの形になりました。もちろん希望者には今まで通りおすすめ企業様にご紹介しますが、必須じゃないです。

弊社紹介企業様へ就職した方にはキャッシュバックします。

有料化するのに二ヶ月程時間がかかってたのは馬鹿な話ですが、単にStripeでカード課金機能をブートキャンプに実装してたからですね。

ちょっと前にあったお金がなくなる危機やRubyKaigi、企業研修などが重なってなかなか手が付けられずにいたんですがGWのおかげで実装できました。

RailsGirlsをきっかけに始められた女性陣が最近一気に就職して卒業されていったので、内部の体制を含めて次のフェーズということで整えていかなくてはと思っております。