ばぁど・うぉっちんぐ

セキュリティに強いWeb屋。自由と春を求めて羽ばたく渡り鳥。

このブログはGoogle Analyticsを利用しています

July Tech Festa 行ってきました!

8/27にJuly Tech Festaに行って来ました。 2017.techfesta.jp

雑ですがまとめのメモです。

July Tech Festa って?

インフラエンジニアの夏の祭典です。

私はインフラエンジニアというわけではないのですが、インフラできると、Webアプリケーション作成するときに対応できる範囲が広がりますもんね!!

行った理由

今年はRuby会議やPHPカンファレンスに行きたいなーと思っていたのですが、仕事の関係や資格の勉強計画の度合いから難しいと感じているからです。 なので、何か大きめのイベント・・・と探してJuly Tech Festa が引っかかったので行って来ました。

今月中にaws動かしてDrupalでブログ運営を始めたり、10月の情報安全確保支援士の勉強でネットワークを重点的に勉強したりしているので、タイミング的にもいい感じにあってました。

参加したセッション

ITエンジニアリングの本質を考える

少し道に迷い、15分遅れで参加。

内容はGoogleのネットワーク機器、ルーターなどの取り組みから始まり、Googleでのエンジニアの働き方、考え方など。 ネットワークに関しては、ルータやらトラフィックやらのお話。

これらの技術は、本セッションを講演してくれた方がコラムとして連載してくれています。 コラム - グーグルのクラウドを支えるテクノロジー | 第1回 分散型ロードバランサーを実現するMaglev(パート1)|CTC教育サービス 研修/トレーニング

論文もあるようなので、読んでみようかしら(おそらく英語(苦笑))

セッション聞いていて、やっぱGoogleって凄いんだなーと思った次第です。 何が凄いって、Googleの面接が厳しい(のは有名なこと)ので、「Googleの面接を通過したのだから、こいつは優れているに決まっている。」、「Googleの面接を通過したのだから、失敗するくらい難しい問題なんだ。」と言った雰囲気がチームとしてあるそうです。 (一体、どんな面接なんだ・・・)

他にも失敗することを前提にした計画づくりだったりとか、ユーザーファーストの考えだとか色々とありました。

今日から始めるAnsible

ネットワーク管理ツールAnsibleに関してです。

Ansible Documentation — Ansible Documentation

Ansibleっていう単語は知っていたし、実際にどんなことをやっているかもなんとなく知っていた。 実際に自分がプライベートでやっている開発で活かせそうだったら、活かしたいなーと思って参加しました。

面倒臭いサーバー側の作業を自動化できるそうです!!

早速この前面倒臭いなと思ったDrupalのセキュリティアップデートとかできるのかな・・・ 夢は膨らみますね!

標的型攻撃からどのように身を守るか

今回参加したセキュリティ関係のセッションです。 最近、勉強している内容もありセキュリティ関係のお話はとても興味を持って聞けました。

この前開設したブログもアクセスログを見てみたら不正アクセスを試みたログが、ほぼ毎日あり、げんなりとしていたところでした。

どうすればいいか若干悩みかけていたのですが、不正アクセスを試みられるのって防ぎようがないようねって話でしたね笑

大事なことは実際に不正アクセスされないことと、もし不正アクセスされた時に気づけるようにすることと言われました。

あー。なるほど。確かにー。

オープンソースコミュニティにおける英語が苦手な開発者の苦悩と奮闘記

資料です。 github.com

最近、英語を勉強しているので英語関係のセッションを聞きました。 内容は、英語を勉強するために必要なポイントをおさえてくれていました。 英語を勉強するときの4つのポイントごとに頑張っていこうと思います。

Reading

英語の記事読むよ。 英語のドキュメントなんて、基本英語だから臆せず行きます!

Writing

うーん・・・しばらく保留で!笑

Hearing

毎日英語のニュース聞いて頑張ります・・・ TED も頑張って継続します・・・ 英語のドラマ、映画も字幕で頑張ります・・・

Speaking

毎朝、Skype英会話頑張ります。(今の所初めて二ヶ月半)

英語は引き続き、地道に頑張って行きます。

英会話カフェ

英会話の実践版! 最近は英語に関する取り組みも行ってくれているんですねー。 一人でSkype英会話やっていたので、ちょうど相談もできていい機会でした。

TED、英語のドラマ、映画は字幕なしで英語オンリーで聞けるようにするという割と高い目標。 英語の雑学を含めた面白い実践型のセッションでした。 改善を考えて、英語を話していくことは大事ですよねー・・・頑張ります!

まとめ

普段、自分があんまり関わらない領域でしたが面白かったです。 8月は、情報安全確保支援士に向けてネットワークの勉強を強化していることもあり、その意味でもとても面白かったです。 来年も行くかはわかりませんが、まぁ予定が空いていればかな!!

以上です。

【技術解説2】Drupalでブログ始めました(Elastic IP ・Ruote53)

どーも。ばぁどです。

先日、ブログを立ち上げました。

Home | ばぁど・うぉっちんぐ

 

前回の記事は、EC2を立ち上げるまでやりました。 

今回はElastic IPでグローバルIPアドレスを取得して、それをドメインに紐づけるまでやります。

 Elastic IP

Elastic IP はグローバルIP アドレスを取得することができるものです。

取得したグローバルIPを自分のawsで管理している各種サービスに紐づけることができます。 

 Elastic IPの作成

「新しいアドレスの割り当て」ボタンをクリックします

f:id:UltraBirdTech:20170815111330p:plain 

画面に従って、作業を続けます。

「割り当て」ボタンをクリック。

f:id:UltraBirdTech:20170815111504p:plain

グローバルなIPアドレスが払い出されます。

f:id:UltraBirdTech:20170815111620p:plain

とても簡単。

Elastic IP の紐付け

先ほど、取得したグローバルIPアドレスを選択して「アクション」ボタンをクリックします。

f:id:UltraBirdTech:20170815112414p:plain

メニューの中に「アドレスの関連付け」があるので、クリック。

f:id:UltraBirdTech:20170815112455p:plain

アドレスを関連付けするインスタンスなどを選ぶ画面になります。

f:id:UltraBirdTech:20170815112535p:plain

インスタンスはセレクトボックスで対象のインスタンスを選べるようになっています。

f:id:UltraBirdTech:20170815112657p:plain

全て設定値を入力したら、右下の「関連付け」ボタンをクリック。

f:id:UltraBirdTech:20170815112748p:plain

無事に紐づけられました。とさ、めでたしめでたし。

f:id:UltraBirdTech:20170815112812p:plain

 

Route53

Route53は、awsドメインを管理してくれるサービスです。

新規ドメインの取得から、IPアドレスとの紐付けまでなんでもやってくれます。

aws.amazon.com

 

ドメインの取得

「Registerd domains」をクリック

f:id:UltraBirdTech:20170815114850p:plain

 

 

「Registerd Domain」をクリック

f:id:UltraBirdTech:20170815115026p:plain

※画像は既に`ultrabirdrepti.net`を取得済みです

 

欲しいドメインを入力して、被ってなければ取得できます。

金額などを考慮した上で、お好きなドメインを購入してください。

f:id:UltraBirdTech:20170815115121p:plain

 

Host Zoneの設定

ドメインを取得できたら、 Hostzoneの作成です。 

f:id:UltraBirdTech:20170815115955p:plain

ドメインを入力する項目が現れます。

取得したドメインを入力してください。

f:id:UltraBirdTech:20170815120006p:plain

すると、なにやらNSとSOAというTypeのレコードが追加されたHosted Zoneが作成されます。

f:id:UltraBirdTech:20170815120046p:plain

「created record set」でAレコードを作成します。

Nameには、www.などを適当に入れてください。

Typeは今回はIPアドレスを登録するので、[A- IPv4 address]を選択します。

Valueには、Elastic IP で取得したIPアドレスを入力してください。

f:id:UltraBirdTech:20170815120236p:plain

これで、一通り設定は大丈夫なはずです。

 即反映されない場合は、各レコードのTTLを短く設定し直してください。 

 

そして、恥ずかしながら、今回設定しているDNSのレコードの意味がわかっていなかった・・・

というわけで、雑にまとめました。参考にしてくださいmm

DNSのリソースレコードについてよく分かっていなかったので雑にまとめたよ | ばぁど・うぉっちんぐ

 ドメインの紐付けに関する設定は以上で終わりです。

 

早速、アドレスバーに紐付けたDNSを入力すると・・・

f:id:UltraBirdTech:20170816081950p:plain

表示された!

今回はここまでです。ありがとうございました。

[おまけ]ハマった3日間

8月10日、バードの日の仕事終わりに、ドメインを取得してブログを堂々オープン!としたかったのですが、ドメインが紐づかない・・・

 

かれこれ試行錯誤するお盆休みを過ごしていました。

 

そして、時間的にも72時間経った13日の夜にこんなメールがamzon さんから届きました。

 

Hello,

Thank you for activating Amazon Route 53 Service. We would like to help you get started to make your experience with Route 53 better. We have put together a few documents, getting started videos and resources which we think will be useful as you familiarize yourself with this product.

Creating your First Hosted Zone

============省略==============

 

ん?なんか、Route53使ってくれてありがとうとか言ってる・・・

 

最初に、Hosted Zone作れ?・・・

 

あー、なんか、家に帰ってHosted Zone 作り直したらできそう・・・

 

ということでした。

 

結局、Route53で新規にドメインを取得した場合は、約3日間待つ必要があるらしい。 

公式ドキュメント読んだが、そういう記述がない(調べ方が下手なのか・・・ 

教訓としては、サービスを運用するって決まっているなら、ドメインは早めに取得しろよってことですかね。

 

今回は、ここまでです。お疲れ様でしたmm 

【技術解説】Drupal でブログ運営始めました

どーも。ばぁどです。

先日、ブログを立ち上げました。

Home | ばぁど・うぉっちんぐ

前回の記事は、報告だけにとどまっていたので今回はどう立ち上げて、技術的になにを使っているかをツラツラと。

aws

サーバーはawsを利用しています。

awsを選んだ理由は下記3点。

  • awsは元からアカウントを持っていた
  • 他のクラウドと契約してアカウントが増えるのが嫌
  • 特にamazoneに対して嫌悪感ない

Drupalも私が勉強し始めたことに比べて、いろいろなサービスが出始めているんですね。

awsのmarketplaceに良さげなものがあったので今回はそれを利用。

AWS Marketplace: Drupal powered by Bitnami

本当はEC2を立ち上げて自分で環境構築をした方が勉強になるだろうなと思いつつ・・・ 今回の目的はあくまで、Drupalの運用を通してのDrupalの勉強なので!!

Drupal powered by Bitnami

早速、「continue」ボタンをクリック f:id:UltraBirdTech:20170815094751p:plain

設定画面

諸々、設定する画面に飛ばされます。 今回は、1-click launchを選択します。 f:id:UltraBirdTech:20170815094827p:plain

Version

最新のものを選びました。 f:id:UltraBirdTech:20170815095005p:plain

Region

Asia Pacific(Tokyo)を選択。EC2の値段とか少しずつ違うっぽい。 f:id:UltraBirdTech:20170815095130p:plainf:id:UltraBirdTech:20170815095135p:plain

EC2instance Type

EC2のインスタンスですね。 特にアクセス数を見込んでいないので、一番小さいt2.microを選択。 値段もお手頃。サーバーの勉強代としては良いんじゃないかな。 f:id:UltraBirdTech:20170815095307p:plain

Key pair

キーペアを指定します。 作成していなければ、console画面へ飛ばされるリンクがあります。 作りましょう。 f:id:UltraBirdTech:20170815095546p:plain

作った後は、この画面に戻ってきてリロードしろと。

※このリロードを行った時にRegionやEC2インスタンスの選択が初期状態になっている可能性あります。注意。

そうすると、keypairを選べるようになります。 f:id:UltraBirdTech:20170815095621p:plain

「Launch with 1-click 」ボタン

諸々の設定と値段を確認して、良さそうであれば作成しちゃいましょう。 f:id:UltraBirdTech:20170815100740p:plain

しばらくたつと、EC2コンソール画面に作成されたEC2インスタンスが現れます。 f:id:UltraBirdTech:20170815100937p:plain

紐づいているIPアドレスにアクセス!(下記画像は既にElastic IPで紐づいています) f:id:UltraBirdTech:20170815101430p:plain

Drupalの初期画面が見えると思います。

ログインまで

ログインするには、ユーザ名とパスワードが必要です。

Drupal powered by Bitnami で作成した場合、EC2立ち上げ時にユーザとパスワードは作られています。

ユーザ名はuser、パスワードはシステムログに吐かれているので確認します。

確認しましょう。

f:id:UltraBirdTech:20170815101618p:plain

下の方に吐かれているので確認します。f:id:UltraBirdTech:20170815101750p:plain

はい、これでログインできるはずです。

一旦この記事はここまで。 次回は、Elastic IP の取得とドメインの紐付けの予定です。

Drupal でブログ運営始めました。

どーも。ばぁどです。

2017年度やりたいことリスト上位ランキングであった、Drupalでのブログ運営を始めました。

なんで、今日かというと、8月10日は8(バー)10(ド)の日だからですね。←

(僕が言い始めたんじゃありませんよ)

はてなブログで記事にするまでもない雑多なことを、つらつらと書いて行こうかなと思っています。

f:id:UltraBirdTech:20170810204838p:plain

うーん。。。 DNSが紐づかない。。。 なぜ。。。。

ドメインが紐付き次第、こちらにもURL添付します。

ドメイン紐づきました。

Home | ばぁど・うぉっちんぐ

3日間格闘したのですが、結局なんだったのだろうか・・・

awsから「Route53使用していただきありがとうございました」みたいなメールが届いた後、作業したら紐づきました。

やっぱり、ドメインを取得した後72時間待つ必要があるんですかね?

目的

プログラマだというのに、自分が見せられるサイトみたいなもの持っていなかったなーと思ったからです。

一時期、グロンギ語変換アプリなんてのもやっていたのですが、辞めてしまったので・・・

(そのうち、また立ち上げなおします)

運用を含めて、awsなどを継続的に勉強していきたいと思っています。

構成

サーバーはawsを使用しています。

awsでよしなにDrupalを構成してくれるオプションがあったので、それを利用。 f:id:UltraBirdTech:20170810204800p:plain

Drupalが構築済みのEC2は立ち上がるので、Elastic IP とRoute53でドメイン紐づけて完成! ってやりたかった・・・

この辺のやり方は時間がある時にまとめます。

開発合宿 in 圡善 -PHPフレームワーク・Symfonyとは-

どーも。ばぁどです。

海の日の三連休を利用して、開発合宿行ってきました。

今回のテーマは、Drupalフレームワークとして利用されているSymfonyを使ってwebアプリケーション構築です。

Drupalを深く理解するための、Symfonyの勉強でございます。

フレームワークの名前的に、七色シンフォニー聞きたくなってしまいますね。

www.youtube.com

というわけで、Symfony2の入門書を引っさげて開発合宿に参加してきました。

gihyo.jp

今回の開発合宿の目標

  • Symfony触る

  • お酒飲みながら開発する

  • 合宿中であっても規則正しい生活を!

Symfonyって?

PHPフレームワークです。

Symfony, High Performance PHP Framework for Web Development

歴史としては、Zend Frameworkの次に古いPHPフレームワークのようです。 RubyRailsJavaのSpringから少し遅れて開発が始まったとのことでした。

現在はSymfony2と呼ばれる、ver 2です。

PHPフレームワークとしての検索トレンドはこんな感じ。

(2017年7月16日、8:00頃の結果)

期間:5年間

フレームワーク以外の検索結果も入ってしまうので 各FWごとに、小文字のphpをつけています f:id:UltraBirdTech:20170716202314p:plain

検索ワードの問題もあるけど、まぁ中間くらい?安定した人気ですね。 こうやってみると、Laravel最強説。

地域別にみるとこんな感じ。 f:id:UltraBirdTech:20170716202407p:plain

Symfonyは欧州で人気あるっぺぇ。 そして、圧倒的なLaravel人気・・・

Symfonyの基本機能

Symfony2のFWとしての基本的な機能は下記のようでした。

ルーティング

ymlやアノテーションで指定することで実装できます。

今回は参考書に従ってアノテーションで実装。

個人的には設定ファイル(yml)の方が好みだな。

アノテーションでやる場合はこんな感じ

 class ToppageController extends Controller
{
    /**
    * @Route("/")
    */
    public function indexAction(){     
        // なんかの処理... 
    }
}

DBとの接続

Doctrine勉強してね

Home — Doctrine Project

Doctrinは、PHPのORMです。 PHPでWebアプリケーションを開発するために作られたORMのようです。

どうしてもRubyActiveRecordと比較してしまう。

ActiveRecordと比較すると、あまりメソッド名が直感的ではないなと思ってしまった。 おそらくDoctrinの思想を理解できていないんだと思います。

Doctrineが開発された経緯とか、Symfonyに組み込まれた経緯とかは知りません。 後ほどの調査タスクで・・・

HTMLへのレンダリング

Twig勉強してね

Home - Twig - The flexible, fast, and secure PHP template engine

TwigはSymfonyの機能ではなく、独立して利用可能なテンプレートです。 確か、Symfony2からTwigに対応した認識。 ちなみに、Twig独自の関数と、Symfonyが拡張したTwig関数があるので、そこの分別は気を付けてください。

Twigが開発された経緯とか、Symfonyに組み込まれた経緯とかは知りま(以下略

使ってみた感想

フレームワークとしては、難なくWebアプリケーション開発できるなーという印象。

外部のコンポーネントを取り込んで開発するってのが多いなと思いました。

フレームワークは便利なコンポーネントを独自に取り込んで、使っていくみたいな形になってきているんですかね。

結局、DoctrineやTwigの勉強をそれぞれした方が理解深まるなー、という所感です。

今後の展望

Symfonyを利用して、MVCオブジェクト指向でどう書くのがベストなのかは探らなきゃいけないなと思っています。

あとは、ユニットテストの導入ですかね。

そして・・・「すべての道はDrupalに通ず」

まとめ

今回、開発合宿でSymfonyに触ってきました。

本当は、もっと成果物としてしっかりとしたものが上がればいいんだけど、毎回こんな新しい技術触って何ちゃらでした☆みたいなものにしちゃうんですよね。

PHP力はもう少し高めなければと思っております。

次は、もっとサービスインできるくらいの何か作ってみたいなー。

開発合宿は、ご飯美味しいし、温泉も入れるし、開発できる機材は整っているし、とても楽しいですね!

どーせ、何も予定がない休日に一日中開発しているのであれば、これからも積極的に参加していきたいです!!

おまけ

飲んだお酒。 開発合宿中に三本飲めました。 (お酒弱いのですが、酒入れながら開発は一回やってみたかったのです)

まぁ、千葉に来たし、せっかくなので・・・

www.kirin.co.jp

  • YEBISビール 350ml 缶

YEBISビール美味しいよね。

エイジゲート | サッポロビール

  • KIRIN本絞り 350ml 缶

レモン系が飲みたかった・・・

www.kirin.co.jp

次回はもっとガッツし飲みたいですね。(開発合宿の目的とは

f:id:UltraBirdTech:20170717104941j:plain

以上です。

4年目プログラマの Ruby Association Gold 合格体験記

はじめに

2017年5月にRuby Gold 合格しました。

結果は80 / 100 と、合格点が75点である中、なかなかギリギリのところでした。

Ruby Goldの合格体験記はSilverに比べて少ないイメージなので、私も残しておこうかなと思います。

なんで受けたの?

ほぼ、モチベーション的にはSilverと同じです。

一人のプログラマとして、なんでもいいから一つの言語としっかり向き合ってみたかったからです。

Ruby Gold までくれば、メタプログラミングの知識も必要だったので、より深くRubyを勉強できるかなと思ったので挑戦させていただきました。

勉強方法

公式教科書

gihyo.jp

私は古いのを持っていました。

Silverの時と同じく、試験範囲を把握するために利用。

この教科書だけでは、試験範囲の内容としては心許ないです。

添付ライブラリやメソッドチェインなどは、後述のパーフェクトRubyメタプログラミングRubyなどで、補填しました。

パーフェクト Ruby

gihyo.jp

Rubyistであれば、持っていて損はない一冊。 公式の教科書だけでは足りない深い部分の理解をしたいときはこっちで調べました。

メタプログラミングRuby

www.oreilly.co.jp

メソッドの継承の仕組みなどのRuby Goldの試験範囲を勉強するには最適の一冊。 公式の教科書やパーフェクトRubyにも継承に関することは書かれているのですが、この一冊で勉強した方がより実践的に学べます。

オブジェクト指向設計実践ガイド

gihyo.jp

Ruby Goldの資格勉強とは離れるのですが、Rubyの理解を深めるために購入。

初めてオブジェクト指向を本格的に学びました。

そもそもオブジェクト指向言語であるRubyなのに、オブジェクト指向を理解していない時点で負け。 Rubyのクラス定義やらが曖昧なままでは、太刀打ちできないということで勉強させていただきました。

問題集

Ruby技術者認定試験【Gold】模擬問題(1~10)|CTC教育サービス 研修/トレーニング

100点取れるまでひたすらやりました。

他の方の受験記

Google先生に、「Ruby Gold 合格」聞いてみて出てくるブログ記事を読み漁る作業。

勉強時間

勉強期間は1ヶ月くらいですかね。 受験日が5月末日だったので、GWは全てRuby の勉強に当てていました。

GW後は、朝(出社前)、会社の昼休みを利用して1日、2時間は勉強時間を確保しました。

個人的に試験のここがポイント!

継承チェーン

Ruby Goldはこの継承チェーンが6割くらいなので、ここをどれだけ極めるかが肝です。

extend()した時の挙動、extend()をフックするメソッドは何か?など。

メソッド 動き 前フック 後フック
include moduleをクラスの後の継承チェーンにMix-inする append_features()  included()
prepend moduleをクラスの前の継承チェーンにMix-inする prepend_features()  prepended()
extend オブジェクトの特異クラスにmoduleを取り込む extende_object()  extended()

super()の挙動

super()って、()のあるなしで挙動が変わるって知らんがな。

メソッド呼び出し(super・ブロック付き・yield) (Ruby 2.4.0)

class Foo
  def foo(arg='default')
    p arg
  end
end

class Bar < Foo
  def foo(arg)
    super(5)   # 5を引数にして呼び出す・・・(1)
    super(arg) # argを引数にして呼び出す・・・(2)
    super()    # 引数なしで呼び出す・・・・(3)
    super      # 3を引数にして呼び出す・・・(4)


    arg = 1
    super      # 1を引数にして呼び出す・・・(5)
    super()    # 引数なしで呼び出す・・・(6)

  end
end

Bar.new.foo(3)

実行結果

5     # (1)の出力結果
3     # (2)の出力結果
"default"  # (3)の出力結果
3     # (4)の出力結果
1     # (5)の出力結果
"default"    # (6)の出力結果

勉強するために工夫したこと

説明できるように!

他のRuby Gold受験者やRuby初心者に説明することを意識して自分の中に落とし込みました。

まとめ

Ruby Gold取得して、少し自信が持てるようになりました。

昔、会社の上司に「一個の言語に深く潜ってみろ!」と言われたのですが、その言葉を胸にひたすら言語を勉強してみる半年だったかなと思います。

今回のRuby Goldを取得するために勉強したRubyにおける継承チェーンやオブジェクト指向的な書き方。 じゃあ他の言語(JavaPHP)の時はどんな風に書くのかなと言ったところを考えながら、他の言語も勉強していこうと思いました!!

4年目プログラマの Ruby Association Silver 合格体験記

はじめに

2017年2月にRuby Silver 合格しました。

結果は84 / 100 と、まぁ合格だよね、という感じの合格点。 でも、合格は、合格!!!

他の記事と同じようなことしか書けず、何番煎じかわかりませんが・・・ メモ程度に残しておきます。

なんで受けたの?

一人のプログラマとして、なんでもいいから一つの言語としっかり向き合ってみたかったからです。

今年でプログラマ歴4年目となるのですが、あまり言語と深く接するということをしてこなかったので、諸々のタイミングを踏まえて挑戦してみました。

そもそも、Ruby SIlver は、2年前くらいに一度挑戦して落ちてましたし・・・(苦い思い出

勉強方法

公式教科書

gihyo.jp

私は古いのしか持っていなかったのですが、特に問題ありませんでした。

試験範囲の確認するのにはもってこい。

SIlverは7割くらい、ArrayやHashのメソッドのお話です。

ただ、サンプルコードには間違っている箇所もあるので注意してください。

章末問題も100点(うっかりミスは許容)取れるまで、ひたすら解きました。

なんでその回答になるのかの、理由をひねり出せれば問題ない。

パーフェクト Ruby

gihyo.jp

Rubyistであれば、持っていて損はない一冊。 公式の教科書だけでは足りない深い部分の理解をしたいときはこっちで調べました。

ミニツク

ミニツク - Rubyのe-ラーニング研修システム

ありがたいweb サービスでございます。

これのRuby silver対策部分をひたすら行いました。

問題集

http://www.ruby.or.jp/assets/images/ja/certification/examination/exam_prep_jp.pdf

こちらも100点取れるまでひたすらやりました。

他の方の受験記

Google先生に、「Ruby Silver 合格」聞いてみて出てくるブログ記事を読み漁る作業。

勉強時間

勉強を始めたのは試験日の、3週間前くらいからです。

朝(出社前)、会社の昼休みを利用して1日、2時間は勉強時間を確保しました。

普段からRubyは実務で触っているので、基本的なところは大丈夫な自信はありました。

試験に出てくるArrayやHashなどは普段使わないメソッドがあるので・・・

試験前の1週間はできるだけ定時に帰ることを心がけて、夜の勉強時間も1時間ほど確保しました。

個人的に試験のここがポイント!

破壊的、非破壊的

! がなくても破壊的なメソッドはいくつかあるので注意です。 arrayのarray#insertとか?

ref.xaio.jp

同じ動きをするメソッド

別名なのに同じ動きをするメソッドがあります。 arrayのslice[]が同じとかね

ref.xaio.jp

ref.xaio.jp

sliceメソッドは、メソッドの別名です。

もう、ややこしい。 Ruby に別名なのに同じ動きをするメソッドがある理由は下記のルビまの記事などを読んでもらえればいいんですかね。

Rubyist Magazine - map と collect、reduce と inject ―― 名前の違いに見る発想の違い

ファイルの内容を読み込むメソッドの挙動

読み込む対象 メソッド名 動作 EOF
IO read IOから内容を読み込む。長さが指定されていれば、その長さぶん読み込む。 長さが指定されていなければ空文字。指定されていればnil
IO.foreach 各行をブロックに渡して実行 nil
each_lines 各行をブロックに渡して実行 nil
readlines ファイルを全て読み込んで、その配列を返却する。 空配列
gets 一行ずつ読み込む nil
readline 一行ずつ読み込む EOFError
バイト each_byte IOオブジェクトから1バイトずつ取得する 何もしない
getbyte 一バイトずつ読み込む nil
readbyte 一バイトずつ読み込む EOFError
文字 each_char IOオブジェクトから1文字ずつ取得する 何もしない
getc 一文字ずつ読み込む nil
readchar 一文字ずつ読み込む EOFError

この微妙な差異がね・・・ なんとも。。。

get××系がnilを返却。

read××系がEOFError系を返却。

と覚えておけば良さそう・・・

クラス別のdeleteメソッド

delete()メソッドのクラス別の挙動

クラス 引数 返値 破壊的 別名
String 文字 元の文字列  非破壊的 なし
Array 削除した値  破壊的 なし
Hash key値 削除したkeyのvalue  破壊的 なし
File ファイルパス 1 or エラー  破壊的 unlink

こんなんばっかり・・・

他にもあったので、似通った部分は自分なりにまとめるのはオススメでございます。

勉強するために工夫したこと

復習できるように!

Ruby Goldの取得も視野に入れていたため、いつでも振り返られるようにまとめることを意識しました。 特にノートはオススメです。 ノートにまとめたり、ArrayやHashのメソッド一覧を作ってみたりしました。

情報交換

ちょうど近くにRuby SIlverを同じタイミングで受けた人がいたので情報交換とかしました。 まじ、GJ!!

まとめ

Ruby Silver受験して、普段業務では使わないようなメソッドに対する知識も増やすことができました。

業務で使うメソッドやRuby の機能って限られたものになりがちなので、知見を増やすという面では資格はもってこいですね。

まぁ、あと業務経験○年です、プラス資格持ってますならば、定量的に測れるスキルになってくるのかなーと思っております。