はてなキーワード: rakeとは
「会いたくて 会いたくて」西野カナ
「365日のラブストーリー。」Sonar Pocket
「R.Y.U.S.E.I.」三代目 J Soul Brothers from EXILE TRIBE
「私以外私じゃないの」ゲスの極み乙女。
「シュガーソングとビターステップ」UNISON SQUARE GARDEN
「シャルル」バルーン
「U.S.A.」DA PUMP
「Lemon」米津玄師
【コピペ】
社会人2年目25歳。増田でディスられがちな某大手SIerに新卒プロパーとして入社しました。以来毎日Excel方眼紙やCOBOLやバイナリエディタを弄っています。ネタじゃないですよ。
大手SIerに行ってもプログラミング力が身に付かないことは、就職前から十分知っていました。しかし私はそれでも良いと思っていました。何故なら私は頭が良くないからです。プログラミングを仕事にしてしまうと、常に勉強し、最新の技術にキャッチアップしなければいけません。そして腕を磨いて転職を繰り返さなければ年収は中々上がらないと聞きます。自分には到底そんな生き方ができる気がしませんでした。自分は無能なので、大手のぬるま湯に浸かってのんびり高収入を得ることが出来るならそれが一番いいと思っていたのです。さっさと人生アガって、早く楽をしたい。大手SIerはそんな自分にとって、ぴったりの職場だと考えていました。
しかし、大きな誤算がありました。大手SIerでの仕事が、想像を絶するつまらなさだったのです。まず大規模基幹システムというプロダクト自体に興味が持てません(学生の頃は、社会的影響力の大きいプロダクトに携われば興味なんていくらでも湧くだろうと安易に考えていました)。また、大規模で複雑なシステムというのは、考えているだけでも結構疲れます。というか未だに理解できてない部分も多く挫折気味です。そういうものに今後一生向き合っていく仕事なのだと思うと軽く絶望してしまいます。どうせ勉強するならDelphiの言語仕様とかの方がまだ楽しそうな気がします。
人間関係も上手くいきません。思った以上に周りのSEは体育会系が多いです。一応メーカー企業でもあるので、入社前はもっと地味な理系っぽい人達とのんびりアニメの話が出来ると想像してたんですが全く違いました。職場のおじさん達は、キャバクラでいかに派手な飲み方をしたかなどの話を毎日しています。全く価値観が合わず、コミュ障の自分は勤務中もほぼ話しません。
それでいて出社時間に厳しいなどかっちりした社風も息苦しいです。残業も結構あります。
そんなわけで、将来的な転職先としてWeb系のメガベンチャーに憧れています。面白いサービスを作っていて、コアタイムが緩くて、フリーアドレスで仲良い人の近くで働けると最高です。
ですが今の自分はプログラミングがほぼできません。簡単な文法くらいなら分かります。ヘボ大学の授業でCの文法の単位は取りましたし、会社の新人研修でJavaの講義も受けました。progateやN予備校の内容くらいなら理解できます。SQLも簡単なselect文なら書けます。〇〇入門みたいな勉強会にも週末たまに参加しています。しかし、文法が分かるといっても、ポリモフィズムを理解してるかと言われると怪しいレベルです。アルゴリズムもちゃんと勉強したことがありません。
例えばRailsでなんか作ってみようと思っても、railsコマンドとrakeコマンドの違いや、db:createとdb:migrateの違いが分からなくて何時間もググったりして、あんまり進捗がありません。適性がないのかも知れませんね。平日に残業したあと帰宅して勉強をしていますが、自分でちまちまやるだけでは圧倒的に量が足りず、効率も悪いと感じます。若い今のうちにさっさと未経験可のWeb系に転職→転職を繰り返し、最終的に自社サービスを扱うメガベンチャーへのキャリアアップを目指した方がいい気がしています。
こんな感じでWeb系メガベンチャーに憧れていますが、こんなにだらしない自分に、果たして本当にWeb業界が向いているのか考えると不安で仕方ありません。自社サービス開発のWeb系企業は教育も弊社ほど丁寧でなく、即戦力や個人の努力によるキャッチアップが求められ、個の力が重視されるというイメージがあります。それが本当に私にできるのか、自信がありません。私のような人間は、このままぬるま湯に浸かり続けるのが正解なのでしょうか。長い文章をここまで読んで下さった皆さん、ありがとうございました。どうか所感をお聞かせ願います。
使ったことあるモノもないモノもごちゃまぜにして経験と雰囲気で書いてる。
▼PHP
Laravelは結構好き。DSL過ぎず、それなりにフルスタックで生産性もいい。
何よりLaravel本体のソースコードが読みやすいのがいい。
まともな日本語の情報が少ないのは弱点だけど、気になったところは本体のコードを読めばすぐに分かる。
最大の欠点はPHPってことだ。他のLL言語に比べてPHP自体の生産性は低い。セキュリティ面の不安も大きい。それに安心して後を任せられるようなPHPerは一握りしかいない。
▼Perl
Mojoliciousは結構好き。これもDSL過ぎず分かりやすい。CPANに豊富なライブラリ群もある。
Perlは可読性が悪いなんて言うけど、ちゃんとしたライブラリは普通に読みやすいよ。
最大の欠点はPerlってことだ。長期的に開発者を集めることを考えたら茨の道だろ?
今でこそ機械学習でPythonが人気になっているけど、Web系はまだまだマイナーだ。
Djangoのプロジェクト/アプリケーションという構成単位の考え方が好きじゃない。理論的な利点は分かるけど、現実問題それが必要になるケースが浮かばん。
Django以外でフルスタックのWAFが出てくればいいんだけど。Tornadoはフルスタックじゃないのでちょっと違う。
Python3で安心して開発できるならアリだと思うけど今はどうなの?使いたいライブラリが3系に対応していないとかで躓きたくないよ。
あと単純に速度が遅いよね。いや書き方を気をつければマシにはなるんだけど、書き方を気をつけなければいけない時点でつらい。
▼Ruby
Railsは便利だ。周辺ライブラリの充実度もすごい。情報は玉石混交だけどまともな情報もたくさんある。
ただあまりにもDSL過ぎる。Railsはプログラミングではなく、一つの巨大なDSLだ。
Railsプログラマの何割が、少しでもいいからRails本体のソースコードを読んだことがあるのか。めっちゃ読みにくいんだけど。Rubyは可読性が高いなんて嘘だろう。Perlと一緒でちゃんとしたコードは読みやすいけどそれはプログラマに依存する話で、言語自体に可読性の高さはない。言語思想の通り書くのは楽しいよ。でも読むのがつらい。
Rails自体がDSLみたいなもんなのに、RSpecやらRakeやら周辺ツールもDSL。意識高すぎる。
問題があった時にググらずにコード読んで解決できるRailsエンジニアはどれだけいるのか。情報量が多いからググれば解決すると答えるやつは、底辺PHPerと大差ないからな。
あとバージョンアップに追従するのが面倒過ぎる。でも放置したら負債になるし。意識高くRailsで開発したやつの大半はバージョンアップやらの保守に入る頃にはもうそのプロジェクトにはいないんだろ?だからそのつらさを知らないんだろ?
散々罵ったけど、このDSLを覚えれば生産性が高いのは事実だ。だから結局ついていく確率が高い。モテ男なんだよ結局こいつは。
▼Java
Playが王道だけど最新バージョンになるほど情報が少ない。このあたりがRailsと違う。公式(英語)とか本体コードを読める人じゃないとつらい。
そもそもJava、というかJVM周りの知識がないと本番運用はつらいだろう。LL言語の運用経験しかない人は特につらい。LL言語でいうhot deployみたいなことがしたい時のやりかた分かってる?
コンパイルの遅さに耐えて開発し、運用時のGC問題を乗り越え、黒魔術を味方につけてライブラリのコードリーディングが出来るならいいんじゃないか。
Scalaを好むプログラマは関数型やらDDDやら意識高い人が多い。別にScala自体にそれらは必須ではないけど、そこら辺を意識しないならJava8でいいんじゃないかとも思う。
非同期処理で開発することの難しさに耐えられるの?
ベストプラクティスがなく、移り変わり激しいJS界隈に流されてオレオレで書いたコードを保守する自信があるならいいんじゃない。俺はない。
▼Go
API単体ならともかく、画面も担う普通のWebアプリを書くような言語じゃない。少なくとも今は。
正確に言うと書けないことはないけど、Webアプリに関する周辺ライブラリの不足を乗り越えてまで書くメリットがほとんどない。
運用実績のノウハウが少ない中で、自分で乗り越えていく気概があればいいんじゃない。
■結論
skrsvideo
今回プログラミング言語はRubyを選択したため、基本的にはVPS・クラウド的なサーバーでLinuxが動作する環境を探しました。
エロサイトを運営するにあたって問題になるのがサーバー選びです。
基本的に日本のレンタルサーバーではアダルトサイトの運用を禁止しています。
普段使っているさくらのVPSが利用できず、AWSもなんだかグレーな感じ(東京リージョン以外なら・・・?)
そんなわけで探し、GMOグループのWebkeepersを使いました。
使っても良いよ〜というお墨付き、
そして価格も手頃だったためここに決定。
DB | MariaDB |
---|---|
Webサーバ | Nginx |
フレームワーク | Ruby on Rails |
MariaDBを選んだ理由はなんとなく、MySQLとの違いはほぼありません。利用するGEMもmysql2でいけます。
ちなみにJavaScriptは使わずすべてCSSで作る方針にしました。
スマホ・PC両対応のためにMedia Queryでレスポンシブにしています。
↓
↓
↓
という流れです
gem 'nokogiri'
フロントはhamlとsassで、難しいことはしていないのでcompassはいれませんでした。
あとはデバッグ用にrails_config、pry系が入っています。
skrsvideoでは動画のURLを取得するためにクローラーもどきでスケジューリングして収集しています。
コマンドはこんな感じ
Rakeタスクはnokogiriでxvideosへのリンクを集めています。
doc = Nokogiri::XML( open(URI.parse(url)).read )
urls = []
urls.push link[:href] if link[:href] =~ /xvideos.com\/video(\d+)/
end
Nokogiriのスクレイピングでaタグのリンクを取得し、URLがxvideosのものかチェックして保存って感じです。
動画を探し終えるとaタグからランダムでピックアップし次のページに進んでいきます・
動画が見つかったページはドメインをDBに記録して、しばらくしたら再びクローリングをするようにし、収集の効率化。
30分以上の表示はちょっと頑張ったところ
これはタイトルの文字列から部分一致で引っかかったものを表示しています。
AV女優の名前を表示するためにWikipediaからとってきたら、ちょっと膨大な数になってしまったため断念。
DMMのランキングに載っていた方だけをとりあえず入れています。
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 が使えるようになってないといけないのは敷居高くて悪かったと思う。
なお、今回つくったこのサイト、ぜひともみなさんにも投稿していただきたいのですが現在投稿者は承認制としております。
私本当に個人が作って運営しているというアプリやサイトというのが好きでして、
非エンジニアの起業家が最初のエンジニアを採用出来ない理由 | rake:enjoy
非エンジニアの起業家が悩んでる間に、エンジニアは趣味で作っちゃうんですよ。で、これを採用で考えた場合、趣味レベルで作れるものが出来ていないアイデアだけの状態で誘われたとして一緒にやりたいって思うでしょうか??
エンジニアの立場として考えると、ジョインしたいと思えるスタートアップは、エンジニアがいなかったとしても最低限形になっていて、更に言うとユーザが付き始めて使い始めている状態じゃないと
「で、あなたは何が出来るの?」
と思わざるを得ないかなと。
よくぞ言ってくれた、というところ。
この手のことってなかなか言いにくいので、これに便乗する形でしか僕こういうこと言いませんけど、たとえば僕はおよそ30年の人生の中で自分のエンジニアスキルに投資した時間は少なく見積もっても10000時間は超えておりまして、明確に口にすることはあまりありませんが、それ相応のプライドを持っています。だからパートナーの方にもそれに見合った能力または付加価値を持っていて欲しいし、そうでないと、手を組むにしても不平等感が付きまといます。
足を引っ張られたくない。
もちろん足を引っ張る形になるのも避けたい。
なんかソーシャルゲーム業界に転職したい増田がホッテントリしていた。 http://anond.hatelabo.jp/20130122131752
自己回顧録みたいなものをつけたいと思っていたところだったので、なんとなくこの2年間について書いてみようと思う。
もともと、2年前に当時SIerに勤めてて、そこでSEとかコンサルとかしてたんだけど、会社の経営が傾き始めたのがきっかけだった。
当時勢いのある(今もかな)ソーシャルゲーム業界にしたのは、単に元々Web系やってたし、勉強会だとかやってるっぽいし、花形っぽいし…みたいな。まぁこのへんの気持ちはIT系の人ならなんとなく分かってもらえると思う。
その頃は「今までやっていた官公庁や大企業向けのコンサル事案と比べたら格下だな」と思っていたところはある。正直、今も社会的地位みたいなものだと格下だと思ってる。
2年経過して、色々な人と交流して思うことは、やっぱすげー人がいっぱい居る。反面、どーでもいい人もいっぱい居る。
なんか元増田の人の言ってるgloopsの人にも何度もあったことがある(仕事でも勉強会でも)。
実のところ全然つかえねーーーーって人も居るよ。
オチャラケてるっぽいけどすごい人ってのはいるけど、しっかりしててすごい人ってのはあんま見たことがない。しっかりしててすごい人はむしろ大企業系のほうが見たわ。あくまで俺の観測範囲。
ドワンゴの人はなんか楽しそうだし非リアっぽくて親近感だった。
グリーの人は割とさわやか系が多い。というかあんまり変な人が少なかった。
アメーバの人はなんか公共系SEのできる人っぽい雰囲気に近かったよ。もっとリア充ギャル男っぽい人だと思ったら全然だった。
でぃーえぬえーの人は数人しかあったことがないんだけどなんか雰囲気ちょっとこわいんだよなーみんな。
UEIの人はなんかとんがってた。ってか最初性別勘違いしてた。
基本みなさんすごい人だった。
あと学歴なーーー!やっぱり学歴高い人とか見るわけですよ。東大京大筑波大。あとなんかMITとか海外大学とか。あと高専生か。
学歴高いとやっぱりすごい人多いと思う。
下品なのでちょっと親しくなると学歴聞いちゃうんですよ。あとfacebookとかもあるしね。facebookで学歴見れるし。やっぱり頭いい…というか、頭よくてアクティブで社交性高めな人は学歴高い傾向あるよね。低学歴で根暗で一芸のみ、ってヤツもいるけど(俺だわ)。
でもたまに学歴高いのにヤバいくらいダメな人も居たりする。逆も居る。まぁこれはどこでもいっしょか。
デキる人と勉強会とかで話すと楽しいし、名刺交換したときに「あー…(コンサル会社か)」な反応から「あー!(あのベンチャーで○○で有名な!)」みたいな反応になってくれるのは嬉しい感じです。
スライドとかも自社テンプレとかあるので楽しい。下手糞が頑張ってパワポでつくるよりずっといい。
あとデザインなー。前の会社でも自社プロダクトなるものがあってデザイナーに発注してたけど、正直ショボかった。ちゃんとしたデザイン事務所に発注した案件(他社案件でコンサルしてた)は綺麗なんだけど。自社プロダクトは糞レイアウト…というか特徴なさすぎだったわ。良いデザイナによるデザイン主導が良いわ。
あ、あとこれはウチの会社だけかもしれないけど、イベント好きなエンジニアがいるので非技術系のイベントもしてたりして楽しい。サバゲだったりスキーだったり釣り部だったりあるっぽい。オフィスでケーキ作ったりとか。話し合う奴らとつるむ、って大学生のノリなんだけど。前の会社の同僚とかとはこんな感じじゃなくて、話を合わせるために合わせてるって感じでつらかったし、キュウべぇのキグルミで出社なんか出来なかったし。
とまぁ良い点を適当に並べた。
悪い点:
・勤怠管理がひどすぎる。残業代の有無は会社にもよると思うが。多少出社しなくてもOKなんだけど、明確なラインがないから困るっちゃ困る。あと風邪ひいてんのに家のPCから会社につないで仕事するヤツとかもいるし。
・時間ねぇー! 彼女作るひまもねぇよ! あっこれは時間あってもかもしれん。とりあえず前職の倍ぐらい働いてる気がする。明確に有給とったのもコミケの時とか母親が手術したときくらいか。土日祝も出たりしてるしちゃんと計算してないけど、めちゃんこ労働してる。
・技術ついてけねぇー!なにそのRailsとか知ってて当たり前みたいな!知ってるっつーのはRailsのActive Recordやらなんやらの実装とか、Railsライクな種々の実装とか、pythonで書かれたRailsっぽいフレームワークの実装状況とか、rakeとかえーと。まぁ色々。ちなみにうちの会社はいっさいRailsを使ってない。つまり自分が関わってない技術でも普通に語れ的な。JSフレームワークも20個くらい平気で使い込んで…というかソースまで読んでるくらいな感じの人がゴロゴロいる。20じゃ足りないかも。
・ゲーム屋じゃねー! ソシャゲ業界はわりとWeb屋です。ゲーマーが1割いればいい方。俺はエンジニアなんでいわゆるそういう企画屋さんじゃないんだけど、ほんと非ゲーマーの企画屋がズレたことを言ったりカネのことを言ったり平気でパクったりしてるのも見てる。ゲーマー系の企画屋はそれはそれで面白いけど、要するにソシャゲってゲーマーやんないしね?って感じだわ。 エンジニアもゲーマー少ない。俺もゲーマーじゃないしね。元RO廃人だけど。 なので企画段階で蹴られるフレーズのひとつに「それゲーマーしかやんねぇよ」ってのがよくある。 まぁでも流れはブラゲからアプリゲーになってきてるんで変わるかも。変わるといいね。
・使えない人の立場がなくなってく感じこええええええええ!!! これは一番でかいかも。使えない人がホントに…なんというか。恐ろしい勢いで立場が悪くなっていくのを見えてく。口には出さないけど「あいついらねー」感がひどいし、俺もそう言うのを(昔は出さなかったし、使えないなりに使える余裕があったのに)だしちゃってる。
つまりさ、高尾山にハイキングに行くなら、ハイヒールのギャルがいても別に許すじゃん?おぶってあげたらおっぱい当たって嬉しいくらいの。
でも富士山とか、登ったこと無いけどエベレストなんかに登るなら、そんなヤツがいても「今すぐ帰れ」以上には言えないわけじゃん。
そんぐらいリリース速度厳しいし、そういう意味での余裕はない。
まぁでも「○○ってフレームワークの実装が微妙に気に入らないので、新しく書きなおしてpull requestを送ったよ!」なんて仕事中にする余裕はあるので、これはなんつーのかな…。
・太った(重要)
まぁでも2年経って、面白いしエキサイティングなのは間違いないと思う。
なにより、Creativeであろうと思うなら、Creativeな人たちと多く話さないといけない、と強く思ってた。Blogを読むのもTwitterで話しかけるのもGitHubでIssueやPull Requestを投げるのもいいけど、実際に会わないといけないと思ってた。勉強会に参加して、それはさらに強く思うようになってた。
現状、そういう人たちに囲まれてるし、何人か『○○さん(自分)に影響を受けました!』とか言ってもらったり、勉強会で発表した俺のセッションがきっかけで話しはじめた人が弊社に入ってくれたりしてると嬉しい。
自分の作ったコードで遊んでくれたお客さんが居るのはうれしいもので、Muninのアクセス数見てニヤニヤしたり、自分の作ったところの課金処理が回ってる時は超テンションあがるし、何度テストコード走らせテスターさんに見てもらってても「うおおバグるなよおおおお」って神に祈ってしまう。
課金関連はお客様にお金払ってもらうわけだから、何かあるとヤバいわけですよ…。
すげーーーー長文になったけど、まとめると、『自分と近い価値観の人と居ると楽しい』『俺より強い奴に会いに行く→(転職)→会った→コテンパン…だが負けてたまるかー!→そいつらに認められる→承認欲求がすごく満たされる!』『まだまだ強いヤツに会いたい』『(SIerでもだけど)自分の関わったプロジェクトでお客様に喜ばれると嬉しい。怒られるとマジ恐縮』『当たるとうれしい。当たらないと悲しい。やめたくなる』あたりです。
「ソシャゲすごい好きだわーーー!だからこの業界超楽しいわーーー!」って言ってるエンジニアは会った中では…5%くらいかな。1割くらい行くかな。廃課金じゃなくてもカジュアルに好き、って程度の人は3−4割は居る気がする。コンテンツ寄りの人は、やっぱ自分の作ってるものが好きじゃない人はうまくいってない感じ(逆にインフラとかフレームワーク周辺の人はあんまり関係ない感じ。インフラ系の人でも廃課金はいたけど)。
2年経って自分を見直すと、もしもソシャゲ業界っていうものがシュリンクするなら、別の業界に移るとは思う。
技術的に楽しいとかそういうだけならソーシャルゲームにこだわる理由はないのです。むしろゲームなんて暮らしの役にはたたぬのです。クックパッドとか食べログとかのほうが役に立つし、ニコ生とかは政見放送までしちゃうのです。
例に漏れず件のエントリーに影響を受けまして、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をさわってみて感じたことは、ウェブアプリを作るのって特別なことじゃないんだなーっていう。どこかで誰かも言ってましたけど、開発している最中はパズルを解いてる感覚でした。ウェブに転がるピースを探して、フレームワークにあてはめていくようなそんな感覚。
おしまい!
結構苦労したので健忘録として。。
環境は以下のとおり
yum install mysql-server
/etc/init.d/mysqld start
mysql_secure_installation
jruby -S gem install rails jruby -S gem install warbler jruby -S gem install activerecord-jdbc-adapter jruby -S gem install activerecord-jdbcmysql-adapter jruby -S gem install jdbc-mysql
mysql -u root -p mysql> create database redmine character set utf8; mysql> grant all privileges on redmine.* to 'redmine'@'localhost' identified by 'redmine'; mysql> exit
(任意の場所にRedmineを解凍して、解凍先のディレクトリに移動した後)
cp config/database.yml.example config/database.yml vi config/database.yml
database.yml
production: adapter: jdbcmysql database: redmine host: localhost username: redmine password: redmine encoding: utf8 #development: # # #test: # #
後のwarbleでのエラーを防ぐため、developmentとtestをコメントアウト
jruby -S rake generate_session_store jruby -S rake db:migrate RAILS_ENV=production jruby -S rake load_default_data RAILS_ENV=production
script/serverで起動し、http://localhost:3000 にアクセスして正常に動作するか確認する
jruby script/server -e production
vi config/environments/production.rb config.logger = Logger.new(config.log_path) config.logger.level = Logger::INFO
warble.rbを生成
jruby -S warble config
warble.rbを修正
vi config/warble.rb config.dirs = %w(app config lib log vendor tmp extra files lang) config.gems = ["jdbc-mysql", "activerecord-jdbcmysql-adapter", "activerecord-jdbc-adapter"] config.gems["rails"] = "2.3.5" config.gems["rack"] = "1.0.1" config.webxml.rails.env = "production"
jruby -S warble
できたwarファイルをTomcatに配置して、Tomcatを起動する
mv redmine-0.9.3.war /usr/local/tomcat/webapps/redmine.war /usr/local/tomcat/bin/startup.sh
warblerのバグ(?)でwarに入らないファイルをコピーして入れる
cp vendor/gems/rubytree-0.5.2/.specification /usr/local/tomcat/webapps/redmine/WEB-INF/vendor/gems/rubytree-0.5.2
Deploy Merb, Sinatra, or any Rack App to Heroku
http://blog.heroku.com/archives/2009/3/5/32_deploy_merb_sinatra_or_any_rack_app_to_heroku/
http://heroku.com/pages/quickstart
HerokuをGit経由で使ってみる
http://d.hatena.ne.jp/aki-s-119/20081110/1226335713
http://github.com/guides/using-git-and-github-for-the-windows-for-newbies
http://d.hatena.ne.jp/kusakari/20080715/1216091060
http://code.google.com/p/msysgit/
http://net-newbie.com/putty.html
>heroku help === General Commands help # show this usage list # list your apps create [<name>] # create a new app keys # show your user's public keys keys:add [<path to keyfile>] # add a public key keys:remove <keyname> # remove a key by name (user@host) keys:clear # remove all keys === App Commands (execute inside a checkout directory) info # show app info, like web url and git repo open # open the app in a web browser rename <newname> # rename the app sharing:add <email> # add a collaborator sharing:remove <email> # remove a collaborator domains:add <domain> # add a custom domain name domains:remove <domain> # remove a custom domain name domains:clear # remove all custom domains rake <command> # remotely execute a rake command console <command> # remotely execute a single console command console # start an interactive console to the remote restart # restart app servers logs # fetch recent log output for debugging logs:cron # fetch cron log output bundles # list bundles for the app bundles:capture [<bundle>] # capture a bundle of the app's code and dat bundles:download # download most recent app bundle as a tarba bundles:download <bundle> # download the named bundle bundles:animate <bundle> # animate a bundle into a new app bundles:destroy <bundle> # destroy the named bundle destroy # destroy the app permanently === Example story: rails myapp cd myapp (...make edits...) git init git add . git commit -m "my new app" heroku create myapp git remote add heroku git@heroku.com:myapp.git git push heroku master
Total | 3601
demo
Lovd By Less - A Rails-Based Open Source Social Networking System
profiles, user following / friending,
messaging,
user blogs,
and Flickr and YouTube integration.
All of this checks in at an amazing 3,601 lines of code, including tests!
Convention over Configuration 設定より規約
Convention over configuration - Wikipedia, the free encyclopedia
Ruby on Rails 15分で Blog(ブログ) を作成する - Creating a Weblog in 15 minutes
Railsでブログを作ろう!(Creating a Weblog in 15 minutes) - hp12c Screencasts of Ruby on Rails
Ruby on Railsで一行掲示板を作成する (山本隆の開発日誌)
Willcomファンサイトの暇?人氏と、ソフトバンクモバイルの副社長、久慈毅氏(ペンネーム)との議論から、いろいろな人間を巻き込んでの大騒ぎとなった。(以下一部敬称略)
久[1]http://k-tai.impress.co.jp/cda/article/interview/37483.html
暇[2]http://www.phs-mobile.com/?p=249
久[3]http://blog.sbibusiness.com/interview/001/index5.html
暇[4]http://www.phs-mobile.com/?p=287
久[5]http://blog.sbibusiness.com/interview/001/index6.html
暇[6]http://www.phs-mobile.com/?p=294
口火を切った暇?人氏は撤収したが、どうしても確認しておきたかった点があり、個人的に書き散らかしておく。それはこれ。
暇>「2G帯は15MHzしかないから容量が小さい、これでは顧客のニーズを満たせませんから、
暇>当社ではどうしても使うことができません」とウィルコムが言ったとして、
暇>松本氏はどう反論するのでしょうか。
久>ウィルコムさんは「15MHzでは小さすぎて使えない。」とは言えないはずです。
(中略)
久>ウィルコムさんも、どうしても15MHzでは困るというのなら、既存バンドも含め、
久>周波数利用の全体像を明確にされるべきだったと思います。
( http://blog.sbibusiness.com/interview/001/index6.html より)
かみ合ってねえええええ! てかそんな話は総務省の委員は把握しきってるはずだろ。
XG-PHSの規格書(簡単な登録で誰でも読める。ただし英語)によれば、XG-PHSはガードバンド込みで1.25, 2.5, 5, 10, 20MHzという連続した周波数帯域(占有周波数帯域)を必要とする。XG-PHSの規格として何故15MHz帯域が含まれないのかについては、規格を考えた人じゃないと正しいことは言えないだろうが、おそらくTDMAのスロットがPHS的仕様として固定されていて、これをOFDMA-TDMAで処理するのに効率のよい帯域になっているのではないかと推測される。そしてXG-PHSではOFDMA-TDMAで区切られたスロットをいくつ占有するか、で単位時間あたりの情報伝送量(≒伝送速度)が決まる。
2.0GHz帯および2.5GHz帯はTDDなので、端末が伝送速度を稼ぐためには周波数方向の帯域を拡大しなければならない。しかし連続周波数帯域はOFDMで処理されるわけだから、ガードバンド込みの帯域を2つ併用するという無茶は出来そうにない(本当か?)。仮にこれが出来るとしても、RF帯からダウンコンバートする回路やIDFT/DFT処理する回路が2つ必要になったり、内部で結合したりするのか……? いずれにせよ素人目に見てもややこしい。無線回路屋が暴れそうだ。MIMO使うんだから周波数ダイバーシチが実現できていいだろう? その検証を今からやれと?
となると、所要に満たない占有周波数帯域がいくつもあったところで同時接続ユーザ数は確保できても『最大伝送速度』を確保できるものではない、と考えるのが自然。なので15MHzという占有帯域しかない2.0GHz帯では、20MHzから30MHzという帯域を活用できる2.5GHz帯との勝負では最初から分が悪いということになる。そんなところに行けと発言するんだから、『最初から負け戦確定の部分に相手を追い込むような発言』ととられても仕方ない。このあたりが久慈氏に対する悪印象のひとつ。
もうひとつは端末価格の問題。端末価格を規定する要素として、伝送回路がらみのコストはいかほどか? もっと他に要素があるんじゃないのか? そのへんが明確になってないからおかしな議論になっていると思う。
それと伝送周波数帯の変更に伴う伝搬特性にはさほど変化は無い、とか久慈氏は書いてた気がするが、さほどってどんだけ? 現場で蓄積してるデータをご破算にして新たにフィールド実験からやり直せと? ありえん。マジでありえん。そんな意見を社外から述べられてはいそうですかと聞き入れる上司がいたら辞表を叩きつけたい。
XG-PHSはマイクロセルなので、伝送周波数帯が高周波数であるほうが有利に働く気がする。2.0GHz帯の”電波的に使いやすい”と言われる特性は、信号の時間分解能をもたないOFDMでかつTDMAを抱えるXG-PHSでは不利に働く可能性が高いからだ。CDMAoneで RAKE受信機を用いているにも関わらず干渉波に苦しんだauの例がある。
ガチ記名で書くと間違いが発覚したときに色々ややこしいことに巻き込まれそうなので、増田で書き散らかしておく。ビバ増田。
とりあえずペンネームは「通信勉強中」を名乗っておくか。つーか暇?人氏は技術わかってんだったらちゃんと書けよなー。
間違いがあったら指摘してくれ。参考文献とかも書いといてくれると超助かるwww
追記:久慈氏による総括>http://tedm.sbibusiness.com/2008/03/post-1.html
本当に論戦すべき相手を間違えてないか? その相手が出てくるまで叫び続けるべきではないのか?
という思いを強くしてしまう。つまらない者たちの相手ばかりしている大人はあまり見たくないんだよな。
正直どれもあまり役にたたなそうだなと立ち読みしながら思った。
Perlと同じぐらいの書籍がおいてあるのに書籍のレベルが総じて低い。期待値と未成熟さが同居している。
本を買っただけで、他にはなにもしなかった。
Railsでソーシャルブックマークを作ってみようか(第2回)
http://d.hatena.ne.jp/PoohKid/20070220/p1
これをちろりとやってみた。
ログインしたらIn the Caboose.なるポエムが表示されて変なプラグインいれちゃったのかとかなり反省。
よくわからない。
どうもしくじったようだ……。
とおもったら、できてたみたい。
views/account/index.rhtmlに記述されてた内容がそのまま表示されていたようです。
「エラーが発生しました。詳細についてはエラー・ログを参照してください。」
なんとなく構成はわかったから、そろそろコーディングしてみるか。
昨日買った本を読みながらやっていたのだが、この本がなかなかいい。
少なくとも最初に買った
とは大違い。実用書は現物をある程度見てから買わないとダメだと痛感した。
もし、この本を本屋で立ち読みしてからだったら買わなかっただろう。
やっぱSEはやるなー。秀和ははずすとほんとに本の趣旨がわからなくなる。
engines:なんだろう
Login engine:なんだろう
サンプルとかをみていると変数前に$、@がつく。なんだろう?スコープかな。
$→グローバル
サンプル突っ込んでいわれるがまま設定して500だと不慣れだとどうしていいかわからないよ。
せめて行とかでないものか、どこで設定するのだろうか。
探したがみつからなかった。
Rake Tasksの画面で
db:migrate:enginesと呼び出すところを候補がでないので、
db:migrateでメソッドをenginesにしてしまいなんで失敗するのかわからなかった。
にしてもまいった。こんな時間までがんばってみたが、本当にコーディングにも入れないまま終わりそうだ。
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
作る内容をもっとシンプルなアイディア勝負なヤツに変えようとおもう。