はてなキーワード: Ajaxとは
Qiitaに書こうかと思ったけど、言いたいことも言えない、こんな世の中じゃ。
モバイルファースト、APIファーストな文脈でハイブリッドWebをやってきた目からすると、サーバーサイドでHTMLを生成してページ遷移させるなどという90年代調のクラシカルな発想を基本に据えるフレームワークはとても斬新に思えました。HTMLをゴリゴリ生成するなんてよほど特殊な最適化をしようとするのでなければそもそも発想として出てこないです。それでいてDSLやメタプログラミング等のテクニカルな技法が宝石のように鏤められている様はまるでエジプト時代の骨董品を見るかのような趣がありました。turbolinkなどは、かつて表計算ソフトに出しゃばっていたイルカを思い起こさせる味があります。かつて慣れ親しんできたSPAが星のように遠い存在になりました。
Web界隈の人々がモデルだとかアクティブレコードだとか"MVC"だとかを非常に具象的に話す様を見るにつけ、お前らどんだけPofEAA読み込んでるんだよと畏怖していた時期が僕にもありましたが、どうやら彼等はRailsのクラスやディレクトリという特定の実装について話していただけだったようです。Modelという概念もこれだけ肥大化してしまったら、オリジナルな概念で彼等と会話するのは諦めるべきかなと思いましたし、Railsの"MVC"をアンクォートして語るのはもはや害悪であるとすら感じました。
Rails界隈の人がよく「Railsの流儀」や「正しい"MVC"」というのを口角泡を飛ばして議論しているのを目にするのですが、おそらく外に広がる不条理で火傷を負って快適なRailsの世界に引き篭もった結果としての一種のストックホルム症候群なのだなと思いました。いまやAjaxとかWebsocketとかWebRTCとかを組み込もうとする至極真っ当な方法論がとてつもない高難度に見えてきます。設定よりも規約、というのも一つの方向性だと思いますが、ドメインやサービスレイヤの名前空間を構築しようとしたりコードジェネレーションしようとしたりしただけで地獄のようなCircular Dependency罰を受けてしまったので、自分がとても間違った事をしているような気がしてしまいました。とはいえConcernsに特別な名前や役割を与えられても正直しんどいので、皆が皆libにゴミを放り込んでいく様子にも納得がいきました。
RailsをAPIサーバーとして使おうとするとまずビューが無くなってMとCだけになりますが、いわゆる"MVC"の文脈で育ったエンジニアがなぜ息を吸うようにFat ControllerやFat Modelを作ってしまうのかという事が良く分かりました。多くのRailsのリファクタ手法と称されているものはクラスを書くファイルを分割する事以上のものでは無いように思えたので、Rails使いを大きめなAPIサーバー案件に回すときはセットポジションでDDDの青本を投げつける必要が有るなと思いました。
ビューとコントローラを結合させた場合、結合テストはCapybaraとかのBDDでマークアップサイドとの干渉を恐れながら強い気持ちでメンテしていくしか無いのかなと思いました。おそらく脳に電極を埋め込んでいるか、緑色のランプを見るだけでハイになれる特殊な人にしか生き抜けない闇が垣間見えました。コントローラを薄くしてサービスレイヤを挟めばその辺りもうまくいけそうな気がしましたが、ビューからヘルパーやモデルがいくらでも透けて見えてしまうという状況では裏側の完全性に自信を持つ事は難しそうでした。
ビューがRubyを叩いて永続化レイヤと直接コミュニケーション出来るというのはとても生産性が高いのだろうとは思いましたが、こうして出来たパーシャルやら何やらをデザイナーとどうやって共有するかを考えると頭痛が痛くなりました。おそらく適当に切り出して綺麗な空間をassets以下に構築した上でpublicにRPCのような窓口を備えたゴミを量産していくのかなと思いましたが、もっと綺麗な方法はあるのかもしれません。でもきっとRails案件に関われるデザイナーはRubyもバリバリ書けるに違いないはずなので、ここが問題になる事は無いのだろうなと思いました。
RESTはとても美しいパラダイムではありますが、そもそもHTTPがさほど美しくないので歪んだ空間には目を背けるか勝手解釈を与える事で人は初めてRESTfulを名乗る事が出来るのだと思います。GETがbodyを(公式には)持たないという事について美しい説明を与える事は出来ないでしょう。サーチAPIはどうしますか。ステータスコード足りなくないですか。401エラーはどうしますか。そしてRESTはあくまでリソースを抽象化する美しい概念なので、アクションや副作用については貧弱です。動詞が足りないですし、一般動詞に狭義の意味を与えてドキュメントするのは二度手間にしか見えません。PUTには冪等性があるべきみたいなこだわりは家の猫にでも説教してればいいと思います。というわけで、REST的な設計を拝借することはよしとしても、「○○はRESTでは無い故云々~」みたいな注文はやめて頂きたいものです。
とか言わないで欲しいです。こういう時にセットでPHPをディスって悦に浸るのは知る限りRubiestとPythonistaと中学生だけです。それにこれはあくまでサーバーサイド初心者の感想なので、想像するにこれ系のFWは多かれ少なかれ似たような不満を抱えるものなのかなと思います。というわけで、おそらくこれから選択肢がある限りはRailsを使い続けると思います。
いや、まぁ、そうなんだけど、
短期的には全てのことがそうだと思うんだけど、
長期的にマスコミの信頼性を上げていけば、もっと放送文化の広告価値は高まると思うのね。
Goole はさ、無料で GoogleMap を作り無料でサービスしたことで、
自らをマーケットとする基盤を作ったわけね。
そして、Ajaxという技術を業務実用レベルに駆使できることを見せつけ、
自分たちのテックドリブンな企業としての企業価値をブランディングすることにも成功した。
そういう芸当がさ、日本にも欲しいの。
あれ?ごめん、本論から外れた。
愚痴です。
中学校くらいの時にWebサイト作ってた。しょーもないサイトだったけど、それなりにアクセス数増えてカウンタが1000万超えた。
掲示板CGIとか設置する過程で、perlを覚えた。楽しくて、自作で掲示板とかチャットとか色々作った。
暇さえあればperlの情報集めてたし、Socketモジュールだけで簡単なWebサーバー作ったりしてたし、
でもプログラミングに対する周囲の印象は「オタク臭い」だった。中学ではよくいじめられてた。
だから高校進学を期に高校デビューした。おかげで友達いっぱいできた。
でも模試の成績は偏差値30くらいだったし、perlはまったく触らなくなった。
文系らしくテストだけ出席して単位を取り、あとはバイトとサークル活動で大学生活を浪費した。
就職活動では金融を志望した。もう僕は文系の人生を歩むんだと思ってた。
もともと人との会話なんて大嫌いだったのに、大学時代に頑張ったことなんてコミュニケーションくらいしかなかったから
コミュニケーションの話を面接でアピールしまくった。実は辛かった。
ほんのとあるきっかけで、ドワンゴの面接に行った。楽しかった。
もう僕がperlを辞めてから5年くらい経ってたし、今思い返せば稚拙なことしかアピールしてなかったけど、とにかく面接は楽しかった。
perlが好きだったからWeb系のベンチャー受けまくったけど、当然のように落ちまくった。
結局、中小企業のSEだかPGだか職種がわからない開発系の会社に内定もらった。
内定はもらったけど実は行きたくなかったし、転職してでもWeb系開発に行きたいから今めちゃくちゃに勉強してる。
僕がプログラミングをやっていた中学時代から、本当に世界は変わってしまっていた。
javascriptはただのオモチャみたいな存在から、ajaxだとかフレームワークだとか、今最も熱い言語になってしまってるし、
perlはいつの間にか没落してて、サーバーサイドは主にphpが主流らしい。
一つの事を学べば、さらに三つくらい新しく学ぶべき分野が増える。時間がいくらあっても足りない。
おかげ様で、今まで付き合ってきた人間とまったく話が合わなくなってしまった。
大学の友人は、ウェイウェイしか言わないので連絡を取らなくなった。多分、陰口叩かれてる。
内定した会社の同期は、勉強してる様子がまったくうかがえない。
いまどきのSEらしく、技術より顧客との折衝能力の方が、大事だと思ってるんだろうか。
内定した会社の先輩社員からは、勉強意欲があまり見えてこない。
オブジェクト指向がわからない人間が役職についている事には驚いた。
もしかして、今後私はずっと、こうした技術に対する意欲の低い人間たちにまみれながら、
一人勉強を続けなければいけないのだろうか。
それは、出る杭で在り続けるということであり、大変ツライことなのではないだろうか。
文系の学部に入学し、ウェイしか言わない友達を作ってきたのは自己責任だから
仕方ないことだけれど、最近自分のやっている事が周囲に理解されない事があまりにも辛くなってきた。
環境のせいにするのは良くないことなのだけれど、なぜ中学の当時、誰も私がプログラミングをやっていたことを
応援してくれなかったのか。応援してくれてさえいれば、今頃、それなりに技術に関して積み重ねてこれたのではないか、
技術に興味を持つ友人を作れたのではないかと恨む言葉が出てくる。
さっきはてなブックマーク見たら、はてなブックマーク - jQuery最高の教科書|株式会社シフトブレイン 著というのがはてブ集めてて嬉しかった。
最近はてなって、SEが少なくなったから、こういうテキストがはてブ集めると久々にはてな村に来たという気がしてテンションが上がるよね。
jQueryってのはid:blue1stが指摘しているとおりに、バージョンアップで使えなくなることが多くてゲンナリなんだけど(Ver.1.9で今まで使えた関数が削除されてゾッとした)、コツさえつかめばJavaScript使う上でこれほど便利なものはないんだよね。Webアプリ作ろうと思えばjQueryは避けて通れないんじゃないかな。
ASCII.jp:40分で覚える!jQuery速習講座 (1/6)
とかで勉強したり、
7つのサンプルでjQueryを学ぼう!「jQueryが全く分からない人のため」の超初級者向け入門講座 | OZPAの表4
それが、今回のテキストではかなりまとまった決定版めいたものになっているんではないかと期待している。アプリを作るならば、覚えておいて損はない知識と思うんだよね。
いろいろなテキストがあるけれども、せっかくだからここで俺もいくつか基本書を薦めたいと思う。ブコメにあった
DLmarket / jQuery入門道場 [ダウンロード]
はもともと jQuery入門道場の記事を電子書籍化したもので、このサイトには確かに一番お世話になった。
他には、
Amazon.co.jp: jQueryで作る Ajaxアプリケーション: 沖林 正紀: 本が画面周りについて詳しくて、分かりやすかった。
読みやすさを求めるならば、やっぱり
Amazon.co.jp: Web制作の現場で使う jQueryデザイン入門 (WEB PROFESSIONAL): 西畑 一馬: 本だろうね。これがオススメなのは、HTMLとCSSの知識があればなんとか理解できるというところ。
ただ、慣れてくるともっと実践で使えるのが求められると思うから、そんな人には、
Amazon.co.jp: jQueryクックブック: jQuery Community Experts, 株式会社クイープ: 本だろう。
>「Pythonしか使えませんがPythonなら極めてます」
>と胸を張って言える人のほうが重宝できる
今どきAjaxもないレガシーなWebアプリ作ってる人ですか?
1つの言語に強いのはいいことだけど、その枠内でしか考えられないから発想の飛躍ができない。
それにWebアプリはサーバサイドのプログラムだけじゃなくミドルウェア(Apache, tomcat, RDB, KVS etc)や
インフラ(ネットワークや物理的なサーバ)が組み合わさって1つのwebアプリを構成してるんだから、JavaやPHPだけできたってなんの意味もない。
仕事がツラくて死にたい。でもどうせ死ぬなら死ぬ前にセックスがしたい。
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
よっこらせっくす。
JavaScriptを殺せなかった(Ajaxで生きながらえさせてしまった)のは
今世紀最大の失敗だったと思うわ
TojiCode: A Tale of two Web Technologies
http://blog.tojicode.com/2013/06/a-tale-of-two-web-technologies.html
コメント欄など見てると、もう駄目だよこれ\(^o^)/オワタ
JavaScriptの置き換えも改善も期待しないほうがいい。
DartもPNaClも政治で潰される。asm.jsはどう考えてもLLVM→asm.jsの変換時間やマルチスレッド対応で躓く。
ウェブはJavaScriptと心中だ。
つかBrendan Eichの老害っぷりがぱない
というより、あれこれ理由をかこつけて自分が作ったJavaScriptを守りたいだけなんだろうけどさ。
JavaScriptやasm.jsに疑義を呈するブログやツイートに片っ端から突撃してくる必死っぷりが心底うざいw
そろそろHTML/CSS/JavaScript全部スクラップにして
第二のウェブを作ることを考え始めてもいい頃合いではないかと思う。
野心ある人はもう取り組んでいるかもしれん。
[更新]新型MacBook Airと旧型MacBook Airを徹底比較!気になる性能は? | ガジェット速報
http://ggsoku.com/2013/06/macbook-air-2012-2013/
新しいMacBook AirはあろうことかGeekBenchスコアが低下(6128→6013)
私達はこういう時代に生きているのだということを
よくよく考えなければならないのだけどね。ほんとに(´・ω・`)
お客さんと話してきた内容を人ごとのように聞いているのだが、
先日拾ったフルスタックエンジニアと何となく繋がったところがあったので
暇つぶしに書いとく。
DBの不備と拾いきれないぬるぽで正常系すら落ちまくるシステムへの不満と
画面の統一感がチグハグで分かりづらいという二点で、
そんなシステムをこの人数の規模(想定より遥かに多かったらしいw)でやられてたんですか?と
いう言葉までいただいてきた。
当然だよねーと思う。仕様書も統一されてなくて、画面のデザインガイドラインも一読しないまま
各工程で30%ずつ人員を入れ替えながら突き進んでしまったそうだから。
そのしわ寄せがプロジェクト後半になって鎮火のために投入された自分のようなところに来る訳で、
チームで古参と思われる人に画面仕様について片端から聞いても見事なたらい回し。
入力項目の不備について指摘したら、それjQueryのライブラリの仕様だから中に手を入れてまで直そうか
今の状況では微妙って回答を貰った後で、客先から同じ指摘→再テストの依頼が来たときはいらっとしたわ。
なんでこーんなことになってるんだろうって外野の目で見てると、分業しすぎたんだろうとは思う。
皆、JSPだったり、javascriptだったり、SQLだったり、どれか一つの言語しか出来ない感じで
フロントエンドすら、Ajaxとそれ以外(よくわかんないんだけどさ)で、二チームに別れてる感じ。
要するに、自分含めてスキルがしょぼいんだけど、そりゃ、画面のデザインもチグハグになるよねーっと思った。
フルスタックエンジニアのような、全てわかる器用貧乏で、でもチームリーダーとして仕切れるような人格者が
一人いれば、この状況はもっと違ってきたのかな、なんて。
フルスタックエンジニアがたくさんいれば、こんな分業制でわけわからない開発規模まで膨らんだプロジェクトの人数も
減らせたのかなぁ、なんて。
仕様の共通理解やそのためのツール(仕様書ね)に割くための工数もより少なくてすむわけで。
確かに、人数減らせばその分仕事も増加してブラック間違いなしなんだけど、
この状況を見ていたら、一つよりは二つ、二つよりは三つを持ったゼネラリスト的なスペシャリストがいらっしゃったら、
変われたのかもね。
あ、まず前提として、
はたして貴女を幸福にするかどうか、それはまた別問題だけれど。
IT系の超かしこい男なども多く、
多くっつーかIT系でないのにプログラミング大好き男っていうのは超かしこい学生(まぁこれは有望株)か研究者系なんか、
あとはまったくかしこくもないクセに頭いいつもりして「Lispやってます(キリッ ハローワールドくらいですが」とか言っちゃうアホしかいないわけで、
したがって、釣り師たる女たちにとっては、
なかなかあなどれない釣り場です。
では、プログラミング大好き男に「どの言語が好き?」と訊ねられたとき、
まず最初に、その男がCOBOLのようなタイプのレガシーコードと
あとはC/C++、そして(TechEdに参加するほどではないけれど)VisualBasicが大好きな、
貴女はかれの目を見て、微笑みとともに質問など無視して、こう言いましょう、
「わたしが、仕様書を作ってあげる♪」
これこそまさに必殺の答えです。
そこでプログラミング大好き男が、えへへ、とやにさがったならば、
貴女は、ひそかに、「コピペ量産しやすい技術的ポイントを抑えた仕様書」あたりを
ひそかに練習しておきましょう。これで成功まちがいなしです。
しかし、ここでは、もう少しハイブロウな(?)いわゆるプログラミング好きの男の
落とし方をお伝えしましょう。
「わたしは、JVM上のScalaが好き。
型推論もあるしラムダ式やクロージャもスクリプト言語みたいに書けるの、豊富な組み込みのコレクションメソッドはいつも便利だし、
XMLリテラルもCaseクラスによるパターンマッチもTraitベースのMixi-inも、大好き♪」
もしも貴女がそう答えたならば、
かれの貴女への恋心は、
20%増量になるでしょう。
なぜって、Scalaは、
コンパイルは遅いながらも、そこがまた
ちょっぴりメモリを多く積めばいい富豪プログラミングみたいなふんいきをかもしだしていて。
質高くふるまっていて、なおかつ、
JVM上で動くくせにJavaが「やるやる」と言ったまま実装してなかったラムダ式と仮想拡張メソッド、型推論を実装した功績もあって。
したがってScalaこそは、
本来なんの接点もないまったく縁もゆかりもない別々の世界に生きている、
インタプリタ言語大好きな綺麗系OLと、玉もあれば石も混じっている、そんなプログラミング大好き男たちが、
この世界で唯一(いいえ、JVM系列のJRuby、Clojure と並んで唯三)遭遇しうる場所です。
●
では、参考までに、危険な回答を挙げておきましょう。
プログラミング大好き男に「どの言語が好き?」と訊ねられたとき、
「MicrosoftのVisual Basic for Applicationが好き♪ 週3回は Excelでコーディングするの。」
特にOfficeは平凡ながら、ま、無難にまとめてあるものの、
しかし、「新UIのリボンUI!」「メトロUI対応!」とかなんとか無意味な自慢を吹聴し、
VBAはさらにプログラミングについての謬見を撒き散らした罪がありますから、プログラミング大好き男にとっては天敵なんです。
ティーガー戦車乗りのオットー・カリウスは「ティーガー乗りなら誰でも片側の履帯がはずれ僚車に牽引されて帰ってきた経験を持つはずだ」 って言ったけど
社内SEかSIerなら誰でもクソみたいな前任者が書いたクソみたいなExcel-VBAコードを直した経験があるはずなんです。
また、もしも貴女が「PHPが大好き♪ あたしが書いたPHPのWebサイトが、さくらサーバに7件あるよ♪」
と答えたとしても、同様の効果をもたらすでしょう、
なぜって、PHPは、1990年代にはWeb系を目指す人にとっては簡単で要件を満たすWebサイトが簡単に作れる輝きの道だったものの、
しかし2000年代そうそうから、セキュリティ関係の問題で転落し、
いまや、あの貧弱な言語能力では、Rubyの魅力に遥かに及びません。
(注1)
「わたし、.NET FrameworkのC#が好き、フォームアプリでも書くけど、
最高に好きなのはASP.net♪ SQLServer連携も、ajax control toolkitもすっごくおいしいの。」
と、答えたとしたらどうでしょう?
なるほど、貴女の趣味は高く、
たしかに.NET Frameworkは、C# が cool であるのみならず、
.NET Framework上で動く F# や IronPythonやIronRuby、マネージJScriptも最高においしいんですけれど、
しかし、貴女の答えを聞いて、プログラミング大好き男はきっとおもうでしょう、
(なんだよ、MS信者な女だな、カネかかりそう)って。
(注2)
貴女が、プログラミングが大好きで、言語の名を挙げるにしても、
たとえば、JavaScript(node.js)ならば安心でしょう、
なぜならば、JavaScriptは、かけだしのプログラミング初心者にもマニアにもともに愛されるめずらしい言語で、
貴女がその名前を挙げても必ずしも、(jQueryがやっとの初心者と思われることはあっても)あなたがプログラミング言語おた宣言をしているとは受け取られないでしょう。
むしろ「へぇ。ちゃんとprototypeは使ってる?」と聞かれたら「当たり前じゃない。むしろnode.jsでいいMVCフレームワークが分からないんだけど…」と話を振ってみましょう。
男は嬉々として、30個くらいのnode.jsのフレームワークを教えてくれることでしょう。(まぁどれもどれで帯に短し襷に長しなんですが)
あるいはRighno上で動かしたコードをnodeへ移植する話とか、CoffeeScript、甚だしきはClojureScriptを振ってみてもいいかもしれません。
しかし、たとえば、世界が(つーか竹内先生とポール・グレアムが)誇る超絶関数型言語の名作、Common Lispにせよ、
selfと書きまくることと海外で使われてることに定評のあるPythonにせよ、
バージョンアップごとに言語仕様が変わり、かなり素敵なものではあるもののobsolatedな罠にはまりやすいRubyにせよ、
まったく読めない$_だらけで頭悪い仕様をリセットしてPerl6にする(そしてまた全く読めない)Perlにせよ、
気さくなクジラ飛行机さんがふるまう素敵においしい日本語プログラミング言語のひまわり・なでしこにせよ、
基地外トリッキー言語の代表BrainFxck・Glass・Missa・WhiteSpaceにせよ、
ましてや貴女が、「Haskellが大好き♪ わたし、プロジェクト・オイラーの問題もうほとんどHaskellで、解いちゃった♪」
と答えたならば、どうでしょう?
これはかなり博打な答え方で、
なるほど、Haskellは、純粋関数型でありつつも副作用のある操作が行える超絶名言語ゆえ、
あなたがそう答えた瞬間、プログラミング大好き男がいきなり超笑顔になって、
「へぇ、やっぱりHaskellなら大抵の問題は4行以内くらいで解いちゃった?」とか言いながら
鼻の下がだら~んと伸びちゃう可能性もあるにはありますが、
しかし、逆に、(なんだよ、この女、プログラミングおたくかよ)とおもわれて、どん引きされる可能性もまた大です、
なぜって、必ずしもプログラミング大好き男がプログラミング大好き女を好きになるとは、限らないですから。
男たちは、女を導き高みへ引き上げてあげることが大好きゆえ、
もしも貴女が、「Haskellが大好き♪」なんて言ってしまうと、
そこにはもはや、男が貴女に圏論のモナドを教育する余地がまったく残されていません、
したがって貴女のその答えは、
プログラミング大好き男の貴女への夢を潰してしまうことに他なりません。
ま、ざっとそんな感じです、貴女の目にはプログラマーたちはバカでスケベで鈍感に見えるでしょうが、
しかし、ああ見せて、プログラマーはプログラマーで繊細で、おざなりに扱われると傷つきやすく、ローカル変数の名前一つにも気を使い、女と自分の将来に夢を持っています、
貴女の答え方ひとつで、プログラマーの貴女への夢は大きくふくらみもすれば、
一瞬で、しぼんでしまいもするでしょう。
●
では、スキットを繰り返しましょう。
「わたしは、JVM上のScalaが好き。
型推論もあるしラムダ式やクロージャもスクリプト言語みたいに書けるの、豊富な組み込みのコレクションメソッドはいつも便利だし、
XMLリテラルもCaseクラスによるパターンマッチもTraitベースのMixi-inも、大好き♪」
そして、その瞬間、プログラミング大好き男の目がらんらんと輝いたなら、
貴女はこう重ねましょう、
「それからね、いま、わたしが使ってみたいWebアーキテクチャは、
Play Framework、素敵なリアルタイム嗜好のアーキテクチャって噂を聞いたから。
あなたのお暇なときがあったら、わたしをPlayへ連れてって♪」
これでもう完璧です。
PlayFrameworkと、Play(遊ぶ・じゃれる)のダブルミーニングでかれの股間も刺激しちゃえます。
そうなったらこっちのもの、
デートの日には、ペアプロ用に Happy Hacking Keyboard をばっちり決めて、かわいい下着をつけて(注3)、
github.comの通販で売ってるoctcatのTシャツか、facebookの「いいね!」ボタンがムネのところにあるTシャツ、 あるいは初音ミク(ないし彼のお気に入りのアニメキャラ。北米ならMyLittlePonyで鉄板なんだけど)のコスプレを着てゆきましょう。
その日から、プログラミング大好き男は貴女の虜になるでしょう。
注1:
(と、書いたもののPHPの現状をよく知りません。グローバル変数だらけになるのとか旧ASPみたいなもんなのかなぁ。count($array); とか書くのアホと思うがpythonも同じだった)
(あと、マジで単機能とかTwitter連携とか診断メーカー的なのでもPHPで7つも作ってる女子居たら付き合いたい)
注2:
もっとも。objective-Cなんていう言語をやることに比べれば個人で行う程度なら金のかからない手法もなくはないのですが。
注3:
プログラマーにとっての「かわいい下着」と、女性にとっての「かわいい下着」の定義にずれがあるので注意。
半数くらいのプログラマーはしましまぱんつが可愛いと思ってる気がするので、妙齢の女性が着用するには抵抗あると思うが、ボーダー柄のコットンショーツ(ただしキャラ絵のは除く)とか、
過度でないていどにフリルがついたものがオススメ。また、色は、レッドだとプログラミング大好き男は引いてしまう(だってそれはコンパイルエラーのときの色だ)ので、薄ピンクかホワイト、薄ブルー、せめて黒(に差し色でピンクとか)あたりに留めたい。
補記:
元ネタ: http://tabelog.com/tokyo/A1301/A130101/13002457/dtlrvwlst/3464106/
補記2:
「プログラマー」か「プログラマ」かの問題については、特に意味は無いが前者を採用した。
補記3:
言うまでも無いけど、ネタです。
先日「飲み会版ソーシャルランチをつくってみた」を書いた者です。
上の記事では、僕がつくった「飲活」というサービスの説明が大半で、どうやってつくったのかとか説明が少なかったので、今回はそれについて書いてみようかと思います。
僕は「「飲活」」を作るまでも、iPhoneアプリを開発したり、webサービスのメンテナンスをしたりとプログラミングをしておりました。
しかし僕も何度かwebサービスの立ち上げを挫折しております。4回くらいかな。
最初はxoopsを使って、ツイッターで登録企業の広告をつぶやいたらポイントをもらえるサービスでした。
なんとxamppで門前払いされました。ローカル環境すらつくれませんでした。「くそ初心者は時間を無駄にするだけだから辞めろ」と言われた気分でした。
xamppだけに2日くらい朝まで格闘してしまい本当に時間を無駄にしました。当時はapacheの設定とかなんぞや状態ですからね。
次にやろうとしたのが、大学受験生向けのサイトで、受験生に教科ごとの講義をするのではなく、勉強のやり方を教えるよ!ってサイトです。
ほとんどhtmlでできそうなのですが、phpでメールを送ることができず挫折しました。
レンタルサーバーを借りたのですが、レンタルサーバーのphpの設定をしないといけないのを知らなかったり、やっと解決しても日本語化けに悩まされて止めた覚えがあります。これほど母国語が英語だったらどんなに楽かと思った時はありませんよ。プログラミングしてると今でもたまに思います。
次が、キックスターターのようでそうでないクラウドファンディングサービスをつくろうとしました。
ここでjavascriptと出会いました。いや、ちゃんと交際を始めたと言うべきか・・・。それまでjavascriptとすれ違っても虫を決め込んでいたのですが、いざ必要になって呼び止めてみると意外と良い奴でした。
しかし、ajaxにつまづいたり、サイト構成やディレクトリ構成、データベース構成や、デザインの調整などで複雑で面倒になり挫折してしまいました。
こうして書くと、僕がすごい諦めの早いやつで勉強もまともにしないやつみたいに思えますが、半分正解。諦めは悪いけど「ググればいける」という考えで勉強を怠っておりました。
だいたいプログラミング言語はどれも根本は似ているので、先述の3つ以外のプログラミング言語をやりたいと思ってる人でも参考になると思います。
また、以下の内容は、わけわからんけどwebサービスをつくりはじめる方を前提にしています。
まずは開発環境を整えましょう。
開発環境とは、自分の書いたプログラムをローカル(自分のパソコン)でのみ動作させる環境です。
つまり、自分がつくっているものを外部に見られることはありません。
です。
まずはこれらをインストールしてください。設定などの説明は割愛します。
僕はphpを使いました。
僕もそうでしたが、素人は当然プログラミングの全体像を想像できません。やりたいことを思いついても、どういうコードを書いたらいいかなんてすぐに想像できませんよね。
これも当然ですがその原因は、そもそもプログラムでなにができるか知らないからです。
なので、POSTやSESSION、配列などの基本的なものの存在を知りましょう。そしたら、「このページにはこの機能が必要だろう」というのが、"なんとなく"わかります。書き方はこの時点で別に覚えなくて大丈夫です。
例えば、オブジェクトを格納することが出来る「配列」という存在を覚えます。
この時点では、配列の作り方のコードとかは覚えなくていいですよ。「配列という存在を知る」ことが重要です。
基本的なことを学ぶときはネットではなく本を使う事を薦めます。
本は情報が体系的にまとめられていまうので、ネットよりも学びやすいです。
プログラミングは10年以上基本部分は変わっていませんので、「古いものを覚えちゃわない?」という無駄な心配はなくて大丈夫。
一方、発展的なことではネットで学びましょう、というかわからないことがあればネットで探しましょう。
どんなことを実現したいのかというゴールがないと必ず途方にくれます。
なので、まずはゴールを設定します。
例えば「「飲活」」なら、
などなど...。
その後に、各ページ毎に必要な機能と大まかなそのページのやることを決めます。
ログインページには、ユーザーが入力するフォームと送信ボタンがあって、なにも入力されずに送信ボタンが押されたらエラーメッセージを出そう。エラーがなくログインに成功したら、会員専用のエロビデオを見せよう。
とか。
例えば、しっかり考えず適当に、登録ユーザーのプロフィール画面を開発していて、ユーザー名、生年月日、出身大学を表示させるプログラムをつくったとします。
しかし、プロフィール画面が完成した後にメールアドレスも表示させないといけないことに気がついた場合、少しプログラムの変更が必要になります。
最初から、どのデータが必要なのかを決めていれば、こうした効率の悪さは回避できます。
実際は奇麗に開発できることは少ないですが、何も考えずに開発するよりは効率的です。
大まかな機能(ログイン)→具体的な機能(ログインページの機能)→具体的にログインページがやること→必要とするデータ
という流れでサイトの機能を決めることで、自分のやることが明確になりますし、勉強すべき内容も最小限に抑えられます。
ここで、どういうデザインにするのかを決めればもっと後で楽になります。
webサービスには必ず必須となるデータベースについて知る必要があります。
僕は、mysqlを使いました。
サーバーはさくらインターネットのレンタルサーバーを使ったので、さくらインターネットのデータベースを利用しました。
各ページで必要な機能とやることを決めたら、それを実現してくれる方法を本やネットで探します。
先述のとおり、必要な機能を決めていればそれを実現してくれるもののみを探せばいいので効率的になります。
見つけたら、あとはそれを使ってやりたいことをやるだけです。
具体的にはサンプルコードやAPI、フレームワーク(ライブラリ)を探すべきだと思います。
プログラミングに慣れるまではフレームワークを使うと上手く組み込めず、それが挫折の原因にもなりそうなので、主にサンプルコードを探せばいいと思います。
プログラミングってなんのためにあるかというと、人々の生活を楽にするためです。
人々を楽にするプログラミングで、わざわざ辛いやり方をするのは最悪です。
なので、どうぞ堂々と怠けてください。他人のつくったコードを使ってください。API、フレームワークを使ってください。
プログラムを書いたらデバッグしたり、ブラウザ(htpp://localhost)で見てやりたいことができているか確認してください。
特にこのサービスには特別なことや難しいことはやっておらず、正直phpの基本がある程度わかっていれば、このサービスの基本的部分は作れてしまいます。
デザインをつくりましょう。
僕は一から自分でデザインを考えたわけではなく、他の素敵なサイトを参考にさせていただきました。
また、サイトの見た目をつくるにはhtmlとcss、時にはjavascriptを使う必要があります。
オススメなのは、twitter社の提供するTwitter Bootstrapです。
http://twitter.github.io/bootstrap/index.html
ちなみに、「飲活」は、html、css、javascript(jQuery)を使っています。
つくったサイトをみんなに見てもらうためには、外部とネットワークのあるコンピュータにアップロードしなければなりませんし、ドメインもなければいけません。
コンピュータにはIPアドレスがあり、ネットワーク上の住所となっています。これにアクセスすると、「飲活」の住所とか「はてな」の住所とかあったりするわけです。これは数字でできており、これを人間が読みやすいものにしようというのがドメインです。
hatena.jpとかnomikatsu.comとかですね。これを取得しましょう!
自分で作ったり、VPSを使ったりすることもできますが、自分で管理をしなくていいという点で楽なので僕はレンタルしています。
僕は、さくらインターネットでレンタルしています。
僕のようにドメインの管理会社とサーバー会社が別だといろいろと設定をしなければなりません。
DNS(ドメインネームサーバ)というのがあり、「このドメインのあるサーバーはこれ、IPアドレスはこれ」と教えてくれるものです。
お名前ドットコムで取得したnomikatsu.comは、さくらインターネットのサーバにあるよと設定する必要があります。
実際には、さくらインターネットのネームサーバ情報を知り、お名前ドットコムでnomikatsu.comはこのネームサーバだよと設定してあげるのです。
これで、数分から数時間でnomikatsu.comにネットからアクセスすることが出来ました。
あとはサーバーにファイルをアップロードすれば、インターネットで自分のつくったサイトを見れます。
ファイルアップロードの仕方ですが、FTPクライアントを使います。
僕は、filezillaを使いました。
filezillaからホスト名やユーザー名などを設定してサーバーに接続します。
接続できたら、指定のディレクトリにファイルをアップロードすればOKです!
とにかく作り始めましょう。
僕は、本が書いてあるサンプルコードをそのまま勉強としてやるのはオススメしません。
だって、つまらないですもん。あれは、プログラムを書いていて基本がわからなくなったときに見返せばいいんです。
最初はまず作りたいものを決めて、PHPで何が出来るのかをざっくり勉強して、それを実現するのに必要なコードややり方を見つけて、実際に動くものをつくっていってください。
やりたいことをやらなきゃ飽きますし、本のサンプルコードよりも実際にwebサイトをつくった方が覚えます。
やったことがない人が勝手に難しいと思い込んでいるだけで、意外とやってみれば難しくありません。
簡単とまでは言えませんが、正直誰でもできます。
僕の場合は何度かプログラミングを挫折しましたが、こうして一つのものをつくることができるようになりましたし、iPhoneアプリなども会社では開発しています。
こんなやつでもできるので、諦めなければできます。
そんで、とても楽しいです。
本当につくりたいものがあるのなら、一度やってみる価値はありますよ。
明記してありますが、僕は初心者ではありません。初心者の方が勉強がてらサービスを作る一つのやり方というか流れを紹介したいと思って記事を書きました。
僕自身、なにもわからずプログラミングをはじめたときは、どう勉強したらいいかわからず辛い思いをしました。
素人がわけわからずプログラミングを始めると挫折しやすいと思いまして、僕が素人の時を振り返り、そして勉強してきた経験を使って、素人の方にサービスをつくっていく流れを書いたら素人の方も挫折しにくいかと思いました。
なので、僕は初心者ではありませんが経験者として素人がサービスをつくっていく方法を書きました。
また、飲活をつくった実際の流れと書きましたが、飲活をつくった流れを利用して、初心者がサービスをつくる流れを説明したかったんです。
しかしプログラミングなどの情報系らしい活動をほとんどしてこなかった。というかサークルも一年のおわりにやめてしまったし、バイトもしたことがない。準引きこもりのような状態なのかもしれない。
工学部だったが情報系ではなかったし、バイトもしていたけれど、二年の夏にサークルは人間関係でやめた。人前で話するのが苦手だったので塾講をやっていたし、割がいいのでカテキョやったりしたが、結局今身になっているかというとそれほどなっていない。別になにもやってなくてもいいんでないの。
二年次の夏休みあたりから、今いる環境を生かせそうなものを考えた結果、多少興味の沸いたいくつかの情報系の技術分野の参考書で勉強してみようとしてみたものの、難しくてほとんど分からない。というか、技術書の独学の仕方が未だによくわからない。
大学一、二年の基礎的な数学は特に工学系、情報系の人間にとってはなにがやりたいのかよくわからんのでつまらない。ただまぁ損ではないのでこれから必要に迫られたらどの教科書を見ればいいかくらい頭のなかにインプットしておけばいいんでなかろうか。技術系の本だが、難しいの背伸びして読んでもたぶんつまらん(わからないから)。自己啓発系のコードコンプリートやビューティフルコードなんかも多分つまらんと思う(必要性がわからないから)。文法書もやめたほうがいい(あれは字引だから)。
君が買うべきなのは「10日でできるアンドロイドアプリ」(あるのかどうかしらんが)みたいな本。ほんでクソみたいなアプリを作ってニヤニヤしながら公開すればいい。たぶん誰も使ってくれないが、自己満足にはなる。Wordpressなんかで配布ページを構築してみれば何日かは潰れるだろう。本にはないだろうが、そのコードを使ってテストを書こう。テストを書くとだいぶいろんなことが分かるし、何よりテストはすぐに動く。頭も使う。たぶん楽しいはず。
ここで大事なのは、世の中には「増田?何ですかっていうか誰?」みたいな人があふれているということ。増田を知っててブックマークするような人でも実際に手を動かす人なんて少数だということ。クソみたいなアプリでも作る人なんて滅多にいない。
Wordpressをうごかすのなんて10分あればできる。だが、世の中にはそれすらやらない人がいる。Wordpressってなに?って人はもっと多い。会社に入ればxamppでlampp環境をすぐに作れるやつがいるだけで(ウェブ系でなければ)じゃぁとりあえず開発環境作っといてってたのめる。これはアドバンテージだ。
おれが学生だった頃はまだブログが出るかでないかの頃で猫も杓子もAJAXやCSSの時代だった。俺はそれで過去問配布サイトを作ったが意外に未だに後輩に利用されているようだ。だがどう見てもクソ。UIもクソ。たまたま過去問配布してたからひとがきてただけで「Welcome My Page」と何が違うのかと言われればなにも違わない。それでも作る人は殆どいない。
世の中なんてそんなもんなのだ。
モチベーションを維持することが出来ない。継続的に他者との交流を得られる場所を見つけられればそれで何とかなるのかもしれない。
別に寝食忘れて一年、二年と継続する必要はない。ちょっと気が向いて二、三日遊んで、それで飽きて放り出したっていいじゃないか。
必要に迫られれば大抵のことはできる。増田だってたぶん二十年くらい必要に迫られたり、できて当然だと思わされて、なんとなく出来るようになったことは多いはずだ。だらだらできるのなんて今のうちだけなんだから、ゲームしたり漫画読んだり、一人寂しく旅に出たり、海外に行って怖い目に遭ったり徹夜したり病気になったりするほうがずっとこれからの人生の役に立つ。
プログラミング等のアルバイトを始められればいいのかもしれない。しかしアルバイト面接に持っていけるような、今までの成果物などもとくに無い。
Web系でなくていいなら、アルバイトはそれなりにある。学生課とかいけば斡旋されていることもよくあるし、まぁそれにプログラミングなんて会社入ればどうにかできるようになるので(今後研究などでもガンガン組むだろうし)、別のことすればいいんじゃないの。工場で働いてみるとか。
明確な目標を立てて生きてる人間なんてほんの一握りだよ。それにまだ若いんだから別にいいじゃん。時間はたくさんあるんだし。
なにか自分に人並みに適正のあるものを見つけて、それを学び、モチベーションを維持できる環境を見つけたい、それが大学院なのであれば進学したい、そういうぼんやりとした希望だけが浮かぶ。学部一年のころから分かっていたそこから進歩していない。
復習は大事なのでしておいたほうがいい。どうせ図書館とかで勉強しているなら、なんとなくその辺の本をとってきてななめ読みするとか、洋書の教科書で復習するとかおすすめ。
しかしずっと一人でいると、数学など苦手な勉強の集中力はどんどん落ちるのを感じる。twitterやネットサーフィンに逃げてしまう。一日の終わりには周りとの差は開いていく一方なのではないかと不安になる。
そりゃみんなそうだ。暇つぶしは逃げ道なのだから、あればみんな逃げる。でも別段周りとの差はそんなに開いてない。気にすんな。気に病みすぎて自分を壊さないように気をつけてください。
だとすると、なおさら余計に周りに行動力のあるキラッキラした人が多くて焦るとは思うしそれに目を奪われがちだが、気にすんな。まぁ留学したいとか考えているようならもうちょっと頑張ったほうがいいとは思うが。
2005年に突如現れたRailsによって国内でRuby利用者が急増したのがPerl滅亡への第一歩となった。書きやすさに作者がとことんこだわって作られたRubyの魅力を一度知ってしまうとPerlの古くさく読み辛く書き辛い文法に誰もがうんざりし始める。
Ajaxで再発見されたJavaScriptのブームもPerl終焉に若干ながら貢献している。ブラウザというPerlが全く手を出せないジャンルの王者JavaScriptの持つ華やかさに誰もが憧れ、そして手元のPerlの古くささに反吐が出始める。不器用で不細工なところも含めて愛していた女房とつつましく送っていた人生に、突然ぴちぴちのボイン女子大生が転がり込んで来たようなものである。
iPhone市場が本格的に立ち上がり、Perlとは全くの無関係であるスマホアプリ全盛期がやってきていよいよPerl滅亡へのカウントダウンが始まった。そして極めつけはソーシャルゲームバブルである。ここでもPerlとかいう言語は全くの蚊帳の外で大絶賛凋落中。
Perlなんぞ全くお呼びでない世界の話。段々とwebテクノロジーの世界に高度な数学的知識を持ったアカデミック層が跋扈しはじめ、専門学校でプログラミング言語を学んだだけの人間がハッカーなどと名乗ると恥ずかしい時代になってきてきた。
遂にPerlにとどめを刺したのはPythonである。守備範囲は当然ながらPerlと駄々被りで読みやすく書きやすく世界的なシェアもうなぎ上り。完全にPerlが不必要な世の中になってしまった。
2005年までのPerlはまさに我が世の春を謳歌していたが今や目も当てられない惨状でプログラミング言語のシーラーカンス・COBOLとすら比較され出す始末。昔Perlの人として売り出していたハッカーも、いつのまにかPythonの人になっているケースも海外では多い。10年でここまで時代は変わる。今のメインテクノロジーも明日は我が身だ。小手先の技術に乗っかってモダンだのハッカーだの聞こえのいい言葉を汚い口でまき散らして消えて行ったPerlエンジニア達の死を無駄にしてはいけない。変化の速い時代に生きる我々に必要なのは本質を学ぶ事だ。コードの書き方とかどうでもいいんだ。もっと10年20年たっても色あせない情報工学を身につけなければならない。
テーマストアが公開されたので、週末の時間を使ってちょっと作ってみたんだけど、想像以上に手間がかかったのでまだ完成してない。
手引きに「オリジナルテーマの作成は、CSSの知識がある方を対象にしています。」なんて逃げを打ってるけどさ。プロ向けにしたってちょっと投げっぱなしじゃないの?
そのため、気合いで解析する必要がある。保守するプログラムに設計書もコメントもないなんて常識だよねー、的な? まあ頑張ってFirebugするわけですが、当然、解析できるのはCSSの構造までであり、そのスタイルの意図などはわかるはずもないわけで。もしかしてアレですか。Webデザイナであればフィーリングで伝わるようなレベルの問題なんでしょうか。私のような卑しいSIerのエンジニアはWeb業界に転職してから出直した方がいいのでしょうか。
テスト用に別ブログを自分で開設し(!)、自分であらゆる表示パターンを網羅するテストページを作成(!!)し、カスタムCSSを記述しては保存、各種確認URLを開いて回る、ということを公式に求める始末。なんではてな様のテーマ作成コスト削減にそんな苦労をしてまで貢献しないといかんのですか。ちなみに手引きで紹介されているサンプルエントリーでは何かと不十分。脚注とかないし。シンタックスハイライトじゃないPREないし。コメントとかスターとか自分でつけないとだし。複数ページないとPagerでてこないし。つーか、はてなの公式テーマとか作ったときに使ったテスト用HTMLやテストケースを公開してくれればいいんでないの。・・・あるよね?
この前のトップページデザイン変更もそうだけど((自分の場合、横方向の視線移動を求められるようになったのが苦痛で仕方が無い))。使う人のこと、基本的にあんまり考えてないよね、はてな。とにかく、はやりの技術やデザインを使ってみたいんだろうね。それがユーザーにとっていいかどうかは二の次なんだろうね。個人の趣味じゃないんだからさ。ねえ。お願いしますよ。こんなんで月980円(だっけ?)もとろうだなんてどうかしてるよ。
公式でも投稿でもいいからはてなダイアリー並にテーマがたくさん使えるようになるのはいつなんでしょう。
あと全然別の話だけどついでに文句書いておくと、スマホ用はてブのWebはなんでわざわざAjaxでPager実装しているの? だって最新ホットエントリー一覧なんて、前のページのコンテンツ保持しておく必要性も薄いじゃない。何が困るって、次ページ読み込み中(■がくるくるしてる状態)に電波切れると(地下鉄とかね)、ボタン押せなくなってるから電波復帰してもどうにもならなくなるのよね。リロードすると1ページ目に戻るし。普通にリンクで次ページ遷移じゃダメなの?
タグ別に人気な「はてなブックマーク(記事)」が分かるアンテナサイトです。
はてブあんてな
私は、2chまとめサイトのアンテナサイト「オワタあんてな(http://owata-net.com/)」が大好きです。
ある日、自分も何かWebサービスを作りたいと考えるようになりました。
オワタあんてな風の「はてなブックマーク」アンテナサイトにしようと考えました。
しかし、私は、Webサービスを作る力(知識・技術)が全くありません。
Webサービスを作る前にWebページを作る力が必要だと思いました。
そのために、HTML(Webページを作成するための言語)を学びました。
学ばせていただいたサイトは、「TAG index(http://www.tagindex.com/)」です。
次に、「はてなブックマーク」の人気記事を自動的に取得する方法を知りたくなりました。
人気記事は、はてなブックマークがRSSフィードという形で提供しています。
そこで、そのRSSフィードを自動で取得する方法を学ばせていただいたサイトが、「Google AJAX Feed API入門(http://www.ajaxtower.jp/googleajaxfeed/)」です。
サンプルもあり、とても参考になりました。
Step1とStep2で、アンテナサイトを作ることができました。
調べてみると、そのためにはサーバーを借りなければいけないと分かりました。難しそうで、とても困りました。
世の中には、たくさんのサーバーがあるみたいですが、
ド素人の私は、日本一シンプルと自称している「忍者ホームページ(http://www.ninja.co.jp/hp/)」(無料)を借りました。(本当にシンプルでした)
サーバーを借りたら、作成したWebページをアップロードします。(アップロード方法も簡単)
以上3ステップで、Webサービス「はてブあんてな」を公開することができました。
もしよろしかったら、ご利用ください。また、はてブしていただけると幸せです。
本当に、ありがとうございました。
webサービス作ってみました。
ばあちゃんの介護が必要になり高校中退し、家にいる時間ばっかりになって就職もできず手に職もないのでなんかしなきゃと思い始めたwebの勉強だけど、何を作ればいいとかアイデアなんか全然なくて成長してるのかわからず焦ってた時に下の記事を見た。
探してみると他にも色々あって、
【2012超まとめ】確実にWEBサービスを作りたい人へ【前編】
勉強するのはいいけどこのままじゃ一向に先に進めない気がしてとにかくなんか作ってみようと。
上記の通り学歴無しスキル無しの超初心者です。htmlとcssは理解できる程度。
増田あんてな
コンセプト(?)
はてな匿名ダイアリーの中で興味のあるものだけてっとりばやく読めないかなー
■0.大まかな流れ
サーバーとドメイン所得→はてな匿名ダイアリーから人気記事絞込み→Google AJAX Feed APIをつかって人気記事のFeedを出力→Bootstrapで見やすくデザイン→アップロード&公開
■1.まずはサーバーとドメイン所得(途中で投げ出さないように自分を追い込むため先に所得)
■2.はてな匿名ダイアリーから人気記事絞込み
ここではてな匿名ダイアリーのURLで絞り込んでから左下の方にあるRSSアイコン右クリックでFeedのURLが所得できます。
■3.Google AJAX Feed APIをつかって人気記事のFeedを出力
2.の項目で絞り込んだ人気記事のfeedを出力します。
特に意味は無いけどBootstrapデフォルトデザインのサービスが多いのでMetro風にしました。(なんか見た目軽そうだったので)
Bootstrap
http://twitter.github.com/bootstrap/
BootMetro(BootstrapTheme)
■注意したこと
コードの勉強とは違い実際に作ってみると色々実戦的(?)な経験が積めた。
例えばはてブuser数での切替ひとつとっても、切替ポイントをいくつ作るのか、何user以上で切り替えるのかなど使いやすさに対して深く考えるようになったり。
※ちなみに増田あんてなでは1日に更新される記事数を考慮して3user,30user,100user,1,000userで切り替えています。
これは、、
3user以上→毎日チェックしたいが意味のない記事などを省きたいユーザー向け。
30user以上→一日1~5記事くらいの更新頻度。毎日~数日に一回見る人がちょうど良いくらいの一覧。
100user以上→他人が知ってる記事だけじゃ物足りない、ちょっと差を付けたい人向け。
1,000user以上→知らなきゃ遅れる(?)レベルの有名記事だけチェックしたい人向け。
としてます。(全て目安です)
最初は、5user,10user,50user以上,1000userで考えてたんですが、下の理由により微妙に数を変更しました。
5user以上→「はてなブックマークは3user以上がブックマークすると注目の記事に載る」=「はてブ人気記事の可能性」なのでリアルタイムに人気記事が見れない(僅かな時間差ですが)。
10user以上→更新される記事数的に3user(毎日見る)と30user(2~3日に一回見る)の間なのでターゲットがどっちつかずになる中途半端な数字(必要のないコンテンツになる可能性が)。
http://ozpa-h4.com/2012/11/20/jquery-window-scroll-position-fixed/
最初アドセンスでやろうと思って調べてみたらどうやら規約違反のようなので。
http://d.hatena.ne.jp/Hamachiya2/20120820/adsense_sidewinder
各ページを作ってるうちにサイドバー部分とか共通のコンテンツの更新が面倒になってきたのでphpで一括更新出来るように。便利。
http://benri-tools.net/contents.php?code=kyotu_menu
年末から作り始めて1月2日に完成&公開。年越しなど未作業日もあり作業日数は3~4日間くらい。
最初2日の日にすぐ記事を公開しようと考えたが少しでも多くの人に見てもらえるよう年明けは避けた。
仕事始めの人が多い4日に公開するつもりだったが金土日は閲覧数が少ないだろうから待機。
そうこうしてる内に
http://anond.hatelabo.jp/20130104184115
webサービス系の記事が新しく投稿&1,000はてブ超え。
ひとつひとつ勉強するのもいいけどひとつのものを完成→公開させる事によって一連の流れが把握でき課題も見つかる。今後勉強する際にも理解しやすくなった。
僕が見た作ってみた系の記事は、Feedやスクレイピングとかを使ったwebサービスが多かったのでほとんど知識のない僕は同じ様なものを作ってみただけだけど、自分用にコード書き換えるときとか実用的な勉強ができ、最初から一人で一から作ろうとしてた時より、結果成長できた。最初はコピペでもいいからとにかく作るべきな気がする。
作品というには程遠いがひとつのものを完成させたことによってモチベーションが上がった。
自分が使いたいものを作るってゆうのは大前提なんだろうけどその上で他の人が使いやすいってゆう客観的な対極の目線も必要なんだなと実感。
はてぶ数でのタブ切替をページ内でやったり各月間ランキングとか後々勉強しながら追加して行こうと思ってます。
自動でマッチングしてチャット相手を見つけてくれるマッチングチャットや、すぐにチャット相手を見つけてくれるフリーチャット、コミュニティチャット、フレンドチャットなど、とにかくチャットがメインの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