---
title: #odewc ほんのちょっとだけ Ruby on Rails してみた
tags:  #オホーツク #okhotsk dew community #北見 #ruby #ruby on rails  
author: [熊谷友宏](https://image.docswell.com/user/es_kumagai)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/YE9PRYK3J3.jpg?width=480
description: 2026/05/23 に開催された「Okhotsk DEW Community 勉強会@北見」で発表した資料です。  ほんとうに、ほんのさわりの Ruby on Rails を見よう見まねで触れただけの話題なので、Ruby on Rails の技術的な話というより「そんなあたりが気になるのね」みたいに捉えることくらいしかできない資料なのですけれども、せっかくなので公開しておきますね。  なんにしても Ruby on Rails、その仕組みと Ruby の良さを上手に活かしたシステムに思えてそれが印象的でした。
published: May 23, 26
canonical: https://image.docswell.com/s/es_kumagai/56NJ9V-2026-05-26-174439
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/YE9PRYK3J3.jpg)

ほんのちょっとだけ
Ruby on Rails してみた
熊谷友宏
@es̲kumagai
2026/05/23 Okhotsk DEW Community 勉強会@北見


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GE8DW6RLED.jpg)

▶︎
▶︎
▶︎
熊谷 友宏
Tomohiro Kumagai
Swift 言語が好み
みんなで楽しむ勉強会が好み
プログラミングの楽しさを伝えていきたい


# Page. 3

![Page Image](https://bcdn.docswell.com/page/LELMN9KQ7R.jpg)

近況


# Page. 4

![Page Image](https://bcdn.docswell.com/page/4JMYXZ8KJW.jpg)

▶︎
▶︎
▶︎
Okhotsk DEW Community IT
2025/12/07 交流・勉強会 @ 網走
発表してきた。
『Swift 所有権 THE SECOND SEASON』
はじめての網走
のんびりとした勉強会で
とても良かった


# Page. 5

![Page Image](https://bcdn.docswell.com/page/PJR9N65679.jpg)

▶︎
▶︎
▶︎
コミックマーケット 107
2025/12/31 東京ビッグサイト
発表してきた。
新刊なし
全作品的に、微妙に良好な売れ行き
お隣のサークルさんが、船舶免許を
取得する気になってくれて嬉しかった


# Page. 6

![Page Image](https://bcdn.docswell.com/page/PEXQNMKDJX.jpg)

▶︎
▶︎
▶︎
日本女子囲碁リーグ 開幕式
2026/01/09 日本棋院 東京本院
人生初の囲碁イベントを訪れてみた。
華やかで、
わちゃわちゃした感じが印象的
はじめて、指導碁をしてもらって感動
木部夏生さん、格好良すぎた


# Page. 7

![Page Image](https://bcdn.docswell.com/page/3EK9NG5DED.jpg)

▶︎
▶︎
釣りフェス 2025 観覧
2026/01/18 パシフィコ横浜
釣りをテーマにした催しもの
村田基さんの
キャスティングステージに感動する


# Page. 8

![Page Image](https://bcdn.docswell.com/page/L73WVNKP75.jpg)

▶︎
▶︎
▶︎
木部夏生三段サイン会 訪問
2026/02/28 こまどや @ 東京
木部夏生 三段による
出版記念サイン会
特製のサインを描いて頂いた
ちなみに、夏は自分の好きな季節


# Page. 9

![Page Image](https://bcdn.docswell.com/page/87DK8W33JG.jpg)

▶︎
▶︎
小型船舶 特定操縦免許 取得
2026/03/03 勝どきマリーナ @ 東京
旅客船向けの講習・試験
友人を乗せる上での安全面での基礎を
知っておきたくて、興味で取得してみた。


# Page. 10

![Page Image](https://bcdn.docswell.com/page/VJPK894PE8.jpg)

▶︎
▶︎
AIR旅チケット2 in セントレア
2026/03/07 中部国際空港 @ 愛知
中部国際空港を初めて訪れた
飛行機系の本が、やや良好な様子


# Page. 11

![Page Image](https://bcdn.docswell.com/page/2EVVNMXVEQ.jpg)

▶︎
▶︎
技術書典20
2026/04/12 池袋サンシャインシティ
頒布してきた。
新刊『Swift Concurrency 要諦』
かつて一緒に執筆会を開催してた友人が
復活出展されていて嬉しかった


# Page. 12

![Page Image](https://bcdn.docswell.com/page/57GLKGV1EL.jpg)

▶︎
▶︎
▶︎
囲碁シル公式オフ会 参加
2026/04/24 新宿囲碁サロン @ 東京
日本棋院公式の囲碁ゲーム
『囲碁シル』の公式オフ会に参加してきた
監修の「大橋拓文 七段」と
「吉原由香里 六段」も参加された
初めて、第三者と対面で囲碁を遊んだ


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4EQYNX6NJP.jpg)

▶︎
▶︎
▶︎
女流囲碁ブレーンズマッチ2026 大盤解説会
2026/04/29 日本棋院 東京本院
初めて、本格的な囲碁イベントを観覧
年齢層がとても広かった印象
上野愛咲美 女流名人、格好良い


# Page. 14

![Page Image](https://bcdn.docswell.com/page/KJ4WG64371.jpg)

今後の予定


# Page. 15

![Page Image](https://bcdn.docswell.com/page/LE1YDV4Z7G.jpg)

▶︎
▶︎
▶︎
やさしい Swift 勉強会
2025/12/03 〜 SEASON 2 配信開始
アクセンチュア移行により
SEASON 1 は終了（全 602 回）
個人的に SEASON 2 開始
YouTube ライブで配信
基本「月・水・金」で継続中


# Page. 16

![Page Image](https://bcdn.docswell.com/page/GEWGYLX6J2.jpg)

同人誌即売会
おもしろ同人誌バザール@大阪
2026/06/28 オーバルホール @ 大阪
旅チケット 13
2026/10/10 大田区産業プラザ PiO @ 東京
おもしろ同人誌バザール＠神保町
2026/11/01 @ ベルサール神保町 @ 東京
技術書典 21（募集前）
2026/11/23 池袋サンシャインシティ @ 東京


# Page. 17

![Page Image](https://bcdn.docswell.com/page/47ZLXM6RJ3.jpg)

前回の話題


# Page. 18

![Page Image](https://bcdn.docswell.com/page/YJ6W4N21JV.jpg)

▶︎
▶︎
▶︎
▶︎
▶︎
前回の話題
Ruby への印象
数値も文字もオブジェクトとして捉える姿勢に好印象
オブジェクト指向がきれいに描ける印象
わかりやすい言語な印象
•
ここまでの知識で「なんとなく書いてみる」が出来た
動的型付けと型チェックのバランスが絶妙に思える
こんなにきれいな言語が
既に 2000 年にあったと思うと革新的


# Page. 19

![Page Image](https://bcdn.docswell.com/page/GJ5MQ52LJ4.jpg)

▶︎
▶︎
浮上した課題
Ruby の雰囲気は掴めても、使わないと身につかない
Ruby を使う機会をつくれない


# Page. 20

![Page Image](https://bcdn.docswell.com/page/9E29PN437R.jpg)

▶︎
浮上した課題
Ruby を使う機会をつくれない
使えるとしたら、シェルスクリプト？
•
まだ
Ruby
を描けなるほどには慣れていない
•
• つい、慣れている Perl を使ってしまう
その出番的に、サクッと書きたい
➡ 別の機会をつくるのが良さそう …


# Page. 21

![Page Image](https://bcdn.docswell.com/page/D7Y45PM8EM.jpg)

何で Ruby を実践してみる？


# Page. 22

![Page Image](https://bcdn.docswell.com/page/VENYN5W9J8.jpg)

何で Ruby を実践してみる？
Ruby on Rails
試してみようか。


# Page. 23

![Page Image](https://bcdn.docswell.com/page/Y79PRYX3E3.jpg)

⋯
そもそも Ruby on Rails とは
？


# Page. 24

![Page Image](https://bcdn.docswell.com/page/G78DW62L7D.jpg)

試してみる前の印象
Ruby on Rails
名前はよく耳にする
Ruby 版サーバーサイドスクリプト？
型に嵌められるのと引き換えに、簡単に作れる？
自分のサーバーサイドスクリプト経験
Microsoft IIS + ASP (VBScript)
Apache + PHP
CGI (Perl, C++, Swift)
⋯
▶︎
▶︎
▶︎
▶︎
▶︎
▶︎
Ruby on Rails 試してみようか。


# Page. 25

![Page Image](https://bcdn.docswell.com/page/L7LMN92QJR.jpg)

何で Ruby on Rails を学ぼう


# Page. 26

![Page Image](https://bcdn.docswell.com/page/4EMYXZ9KEW.jpg)

選んだ題材
• Wikipedia
Ruby on Rails
Guides
• Rails
Getting Started with Rails


# Page. 27

![Page Image](https://bcdn.docswell.com/page/PER9N6G6J9.jpg)

Ruby on Rails
on Wikipedia


# Page. 28

![Page Image](https://bcdn.docswell.com/page/P7XQNMXDEX.jpg)

➡︎
▶︎
➡︎
▶︎
▶︎
▶︎
Ruby on Rails / on Wikipedia
概要
ルビーオンレイルス
Web アプリケーションフレームワーク
Ruby で書かれている
そうなんだ
MVC アーキテクチャー
SwiftUI 登場前の iPhone も MVC


# Page. 29

![Page Image](https://bcdn.docswell.com/page/37K9NGWD7D.jpg)

➡︎
▶︎
➡︎
▶︎
Ruby on Rails / on Wikipedia
基本理念
同じことを繰り返さない
プログラミングの基本理念ともいえそう
フルスタックフレームワーク
たとえば、Active Record により、
プログラムと RDBMS の両方での定義を必要としないらしい
良い。ただし、入り口としては簡単になっても
細かい対処が必要な時に手に負えなくなりそうな不安もある


# Page. 30

![Page Image](https://bcdn.docswell.com/page/LJ3WVN1PJ5.jpg)

➡︎
▶︎
▶︎
Ruby on Rails / on Wikipedia
MVC » Model
Active Record を通じて Model クラスを扱う
ActiveRecord::Base のサブクラスで表現
• これによりどのテーブルの
どのカラムを使うかを自動決定できる（？）
データベースとの連携を想定した Model になっているの、
何かと扱いやすそうで好印象


# Page. 31

![Page Image](https://bcdn.docswell.com/page/8JDK8WX3EG.jpg)

➡︎
▶︎
▶︎
▶︎
Ruby on Rails / on Wikipedia
MVC » View
表示のためのロジック
コントローラークラスのデータを
どのように表示するかを規定
HTML 内に若干のコードを埋め込むことで実現される
ASP や PHP もそうだった（それと類似する？）


# Page. 32

![Page Image](https://bcdn.docswell.com/page/VEPK89PP78.jpg)

➡︎
▶︎
➡︎
▶︎
Ruby on Rails / on Wikipedia
MVC » Controller
Action Pack に含まれるコントローラークラスを使って実現（？）
Action Pack とは、何だろう
とりあえず、コントローラー用の基本クラスが
提供されていると捉えておけば良さそう？
ブラウザーの操作から、該当するメソッドが呼び出される
イベントドリブン的なの、良さそう


# Page. 33

![Page Image](https://bcdn.docswell.com/page/27VVNM2V7Q.jpg)

➡︎
▶︎
▶︎
▶︎
Ruby on Rails / on Wikipedia
Merb
Rails 3.0 の一環として Rails Web フレームワークに統合された
Web アプリケーションフレームワーク（？）
Rails 以上にフレキシブルで
処理が早いフレームワークにしようと考えられた（？）
Rails 3 にこれらの機能のほとんどが組み込まれた（？）
とりあえず、当初は独立して存在していた便利機能が
今は本流に取り込まれた ̶ という認識で良い？


# Page. 34

![Page Image](https://bcdn.docswell.com/page/5JGLKGR17L.jpg)

▶︎
▶︎
Ruby on Rails / on Wikipedia
Wikipedia からの印象
書かれていたのは、仕組みの概要くらい
Ruby on Rails 何も分からない
• そもそも Ruby on Rails は何で動かす？
• 環境構築はどうやる？
• どうやってコードを書いていく？


# Page. 35

![Page Image](https://bcdn.docswell.com/page/47QYNXVNEP.jpg)

Ruby on Rails
on Rails Guides


# Page. 36

![Page Image](https://bcdn.docswell.com/page/KE4WG6M3J1.jpg)

▶︎
▶︎
Ruby on Rails / on Rails Guides
Getting Started with Rails
これに沿って、やってみよう
• 導入
• 哲学
• Rails アプリを作る
サンプルを写すだけだと Ruby の学習にならないので、
つくるものは自分で考える


# Page. 37

![Page Image](https://bcdn.docswell.com/page/L71YDV8ZJG.jpg)

Rails で、何をつくる？


# Page. 38

![Page Image](https://bcdn.docswell.com/page/G7WGYLZ6E2.jpg)

➡︎
Rails で、何をつくる？
碁盤
にしてみる


# Page. 39

![Page Image](https://bcdn.docswell.com/page/4JZLXM1RE3.jpg)

碁盤 をつくってみよう
とりあえず、質素なものを。
• データベースに碁石の位置を記録する
• 碁盤を描いて、石を表示する
実践環境
•
macOS
26.4.1
•
MacStudio (CPU: M1, Memory: 32GB)
今回の試みで仕上がった GitHub リポジトリー
➡︎
▶︎
▶︎
Getting Started with Rails


# Page. 40

![Page Image](https://bcdn.docswell.com/page/YE6W4NL1EV.jpg)

※ 今回の試みで仕上がったもの
碁盤を描いて、石を表示するページ
碁石の位置を記録するページ
今回の試みで誕生した
GitHub リポジトリー
➡︎
▶︎
▶︎
▶︎
Getting Started with Rails +


# Page. 41

![Page Image](https://bcdn.docswell.com/page/GE5MQ51LE4.jpg)

Getting Started with Rails +


# Page. 42

![Page Image](https://bcdn.docswell.com/page/9729PN13JR.jpg)

▶︎
Getting Started with Rails +
導入
Rails とは
Ruby 言語向けに開発された Web フレームワーク


# Page. 43

![Page Image](https://bcdn.docswell.com/page/DJY45PZ87M.jpg)

➡︎
▶︎
▶︎
Getting Started with Rails +
哲学 (1)
Ruby で書かれた Web アプリケーション開発フレームワーク
Rails が良いとする方法でプログラムを書くことを推奨
• Rails のやり方を身につけることが大切
• 他のやり方を持ち込もうとすると、難しくなるかもしれない
この潔さ、良いかもしれない


# Page. 44

![Page Image](https://bcdn.docswell.com/page/V7NYN539E8.jpg)

➡︎
➡︎
▶︎
Getting Started with Rails +
哲学 (2)
２つの主要な指針
• 同じ情報を何度も書き直すことを避ける
• 設定より規約を重視する
一般に規約は学習コストが高くなりがちに思うものの、
サーバー系の設定の汎用を意識した自由度は、かなり煩雑
規約に委ねるの、良い価値判断かもしれない


# Page. 45

![Page Image](https://bcdn.docswell.com/page/YJ9PRY9373.jpg)

➡︎
▶︎
Getting Started with Rails +
Rails アプリをつくる (1)
必要なもの
これは、Getting Started with Rails サンプルの話？
•
Ruby 3.2 以上
% ruby --version
ruby 2.6.10p210 (2022-04-12 revision 67958)
[universal.arm64e-darwin25]
•
Rails 8.1.0 以上
% rails --version
Rails is not currently installed on this system.


# Page. 46

![Page Image](https://bcdn.docswell.com/page/GJ8DW69LJD.jpg)

➡︎
▶︎
Getting Started with Rails +
Rails アプリをつくる (2)
ところで Rails とは、なにのことを言うんだろう。
• Web サーバーは、何をつかう？
• Rails は、サーバーのサービス？
とりあえず、わからないまま進めていこう


# Page. 47

![Page Image](https://bcdn.docswell.com/page/LJLMN9WQER.jpg)

Ruby のインストール
Ruby のバージョンアップが必要だった
ruby 3.4.9
自分の環境では ruby.compile=false の指定が必要だった
xcode-select --install
brew install openssl@3 libyaml gmp rust
brew install mise
echo &#039;eval &quot;$(/opt/homebrew/bin/mise activate)&quot;&#039; &gt;&gt; ~/.zshrc
source ~/.zshrc mise settings ruby.compile=false
mise use -g ruby@3
➡︎
▶︎
▶︎
Getting Started with Rails +


# Page. 48

![Page Image](https://bcdn.docswell.com/page/47MYXZYK7W.jpg)

Rails のインストール
Rails を新規インストールした
rails 8.1.3
Rails のインストール完了後、
• RubyGems の最新版があると出たので、更新しておいた
ターミナルを再起動してから
rails
が使用可能になった
•
gem install rails
&gt; A new release of RubyGems is available: 3.6.9 → 4.0.11!
&gt; Run gem update --system 4.0.11 to update your installation.
➡︎
▶︎
▶︎
Getting Started with Rails +


# Page. 49

![Page Image](https://bcdn.docswell.com/page/P7R9N696E9.jpg)

▶︎
Getting Started with Rails +
Rails アプリの作成
今回は「碁盤」アプリをつくることにする
rails new igo
•
最初から
Git
リポジトリーが作られているの、良い
•
Kamal
デプロイメントシステム
…
とは？
•
igo フォルダーが生成され、いろいろ入っている


# Page. 50

![Page Image](https://bcdn.docswell.com/page/PJXQNMQD7X.jpg)

Getting Started with Rails +
Rails アプリを動かしてみる
bin/rails db:create
&gt; Created database &#039;storage/development.sqlite3&#039;
&gt; Created database &#039;storage/test.sqlite3&#039;
bin/rails server
• ローカル Web サーバーがスタンバイした
http://127.0.0.1:3000
でアクセスできた
•
•
開発サーバー環境を別途用意しないで試せるの、良い
•
オートロード機能もあるらしいの、良さそう


# Page. 51

![Page Image](https://bcdn.docswell.com/page/3JK9NG9DJD.jpg)

▶︎
▶︎
Getting Started with Rails +
データベースモデルの作成 (1)
今回は「棋譜」データを持たせることにする
Active Record を使うらしい（聞き覚えのある言葉）
• 内部的には、既定で SQLite が使われるらしい（良い）
bin/rails generate model Kifu
bin/rails generate model Move
kifu:references \
move_number:integer \
x:integer y:integer \
color:integer
bin/rails db:migrate


# Page. 52

![Page Image](https://bcdn.docswell.com/page/LE3WVNWPE5.jpg)

▶︎
Getting Started with Rails +
データベースモデルの作成 (2)
生成された Ruby ファイル Kifu.rb に
リレーションの設定を追記した
class Kifu &lt; ApplicationRecord
has_many :moves, dependent: :destroy
end
•
コマンドで再度調整するときに
• 設定が消えないかなど、不安を覚えた
これは、コマンドではなく手作業で書くもの？


# Page. 53

![Page Image](https://bcdn.docswell.com/page/8EDK8WK37G.jpg)

▶︎
Getting Started with Rails +
データベースモデルの作成 (3)
生成された Ruby ファイル move.rb に
色を表現する列挙型を追記した
class Move &lt; ApplicationRecord
belongs_to :kifu
enum :color, {
black: 0,
white: 1
}
end
• 別ファイルで拡張するのと、どちらが良い？


# Page. 54

![Page Image](https://bcdn.docswell.com/page/V7PK89KPJ8.jpg)

➡︎
▶︎
➡︎
▶︎
▶︎
Getting Started with Rails +
データベースモデルの作成 (4)
Kifu と Move が完成した
サクッとつくれる印象は持ちつつ、何気なく苦労した。
• 失敗してやり直したときに、
身に覚えのないテーブルが残り SQL での削除が必要になった
DB をラップする仕組みなら、ありがちなこととも言える
今のところ、モデル周りを改良していける自信はない
必要な都度、慣れていけば大丈夫だろう


# Page. 55

![Page Image](https://bcdn.docswell.com/page/2JVVNMVVJQ.jpg)

➡︎
➡︎
➡︎
▶︎
Getting Started with Rails +
Web ページを作っていく
Route, アクションを持つ Controller, View が必要になるらしい
•
Controller
のアクションで、
•
Route で、リクエストをアクションに紐づける
リクエストをメソッドにマップする仕組み、良い
•
リクエストを処理して表示データを用意する
いったんコントローラーで情報を揃える機会を作るの、良い
ビューは、データを希望の形式で表示する
アクションのおかげで、ビューがかなりシンプルになる印象


# Page. 56

![Page Image](https://bcdn.docswell.com/page/5EGLKGL1JL.jpg)

▶︎
Getting Started with Rails +
Route の定義
今回は 2 つのルートを用意してみる
• 碁盤を表示する
• 碁石の位置を登録する
Rails.application.routes.draw do
get &quot;/kifu/:id&quot;, to: &quot;kifu#show&quot;, as: :kifu
get &quot;/kifu/:id/move&quot;, to: &quot;kifu#move&quot;
post &quot;/kifu/:id/move&quot;, to: &quot;kifu#move_add&quot;, as: :kifu_move
end
•
to
や
as
の意味をここで理解できなかった
•
routes.rb に書けるの、好印象（サーバー設定として分離されていない）
（コントローラーの流儀を知らない）


# Page. 57

![Page Image](https://bcdn.docswell.com/page/4JQYNXYN7P.jpg)

➡︎
Getting Started with Rails +
コントローラーとアクションの定義 (1)
bin/rails generate controller Kifu show --skip-routes
•
メソッドで定義された
show
は、アクション？
•
コマンド実行で KifuController が作られた
•
メソッドの実装は、空
•
空でも views/kifu/show.html.erb の内容が表示されるらしい
処理から表示へと繋ぐ必要がないの、好印象


# Page. 58

![Page Image](https://bcdn.docswell.com/page/K74WG6W3E1.jpg)

➡︎
Getting Started with Rails +
コントローラーとアクションの定義 (2)
•
kifu/:id/move のアクションは、どう作るのだろう
•
KifuController が引き受けても良いもの？
•
コマンドで実装しようとする限りでは、共存できない？
•
bin/rails generate controller Kifu move --skip-routes
•
こうすると KifuController が既にあるとしてエラーになる
•
上書きすると show メソッドが消える
KifuController に
move メソッドを手作業で追加すれば大丈夫っぽい


# Page. 59

![Page Image](https://bcdn.docswell.com/page/LJ1YDVYZEG.jpg)

コントローラーとアクションを動かしてみる
•
http://127.0.0.1:3000/kifu/1 で表示された
•
これで Kifu#show 用のページが表示されるのは、何故だろう
•
http://127.0.0.1:3000/kifu/1/move も
Kifu#move 用のページで表示される様子
Route の to 指定と、暗黙的な名前マッピングで、
コントローラーとメソッド、ビューを特定している
と認識した
ここの繋がりを最初に知れたら、ずいぶん安心だったかも知れない
⋯
➡︎
Getting Started with Rails +


# Page. 60

![Page Image](https://bcdn.docswell.com/page/GJWGYLG672.jpg)

▶︎
Getting Started with Rails +
碁石の位置を登録する画面をつくる (1)
KifuController のアクションで使うメソッドを実装
def next_move_number
@kifu.moves.maximum(:move_number).to_i + 1
end
def next_move_color
if @kifu.moves.order(move_number: :desc).first&amp;.black?
:white
else
:black
end
end


# Page. 61

![Page Image](https://bcdn.docswell.com/page/4EZLXMLR73.jpg)

▶︎
Getting Started with Rails +
碁石の位置を登録する画面をつくる (2)
KifuController の move メソッドを実装
def move
@kifu = Kifu.find_or_create_by!(id: params[:id])
@move = @kifu.moves.new(
move_number: next_move_number,
color: next_move_color)
end
•
必要なデータをインスタンス変数で揃えるの、好印象


# Page. 62

![Page Image](https://bcdn.docswell.com/page/Y76W4NW17V.jpg)

碁石の位置を登録する画面をつくる (3)
move.html.erb で入力画面をつくる
•
入力フォームは form_with を使う
- model: @move
- url: kifu_move_path(@kifu)
- method: :post
オプションの指定が独特で、正解に辿り着くのが難しかった
•
列挙型の値は
Move.colors.keys
で取得する
•
colors が自動定義されるの、新鮮だった
POST
ルート作成を忘れて、エラーから原因を察せず悩んだ
•
各種入力項目は &lt;%= form.number_field :x %&gt; のようにする
➡︎
➡︎
▶︎
Getting Started with Rails +


# Page. 63

![Page Image](https://bcdn.docswell.com/page/G75MQ5ML74.jpg)

▶︎
Getting Started with Rails +
碁石の位置を登録する画面をつくる (4)
KifuController のアクションで使うメソッドを追加実装
def move_params
params.require(:move).permit(:move_number, :color, :x, :y)
end
•
今もまだ、雰囲気だけで実装中（そのうち理解はできそう）
•
この実装、知らないとぜんぜん分からない印象


# Page. 64

![Page Image](https://bcdn.docswell.com/page/9J29PN93ER.jpg)

▶︎
Getting Started with Rails +
碁石の位置を登録する画面をつくる (5)
KifuController の move_add メソッドを追加実装
def move_add
@kifu = Kifu.find_or_create_by!(id: params[:id])
@move = @kifu.moves.new(move_params)
if @move.save
redirect_to kifu_move_path(@kifu)
else
render :move, status: :unprocessable_entity
end
end


# Page. 65

![Page Image](https://bcdn.docswell.com/page/DEY45P48JM.jpg)

碁石の位置を登録する画面をつくる (6)
入力画面をつくっていて悩んだところ
•
列挙型
color
を定義していたら
•
colors が自動定義されるのが新鮮だった
POST
ルート作成を忘れていて、
• その原因をエラーから察せなくて悩んだ
モデルの操作方法を理解するのに時間がかかった
•
form_with の引数指定が独特で、正解に辿り着くのが難しかった
どれも流儀を知らなかっただけで、
慣れてしまえば、どれも簡単に扱えそうな印象
➡︎
▶︎
Getting Started with Rails +


# Page. 66

![Page Image](https://bcdn.docswell.com/page/VJNYN5Y978.jpg)

▶︎
▶︎
▶︎
Getting Started with Rails +
碁石の位置を登録する画面、完成
ようやく完成した印象
やったことは難しくなくて、慣れれば簡単そう
データベースへの書き込み処理を意識させないのがすごい


# Page. 67

![Page Image](https://bcdn.docswell.com/page/YE9PRYP3J3.jpg)

▶︎
Getting Started with Rails +
碁盤を表示する画面をつくる (1)
KifuController の show メソッドを実装
def show
@stars = [[4, 4], [4, 10], [4, 16], [10, 4], [10, 10],
[10, 16], [16, 4], [16, 10], [16, 16]]
@kifu = Kifu.find_or_create_by!(id: params[:id])
@moves = @kifu.moves.order(move_number: :asc)
@positions = @moves.each_with_object({}) do |move, stones|
stones[[move.x, move.y]] = move
end
end
• 変数宣言を必要としない特色が、強みになっている印象


# Page. 68

![Page Image](https://bcdn.docswell.com/page/GE8DW6DLED.jpg)

碁盤を表示する画面をつくる (2)
show.html.erb で碁盤表示画面をつくっていく
• 碁盤の表示部分（抜粋）
&lt;div id=&quot;go-board&quot; class=&quot;go-board&quot;&gt;
&lt;% 1.upto(19) do |y| %&gt;
&lt;% 1.upto(19) do |x| %&gt;
&lt;% end %&gt;
&lt;% end %&gt;
&lt;/div&gt;
•
︙
▶︎
Getting Started with Rails +
ASP や PHP と似た記述方式で（個人的に）安心した
むしろ、コントローラーが存在するおかげで明瞭に書けそう


# Page. 69

![Page Image](https://bcdn.docswell.com/page/LELMN9MQ7R.jpg)

▶︎
Getting Started with Rails +
碁盤を表示する画面をつくる (3)
show.html.erb で碁盤表示画面をつくっていく
• 各繰り返しでの、碁石の表示部分（抜粋）
&lt;% move = @positions[[x, y]] %&gt;
&lt;div class=&quot;point&lt;%= &quot; star&quot; if @stars.include?([x, y]) %&gt;&quot;&gt;
&lt;% if move %&gt;
&lt;span class=&quot;stone &lt;%= move.color %&gt;&quot;&gt;
&lt;%= move.move_number %&gt;
&lt;/span&gt;
&lt;% end %&gt;
&lt;/div&gt;


# Page. 70

![Page Image](https://bcdn.docswell.com/page/4JMYXZ6KJW.jpg)

碁盤を表示する画面をつくる (4)
碁盤のデザインを記述する
•
既存の application.css に記述して対応
最初から CSS が想定されているの、良い
１手１手、順番に表示したくなったので対応
•
普通の DHTML みたいに書けるの、好印象
そういえば、show.html.erb
で使うスクリプトを
• ここに書くのは 正しい？（違いそうな予感）
既存の application.js に JavaScript を記述
⋯
➡︎
▶︎
➡︎
▶︎
Getting Started with Rails +


# Page. 71

![Page Image](https://bcdn.docswell.com/page/PJR9N6P679.jpg)

Getting Started with Rails +
碁盤を表示する画面、完成


# Page. 72

![Page Image](https://bcdn.docswell.com/page/PEXQNM3DJX.jpg)

ひとまず、満足


# Page. 73

![Page Image](https://bcdn.docswell.com/page/3EK9NGYDED.jpg)

➡︎
▶︎
▶︎
➡︎
▶︎
▶︎
▶︎
ひとまず、満足
Ruby on Rails してみた印象 (1)
分からないことが多くて手間取ったものの、
用途や記述方法が整っていて、学習コストは低そうな印象
Web サービスで、Rails で敷かれたレールから
外れるケースは少なそうな予感
コントローラーが入口になるの、とても良い
ASP や PHP はページが入口で、分散しがちだった印象
記述すべき箇所が用意されていて、迷いにくかった
すべて Ruby で記述できるの、良い
学習コストが抑えられる


# Page. 74

![Page Image](https://bcdn.docswell.com/page/L73WVN9P75.jpg)

➡︎
▶︎
ひとまず、満足
Ruby on Rails してみた印象 (2)
単純明快な Ruby コードしか書いていない気がする
• Route, Controller, View の分割が、功を奏している印象
• インスタンス変数が、とてもよく生かされている印象
• 変数宣言を必要としない仕様が生きている印象
• 戻り値で return を必要としない仕様が生きている印象
• キーワード引数の仕様が生きている印象
おかげさまで（？）Ruby を書いた気がしていない


# Page. 75

![Page Image](https://bcdn.docswell.com/page/87DK8WG3JG.jpg)

➡︎
▶︎
▶︎
▶︎
ひとまず、満足
Ruby on Rails してみた印象 (3)
いろいろなものが自動で定義されるの、興味深い
• Move.colors
• kifu_path
若干の不安を覚えているところ（自分の知識不足）
•
bin/rails
routes
で、知らないルートがたくさん出てくる
•
データベースの扱いがまだよく分からない
•
知らないファイルがたくさんある
分からないところが認識できてきたのは、安心材料
引き続き、自力でも知識を深めていけそうな予感


# Page. 76

![Page Image](https://bcdn.docswell.com/page/VJPK893PE8.jpg)

Ruby on Rails 体験を終えて


# Page. 77

![Page Image](https://bcdn.docswell.com/page/2EVVNM4VEQ.jpg)

▶︎
▶︎
Ruby on Rails 体験を終えて
まとめ
軽快に扱えそうなシステムに感じた
Ruby を書けるようになりたい ̶ という
当初の目的は達成できずに終わった感


# Page. 78

![Page Image](https://bcdn.docswell.com/page/57GLKG11EL.jpg)

※ 今回の試みで仕上がったもの
碁盤を描いて、石を表示するページ
碁石の位置を記録するページ
今回の試みで誕生した
GitHub リポジトリー
➡︎
▶︎
▶︎
▶︎
Getting Started with Rails +


