はてなキーワード: Pythonとは
界隈ではかなり前から Python界の perlcodesample こと @makotokuwata のリスクについて語られていたが、いよいよ具体的な弊害が出て来ているようなので、かいつまんでメモ。
https://twitter.com/makotokuwata/status/315510592171556864
この人、「HaskellDBはORMより素敵!」「ORMと全然違う!」と言ってるけど、ActiveRecordすら知らない可能性でてきた。まあ、なんだ、Javaしか知らずに「静的言語はクソ」と言う人もいる世の中だし、最近のORM知らずにORMより凄いと言う人がいてもおかしくない。
まあその通りだ。しかし、次のツイートを見れば完全に自己矛盾しているのがわかる。
HaskellDBのことを知らずにORMの方がすごいと主張している訳だ。口が悪いだけで、ほんと話にならない。
この人はkwatchでググればわかる通り大昔から perlcodesample 的な振る舞いを続けていた人だ。他人の意見を聞けない視野の狭さとか、独善的な振る舞いなど、共通点は多い。インタネットの黎明期にはこういう知識が中途半端にあって調子に乗ってしまう人は他にも多かったので別段珍しい訳でもないのだが、この人のプロフがほんとの意味でのリスクだ。
https://twitter.com/makotokuwata
Pyを広げるのに熱心なだけの人間
いや、この人別にPythonのメインストリームにいないし、迷惑。本当にPythonを広めたいなら、プロフィールを「Perlを広げるのに熱心なだけの人間」に変えて欲しい。
同じレイヤーの言語で考えると、PerlとRubyとPythonって書き方似ています・・・?
C++とかレイヤーの違う言語を交えると、似ているとは思いますが。
Perlは詳しくないので「いや、ちゃんとこれはこういう利点があるんだよ!」っていうのがもしかしたら有るのかもしれませんが(あったら誰か教えてください)、他言語をメインに使っていてたまにPerlに触れる人間からすると互換性の問題とかは承知ですが、いい加減
use strict; use warnings;
とか
my $hoge = 'fuga';
とかを態々書かなくても、defaultで強制させるべきかと...
そういう「これは書かなければいけない」というのを「態々書かせる」のがPerlにはとっても多く感じられます(他の言語にそういうのが全く無いとは思わないけど、Perlはこの3つの言語では特に多く感じる)。
Python2と3の互換性の話がありましたが、ある程度は(上手いこと)解決していくべきではないでしょうか?
(だって、今だにuse warning;とかmyとか書かない人いるんでっせ・・・レビューでそういう点を潰しますけど)
↑のようなことをある程度の互換性を上手いこと解消して、Perlに慣れていない他言語エンジニアでも気持よくPerlを書けるようにならないと、本当にPerlが使わなくなっていくのではないかなぁ、、、と思います。
また、どんな素晴らしい言語でも、書く人によってはどこまでも駄目駄目なコードが書ける訳ですが、Perlは(最もなんて言わないですが)駄目なコードの可読性が他言語よりも低く、保守しにくいと思われます。
素晴らしいエンジニアが書いたコードは非常に良いのですが。。。
よく「Perlは書くのは良いけど、他の人の書いたコード読むのは嫌」っていう話を聞くのですが、こういうことから来ているのかな、と感じます。
あと、
と仰るなら、
「またテキスト処理はPerlはRubyに比べて2~3倍くらいは速いはずです。」
”はずです”、ではなくそれこそ目に見える情報を提示して欲しかったです。
注:僕は他言語に比べるとPerl力がかなり低いですが、Perl嫌いじゃないですよ(あ、お前は解っていない!そもそもお前の技術力が低いんだよ!っていう意見は当たりかもしれません)
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
大人気w浸透のpythonが8位とかwww
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年たっても色あせない情報工学を身につけなければならない。
英語圏ではかなり前からPerlで開発し続けることのリスクについて語られていたが、いよいよ具体的な弊害が出て来ているようなので、かいつまんでメモ。日本でもそう遠くない未来だと思う。
Objective-Cのように需要が逼迫しているのに人材の供給が増えず需給ミスマッチが起っているわけでは無く、需要も供給も減るという状況下でわずかだが需要が上回っているとう性質の悪い状況がPerlに起きている。特に深刻なのは安価な若手エンジニアの採用が絶望的に難しいという現実だ。Rubyが台頭して数年経ちPythonがメインストリームの先頭を突っ走る2013年において新しくPerlを勉強しようとする若者はよほどの物好きしかいない。30~40歳のPerlエンジニアを雇うのはそれほど難しく無いだろうがコストがかかる。安価な20代前半の若手エンジニアを雇いたいという企業の思いとは裏腹にPerlを新たに学ぶ若者は絶滅寸前だ。
とても優秀な若者を雇用できるチャンスが巡って来た。採用担当者はこう尋ねる。「Perlは習得していますか?」「もちろんC/C++/Pythonはお手の物です。Javaもある程度可能です」「もう一度伺いますがPerlは習得していますか?」「申し訳ございません 未習得です」
悲劇だ。
もう何年もPerl界隈で新しいモノが生まれたと言う話を聞かない。こんな事を言えばPerlハッカーは激怒するかもしれないが、しかし現実にRubyやPythonやJavaに比べればこの10年の間にPerlから生まれたものは微々たるものだ。何かしらのライブラリにしてもwebフレームワークにしても、ハッカーが新しいモノを試す土俵にはいつもPythonやRubyやJavaが選ばれて来た(もちろんC/C++もね)。
最低の理由ではないだろうか。
10年前にPerlで開発していた企業は最先端を走っていた。迅速に自らのアイディアを具現化するツールとしてPerlは最適だった。それが今やどうだろう。自分たちの書いたコードを保守し続けなければいけないという理由「のみ」でPerlを使い続けている。他に理由など無い。Perlで開発する理由は自分たちの過去の仕事を保守しなければならないという理由のみだ。
控えめに言っても、そういう企業に未来は無いと思う。過去とは決別し、10年後の自分たちにとって最適な選択をすべきだ。今すぐにだ。本当に手遅れになる前に。
「らびっとブックマーク」
「管理をする」ことに重点を置いた(ノンソーシャル)ブックマークサービスです。
■作ったいきさつ
ブラウザのブックマークが貯まりに貯まってたので、ブラウザじゃなくてオンラインで管理しようと思ったところ
「じゃあ自分で作ってみるか」
ということで作りました。
・はてブは?
もちろんはてブでもブックマーク管理してたんですが「もっと一覧性が高かったらなぁ」とか、「ラベリングができたらいいなぁ」とか、
単純に管理するという点に注目したとき、もっと機能が欲しいと考えました。
■制作について
製作期間は2ヶ月くらい。
使った言語はPHPで、フレームワークは「CodeIgniter」というものを使いました。
実はプログラミングの勉強は1年半ぐらいやってて、Webサービス(のプロトタイプ)をいくつか作ったことがありますが、リリースまで出来たのは今回が初めてです。
最初は流行の「Ruby on Rails」から勉強しました。
本を買ったり、ネット上のチュートリアルを参考にしたりしました。
流行だったこともあって、情報収集にはそこまで困りませんでした。
そこで当時考えたToDoリストにゲーム性を加えたWebアプリを作ろうとしたんですけど、どうしても本番環境へのデプロイができなくて、そこで挫折…。
ならば別のフレームワークを!と思って次に手をつけたのがPythonのフレームワーク「Django」
Railsより動作が速く、もともとPythonを勉強してたこともあり、親しみを持てた一方で書籍やネットでの情報が少なくて苦労もしました。
簡単なアプリを作ってデプロイを試みたんですけど、結局こちらでも成功まで辿りつけませんでした…。
と焦り始めたところで、次に目をつけたのがPHPの「CakePHP」でした。
「PHPを使ったら負け」みたいな文言をネットでよく見かけていた
ので、あえて敬遠していたのですがここまでくると手を出さずにはいられませんでした。
結果から言うとこちらは先の2つでの苦労が嘘のようにいとも容易くデプロイができました。
このままCakePHPで制作を進める予定でしたが、何故かここら辺で別の事に手を出して、構想していたToDoリストアプリの制作を中断しました。
そして数ヶ月の空白期間を隔て、今回のオンラインブックマークサービスのネタを思いつきました。
その間に出会ったのが「CodeIgniter」というフレームワークで、CakePHP同様PHPベースですが、こちらは軽量フレームワークです。
動作が速く、学習コストも低いのが魅力的でした。(デプロイも簡単。)
ということでこちらを採用して制作し、今回リリースまでこぎつけました。
これから独力でWebサービスを作ろうと思ってる方は、使うフレームワークの仕組みだけでなく、本番環境にデプロイすることまで見越した勉強をしないと
自分みたいにフレームワークに左右されて余計な時間を取られてしまうので、その辺は注意した方がいいかもしれません。
(ただそれらを通して学んだことは無駄にはならないと思います。)
■感想
今回実質の製作期間は2ヶ月くらいでしたが、それに至るまでの勉強も含めるとかなりの時間と労力を費やしていて、Webサービスをちゃんとしたサービスとして
立ちはだかる壁としては
技術がなぁ…
↓
デザインがなぁ…
↓(ある程度の妥協)
デプロイがなぁ…
↓
宣伝がなぁ…
↓
運用がなぁ…
みたいな感じだと思います。
最近はてブでも「Webサービス作った」系のエントリが上位に昇っていますが、
IT土方の自分が初めてプログラムなるものを体感したのは、中学校の授業だった。
当時は5インチフロッピーが主流のパソコン上で、BASICを走らせたらそれが妙に面白くて、時間を忘れて夢中になってしまった。
原体験というのは恐ろしいもので、今振り返ってみればそのときの体験が、その後の人生に計り知れない影響をもたらしたわけだ。
例えるなら、あやとりと拳銃早撃ちに目覚めたのび太的感覚だろうか。
開発者の社会的地位は「コード書けるだけで何が偉いの?何が凄いの?」という微妙なポジション(国家資格でもコード書き方面の高度区分は組み込みだけというのが現状をよく表している)で待遇も微妙だが、それでもプロのコード書きは自分にとって天職だと思うし、そうなってしまったことにあまり後悔はしていない。
山下清じゃないけど「まあ仕事だしな」で過ごしたり過ごさなかったり。コード書き以外は何をやっても全然ダメだけど。
とまあ、これだけで終われば満更でもない思い出話なのだが、正直、初めて触れた言語がBASICだったことは、自分にとって黒歴史でもあったりする。
かつての自分と同じようにBASICでプログラムに興味を持った人に「あんなのはダメ」と頭ごなしに言うつもりはないけど、もしBASICのBの字も知らない人であれば、今ならPythonかRubyを、Linuxとセットで勧めると思う。
気がついたらCもJavaもPerlもこなし、いつの間にかアプリもシステム・プログラミングも経験していた自分からすると、それくらい、BASICは言語として拙いというのが実感なのだ。
色々問題はあるんだけど、一番はプログラムに対するスタンスを誤解してしまう所。
あれを最初にやると高確率で「プログラミングなんて、その場で出来る範囲で適当に書いときゃいいんだ。なんつってもノリが大事なんだから、うるさいこと言って神経取られちゃダメだ」という恐ろしい考えが身についてしまう気がする。
だってかなりいい加減に書いても、それなりに動いちゃうから。人は大抵易きに流れるので「これでいいのだ」になるのが自然というか。
更にこれがVBだったりすると、MSの用意した機能だけしか使えない人になるだろう。もっとヤバい気がする。
ともかく自分はそうやって身についた悪習慣が祟って、折角大学で習った知識はまともに身につかず、就職後にOJTを通して自らを叩き直すハメになった。
勿論これは自力じゃなく、当時のメンターの驚異的な忍耐力を以てなされたことであり、今でも頭が上がらない。
全く遠回りをしたもんだと思う。
今でも周囲のVBしか業務経験ない人のコードの品質は基本的に低い。某掲示板ではVB厨という言葉があるらしいけど、そういう蔑称も仕方ない気がする。
まあ自分の場合、当時はBASIC以外の教育用言語といったらPascalくらいしか無かっただろうし、振り返ってどうにかなるもんでもないし。
オープン系のデスクトップアプリ開発、Webプログラミング、システムプログラミングを仕事にする人向けとして考えてみた。
学習環境はUbuntu Linuxで、デスクトップ上のターミナルか、WindowsからTeraTermでsshログインして行うことを想定。
なので前提知識としてLinuxのabcくらいは教えておくとして、もし来年度やるならこんなもんかな。
結構分量多めだけど、これでも基礎の基礎に絞った感じ。
おまけ:Pythonで学ぶ関数型プログラミング
なお、上述のカリキュラムでやらない言語(VB、javascript、C++、Objective-C、C#、PHP、Rubyなど)やWebフレームワーク(Django、Ruby on Railsなど)は、全てこれらの応用で覚えられると思うので、基礎教育終了後に各現場にてOJTで習得してもらう。
IDEも使わないけど、はじめの一歩で軽量エディタ+コマンドラインをやり込んでいれば正直どうにでもなるので省略。
あと最後がおまけ扱いな上にLISPで学ばないのは、要するに「リストすげー!超すげー!!」という感動を胸に今後も頑張ってもらうのが狙いなので(だって現状使う機会殆ど無いし)、最初にやって一番手に馴染んでいるツールで、理解のコアになる部分にサクッと触れて欲しいということ。
言語なんてツールの一つに過ぎないし、ツールなんて適材適所という前提で書いてみる。
PerlはC言語やJavaとともに、自分にとっては原点とも言うべき言語で、今は全く使ってないけど、昔はとてもお世話になった。
今更書くまでもなく文字列処理やハッシュが強力で、あんな便利なものはないという感じ。
少なくともPerlのないLinux/UNIX環境なんて死ぬほど使いにくいだろう。というか実質不可欠だろう。
書きやすいけど読みにくいのが玉に瑕で、間違っても最初に覚える言語ではないけど(書き散らかすクセがつくので)。
でもPerlは、C/C++バリバリな古参のプログラマでは嫌っている人が結構多い。なんでかなあ。
最近ではPHPやPythonなど、Perl以外のLL勢からも微妙な感じで見られている。
確かにCでも文字列処理は可能だけど、Perlに比べたら機能的にとても貧弱だし面倒。だからちょっとした作業なら間違い無くPerlのが楽。
PHPはWeb方面ではPerlより手軽だし、Pythonはシンプルかつ見た目もスッキリで初心者には一押しなんだけど、それでもPerlの書きやすさにはまだまだ及ばないと感じる。
臓疾患持ち、身長170cmどまりの超低スペック高校1 年生です。
プログラミングに興味を持ったのは今から3年前の 12歳のときだった。
まだ、世の中がプログラミングは教育に必要だとか あまり叫ばれていないときの話だ。自分は勉強も運 動もできない。いや、何もかも人以下だ。
だから、プログラミングという物ができれば、他の 人と同等、それ以上になれると思いJAVAの教本をアマ ゾンで買った。 がんばってサンプルコードを打って 動かした
しかし、なかなか身に付かない。
構造体?とかよく理解できないのだ。
僕は教本が悪いと思い評判のいい教本をアマゾンで 買った。 しかし、理解できない。次第にサンプ ルコードを打ち込むことが嫌になってきた。
まだ、僕は懲りていない。
今度は言語が悪いと思い始めたのである C言語の 教本を買った。
結局、続かず2ヶ月で挫折した。
父親は僕の本棚にいろいろな言語の書籍が増えてい くのを見かねてPHPを僕に直接教え始めた。
PHPはなんとか理解する事はできた。
プログラミングで何か作りたいなんてなかった。
取り柄が欲しかった。
そしてプログラミングを学ぶのを一時的に辞めた。
その間にもなぜかプログラミング言語の教本を買い 物中毒のように購入して行った。 python、javascript、lisp入門。
去年の1月にiPhoneアプリを作ろうかなとふと思っ た。mac book airと書籍をお年玉で購入した。
結局、挫折した。
自分はプログラミングの本を購入する事しかできな い。金を使う事しかできない。プログラミングで何か したい訳でもなくただプログラミングが出来るという 取り柄が欲しかった。
なんかソーシャルゲーム業界に転職したい増田がホッテントリしていた。 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年経って自分を見直すと、もしもソシャゲ業界っていうものがシュリンクするなら、別の業界に移るとは思う。
技術的に楽しいとかそういうだけならソーシャルゲームにこだわる理由はないのです。むしろゲームなんて暮らしの役にはたたぬのです。クックパッドとか食べログとかのほうが役に立つし、ニコ生とかは政見放送までしちゃうのです。
自動でマッチングしてチャット相手を見つけてくれるマッチングチャットや、すぐにチャット相手を見つけてくれるフリーチャット、コミュニティチャット、フレンドチャットなど、とにかくチャットがメインの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
あけおめ!今年は巳年。へび。へびと言えばPython。そう今年は全てのwebエンジニアがPythonを勉強する最高の環境が整った年なのです。
必要です!必要だと思います。もはやPythonはwebエンジニアにとって必修言語となりつつあると思います。Linuxの多くの箇所でシステム言語として用いられ、可読性の高さから多くの技術系書籍のサンプルコードとして用いられ、科学技術系分野におけるエコシステムの充実っぷりはますます磨きがかかっており、様々なライブラリがどんどん出てくる現状を「Pythonわからないから自分には関係無い」と遠巻きに眺めるのはもったいないです。
あなたが既に他の言語に慣れ親しんでいるなら、特にRubyなどに精通していれば「1週間」で基本的な読み書きは出来るようになるでしょう。そのくらいPythonは敷居の低い言語です。またweb上のチュートリアルドキュメントが大変に充実していますので(もちろん和訳済み!)費用0円で勉強開始できるお手軽言語でもあります。
これは大変に悩ましい問題で、自信を持ってお薦めできるバージョンが無いのが残念な現状です。2系と3系は特に文字コード周りを中心に言語体系にそれなりの差があり、日本語を扱うエンジニアにとっては悩ましい問題です。結論としては「どちらも読み書きできる」ようにした上で「3系で書く」ですかね。2と3の違いを理解しておかないと必ずどこかで躓きます。特にweb上の情報はまだほとんどが2系ですが、ぱっと見て2と3のどちらのバージョンで書かれた情報なのかを判断できないと多くのweb上の情報を利用できずにもったいないです。
先述しましたが和訳済みのチュートリアルが充実しているのがPythonの特徴でもありますので、まずは目を通す事をお勧めします。
ぜひ超充実したドキュメント群を覗いてみてください。「チュートリアル」を読めばだいたいの言語仕様がつかめるはずです。「ライブラリリファレンス」はあなたの最高の辞書となるでしょう。
その上で、やっぱり書籍で勉強したいということでしたら以下の本がお薦めです。
・プログラミング自体が初めての人向け
・他言語を既に知っている人向け
みんなのPython 第3版(柴田 淳) ・・・2版と3版で大きく内容が異なります 2版はPython2系、3版はPython3系を中心に解説
・進んだトピックを扱う中級者以上向け
pythonはインデントの存在があるので無機能エディタで大規模なコードを書くのは案外骨が折れます。贅沢系IDEの代表格はPyCharm(有料$99)でMac,Windows,Linuxの3プラットフォームに対応しており、一つのアカウントでいくつものマシンにインストールできます(同時に使う事はできない)。30日間の無料トライアルもありますしトライアル期間が過ぎても一回あたり(たしか)5分ぐらいなら継続して使えます。無料IDEだとEclipseプラグイン、Netbeansあたりでしょうか。Netbeansは公式開発は既に終了しておりあまり安定していません。
大規模な開発ならDjangoが第一候補。歴史が長いフルスタックなフレームワークですがまだ正式版がpython3系に対応していない。最近勢いがあるPyramidは3系に対応済み。各webフレームワークについては各開発者同士が「筋が悪い」「Pythonとしておかしい」「トレンドから3年は遅れてる」などとガチンコで思いの丈をぶつけ合っている以下の記事も参考にしてください。http://www.atmarkit.co.jp/news/201209/24/pycon.html
とりあえず最低でもDjangoとPyramidは両方使ってみてから自分にあった方を選択するといいと思います。
・Numpy/Scipy
科学技術系の人が好んでpythonを使う理由の一つがNumpy。数値行列計算を内部でCを使って計算するために非常に高速。インターフェイスは書きやすいpythonだけども実行速度はCネイティブ並みというとてもありがたいライブラリです。現在のPythonの盛り上がりに間違いなく大きく影響しているライブラリ。
・nltk
言語処理で使われるライブラリ。英語がベースとなってますが工夫すれば日本語でも全然使えます。参考文献 http://nltk.googlecode.com/svn/trunk/doc/book-jp/ch12.html
・multiprocessing
並列処理ライブラリ。CPUのマルチコアを全て使い切って無駄無く高速に処理を行いたい時に重宝します。個人的に大好きなライブラリ。頑張ればちょっとした分散並列システムも作れます。このライブラリのお陰で自宅にある10台*(擬似)8コアでお手軽python並列処理クラスタを30分ぐらいで作る事ができました。
まどかだかマギカだか知らないがアニメネタが毎回気持ち悪くて吐き気を催すのは俺だけじゃないだろ?
オッサンが暗い部屋でアニメ見ながら涎垂らしてデレデレしてるだけなら家族が気味悪がるだけで済んで世の中に迷惑もかからないかもだけど、それを外でやんなっつーんだよ
マジで醜悪だから 自分が思ってる以上に周囲の人間は生理的な嫌悪感を抱いてるんだよ
まあ百歩譲って自分のブログの中だけなら髭オッサンの勝手だよ 俺らが見なきゃ済む話だしな
しかしこともあろうかpythonのカンファレンスでもやっちゃうその無神経さにショックを受けたpythonエンジニア達の気持ちが分かるか?
http://www.dan.co.jp/~dankogai/pyconjp2012/python.html
昔の名前で出てます状態な髭Perlサスペンダーがなんでpythonのキーノートなんだよってみんな疑問に思ってる中、アニメネタを随所にちりばめた全く中身の無い話を60分
会場ドン引きですよ アホか 時間返せや 髭キーノートをセッティングした人にすら悪意が向かうレベル
そこで60分間キーノートと称して全員の時間を拘束して話をするんならそれなりの姿勢ってもんがあるんじゃねーの?
「Oh、オフィシャルな場でアニメ、ジャパニーズきもいデスねー」って思われんだよ
つーかアニメの画像って勝手に使っていいのかよ?なんでそんな当たり前のことがわかんねーの?
ちゃんと線引く所は線引けや 中と外で線引けってんだよ やりたいなら家の中でやってろってんだ
(記事が長すぎたので前編・中編・後編に分けました)
僕ももう、リストラされそうなとあるおっさんなんですが、先日Webサービスを公開しました。
きっかけになったのはこの記事です。
http://anond.hatelabo.jp/20101203150748
こんな事できたら良いなぁと思っていると、他にもやっている方たちがいました。
http://matome.naver.jp/odai/2131952812556433001
http://anond.hatelabo.jp/20120318122617
Rails3 と jQuery で、真面目にオシャレなエロサイトをつくってみました - h300
http://d.hatena.ne.jp/inouetakuya/20120331/1333192327
http://anond.hatelabo.jp/20120914214121
http://blog.ropross.net/archives/99
これらを読んで自分もやってみたくなり、
先日の家入さんの折れずに挑戦を続ける姿を見てモチベーションも高まり、
7月21日~8月19日の30日でWebサービスを作りました。
最後の一週間はお盆休みでしたが、それ以外は平日は仕事をしながら土日をフルに使っています。
と言っても、いきなり高度な事をするのは大変なので、
本当に自分が作りたいサイトをやる前に、一度シンプルなサイトを作ってみる、という所までです。
やってみて改めて分かったのは、「自分でWEBサービスを作りたいと思っている人へ」の中の人はかなりがんばったんだなぁ、と。
かなりの熱意とモチベーションをもって、効率良くやらないと、一から勉強してあの短期間であのサイトは作れません。
プロ顔負けの技術とおもしろいアイデア、情熱をもって短期間でそれをやってしまった中の人は凄いです。
だから、Webサービスに夢を見る人(僕)も、Web業界の人も、あとHな人もブクマするのでしょう。(賞賛)
それでは、一般人が一般的ながんばりで確実にやれるだろう手堅いラインをお届けします。
偏差値40の僕が最低限ここまで出来たので、きっとあなたならもっと出来るはず。
ステップ7まではサクサク進めて、分からなくてもどんどん次に行きましょう。
今回ぼくが作ったサイトはこちら
■ステップ0:準備
・パソコンを用意
・ブラウザはChrome,IE,Firefox,Safariあたりをインストールしておく。Chrome便利。
・作りたいサイトのアイデアとデザインのイメージ、ドメイン名(○○○.comとか)のイメージ。
・作る理由とやる気
・はてブ便利、Web業界の皆さんの空気感を知るため、なるべくPCかスマホでチェック。
ブラウザを右クリックして「ソースを表示」すると出てくるアレです。
Yahoo!とかのソースを見るとかなり長いけど、全部書くわけじゃないから大丈夫。
ネットで調べても良いけど、やっぱり基礎知識は本が良いと思います。
メモ帳で書いてブラウザで表示して、メモ帳で直してブラウザF5で更新して確認、
何となく分かってきたら、より具体的に理解するためにこの本を読みます。
PHPについて調べる。
初めはこの本が勉強になりました。
書いてある通りロカールサーバー(XAMPPかMAMP)を入れて、自分のマシンでPHPが動くようにします。
データベースの使い方も一緒に書いてあるので入門に最適です。
次はこれを読みます。
普通に読んでいくと中盤のフレームワークを作る所で挫折するはずなので、一旦そこまででOK。
パーフェクトPHP
PHPの他の選択肢としてRubyやPythonもあるみたいですが、学習コストがかかりそうなのと、そのままでは動かないサーバーがあったりで、
最先端のプログラマーになる必要はないので、レガシー&枯れたPHP一択です。
カッコつけずにモチベーションが持続するうちに勝負です。
VPS(専用サーバーを仮想的に分割して安くしたサーバー)が流行ってますが、
学習コストがかかるのと勉強する事が増えるので割りきって始めは普通のレンタルサーバーにします。
VPSを借りるとLinuxの知識やWebサーバー、メールサーバー、及びそれらの保守管理などの知識が必要になります。
レンタルサーバーならある程度マネージドで、作ったプログラムが動かない時の原因の切り分けもしやすいです。
おすすめは「さくらのレンタルサーバー」のスタンダードプランです。データベースの使えない「ライト」プランは止めましょう。
その他、ロリポップ、CORESERVERなどいろいろあるので最低限PHP,MySQLが使えるサーバーを選びます。
サーバーを契約したらアカウント情報を確認して、FTPでログインしてみましょう。
http://sourceforge.jp/projects/ffftp/
ログインできたら、ステップ1で練習したファイルをアップロードしてブラウザで表示してみたり、
ステップ2で作ったPHPファイルをアップロードしてブラウザで実行してみたりします。
慣れてきたらFileZilla FTP Clientが便利です。
Webサービスのしくみを理解するために、WordPressを借りたサーバーに入れてみます。
WordPressはPHPで出来たCMS(コンテンツ管理システム)で、ステップ1~3がどう組み合わさって動くのか理解できます。
ブログや会社案内のサイト程度は作れてしまうので触れておいて損はないです。
テーマをいじったり、プラグインで遊んでみると理解が深まります。
オススメはこの本。
プラグインのまとめはこの辺りが親切。
2011年版!絶対にインストールしたいWordPressプラグイン45個
http://vanilla-stone.com/blog/wordpress/2011-edition-45-wordpress-plugin-pieces-install-absolute/
TwitterやInstagramと連携するプラグイン入れたり、CRONで自動化したりすると楽しくなってきます。
ここまでで何となくWebサイトのしくみが理解できると思いますが、
自分の作りたいサイトを一から書いていくと思うと心が折れると思います。
そこで、CakePHP(ケーキピーエイチピー)というフレームワークを勉強します。
フレームワークというのはWebサイトの開発で必要になることが多い色んな機能をまとめてくれている枠組みソフトです。
PHPの文法で、フレームワークの書き方のルールに従うだけで、様々な便利機能を簡単に使用でき、
フレームワークは他にRubyのRuby on Rails、PHPだとSymfonyやYiiなどかなりの種類があります。
CakePHP 1.3によるWebアプリケーション開発―オープンソース徹底活用
あと、余裕があればこれも購入。
注意したいのは、現在CakePHPのバージョンは1.3系と2.0系がありますが、1.3を使うという事です。
2.0系は新しい機能が付いたりパフォーマンスが良くなったりしていますが、2012年9月現在、
バージョンアップが激しく、関連書籍は2~3冊程度、Webの検索でもヒットするのは1.3の情報が圧倒的に多いです。
MVCというデータ処理・表示処理・それらのコントロール処理を分離して記述するルールや、
ステップ2では踏み込んでいなかったクラスが出てきますので、慣れるまではかなりの心折設計です。
難しすぎて僕は理解できなかったので、ここで一旦CodeIgniterに浮気しました。
CodeIgniterはCakePHPと同じPHPで書かれたフレームワークで、インド方面で良く使われてるらしい。日本だとまだマイナー、かな。
ライセンス問題で下火になっていますが習得の容易さとパフォーマンスが良いのでフレームワークという概念の把握にはオススメです。
僕はこれを読んでCodeigniterだけじゃなくてCakePHPも理解できました。
CodeIgniter徹底入門
ただ、CodeIgniterは簡単・高速で習得しやすいけど、
その分シンプルで機能が少ないので、ちゃんとしたサイトを作ろうと思うほど自分で書く部分が増えていきます。
セキュリティやユーザー認証なども素人が自前で一から作るのは危険なので、やっぱりCakePHPお勧めです。
開発する時はgitHubに上がっているデバッグキットを入れると便利です。
cakephp / debug_kit
https://github.com/cakephp/debug_kit/tree/1.3
http://codezine.jp/article/detail/5105
NetBeansを使う時のCakePHP用の追加モジュールはここ
https://github.com/evilbloodydemon/cakephp-netbeans/tree/autocomplete
中編はこちら