Slides for my final keynote "Why (Still) Ruby" at RubyConf Brasil 2016 (the final RubyConf Brasil 😢) http://www.rubyconf.com.br/en/schedule#7eb62dc8b950…

Ruby(ルビー)は、まつもとゆきひろ(通称 Matz)により開発されたオブジェクト指向スクリプト言語であり、スクリプト言語が用いられてきた領域でのオブジェクト指向プログラミングを実現する。(Wikipediaより) なんのこっちゃかよく分かりませんよね。ぼくもわかりません。 まあ要するに、プログラミング言語の一つにRubyというのがあって、Rubyの使い手をRubyistと呼ぶそうです。 僕はパソコン少年でしたが、パソコンを玩具として使うことからはもう30年ほど遠ざかっており、BASICと機械語、後にウェブサイト構築の必要に駆られてperl、JavaScriptを少々かじった位でプログラミングとは一般のアラフィフ男性と同じくらい離れています。 全国から、いや世界中からRubyistが集まるRubyKaigi 2016というイベントが京都で開催されることを知ったのは1ヶ月程前でした。 ひょ
Rubyでちょっとしたこと、例えばテキスト処理などをしたくてスクリプトを書くことはよくあります。そんなスクリプトは意外と再利用したくなるものです。しかし、作業用ディレクトリに適当なファイル名で保存していたりすると探し出すのは困難ですし、コマンドラインにワンライナーで書いたものだとそもそも残っていないこともあります1。別のPCでの再利用も、それらの保存方法では当然ながら不可能でしょう。 そこで、どこか整理された場所に保存しておいて再利用に備えたいのですが、保存先が問題になります2。そんなとき、私は次のような理由からgem(RubyGems)にしてしまうことにしています。手元ですぐに実行できますし、別の環境へのインストールも簡単です。また、他のRubyプログラムへの組み込みもコピペせずに実現できます。もちろん他の人が使えるようになるというメリットもあるのですが、自分の用途に限っても長い目で見れ
技術部の牧本です。 今日はモンキーパッチの話をします。 モンキーパッチとは何か そもそもモンキーパッチ (monkey patch) とは何でしょうか? 端的に言えば、言語の組み込みクラスやライブラリ、その他外部ライブラリの挙動を、動的に拡張する仕組みをモンキーパッチと呼びます。 *1 例えば、Ruby のモンキーパッチのすごく単純な例として以下のようなものがあります。 module NilClassExtension def empty? true end end NilClass.prepend(NilClassExtension) インスタンスが空であるかどうかを判定するメソッドとしての #empty? は String や Array など様々なクラスに存在しますが、 nil を唯一のインスタンスとする NilClass には本来は存在しません。 このモンキーパッチを導入することで
Ruby で長い時間掛かるかも知れない処理のタイムアウトを行うにはこんな感じにします。 require 'timeout' begin Timeout.timeout(3) do # 3秒でタイムアウト hoge # 何かの処理 end rescue Timeout::Error puts 'なげーよ' # タイムアウト発生時の処理 end Timeout.timeout はブロック開始時にスレッドを作成し、そのスレッドで指定された秒数だけ sleep して、sleep から復帰してもまだブロックが終わってなければ作成元のスレッドに対して Timeout::Error 例外を発生させます。 指定時間以内に処理が終わる場合: timeout(X) │ スレッド作成 ─┐ │ │ ブロック実行 sleep X │ │ スレッドkill→ 🕱 │ timeout復帰 指定時間以内に処理が終わら
PHPの代わりというか、次のレベルとしてRubyを使うならまず最初にbundlerの使い方を知っておきたかった。 以下自分なりに覚えたbundlerの使い方を記録しておく。 作業ディレクトリを作る。 $ mkdir hoge_project railsなんかはディレクトリ名がそのままアプリ名になっちゃうから気をつける (これってオプションでディレクトリ名と別の名前渡せるのかな??) 作業ディレクトリでbundlerのinitを実行する。 $ cd hoge_project $ bundle init Writing new Gemfile to /Users/username/hoge_project/Gemfile これでサンプルのGemfileが作られる。 ▼内容 # A sample Gemfile source "http://rubygems.org" # gem "rails"
Railsの仕組みを体系的に学べる大型コンテンツ Rails Guides に基づいた1,600ページ超えの大型リファレンスです。 プロダクト開発に役立つ実践的な知識が満載 Railsチュートリアルを完走し、プロダクト開発中の人に最適です。 全文検索やバージョン毎の検索にも対応 Proプランでは、さらに効率的な活用をサポートします。 このアイコンが付いているガイドは現在作業中 (WIP: Work In Progress) です。作業中のガイドはそれなりに有用ではありますが、不完全な情報やエラーが含まれている可能性があります。 はじめに Rails をはじめよう Railsのインストール方法と最初のRailsアプリケーションの作成に必要なすべてを解説します。 Ruby on Rails インストールガイド Rubyプログラミング言語とRuby on Railsのインストール方法について解説
Rubyのリファクタリングでオブジェクト指向設計に沿った美しいコードになるまでの方法を書いた。 元ネタはこちらのBen Orenstein氏のリファクタリングで、そこに私なりの解説とコードを加えた。かなり追加したのでOrenstein氏の原型とはだいぶ違う箇所もあるがオブジェクト指向設計とリファクタリングに対する考え方は同じなはず。 github.com 全3回に渡ってリファクタリングする。 「イケてない」から「マシ」にするためのリファクタリング 「マシ」から「いいね」にするためのリファクタリング 「いいね」から「スゲーいいね」にするためのリファクタリング 今回は1.の「イケてない」から「マシ」にするためのリファクタリング。 イケてないコード 以下にあるのがなんかイケてないコード。一応動くし、テストもパスしている。でもそのコード品質は平均よりちょっと下。 範囲を指定してその間の売上の総合計
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Webアプリケーションを作る上で、情報セキュリティは非常に重要な課題の一つです。プログラミング初心者からすると、そんなところまで手が回らないと考えてしまいますが、アプリケーションに脆弱性があると、開発者だけでなくユーザーも深刻な被害を被る可能性があるため、いかなる開発者も情報セキュリティから目を逸らすことはできません。しかし、幸いRuby on Railsは、主なセキュリティ対策はデフォルトで行われています。とはいえ、Webアプリケーションにどのような脆弱性が潜んでいて、Railsでどのように対策を行っているかを知っていて損はありません。是非この機会に、情報セキュリティに関する知識を深めておきましょう! 情報セキュリティとは 情報セキリティの目的は、アクセスを認められた人が情報資産にアクセスすることができ、且つ不正なアクセスを防ぐことにあります。ここでいう情報セキュリティは、機密性(Con
TECH::CAMPは、「未経験者が1カ月でサービスを作れるようになること」を目指す短期集中型のプログラミング教育サービスだ。RubyのWebアプリケーションフレームワーク「Ruby on Rails」(以下Rails)のコースが中心で、iOSアプリ開発のコースもある。TECH::CAMPを運営するdivの代表取締役である真子就有氏に、サービス開始の経緯などを聞いた。 今はプログラミングを教える立場だが、自身がプログラミングを始めたのはいつか。 プログラミングを始めたのは大学3年生のとき。ただ、サービスを作れる実力がつくまでに1年半くらいかかってしまった。最初は1人でやっていたので、ちょっと何かするたびにエラーが出てきて困った。これでは無理だと思って長期インターンシップに参加したが、現場のエンジニアは忙しく、なかなか質問できる雰囲気ではなかった。 それでプログラミング教育で起業したのか。
ステップ数で評価が決まる現場では全く役に立たないテクニックではありますが、ソースコードの減らし方について紹介したいと思います。 開発Div. エンジニアのayasudaです。 2014年の夏にジョインし、会社名と同じサービス、クラウドワークス の開発に携わっています。 ご覧の通り、消したソースコードの方が多いので、ステップ数換算だとマイナスの働きしかしてませんね! 本記事では、特に Ruby on Rails の運用されているプロダクトコードにおける、ソースコードの減らし方について紹介していこうと思います。 基本的な考え方 ソースコードを減らすときの大原則は「ボーイスカウト・ルール - プログラマが知るべき97のこと」です。 普段、ソースコードを触るときに、一つでも良いので簡単な改善を入れる。これを積み重ねるのが大事です。 一度に一気に直そうとするのはあまり良くありません。大抵の場合、デグ
RubyKaigi 2015レポート まつもとゆきひろさん、Rubyの変化で大事にしているルールを守りつつ「2019年までにRuby 3x3を実現したい」 〜RubyKaigi 2015基調講演 1日目 12月11日~13日、ベルサール汐留にて「RubyKaigi 2015」が開催されました。今年も基調講演が毎日一つずつ行われました。その模様をレポートします。 RubyKaigi 2015初日の基調講演はまつもとゆきひろさんです。「Ruby 3 challenges」と題して、間もなくリリース予定のRuby 2.3.0の紹介をしつつ、Ruby 3について話しました。 MINASWAN "MINASWAN"という海外で生まれた標語があります。この言葉、その文化を日本に逆輸入したいと、まつもとさんは話し始めました。 Rubyコミュニティの徳 ラリー・ウォールがプログラマに必要なものとして提唱
先日、Cygwinで「irbは使えるけどpryが使えない」問題が発覚したので、導入することにしました。 まずはgem installを。 $ gem install pry pry-doc そして、pryコマンドを実行。 しかし、次のようなエラーを吐かれる。 Sorry, you can't use Pry without Readline or a compatible library. Possible solutions: * Rebuild Ruby with Readline support using `--with-readline` * Use the rb-readline gem, which is a pure-Ruby port of Readline * Use the pry-coolline gem, a pure-ruby alternative to Re
こんにちは、Railsエンジニアの鈴木(信)です。 先日31歳になったんですが、やはり30歳を超えたあたりから衰えたというか、何か体に変化があったように思います。 自身の健康はもちろんですが、コードの健康(品質)のことも気になる年頃になりました。 そこで今回は弊社で利用しているコード解析ツールをご紹介します。 brakeman - セキュリティ brakemanは、簡単なXSSやインジェクション系の脆弱性を検出してくれるgemです。 もちろんこれだけで完全に安心という訳ではありませんが、弊社ではJenkinsのBrakeman Pluginを使って、継続的にモニタリング、修正しています。 使い方 $ brakeman $ brakeman --only-files=path/to/specific_file simplecov - テストカバレッジ simplecovはカバレッジ計測ツール
hello world printf "hello world!" # 末尾改行なし => hello world! print "hello world!" # 末尾改行なし => hello world! puts "hello world!" # 末尾改行あり => hello world!¥n p "hello world!" # 形式がわかる => "hello world!"¥n 変数 lang = "Ruby" # 変数 lang = "Java" # 書き換えOK LANG = "Ruby" # 定数(先頭大文字) LANG = "Java" # 書き換え不可。エラーとなる 数値 http://ruby-doc.org/core-2.1.3/Numeric.html(v2.1.3) http://ruby-doc.org/core-2.1.3/Float.html(v2.1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く