All Category

さぁ、高速化だ!

2017-10-12



Webサービスの高速化は、重要だ。曰く、0.1秒の低下でECサイトの売り上げは1%低下し、0.5秒の低下でWebサイトのアクセスが20%も落ちる。わずか0.1秒だ。

しかしSIerに開発を委託しているようなサービスでは何故か蔑ろにされがちである。自分の周りで動いているSI案件も少しの間任せてもらえればリピートで1秒縮めることは別に難しくない。

先述の理屈で言えば売り上げが10%上がるワケで、下手なSEO対策なんて目じゃない。年に100億からの売り上げがあるECサイトなら、10%も上がった日にゃ利益が数千万どころか数億ほど浮く。

まずは計測と診断


「測定できるものは測定し、できな...

Chapter.12 責務の分離

2017-10-03



責務の分離

このチャプターのコード:
https://github.com/owlworks/ruby_on_basis/tree/13_change_routing_process_and_add_id_column_to_product

さてProductのGET(Read)、PUT(Update)、Deleteを実装する予定だが今日はその下準備だ。まずコードが少しややこしくなってきた。具体的にはmount_procメソッドのブロック内で処理を書きすぎている。そこでリクエストからレスポンスを作るまでの実処理をControllerオブジェクトへ任せよう。



class Co...

Chapter.11 使おう、リソース

2017-10-03



前回はHTTPのURLとメソッドという概念を説明したね。今日はリソースを作ってコードを書いてCRUDしてみよう。

さて、どんなリソースを作ってみようか。このドキュメントではちょっとしたサンプルコードなら大抵は猫クラスが登場する。ただ、オブジェクト指向プログラミングやリソースのサンプルとしては不適切だ。可愛いけれど。

このドキュメントの想定読者は既にrailsで業務コーディングをしていると思うので、ビジネスっぽい例えの方が身近で良いと思う。だから今日は商品(product)クラスを考えてみよう。ちょっとした商品管理ソフトを作るんだ。

Productクラス

Productクラスは属性...

Chapter.10 Webアプリを作る

2017-10-03



ようやくWebアプリ編に突入だ! RubyでHttpサーバを簡単に構築出来る標準ライブラリ、Webrickを使ってWebアプリを作ってみよう。さっそくコードから見ていくぞ、論ずるよりも書くが易しだ。

require 'webrick'

# WEBrick::HTTPServerクラスのインスタンスを生成する
server = WEBrick::HTTPServer.new({:Port => 3000})

# HTTPServerオブジェクトにmount_procメソッドでRouteを定義する
server.mount_proc('/teapot') do |req, r...

TTYでクールなコンソールアプリを作ろう

2017-10-03





みんなー、雑にゲーム作って遊んでるー!? (ゝω・)v
今日はrubyでCLI(CUI)、つまりコンソール上で操作するためのUIを簡単に実装できるgemのTTYについて紹介しよう。同様のことをしてくれるgemは他にもcursesやthorなどがあるがTTYは最も様々な機能が充実している。つよい。

TTYが提供するものは


yes/no、複数選択肢の入力UI
Pager、unixのlessのように長文を表示するUI
プログレスバーの表示
表示する文字列の装飾(前景色/背景色/bold...)
テーブル表示(mysqlのコンソール出力のような)


などなど。上記は代表的なものだけを...