はてなキーワード: MVCとは
ますだでリリース報告すると、いいことあるかもよと聞いて、やってきました。
あまけんβ- アマゾン商品の検索をいい感じに使えるサービスを開発中。
「あまけん」はアマゾン商品の検索をいい感じにできるサービスを目標に開発しました。
「あまけん」ではアマゾン商品の検索後、レビュー数などによる並び替えや、星の数でのフィルタリング、画像や簡易表示など表示モードの切り替えが可能です。
また検索後の並び替えなどでは、非常に高速に動作するため、商品の比較などに向いていると思います。
ますだ報告デフォルト(?)の、開発の流れや開発環境を簡単に。
検索後、お好みの星の数でフィルタリングした上で、レビュー数や売上ランキング順で並び替えて商品を比較するのがお勧めです。特にレビュー数は本家サイトにない指標なので、おすすめです。
表示モードは情報量と一覧性のバランスのいい”簡易”モードがお勧めです。お好みに合わせて、情報量の多い”詳細”モードや一覧性が高い”画像モードの使い分けも可能です。
アマゾン内で検索する前や後に併用して、あまけんの高速性を活かして、商品比較用にといった活用もおすすめです。
大学生だった2007年頃から趣味で他愛もないホームページをつくっていた。
ワードプレスやライブドアブログのようなCMSには頼らず、1から10まで自分で作ることにこだわった。
すぐにのめり込んでいき、大学の図書館にこもりWEB関係の本を借りまくった。
しかしWEB関係といってもPHPやSQLは理解できなかったので、まずはHTMLとCSSだけ勉強して静的なページをべた書きで量産していった。
HTML,CSSですら最初はつまづいていたけれども、自分の意図した通りにデザインできるようになってからは面白かった。
アクセスは全く増えず、一日100PVにも満たなかったが、僕はめげなかった。
講義には出ず、学園祭にもサークルにもいかなくなり、周囲からは「まだやってたの」「何がしたいの」と呆れた目で見られるようになった。
付き合う人も限定されて社交性は衰えていった。
半年が経っても動的なページをつくれる技術はなかったので、未だに力押しでページを量産していた。
しかしデザインにはこだわっていたので、単純なHTMLでも、見た目にはそれなりのサイトに仕上がっていた。
内容はくだらなくても、いっちょまえなレイアウトで書けば、それだけで見栄えのする物になった。
PVはすぐには伸びないとわかっていたので、平均滞在時間、平均PV、直帰率を目標にしていた。
ユーザビリティには独自性は無用で、正解があると思っていたので、ヤコブニールセンのWEBユーザビリティの本を買って、素直に勉強した。
PVが少なかったので、平均をとっても余り意味がないのだけれども、平均PVは8はあったと思う。
ビジネスの基本は選択と集中だと考えいたので、PVが伸びなくてもサイトのテーマは広げず、なるべく狭く深くを追求していった。
サイト制作をはじめてから8ヶ月ごろではじめてグーグルアドセンスが振り込まれた。
ヤフーニュースの関連する記事にリンクが貼られたことも大きかった。
アフィ収入は年間400万を超えて、僕は大学3年で親の扶養を外れた。
稼げるようになってから、周囲の目が変わった。
いまどきアフィリエイトかよと呆れていた人が僕にジャンルや手法を訊いてくるようになった。
この頃から僕は自分にはプログラマの適正があると勘違いし始めた。
HTMLやCSSは狭義のプログラミングではないにもかかわらずだ。
調子に乗った僕はプロの話を聞きたいと思って、広告で見た翔泳社のデベロッパーズサミットに参加した。
年に一度開かれるITエンジニアの割と大きなカンファレンスだが、仕事で来てる人がほとんどだと思う。
名刺がないので受付で恥ずかしい思いをした。
javaのカリスマエンジニアやオラクル、NTTデータ、MSの偉い人、はてなの人などが講演していた。
当時HTMLとCSSしかわからず、PHPとMYSQLをかじったばかりの僕には話の内容は1割も理解できなかった。
引きこもってプログラマごっこを続けているうちに大学4年になった。
一生アフィで食っていけるわけもないので、就職活動をはじめた。
WEB系はブラックが多いとそれとなく聞きかじっていたので、大手IT企業や大手SIerを中心に受けた。
(新卒でWEB屋の門を叩かなかったことを、今でも本当に後悔している。)
結論から言うとMSもデータもオラクルもグーグルもユニシスも全部落ちた。
営業職も応募したけれど、いずれにせよPHPとSQLをかじっただけでは戦力にならないし、そもそも、WEBとSIでは言語の畑が違うのだろうが、たぶんそういう技術的な事はどうでもよかった。
技術的な事は入社後に教育する体制ができてるので、学生には何よりもまず社交性を求めていたのだろう。
~でも、私には在学中に専攻外の事を勉強していった自主性があります、
~これに関しては誰にも負けません。
とアピールしたのだけれども、ダメだった。ただの独り善がりの変なヤツに見えたのかもしれない。疑わしきは落とす。
結局僕は社交性、人間性、社畜適正、その他、大企業が学生に求める普遍的な魅力を欠いていたから内定がでなかったのだろう。
文系の学生が独学で中途半端にプログラミングの勉強を始めたばかりに、それはIT業界から内定を得る上での強みになるどころか、致命傷になったのだ。
友人は立派な会社に就職していったので、当時リーマン不況のまっただ中で就職難だったというのは理由にならない。
facebookで大学の友人をみると勤務先がNTTデータとかアクセンチュアになっていた。僕よりも人間的な魅力があったのだろう。
サイト制作は趣味と割り切り、日本を支える製造業を仕事に選んだ。
内定をもらってから卒業するまでの間に、僕よりもずっとITに明るい友人に、アフィで成功していたことを買われて起業を持ちかけられたが、何度も衝突し、結局2ヶ月で僕の方から音を上げてやめた。
起業するなら一人でスタートして人を雇うなり外注するなりすべきで、チームで始めるにしても誰が一番偉いのか最初に明確にすべきだと、このときに確信した。
就職したが、毎日のような飲み会と、週末のゴルフ、一発芸の強要など体育会系の慣習に嫌気が差した。
僕は仕事の傍らの片手間の作業でも収入が増えていくアフィに目をくらませて、半年で退職し、専業アフィリエイターになった。
今は無き海外ニートブログの労働観と、後述するコピペが僕を後押しした。
専業になってから収入は伸び続け、一番多いときで月80万を超えたが、その代わり孤独になったので、以前のような精神的な余裕がなくなった。
技術的には大学在学中からほとんど成長しておらず、未だにhtmlのべた書きで、サイトの一部でphpとsqlを使用してる程度だったからだ。
僕のサイトはWEBサービスといえるような代物ではなく、ただの一方通行のサイトで、コメント欄をつくる技術もないので、放置していもユーザーが勝手にコンテンツの価値を高めてくれるということはなかった。
ページを増やすのは社員を増やすようなものだと考えていたけれども、僕の身体は一つなのでべた書きで増やせる量には限界がある。
一人で安定してコンテンツを生み出すには、今後は趣味のサイトからは卒業し、より商業的なユーザー参加型のCGMを作らなくてはならない。このままではまずいと感じていた。
しかし僕はcakephpのようなフレームワークを使用せず、というかMVCを理解できず、。
ワードプレスのようなCMSもつかわず、力押しでべた書きで作っていたので、できることには限界があった。
僕と同じ個人事業主がつくっているW3Qのような立派なサイトをみるのが怖かった。
僕のサイトはブログやニュースサイトではなく、テーマが普遍的なサイトだったので、放置していもPVは減るどころか増えていった。
あぐらをかいた僕はサイト制作を完全に放置して、不安を紛らわすために現実逃避で遊びはじめた。
目的地も決めず、平日に思いつきで一人旅やサイクリングにいった。
仕事を辞める引き金をひいたのが、2chの独身男性板でみたこのコピペだった。
もし仕事に行きたくなくなったら、そのまま反対の電車に乗って、
海を見に行くといいよ。
陽に当たりながら飲むといいよ。
ビールが無くなったら、そのまま仰向けに寝ころんで、
流れる雲をずっと眺めるといいよ。
そんな穏やかな時間がキミを待ってるのに、何も無理して
毎朝ネクタイを締めるときにストレスで吐いていた僕の背中を押してくれた。
なんて罪なコピペだろう。
気晴らしのはずの一人旅なのに、旅館の人に今日はお仕事お休みですか?と聞かれたのが辛かった。
他にも一人で野球観戦に行ったり、映画を借りまくったり、早朝深夜のメジャーリーグの試合を見まくったり、夜更かししてロンドンオリンピックを見まくったりした。
野球中継に関してはスカパーのプロ野球セットを契約していたので、144試合中130試合は1回から9回まで見ていたと思う。
僕はサラリーマン時代に味わえなかった自由をほとんどすべて享受した。
サイトの方はなんだかんだで半年以上更新してなかっただろうか。
そして昨年の11月に事件が起こった。
グーグルのアルゴリズムが変わり検索順位が大きく下がったのだ。
打開するための次のサイトのアイデアはあるのだけれども、技術がない。
フロー理論でいう挑戦と技能の間の大きなギャップがあり、不安に駆られ現実逃避しか出来なくなった。
収入は落ち込んでいくのに、サイト制作をする気にもなれず、この一ヶ月前に自営業を断念した。
僕は公務員を目指すことを考え始めた。
一ヶ月後の6月が試験であるが参考書だけ買って全く勉強は進んでいない。
今年は無理だろう。
しかし今年で27歳だ。公務員になるにはそろそろ年齢制限にひっかかる。
来年筆記試験にうかったとしても、年増が面接に受かるだろうか。
27歳にもなるのに職歴がなく、独学でphpとSQLを囓った程度ではWEB制作会社は雇ってはくれないだろう。
詰んだかな、これ。
もっと外に出て、みんなと同じ大学生活を送って、みんなと同じ就職活動をして、みんなと同じように働いていれば。
初めての増田。
気持の整理ができたのでよかった。
13/5/18 15:00
はてな、ツイッターでの様々なご意見、ご指摘ありがとうございます。
27歳で実務経験のない僕が現時点でのスキルでWEB制作の仕事にありつけるとは思えず、納期がある請負も性にあっていないので、やはり公務員試験の勉強をがんばります。
僕のサイトははてぶ400userもありませんが、最後にホッテントリ入りしてWEBに小さな足跡を残せたので、悔いはありません。
秘密のブックマーク、略して「秘ブ」というソーシャルブックマークサービスを作ってみました。
今は風俗嬢やってるんですが、(悲しいことに)時間があったっていうのと、
秘ブ.jp
(アダルト専用のソーシャルブックマークサービス)
http://anond.hatelabo.jp/20101203150748
・Rails3 と jQuery で、真面目にオシャレなエロサイトをつくってみました
私は、早く自立できるようにと高専を出て、田舎から東京に移り住み、事務として働いていた。
この時点ではエクセルとかワードとかは使える、マクロもちょっと組める程度のレベル。
自立したかったのは父親が生活費をパチンコとか女に溶かすような輩だったため。
私が自立したあと、両親は無事離婚。激務で薄給、母親と離れて暮らして寂しくても頑張っていた。
鬱病はつらい。何が辛いって、本人も辛いんだろうけど、荒んだ部屋の中で横になって息を潜めている母親の姿を見るのがきつい。
いつでも母親の側に駆けつけることができるように、お金と時間に余裕が欲しかった。
でもねー、全く稼げないwww 笑っちゃうくらい。
大衆店にいるんだけど、女の子もお店も多くて、私より若くて可愛い子がわんさかいる。
お客さんがつかないと収入0なんだよね。
店長やお店のお姉さんがマットや椅子を覚えな、ってアドバイスはくれるんだけど、
その頃教えてくれる先生がたまたまいなかった。(今は別の店に修行にいったからバッチリできるけど)
仕方ないからようつべとか動画サイトでソープのお仕事系の作品を見まくったわけ。
(余談ですがマ◯ティ夫人ってお店のマット技一覧のページはすごいよ!)
お客さんつかないから時間がすんごいあって、待機室でずーっと見てた。
で、マットの動画とか、ボディ洗いの動画探すんだけど、なかなか見つからない。
で、そんなことをしてるうちに思ったんだけど、エロサイトやエロ動画、
果てはマニアックな趣味の情報を共有できるサイトがあったら便利じゃないかな?と。
数少なく接客したお客さんで、わざわざブーツ持参で、顔面を踏みつけてくれ、って人がいたんだけど、
でも日本中を探したら、同じ趣味や、近い嗜好の人がいるんじゃないかな?って。
時間は私自身が病むほどあるし、そんなわけで制作に取り組みました、秘密のソーシャルブックマーク、
略して「秘ブ」(「秘部」とかけてあったり)
吉原の泡姫たちは、タクシー通勤する人が多いんだけど、私は三ノ輪の駅から歩いて通ってた。
元彼に借りたプログラムの本などどっさり持って。めっちゃ重いw
待機室でひたすら落ち込みながら金勘定するより、母親の心配をするより、何か生産的なことを考えていたかったんだよね。
この一年でかなり勉強して、ようやく公開できるレベルに達したかなとおもいます。
みんなが来てくれるかはわかんないけど、まあ来てほしいなと思う。
さて、湿っぽい話はここらへんにして、どうやって作っていったかを話しましょう。
・Semantic Scuttle
http://semanticscuttle.sourceforge.net/
・HeartRails Capture
http://capture.heartrails.com/
・Twitter Bootstrap
http://twitter.github.com/bootstrap/
・Bootswatch
サイトの構成なんかも書こうと思ったけど、セキュリティ的に良くないって聞いたし、
はてな民のみなさんに突っつかれるのが怖いので少しだけ(^_^;)
まあ違う意味で突っつかれるのは慣れてるんだけどw
簡単に書いとくと、HTML、CSS、PHP、MySql、javascriptくらい…なのかな?
Semantic Scuttleが裏でやってることはあまり詳しく分からないです。
どうやらまずはHTMLとCSSをやれということらしいので、そこから始めた。
使ったのはこれ。
メモ帳で簡単なWebページを作りながらだと結構スッと頭に入ってくる。
逆に言うと、読んでるだけだと全然あとで思い出せない。
「Ctrl+U」でページのソースを一発で見れることを知り、参考のために色んなサイトのソースを見まくった。
全部頭に入ったわけじゃないけど、ここまでで最低限、検索ワードが思いつくぐらいにはなる。
ここまでで大体一ヶ月くらい。
もちろんHTMLとCSSだけではてブ的なものが作れるわけはない。
っていうかほぼ路頭に迷った感じで「はてブ的なものを作る方法」をググりまくった。
結果「Semantic Scuttle」なるものでそれに近いサービスを作れることが判明。
「Semantic Scuttle」を調べてみると、どうやらPHPとMySQLで動いているらしい。
でもダウンロードしてみて中身を覗いてみても何が何やらさっぱり。
とりあえず2つ一緒に覚えられそうだと思って元彼にこの本を借りてきた。
XAMPPのインストールをして、PHP書いて、MySQLと接続して…
ふむふむ、書いてあるとおりに作ったのは作ったけど、あんまりわからん。というのが感想。
ちなみにPHPを書き始めるのにあたって、eclipseという統合開発環境(意味がいまいちわかってないけど)を紹介され、インストール。
コード書きやすすぎ、色分け便利すぎワロタwwwと思ったのを覚えている。
設定はめんどくさかったけどね。
eclipseについて詳しくは→http://www.javadrive.jp/eclipse3/
しかたない、まずはPHPだけでも頑張るかと思い、次に借りたのがこの本。
ひと通りサーッと読んで大体どんなことが書いてあるのかを頭に入れてから、
必要そうなところを詳しく読んで作ってみてっていうやり方をした。
MySQLのことにも触れてあるので、そっちの復習もできた。
クラスについても薄らぼんやりわかってきて、動くものを作れるレベルには上達。
この辺りは、サボったり迷ったり環境整えたりで2ヶ月くらいかかったかな。
さて、これでいけるだろうと意気込んで長らく保存しておいたSemantic Scuttleのソースコードを見る。
…わからん。
挫折。。
どうすればいいのってことで、元彼にヘルプ。
「MVCってのがあって、モデルとビューとコントロールってのが多分…」
「とりあえずindex.phpから見て行ったらいいんじゃないかな?」
ふーん。今でもMVCとかってのはほとんど理解してないけど、最後のは役に立った。
ファイル名やら関数名でプロジェクト内を検索しまくって、大体の構造を把握。
と簡単に書いてみたものの、この作業には2ヶ月ほど費やした。
構造はなんとなくわかったものの、実際触ってみると動かなくなるケースが多数。
ひと通りの勉強は一応したけど、実地のカスタマイズは非常に難しい。
他に使ってる人おらんのかなと思い探してみるとこんなものが。
・ソーシャルブックマークソフトScuttleの強化版Semantic Scuttleを導入してみる
http://tukaikta.blog135.fc2.com/blog-entry-70.html
ありがたくカスタマイズに利用させてもらう。ホント感謝しまくりです。
でも上のURLに書いてあること以外にもカスタマイズしたいところがあった。
1.ブクマ数を記録したい
1はだいぶ考えたんだけど、DBをちょっといじくって、フィールドを追加してそこに記録することにした。
2はPHPとDBをあれこれして、ド汚いコードながらも根性で実装。
3で再びの挫折。なぜならjavascriptを使わなければならないことが判明したから。
まだ勉強しなきゃいけないのか…とは思ったが、初心を思い出し、頑張ることを決意。
おらあああ!なんかjavascriptの本貸せやぁああああ!と丁寧に元彼に頼んでみたところこの本が手に入った。
JavaScript 第5版
うん、馬鹿じゃないの。こんなん理解できないよ。こっちは時間がないんだよ!
もう一冊なんか初心者向けを貸せ!
マンガでわかるJavaScript
読了したあと、ネットと前者の書籍で必要なところだけ調べることにした。
で、調べていったところ、4については
scriptタグでtypeを"text/javascript"にしてもPHPを読み込めるということがわかり、PHPで強引に表示させることにした。
3はもともとSemantic Scuttleにあったブックマークレットをちょこっと編集して解決。
これで大体1ヶ月半くらい。
一応CSSは勉強したけど、美術的センスのない事どこかのはいだしょうこお姉さんレベル。
でもデフォルトのデザインがダサいってことくらいは、かろうじてわかる。
あらん限りの人脈を使ってデザイナーさんを探したところ、やっとのことで0人見つかった。
どうも調べたところ、TwitterのBootStrapってのがいいらしい。
CSSを見てみるが、長い! 「Bootstrap 使い方」でググる。
よくわからないながらも↓とか見ながら手探りでコードを書いていく。
Twitter Bootstrapの使い方
http://greenapple-room.com/conc/user/TwitterBootstrap/bootstrap.html
これでとりあえず基本的なことがひと通りわかり、ちょっとだけよくなった。
だいぶ前にやったCSSを思い出すのが大変だった。
でもタイトル周りとかが全然ダサイまま。普通に自分で見てて萎えるので、さらに調べる。
見つかったのが↓
Bootswatch
あ、なんかこれいいなと思って「Slate」っていうテーマをいじくりいじくり、色々試しながらタイトル周りとかを整理。
まあこんな感じで大体できましたー!
全部で約8ヶ月…長かった…。憑かれたぜパトラッシュ…
・ググる ググる ググる!とりあえずなんでもググってみることが一番大事だとわかった。
誰かが同じようなことをしてることも多々あるし、少なくともヒントくらいは見つけられる。
・助けてくれる人がいるとかなり楽
ググっても出てこない情報は厳然としてある。そういう時は、経験者にアドバイスをいただく。
Yahoo知恵袋でもいいし、知人でもなんでも。ネットの優しい人達に感謝するようになった。
お店の掲示板では叩かれっぱなしだけどw
・プログラマーすごい
今まで何気なく見てたホームページだけど、膨大な技術の結晶なんだなと思った。
その端っこに触れただけの私のようなものでもそう感じるんだから、それはそれは深遠な世界なのでしょう。
せっかく作ったので、使ってやって下さい。
詳しくは↓をご覧あれ。
http://hibu.jp/bookmarkbutton.php
このサービスは一応「秘密の」もんなので、普段使ってるSNSのユーザー名とか使わないほうがいいんではないかと思います。
ブラウザに直接入力でも簡単にいけるようにドメインはまんま「hibu.jp」にしておいたので、
ブラウザにブクマするのもはばかられる方はダイレクトに飛んできて下さい。
スマホ版作りたいなぁ…
ちなみに、勉強したおかげか今現在はそこそこ本職のほうで稼げてはいます。
もし万が一このサイトが成功したりしたら風俗あがることも考えられるのかなぁ…
でも吉原にも遊びに来てくれると嬉しいな。
怖いところじゃないから、気軽にね。
自動でマッチングしてチャット相手を見つけてくれるマッチングチャットや、すぐにチャット相手を見つけてくれるフリーチャット、コミュニティチャット、フレンドチャットなど、とにかくチャットがメインのSNSです。
■自分について
昨年の4月から、プログラムを学び始めた素人。22歳。札幌在住。
FaceBookがウザい。というか嫌い。
これがきっかけ。
顔本が良いSNSだと話題になっていたので、実名登録してみた。大学の知り合いが見つけてくれて、友達登録などが増える。(ほとんど話したことがない人からも友達登録が来て、「おぉ!これで俺も友達が増えるんだ!」とワクワクしていた)。
が、流れてくるのは自慢ばっかり。
コミュ障で彼女はおろか、女友達もほとんどいない自分にとって顔本で「飲み会行ってきたぜウェーイw」とか、「○○ちゃんの誕生日会なう!」とか、「○○勉強会行ってきたました! みんな熱い人ばっかりで最高!」とか書いてあるのを見て「こんなSNSは嫌だ……」と思った。
ようするに嫉妬です。
で、自分の好きなようにSNSを作ってみたいなぁ。と思いました。
自分の趣味がレトロゲーなので、自分と同じ趣味の人と話せたら素敵だな。ということでチャット式のSNSを思いつく。
が、Webサービスを独力でつくるのはこれがはじめて。というより、プログラム自体がはじめて。
案の定、前途多難だった。
そして私はアホだった。
■とにかく計画を立てる。
ざっくり、どんな機能が欲しいか考える。自分の力じゃ無理そうでもOK.とにかく妄想を爆発させる。
メッセージ機能、コミュニティ機能、あしあと機能、日記機能、コメント機能、つぶやき機能など。
コミニティ専用のチャットルーム、アカウント専用のプライベートチャットルーム(鍵をかけられる)、自動でチャットが開始されるフリーチャット、自分の指定した条件にあう人を自動で見つけてきてくれて、チャットができちゃうマッチングチャット。
などなど。
妄想するのは簡単だ。でも、全くわけがわからない。何から手をつけていいのかわからない。
「うはwwww これで勝つるwww」と思ったけれど、どうやってチャット機能を追加して良いのかわからなかった。改変しようにも謎の記号がめちゃくちゃにならんでいてどうして良いかわからない。
しかも、改変したら改変したでそれを全世界に公開しなくちゃならないらしい(オープンソースというらしい)。
無理だ。
とにかくサーバーサイドの言語と、データベースについて勉強しろや! とのことだった。
■使う言語について。
サーバーサイドを扱える言語はたくさんあって、PerlとかPHPとかPythonとかRubyとか色々あるらしいのだが、色々悩んだ結果
PHPにした。WebサービスならPHPが良いらしい。レンタルサーバーなどでも簡単に扱えるらしい。
後でPHPがクソ言語という話も聞いたが、とにかく最初に選んだのがPHPだったので。
・PHP
よくわかるPHPの教科書。http://www.amazon.co.jp/dp/4839933146/
MySQLとかについて一通り書いてあるので良かった。二週間くらいでなんとか全部こなした。xamppなども触って、ローカルサーバーで色々試した。
これが終わったら、
パーフェクトPHP http://www.amazon.co.jp/dp/4774144371/
パーフェクトって書いてあるから、パーフェクトなはずだと勝手に思い込む。
実際かなりすごい内容で、胃もたれ起こした。一ヶ月くらいで三回くらい読んで、大体のところを理解した。
フレームワークにCakePHPを使ったので、MVCについてのくわしい記述は大変参考になりました。
基礎からのMySQLで勉強。 http://www.amazon.co.jp/dp/4797344385/
最期に
ハイパフォーマンスMySQL http://www.amazon.co.jp/dp/4873114268/
とりあえず掲示板くらいはつくれるようになったので、チャットについてリサーチ。
ajaxとかよくわからん技術やnodejsを使った非同期処理などがあると知る。
nodejsはC10K問題という問題を解決するすごいものらしく、かっこいいらしいのでこれを勉強することに。
ついでにnodejsと相性の良い、mongoDBも勉強することに。
よくわかるjavascript http://www.amazon.co.jp/dp/4839941874/
終わったら、
パーフェクトjavascript http://www.amazon.co.jp//dp/477414813X/
パーフェクトjavascriptはnodejsについてものすごく詳しく書いてあったので、とても参考になった。このあたりで、LINUXというOSを扱わなくてはいけないと気付き、自宅PCをウィンドウズから、LINUX(ubuntu)に変えた。
これはとにかく触ってなんぼでした。MySQLと感覚が違い、苦労しました。
https://github.com/ichikaway/cakephp-mongodb
という素晴らしいものを利用させていただきました。
■このへんで一回限界がきた。
なんとなくnodejsを扱うこともできるようになり、それなりに楽しいと思ってはいたものの、「SNS作ったる!」と思ってから六ヶ月以上が経過していた。
さらにWebサービスを公開するにはデザインもそれなりにしなくてはいけないらしく、CSSなどについて勉強しなくてはいけないと知る。
一人でWebサービス作ってる「ゆーすけべー」さんとかすごいなと思った。
勘違いサブカル野郎だと思っていた「家入一真」とかもやっぱりすごい人なんだと思った。
自分はなんもできないなぁ。と痛感した。
で、悩んでても仕方ないので、デザインはバッサリあきらめることにした。
もうなんでもかんでもやるのは無理なので、捨てるものは捨てることにした。
基本的に Initializr http://www.initializr.com/ (テンプレートエンジン)
と
TwitterBootStrap http://twitter.github.com/bootstrap/ (Twitterっぽい今時な感じのデザインが簡単に使える)
を使うことに。
でも、これだとまさにTwitterそのまんまっぽかってので、
http://bootswatch.com/ (きれいなデザインテンプレートがあるサイト)
も使うことに。デザインについてはこれだけ。
無理はしないことに。
■大体できたら、あとはセキュリティ。
セキュリティは大事。自分のサイトでは一応、登録制なのでフリーメールアドレスなどを預かる。これは流出させたら困るし、なによりユーザー様が安心して使えないなんてだめなので。
これにはかなり注意したつもりです。
まず基本的なことは 『体系的に学ぶ 安全なウェブアプリケーションの作りかた』 http://www.amazon.co.jp/dp/4797361190/
で勉強。
本番環境に公開する前には グーグル先生が公開している skipfishというツールでチェックをしたり、
Dos攻撃対策に、
http://up-point-server.info/?p=54
などに書いてある
mod_dosdetector などを利用。
これははてなさんが公開しているものです。この場を借りて感謝します。ありがとうございます!
あとはSSHへのブルートフォースを防ぐために、DenyHostというツールを利用するなどした。
クラウドサービスを利用しているので大丈夫だとは思うのですが、一応rsyncコマンドでバックアップを定期的にとることに。
サーバー上の別の場所にGzipで保存し、それを自宅サーバーのCentOSで保存するという形式です。深夜にcronで自動的に実行しています。
参考サイトは、
http://mukaer.com/archives/2012/03/14/vpscentos/
です。
■パフォーマンス向上のために少しだけ
はじめはサーバーはapacheだけだったのですが、今は画像ファイルなどはNginxというサーバーを使うのが良いそうなので、Nginxを使いました。
あとはPHPの中間キャッシュを利用するAPCなども利用することに。
このへんについては、
このような解説記事がたくさんあったので、参考にさせていただきました。
■ようやく完成。
で、なんとか完成しました。
使ってみた感想や、ダメ出しなど頂ければ狂喜乱舞します。よろしくお願い致します。
■モチベーションを維持するためにやったこと。
あっさりと書きましたが、実際は失敗の連続でやる気が萎えてばっかりでした。
疲れて帰ってきて、なにもやる気の起きない時もありました。
そういう時は、とにかくサポートページのQ&Aの1文でも良いから書いてみるとか、とにかくパソコンとエディターだけ立ちあげてみるとか、していました。
ものすごーく覇気のない目でキーボード打ち続けていましたが、それでもなんとか完成することができました。惰性だろうとなんだろうと、少しずつは進むのだとわかりました。
やはり1から完全自作をするのは無謀だった。でも、プログラムをやったことのない素人でも約一年頑張ればそれなりのSNSもどきを作ることができた。
これも先人たちの作ってくれたフレームワークや様々なツール、そして参考書などのおかげ。
私のようなアホでも頭の良い人の力を借りればなんとかなりました。ありがとうございます!
そしてプログラムは一人でも出来るので、私のように非コミュでも楽しめる素晴らしい趣味である。
■現在。
今はRubyに夢中です。くり返し処理がすごくきれいにかけるので素敵な言語だと思っています。あと、javascriptも面白いので毎日いじくって遊んでいます。PHPももちろん触っています。
非コミュはあいかわらずですが、プログラムが楽しいので前より幸せです。
使用言語 PHP,Javascript
http://ugaya40.net/architecture/dis_mov.html
Fat Controllerはダメというのは昔から言われている話で、自分も昔読んだときになるほどと思ったので「なるべくControllerを薄く」を頭に置いているのだけど、どうもうまくいった感じがしなくて挫折感があった。その理由だけど、自分の経験から言うと、「Viewに変数を渡すのがめんどくさい」「途中で処理を中断するのがめんどくさい」の2点だと思う。
たとえばRailsだとController内でインスタンス変数に代入することによってViewに変数を渡すことができる。処理をModelに移すとModelからControllerに変数を返して、ControllerでViewに変数を渡すという二段階が必要になるのでこれがめんどくさい。(正確には、ControllerからModelの状態を取れるように作るのが正しいのだろうけど、Viewで必要となるあらゆる状況を想定してModelの状態を取れるようにするのはなかなか大変。それだったらControllerで処理しちゃって……としてしまいがち)
「途中で処理を中断するのがめんどくさい」
たとえばRailsの場合、Controllerからreturnすればその時点で処理が中断されるし、レスポンスもそこでrenderしておけばよい。しかし処理をControllerに移した場合、Model内で起こったことに応じて適切なレスポンスを返すコードをControllerに書かなくてはいけないが、これがめんどくさいように思う。Modelから直接レスポンスやViewを指定したくなってしまう。(もちろんそれはできないし、Modelの分離の観点からするべきでもない)
O/RマッパーのModelに一切処理を追加しないなんてことはなくて、Modelで処理できることは極力Modelに移しているつもりではいるのだが、どうしてもすっきり書けた感じがしない。
もちろんわかっている人ならこんなところでひっかからず、自分がわかってないだけの可能性が高いのだが、自分が上のような理由で挫折してしまったのは事実なので、何とかしたいとは思っている。
自分としては、理屈はわかるけど実際のコードはどうなんだという感じなので、「これは手本にすべきMVCのウェブアプリケーションだ」というのがあれば読んでぜひ参考にしたいのだけど、何かないものだろうか。
Webゲームっていうか、ブラウザ上で動くような奴。PHP(5.3)で突貫工事したので、ペラペラな感じだけど、なんとか公開できて、たまに遊びに来てくれる人がいて(一時はVIPに募集スレも立ったらしい)、何戦かして帰っていくので、とりあえずサーバー代を払った価値くらいはあったかなーという感じ。
で、どういうゲームかっていえば、人狼みたいに「陣営に別れて、決められた目標をクリアするゲーム」です。
『レジスタンス』っていう卓上ゲームというのかな?それを参考にして作りました。
ちょうど開発してから、一ヶ月程度になったので、宣伝をかねて、現状みたいなのをメモ。
一応、前提としては、Pythonだったら、何かしらのシェルプログラムを書いてcronしてるけど、それ以上のことはしていない程度の、技術ワナビー。
ほぼ業務経験なし。継続してスクリプトを開発したのは、今回が始めてという感じ。
単純にPHPで何か作りたいなーと思ったから。一度はPHPを書くべきだなあと思ったりした。それで、何かいい題材ないかなーと思って探してた。
「昔、人狼BBSで遊んだことあるなー、でも同じ人狼のゲームを作っても芸が無いしなー」と考えていたところ、知人と遊んだ『レジスタンス』ってゲームにピンと来て、「こういうゲームをWeb上で遊べたらいいかな。調べたところ、Web上でも人狼っぽいって言われるし、上手くそういう層にアピールできそう」ということで作り始めたのでした。
とはいえ、最初は勢いで書き散らしたので、本当にClassとかまったくなかった。それを徐々に整え直して、なんとかファイル分割できるようになった。それでも、全く足りない。具体的には下のような部分が汚い。
本当はCakePHPとかそういったフレームワークを使えば良かったんだろうけど、「重いんだったら仕方ないしなー」というわけで、フレームワーク無しで使ってみたんだけど、結果として表示部分にやたらと処理が入って醜いったらありゃしない。
表示部分と、実際のシステム部分はわけられるべきだし、フレームワークを使わないまでも、そういう風な機能分割は必要。
で、そういうコードを書いたせいで、下のようなことが起きる。
PHPUnit使ってユニットテストは書いているんだけど、まったく足りない。
全部グリーンにはなるんだけど、実際に動かしてみるとバンバンエラーが出る。
幾つかの関数はテストを先に書いたりしたんだけど、表示部分とかは「ここテスト書きにくいから誤魔化しちゃえー」といって書いたりした。
で、何が起きるかっつーと、リファクタリングするときにガンガン機能が落ちる。そして死ぬ。
さすがに一つのClassが1000行くらいになってきたので「うっわー、これは駄目だわ。分割するべき」って、ゴミみたいなコードに手を入れ始めるんだけど、全く歯が立たない。
とりあえず、既存のテストはグリーンになるけど、どこかで処理がつまづいているという状態でこれは駄目。
「うわ、この部分、テスト書きにくい!」って思った時点で、何かを嗅ぎつけてちゃんとテストに落としておけばよかった、と反省することしきり。
結果として手作業で複数ブラウザ起動して……みたいなことになっちゃう。バグの温存。
CSSとか勉強のために、自分で1から書いているけれども、これは本当にだるい。
知人から、綺麗にコードが書けるから、と薦めてもらったSaSSを使っているけれども、なかなか綺麗にできない。
一応、Twitter BootStrapは知っていたけれども、それに頼るよりは一から書こうと決心して書いたためか、ようわからないし、デザインとしてもこなれていないために気持ち悪いことになっている。
上記のフレームワークについてもそうだけど、流行っているものには、それなりの理由があって、それをわざわざ避けても、結果として、それ以上のものは(素人に毛が生えているくらいでしかない以上)ならないような気がする。
ならばとっととそういうものを使って、さっさと済ませてしまえばよかったなーと思ったりした。
ゲームという性質である以上、どんどん情報量が増えていくために、そういうのを表示しまくっていると、本当に画面がぐちゃぐちゃになる。
セキュリティーには本当手をつけられていない。(徳丸本読めという話になると思う)
(略)
で、本当にボロボロになりながら作ってみて良かったことをメモしておく。
自分は割と現実逃避の為に何かに没頭することがあって、その逃げ先としてプログラミングっていいなあと思ったりした。
あと、自分が書いたコードがヒョコヒョコ頑張っている姿をみていると、すごくかわいくなる。形にもなるし、「こういうものを作ったよ」とも言える。それは単純に楽しい経験。
元々、自分が好きそうなものから題材をピックアップしただけあって、自分が作っているものが、自分が一番愛用しているというのは幸せなことだなと思う。
自分が楽しむためのものだから、自分が一番のユーザーであるし、自分が快適に使いつづけるために改良を続けてる。
人から「こうしたらいいんじゃないの?」というのも勉強になるし、自分がちゃんと&楽に機能を拡張できるように、ちゃんと勉強しようとも思う。そういうのは本当にいい循環。
大抵は、自分が使うから自分だけのものだったので、あまり他の人が使ってくれることを期待していなかったんだけど、今回のは、ときどき遊びに来てくれる人が居る。
例えば、VIPでスレが立ってたり、あるいはニコニコ生放送でプレイ実況を配信してくれたり。
割と「くっだらねー」と思うけど、一人で細々と開発していると、そういう些細なことが嬉しかったりする。
なので、ついついみてしまったり、場合によっては、プレイしているところをいつまでも一緒に徹夜して観戦していたりする。人のプレイしている姿が楽しいというのも、自分が作って良かったなあと思う。
逆に言えば、使ってくれる人がいるからこそ、一ヶ月間開発が続いているようなもので、「ああ、自分のプログラムで楽しんでくれる人が居るんだな」という手応えみたいなものが、モチベーションになっている。
遊んでくれる人が見えるというのは、自分にとっては、モチベーション維持に大切になってる。
だいたい三日坊主で終わっている自分としては、開発が長く続いているほうだと思う。
目指すところは、もっと綺麗なソースコードにして、Githubで公開すること(いや、もうアカウントは既に持っているんだけど、公開するのは凄く恥ずかしい)。
PHPで総合的なWEBサイトを構築するための本でもかまいません。
良くある、「○○をするときはこれ」、というたぐいのものではなく、
「○○をするときはこれ」を組み合わせて、全体が記述されているものの勉強をしたいと思っています。
職場の先輩が有能すぎて、説明が良く分からなくて困っています。
たぶん自分の知識が、相手の前提としているレベルに届いてないんだと思う。
だから勉強したいのだけど、正直よくわからなくて、今日も書店技術所を見ながら固まってしまいました。。
設計と開発への知識をつけていけば、仕事が楽しくなりそうな予感はあります。
だから、だれか最初の一歩を手助けしてください。基礎を理解できたら、自分で知識を深めていけると思うのです。
お願いします。助けてください。
今月転職して、WEB関係のプログラミングにかかわっていくことになった。
ざっと必要そうな知識を列挙してみる。
必須
・PHP
・SQL
・HTML
・CSS
よく使う
使うのか?
・apach
知識として
・MVC?
・フレームワーク?
え、どれから勉強すればいいの?
そして、どう勉強すればいいのかわからない。
勉強はしたい。基本は技術書だろうと思う。しかし良書がわからない。
こまった。誰か詳しい増田さん、迷っている増田にどう勉強していけばいいのか教えてほしい。
何から手をつけていいのかわからないんだ……。
http://anond.hatelabo.jp/20100604224334
いろいろとアドバイスありがとうございました。
ちまたじゃ、みんなフレームワークのことを当たり前のように論じててすごいなーと思うんだ。尊敬するぜ。だから、ミーハーなオレもフレームワークが気になって仕方ない!
だから、30歳近いプログラマのオレがプライドを捨てて優秀なハテナ住人に聞くが、
だが、そこまでだ。
Javaだと、Struts、Spring、Seasar、Wicket等をよく目にするけどよぉ、ドキュメントの量どんだけだよ。
入門ドキュメントだけ見ると簡単そうに思えるけど、仕事で使えるレベルまで理解が深まるまでどんだけ時間かかんだよ。
起動遅い、動き遅い、定型パターンを外れたら、やる方法が見つかんねー。
で、苦労して作ってもよぉ、結局は、HTMLがピロッって出力されるだけで、見てくれが変わるわけでもなく、全然努力が報われん。
これって、どゆこと?
Servlet+JSP+簡単なライブラリ 程度で十分じゃね?
PHPだと、Zend Framework、CakePHP、symfony等をよく目にするけどよぉ、ドキュメントの量どんだけだよ。
入門ドキュメントだけ見ると簡単そうに思えるけど、仕事で使えるレベルまで理解が深まるまでどんだけ時間かかんだよ。
デバッガの使い方分かってねーオレが悪いとは思うんだが、開発効率悪いぞ。(フレームワーク以前の話だが…)
統合開発環境何使えばいいの?わざわざクラス名や関数名覚えてられんぞ。(フレームワーク以前の話だが…)
何で、拡張子変えたがる。何で、変なテンプレートエンジン使う。エディタで認識されねーから開発効率悪いじゃねーか。デザイナがコーディングした分かりくいHTMLコードをよ、何で編集してるわけ?
ついでに聞くけどよぉ、ORマッピングライブラリって使えるの?
確かに書くコード量は少なくなっていいんだがよぉ、目に見えて遅いと思うのはオレだけか?
ディスクアクセスは明らかにボトルネックになるのに、巨大なライブラリのコードを毎回走らせるんだよ。普通のサーバじゃ余裕なの?
話題がそれたが、
実は、みんな、上司や先輩に言われて使ってるだけなんじゃないの?
ハテナ住人の優秀なエンジニアは、どんな目的でフレームワーク使ってんだ?教えて偉い人!
ま、誰も見ないんだろうけど。
勉強からはじめ10日間ぐらいでひとつのRubyアプリケーションをつくった。
キャッチコピー道場 CatchCopyHacks
ドリコムの運営さんにDBのキャラをLatin1からutf8に変えてもらってようやく日本語が動くようになったので一応公開。
これをつくるまでの詳細な過程は[Ruby]のタグをひいてみてほしい。
http://anond.hatelabo.jp/c/Ruby
RonRに触ってみて思ったことをいくつか書いておきます。
0から作る分には正直それほど生産性は高くないと思う。
ただ、既存プロジェクトの焼き直しやプラグインを活用できるようなケースに限って言えばほぼ設定変更だけで対応できる。10分でつくる***みたいなものは既存のものをナゾルというバッチスクリプティングというような作業。(プログラミングという所作からは遠いかもしれない。)
Ruby on RailsはDRY:繰り返さないことを標榜しているがあれはウソだと思う。
プラグインなどをオーバーライドさせて再帰的に繰り返していくことこそがこの言語の特性だとおもう。
過去のプロジェクトなどの繰り返し。これこそがRailsの本領ではないのだろうか。
プラグインを自作してストックできる体制ができあがったら物凄く生産性をあげることができる。
敷いたレールのうえを突っ走らせるのはものすごく簡単だ。
だが、レールに分岐をつくったり、既存のレールから少しでも外れたことをやろうとすると他の言語よりも苦労をする。
とくにO/Rマッピングは設計から頭を悩ませることになる。
逆にO/Rで何ができるんだという発想から辿らないと設計できなかった。
もし既存のシステムからのリプレイスであったら困難を極めるだろう。
システム会社がRonRを生産性が高いだの、国産だのとの流行で取り入れて、
リプレース案件を請け負ってデスマーチに陥る姿がありありと目にうかんだ。
find_by_sqlを連発せざるをえないシステム。少し想像するだけで怖い。
RailsのMVCは賞賛にあたいすべきものであるが、もしRonRをチームで取り組んだときには担当分担は非常に頭を悩ませることになると思う。Vの部分は分業容易だが、特にCの部分は設計が担当できるレベルのPGが必要になる。
コンシューマ向けサービスのように自らの要件と仕様が近いようであれば回避できるかもしれないが、
客先都合で変更が入った場合RonRのその特性が仇になる可能性が高い。
チームに目的地まできちんとレールをひける人が居ないと間違いなく地獄に落ちる。
その目的地に案内することを客先にきちんとコミットできる人が居ないと間違いなく地獄に落ちる。
まだ1、2年ぐらいはないなという思いを強くした。
コンシューマー向けのサービスをRonRで展開することはできても、人月仕事をRonRでやるにはまだ無謀すぎる。
現状では、やれたとしても単票、マスメン系が限界だ。10人を超える案件にはまだ向かないとおもう。
言語としての難易度は他とそれほどかわらないが、方言というレベルでは収まらないので、
3、4年生レベルのイキのよさそうなところに勉強会にでてもらうとかアンテナ立てておいてもらうより無いのではないか。お金になるのはもういっぽ先だ。
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
作る内容をもっとシンプルなアイディア勝負なヤツに変えようとおもう。
自分も専門家って訳じゃないから、適切な説明ができるか判らないけど、
何よりも後から発生するだらだらした保守の時に真価を発揮するものだと思ってる。
オブジェクト指向で作られているなら、パッとそこだけ把握しなおせば修正もできるし追加もできる。みたいな(実際はそこまで単純じゃないけど、はるかに楽と言う意味で)
例えば、特定の機能をオブジェクト指向で作らず、ただの関数群で作ったとすると、その関数をまたがって使う必要のある共通変数は、引数なり戻り値なりで渡し続けなくてはいけない。
さらにその関数の呼び出しを制御している部分もでてくる。
なら関数群と変数と呼び出し制御をひとまとめにすればいいじゃない。ってのがオブジェクト指向なんだと思うんだ。
そうすれば、処理を呼び出し部分と呼び出し先で往復しなくても、内部で完結しているから把握しやすいと。
関数化する良さを判っているみたいだから、理解までもう少しなんじゃないかと思うんだけどな…
これはオブジェクト指向というよりMVCとかそこらへんの話なんじゃないかな。
HTML混入の問題は、画面デザインや機能が変更になった時、わざわざプログラム部分まで修正に行かなくてはいけなくなってしまうから、HTMLはプログラムとは別に作っておこうと言う意味合いがある。
客先から「画面デザインが変更になった」とか「フォームの配置が変わった」とか言われるたびにforだとifだのを駆使するのは無駄じゃないかと言う事なんだと思う。
とっつきにくく見えるかもしれないけど、覚えると抜け出せないほど便利だから、まずはぐっとオブジェクト志向に漬かってみよう。