はてなキーワード: Scaffoldとは
http://individualist.link/ (←ドメインかっこいいでしょ)
〜 居酒屋にて 〜
A「やっぱり若者が稼ぐにはアプリ作るしかないと思うんですよ」
B「あー分かる」
C「ゲームは当たると大きくていいよね」
A「いいですよね」
A「そういう人の話聞いてみたいんですけどなかなか出てこないですね」
B「どういう人がどういうサービスで当てたのかまとめたい」
A「いいですねえ。Wiki 的な」
B「Google Docs とかでやってみる?」
A「おお、やりましょう」
B「Webサービスにしてもいいかも」
B「できた」
B「ドメイン取ろう」
アルコール入ってるから話のディティールうろ覚えだけどこんな流れで作りました。
当てたいなら先例を見るのが一番参考になるはずだし、僕は個人で作ったものが流行っているのを見るのが好きだし、そういうのとても興味ある。
このサイトを見ていると、どういう人がこのサービス作ったんだとか、これ個人で作ってたんだという発見があっておもしろいと思います。
1時間で出来たというのはほとんど誇張ではなくて、デザインに拘る時間とサーバーに設置する時間を抜かせば本当に1時間でできます。
・画像保存
・タグ付け
・JavaScriptで動き付ける
・CSS整える
・デザイン
というような感じになる。これらを実直にいちいち実装してたら1日で終わるか分かりません。
本を読む一番はやい方法は、文字を読まないことです。
ちょっとコードが書けると実装する道筋が思いついちゃうからライブラリを探す考えに及ばず実装しちゃう事があると思います。
そういう事は避けて、アプリを書くならアプリの本体を最小に済ませるか、ライブラリ自体を作ることに力を入れましょう。
こちらのサイトではRailsのレールに乗っかって開発しました。
以下の例はRailsを使った方法ですが、モダンなフレームワークを使っているのであればだいたい似たような話になると思う。
手に馴染んだフレームワークがあるならなんでもいい。
クソ小さなロジックと数ページしかないならPHPでもいいけど、
とにかくはやく作ることがしたいなら何かしらフレームワーク使ったほうがいい。
秘伝の Rails Application Template を用意しておくのも良い。
モダンなフレームワークなら何も考えずにデータベース接続できるはず。
Rails なら config/database.yml に接続情報書いて rake db:create && rails g model User name:string です。
ソーシャルアカウントでログインする要件が出たら、何も考えずに「あ、OmniAuth」となりましょう。
・画像保存
画像保存が必要になったら反射的に「Paperclip か CarrierWave どっにしよう」となりましょう。
・タグ付け
ActsAsTaggableOn を使います。
has_many :through のめんどくさいタグの実装ですが
これ入れて rake acts_as_taggable_on_engine:install:migrations && rake db:migrate を打てば一発で完成します。
・JavaScript で動き付ける
早くつくりたいんなら JavaScript は捨てましょう。
少なくとも生の JavaScript 書く時代ではないので CoffeeScript 使うと良いです。
・CSS 整える
とりあえず Bootstrap 入れましょう。
クラスの付け方を覚えちゃうと CSS 弄って HTML リロードして確認なんてことしなくても形は整います。
Bourbon gem 使って mixin ライブラリ組み込んじゃうのもいいですね。
HTML 書くのやめましょう。
Haml や Slim のようなテンプレートエンジンを使います。
Zen Coding でもいいけど、結局出力されるのが HTML じゃ見通し悪くて辛いと思う。
Web Components の時代になったらもっと簡単になるんだろうな。
・デザイン
ただ、Webページやアプリというのはだいたい決まったパターンがあるので、いろいろな事例を見るとよいでしょう。
正直レイアウト自体は他のサイト真似るのは悪くない判断だと思います。
むしろその方がユーザーにとって慣れ親しんだ分かりやすいサイトでもあります。
http://individualist.link/ の場合、http://www.producthunt.com/ を異常なほど参考にしました。
まあここまで書いてなんだけど、前提知識として Rails が使えるようになってないといけないのは敷居高くて悪かったと思う。
なお、今回つくったこのサイト、ぜひともみなさんにも投稿していただきたいのですが現在投稿者は承認制としております。
私本当に個人が作って運営しているというアプリやサイトというのが好きでして、
仕事がツラくて死にたい。でもどうせ死ぬなら死ぬ前にセックスがしたい。
SEX AND DIE
http://sex-and-die.herokuapp.com/
金くれ
Railsのscaffold便利すぎ。むしろこれしか使ってない。
Ruby on Rails 4入門 (全28回) - プログラミングならドットインストール
元々Rails3版はやってたんだけど、Rails4になってStrong Parametersだったり変更されてる部分がちらほらあったから、Rails3しか勉強してない人はひと通り見てみるといいかも。
bootstrapが便利らしいけど、デザインにこだわる必要はないなと思ったので省略。
jqueryもアニメーションとかajaxとかしないので使用せず。
認証はomniauthでtwitter認証できるようにした。
匿名で書き込めるようにする・ユーザー登録してもらうというのも考えたけど、匿名で書き込みは、書いたあと応募してきたセックス相手との連絡が取れないし、ユーザー登録はいちいち新しいWebサービスの登録をするのはめんどうだろうな(ってか自分はめんどう)と思ったから、twitter認証を入れることにした。
twitterで登録しているID・名前・写真を使えるのでいちいちユーザー登録の必要もなし。
詳細はtwitter経由でやり取りしてもらえればって感じです。
omniauthの導入はここを参考にした。
ASCIIcasts - “Episode 241 - 簡単なOmniAuth”
とりあえずは無料で使えるのも非常に嬉しいところ。
一部ハマったところもあったけど、そのあたりはherokuの公式マニュアルに書いてあった。
日本語でまとまってるサイトないかなーと漁ってみたけど、すなおに公式見るのが一番早かった。
■注意ポイント
Gemfileに以下を追記
gem 'sqlite3', group: [:development, :test] gem 'pg', group: [:production] gem 'rails_12factor', group: :production
よっこらせっくす。
例に漏れず件のエントリーに影響を受けまして、Ruby on Rails を利用したサービスを作ってみました。
一つもアクセスがないため宣伝ついでに利用したgemや作成する際に参照したサイトを載せますので、「Rails初心者っす」とか、自分と同じく「そもそもプログラミングとか知らねっす」という方はちょっとしたナレッジとしてご活用くださいまっせ。開発ガンガンやってる方には価値ある情報たぶんないよー。
最初はMac標準のエディタで書いてたけど、どこかの記事を読んでからは「Sublime Text 2 (http://www.sublimetext.com/)」に乗り換えました。すごく…便利です…。ターミナルはMac標準のアレです。オススメがあったら教えてください。
完成までにやったこと、実装するために参考にしたサイトを並べます。
RubyとRailsの環境を構築する。(http://www.oiax.jp/rails/rails3/install.html)
簡単にウェブアプリの土台を作れるScaffoldという機能を使って遊んでみる。(http://www.techscore.com/tech/Ruby/Rails/quick-start/Rails4/4-1)
行き詰まったので本を買う。(たのしいRuby、Ruby on Rails 3 アプリケーションプログラミング、Rails 3 レシピブック)(※ 同タイミングで買ったわけではないです。簡単にウェブアプリを作るだけなら「Ruby on Rails 3 アプリケーションプログラミング」とインターネットに接続できる環境があれば十分だと思います。ていうか他の二冊はまだ全部読んでない。)
ひと通り分かった気になり、作りたいものを作る作業へ。
$ rails new sicolip
色んなgemがあって迷う。
・Device(https://github.com/plataformatec/devise) ・omniAuth(https://github.com/intridea/omniauth)
でも、
・Deviceはメールアドレスでの認証 ・omniAuthはtwitter/fb認証
個人的に
・エロサイトにメアドを登録したくない ・エロサイトの認証がtwitter/fbってなんか怖い
ということで、自前で実装。has_secure_password(gem:bcrypt-ruby) を利用する。
サイトをクリップ(URLを投稿)したときに該当するサイトのタイトルとか内容を取得する処理。
Nokogiri::HTML(open(target_url))
こんな感じでNokogiriオブジェクトを取得して、
return doc.xpath('//title').text
こんな感じでタイトルを取得する。こちらでxpathほかのお勉強。
ログインしている人にしかクリップ(URLの投稿)をさせたくない。そんなときに使える認可処理。
クリップしたサイトの情報をタグで管理したい。タグ機能の実装を手抜きできるのがこのgem。
・https://github.com/mbleigh/acts-as-taggable-on
・http://prototype-beta.com/tags/acts-as-taggable-on
上記を参考に。
クリップしたサイトの情報をタイトルや内容、またはタグから検索したい。
その処理を手抜きさせてくれるのがsunspotさん。サーバにデプロイしたあとに
$ rake sunspot:solr:start
・http://railscasts.com/episodes/278-search-with-sunspot?language=ja&view=asciicast
・http://outoftime.github.com/sunspot/docs/
will_pagenateっていうgemもあるんだけど、kaminariが最近の流行りらしい。
・https://github.com/richardiux/sunspot_with_kaminari
ということで、はてなブックマークみたいなブックマークレットを作る。
・http://d.hatena.ne.jp/ky2009/20090108/1231405893
herokuとやらが設定周りの色々めんどくさいことを肩代わりしてくれるという噂。しかも無料。
→ sunspotが有料オプションでした。やめる。
AWSというAmazonのサービスが設定によっては無料らしい。
→ ほんとに無料だった。AWS内のElastic Beanstalkというサービスが、herokuみたいにめんどくさいことを色々やってくれる。
・http://blog.serverworks.co.jp/tech/2012/06/28/aws-elastic-beanstalk/
・http://qiita.com/items/811cd9b614d8d300628e
そんなこんなで出来上がったものは陳腐なものかもしれませんが、まがいなりにもひとつのサービスができました。ここ1カ月だらーっとRubyとRailsをさわってみて感じたことは、ウェブアプリを作るのって特別なことじゃないんだなーっていう。どこかで誰かも言ってましたけど、開発している最中はパズルを解いてる感覚でした。ウェブに転がるピースを探して、フレームワークにあてはめていくようなそんな感覚。
おしまい!
と、いう謳い文句にそそのかされてRubyとRuby on Railsをインストールして、説明通りにセットしてみた。動きゃしねぇ。調べてみると、バージョンが変わっているのでデフォルトのDBが違うらしい。あと、環境プログラムのGEMも微妙に動きが変で、今は「ワンクリックで動く便利なインストーラー」があるのだとか。試してみる。なぜか「gemが古い」と言い出す。指示通りアップデート。
で、もう一度紹介されていたサンプルを組んでみるが、scaffoldという呪文を、メソッド実行時に受け付けてくれずloadErrorが出る。検索して、コマンドラインからscaffoldを生成してみたが、今度はエラーを吐いた後、サーバーすら立ち上がらなくなった。
Ruby使えねぇ。などとは言わない。「簡単に使えるというのはマーケティング上の嘘で、トラブルを回避するためのバッドノウハウをたくさん勉強しなければならないらしい」という、至極あたりまえな、うすうす予想していた結果。
Eclipse経由を諦めてAptana IDEをそのまま使うようにした。
なんかこれは、まんまEclioseなのかもしれない。同じコードから作られてるのかな?
使いやすいよ。
昨日の続きでこれをやった。
Windowsで簡単にRuby on Rails:Instant Rails+Aptana
http://japan.zdnet.com/sp/report/story/0,2000056431,20352478-3,00.htm
まずは、図11のようにテーブル名の単数形である「category」、「recipe」でそれぞれモデルを作成する。「GO」ボタンをクリックするだけだ。
まったくもって何を言っているのかわからない。
そして図11なる画面をどこで呼び出すのかもわからない。
「みちこさん?パソコンを立ち上げるっていうのは縦に置けばいいのかいのぉ・・・?」
つまりはそういう感じだ。
うりうり探してたら、初期表示画面の画面下部のタグにGenerators画面があった。
scaffoldって絞首とか処刑とかそういう意味じゃなかったっけ?
で、なんなんだ!?
なんだかよくわからないまま連載終了。・・・くっ。
Aptana Eclipseプラグインで始めるRuby on Rails
http://blog.codezine.jp/editor/2007/06/aptana_eclipseruby_on_rails_1.php
前にも見たことがあるこれにもどってきた。
現段階の環境構成でAptana IDE経由でRubyのHello Worldを試す。さくさく。
おー。
この一連のコラムが、いままでの中で一番わかりやすかった。(目次はわかり難い)
http://blog.codezine.jp/editor/2007/08/ruby_on_railsscaffold_1.php
Aptana IDEのブラウザ内臓ってどこから呼び出すんだろ?
→下部WindowにあるServerタグのところにアイコンでLunchBrowserというのがあった。
設定ついでにワークスペースにエンコードの設定の欄を発見。utf-8に変換した。
(エンコードの状態をステータスバーなどに表示させておく方法はないのだろうか?探したが見つけられなかった。)
Generatorsタグが消えてしまった。
→パースペクティブがRubyになってた。これをRuby on Railsに。
Rake tasksを実行したりするとGeneratorsのプルダウンが出なくなる。なんでだろう?
なんとかならないものか。
http://blog.codezine.jp/editor/2007/06/ruby_on_rails_migration1.php
RailsではmodelファイルはDBのテーブルと対になります。
いわゆるO/Rマッピングというやつです。
へーーー!!そういう意味だったのか。
IDE系統でメモリ食ってるのかな?落とすと300MB近くあく…。
1Gまでもっていかれちゃうと終了もままならなくなるので注意が必要そう。
Hello worldレベルでこんなんなってちゃ世話ない。
複数を組込むにはどうしたらいいのだろうか。
さすがにheader/detailでDB参照したい。
追記:なんか少し調べたけどもしかしてRuby on RailsってO/Rマッピングオンリー…?
そんなまさか…。いや、いくらなんでも…。
http://www.web-career.com/seminar/ruby_on_rails.html
作る内容をもっとシンプルなアイディア勝負なヤツに変えようとおもう。