はてなキーワード: PHPとは
Pythonをかれこれ5年ほど使っているけれど、いい加減頭にきた。
大体頭に来るような内容というのは限られていて大体は
http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm
本当にPythonを殺し、メインのスクリプト言語となる望みを、あるいは何であれメインの言語となる望みを絶ったのは、永久凍土の問題なのだ。人々はいまだ埋め込みインタプリタにTclを使っている。どのような面から見てもTclよりPythonの方が遥かに優れているというのに——ただし永久凍土の問題を別にすれば。
これに尽きる。
よく言われるが、インデントに縛りがあるのもselfが付くのも慣れてしまえばさほど気にならないし、むしろ魅力的とも感じる。
しかし、Pythonを本当の意味で糞たらしめて居るのはその言語を使っているコミュニティがあまりにも思考停止しているからだ。
インデントやselfが気に入らないなんて些細な問題を他の言語使いから散々文句を言われたがために、本当の意味で言語の弱点になっている部分が指摘された時にも「それは言語仕様が悪いんじゃない。言語仕様に沿って考えられないお前の頭が悪いだけだ」と言ってくる。
実際のところ、Pythonの仕様には言い逃れのできない仕様の穴は幾つもある。もちろんよく引き合いに出されるRubyやPerlにも仕様の落とし穴は山ほどある。仕様の穴そのものは実はそんなに深刻な問題ではない。
真に問題なのは、Pythonコミュニティはその仕様の穴を断じて穴と認めない事だ。
言語同士でdisり合いになったとき、何かその穴をつつかれた場合の各人の反応はおよそこんな感じだ。
Perl使い「そうだよね、そこの仕様は頭悪いよね。でもPerl6のこの機能使えばこんなに短く綺麗に書けるんだぜ(と全く読めないコードを出す)」
Ruby使い「うんうん、仕様の話題でもそこは殺人現場とか呼ばれてるね。コミュニティ的にはこっちの機能を使うことを推奨しててそっちはobsolatedだね」
PHP使い「それ言い出したらこっちにこんなに大きな地雷あるし、この地雷なんてもっと大きいぜ。ほんとPHPは地獄だぜ」
Python使い「お前の思考通りに言語が動くんじゃなくてお前の思考を言語に添わせるんだよ、言語の挙動すら理解せずに使おうとするんじゃねえ」
こんな感じに、まず最初に質問者へ人格攻撃を行う。インデント言語であることやselfの問題について未熟なプログラマからのどうでもいい指摘を散々受け流してきたPythonコミュニティは、言語仕様について文句を言われる事に慣れているためまず相手を攻撃する。初心者を寒波が洗礼するのだ。
言語仕様が汚くなっている事まではどの言語も一緒なのだけれど、Pythonコミュニティだけは欠点を認めず必死に(∩ ゚д゚)アーアーきこえないという態度を取る。
これこそがPythonを糞言語たらしめる最大の弱点である永久凍土の問題。コミュニティが凍れば言語の進歩も凍る。
Python vs Ruby vs PHP vs Haskell プログラミング言語バトル part1
http://anond.hatelabo.jp/20120118220204
Rubyistってなんであんな小学校の図書室で毎日読書してそうな
顔面オジサン、オバサンばっかなの?
Scalaer: 鼻持ちならない、モヒカン
Lisper: マジキチ
Rubyist: ネクラ、オタク、キモメン、いじめられっこネクラチビメガネ、色黒、キモオタ、顔面オジサン、オバサン
Rubyのブロックが便利すぎて、Pythonをやめたくなった。
いちいちtemporaryな関数を作成してから目的の関数に渡していたのがばからしくなった。
リストやジェネレータ式の内包表記が便利過ぎて
どうせ廃れる。
609
>リストやジェネレータ式の内包表記が便利過ぎて
おれもそう信じてたけど、Rubyの、メソッド呼び出しを続けて書けるほうが便利だわ。
まるでjQueryみたい。といってもjQueryのほうが後発だけど。
たとえば「xsから0以上のものを選んで、その二乗の和を求める」場合
sum([ x*x for x in xs if x > 0 ])
これだと、後ろから読まないといけないんだよね。でも
xs.select{|x| x > 0}.map{|x| x*x }.sum
これなら頭からひとつずつ読めばいいから、わかりやすいし、考えたとおりに書きやすい。
まさにスクリプトって感じがする。
Python: [[x,y] for x in xs for y in xs]
Ruby: xs.map{|x| xs.map{|y| [x,y] } }.flatten(1)
いっぽうメソッドチェーンは
orz.sage().hage().hoge().hige() タイプの問題には向いている
つまり向いている方向がちがう
(まあHaskellなら hige . hoge . hage . sage と書くだけだというのは置いといて)
強い弱いということで言うと、問題を解くのに必要な一番能力が弱い
(限定された)道具を使うという考え方があるようだよ
ベタ再帰は強い(汎用的)、がそれゆえ読むのに注意を必要とする
foldrは再帰よりは弱いが、foldrで表現可能な問題のクラス(原始再帰)はかなり
広いので、mapやfilterで済むならもちろんそのほうが望ましい
ではこの問題は弱いmapやfilterを結合させるほうがいいかというと、
俺はlist comprehensionのほうが集合表記そのもの=whatを表現していて好きだな
Pythonのlist comprehensionのsyntaxはあまり好きではないが
それは大きな問題じゃない
メソッドチェーンってバグをわかりにくくするだけだと思うなあ。もちろん性能面もあるし。linqとかは良いと思うけど。
同じメソッドチェーンでも、linqなら良いけどrubyなら悪い .....
一言で言うと「俺はRubyが大嫌いなんだぁーー」ということですな
内包表記は構文でサポートしないと難しい(マクロがあれば別だが)
メソッドチェーンが関数型の方法に比べて特に優れている点があるようには思えないが
パイプ順に書きたければ書けるし
680,663
Pythonには関数型として致命的な弱点があるから、メソッドチェーンでは簡潔なコードが書けない
たとえば「(1) Rubyは 条件判定が(文ではなく)式」だから以下のようなコードが書ける
if test
if test_1 then test_1_1 else test_1_2 end
else
if test_2 then test_2_1 else test_2_2 end
end
}
あるいは「(2) Rubyはブロック内で局所宣言が可能」だから上のコードを以下のように書き換えてもいい
cond_1 = if test_1 then test_1_1 else test_1_2 end
cond_2 = if test_2 then test_2_1 else test_2_2 end
if test then cond_1 else cond_2 end
}
関数型言語であれば「(1) 条件判定(if/case)が式」で「(2) 局所宣言(let .. in .. end)が可能」なの当たり前
ところが残念な事に、どちらもPythonには欠落しているから、上の例はストレートにコード化できない
だからPythonではメソッドチェーンは使われないし、「酸っぱい葡萄」に見える
Rubyでもリスト内包表記が言語として組み込まれてくれると嬉しい
だと思う
頭に浮かんだロジックをすばやくコード化するのはメソッドチェーンが適しているし、
じっくり腰を据えてコード設計するならリスト内包表記のほうが美しい
自分は、たぶんこのスレもRubyコアの中の人も見ているだろうから
そのうちRubyにもリスト内包表記が実装されるんじゃないかと期待しているw
メソッドチェーンは書き易い
内包表記は見た目が整ってて綺麗、最終的な型がわかり易い
いじょ。
Pythonの方が弄れる対象が多いのに、なんでウェブ系だとPHPの方が流行ってんだろ
端末からのテキスト処理も楽だし、数値計算周りのライブラリも充実しているのに
PHPが優遇されているのって歴史的な経緯以外に何か他の理由でもあるのか?
けどまぁ、情弱な文系SEが大半を占めているバカだらけの日本じゃ別にPHPで困ることもないか
数値計算や端末からのテキスト処理なんてWeb系じゃ大して使わないからなあ…
Pythonに関しては、ZopeさえコケていなければWebサーバ用LLとして大成功していたはずなのに、
Railsなんかが登場したおかげで、すっかり影が薄くなってしまいますた....
ってか、railsにインスパイアされたフレームワークって今じゃ幾らでもあるよね
djangoとかCakePHPとか。rubyってRoRを使いたいユーザを除くと、
pythonやPHPの方がユーザー数は圧倒的に多いと思うんだけど
本家のrailsって、他を遥かに越えるほど良いものなんだっけ?
44
Zopeが登場した当時、「RDB+PHPはもう古い、これからはOODB+ZopeがWebの中軸になる!」と
少なくとも自分はZopeからPythonという言語を知ったし、その時点でRubyは知らなかった
そして、その後のORM(RDB)+Railsの出現と華々しい革新性への注目は、誰もが知っているだろう
今でもZopeの開発は継続されてはいるが、結果的に当初の期待が大きく裏切られたという事実は動かしがたい
djangoとCakePHPについては実際に触っていないので憶測になるが、おそらく技術水準ではRailsと同等だろう
しかしRailsはRailsでコミュニティの活動が活発だし、その進化は異常に早い
Railsに何か致命的なトラブルが発生して開発が停滞する、あるいはdjangoやCakePHPから
何かのイノベーションが提示されでもされない限り、後発のdjangoやCakePHPがRailsに追いつくのは無理
Railsは決して技術的に完璧なWebフレームワークではないんだけどね....(たとえばSeaSideのような.... )
だからこそ「もしもZopeが....だったなら」という「たら・れば」感はPythonコミュニティの潜在認識になっている
C a k e P H P は う ん こ
CakePHP使ってんの?
可哀そうにw
でもやっぱりいつもの使い慣れたLL(Python/Ruby)で
Webサービスを書きたいってのがある
求人数は
Ruby on Rails>>>>>>>>Django
http://www.indeed.com/jobtrends?q=django%2Cruby+on+rails&l=
どういうことなの?
求人数が多いのはそのためだと思うよ
なんかのミスかと思ったがアメリカでもRuby on Railsは人気があるのかなあ・・・
Pythonのほうが使いやすいと思うのだがフレームワークはRailsが優位なんだろうか
Djangoは周辺ライブラリが微妙だし本体も鈍くさい感じがする。
でも、FlaskはSinatraより好きだから、Pythonが嫌いってわけではない。むしろ好き。
ただ、いざ作り始めるとやっぱりRailsが楽だなあってなって、Railsを使い続けている。
同感だ
同じように思っている人が他にもいて安心した
PHPはフレームワークが乱立しすぎているから、RailsをPHPで実装してみようというやつが出てきた。
それに比べてPythonは、Zopeというデファクトスタンダードが既に存在していたけど、
ただ、どうやってもRailsもどきがRailsを超えることはできないのは間違いない。
パクリはオリジナルを超えられない(キリッ って定型句だけど、
これってキリッって言いたいだけだと思う。
D言語って超えたって?
B言語って超えたって?
PHPで同じ事をできないわけではないだろうけど、Ruby on Railsほど簡潔にはできない
まあくだらねえWEBサービス作って喜んでる情弱は早く死ねって事だよ
そういう理由じゃなくてRailsのほうが単純に情報もプラグインも多いからでしょ
linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん
わざわざ不合理で不完全な言語を使うなんて
もしも
>linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん
真実であるのなら、今頃はdjangoの情報とプラグインが溢れかえっているはず
yumや、gdbとgnomeの拡張がpythonであるからといって、それをwebアプリでも使いたいと思う人は少ないというだけのこと。
ソースからインストールする必要があったとしても、web開発ではrubyを使いたいという人が多いというだけのこと。
というか、世界中のPythonプログラマが Remeber Zope!! を合い言葉に
打倒RailsたるWebフレームワークを開発しているはずだけど、
Railsも登場してから、かなりの年月が経過しているんだけどなぁ....
その間にもRailsはRails 3が登場して、REST/AJAXの強化等の進化が継続しているよ
Ruby では
ary.map {|x| x**2}
map(lambda x: x**2, ary)
となり、lambda の本体が1つの式では表現しきれなくなると
.....
と書き換える必要があります。
f = lambda x:(x and f(x-1)*x)or 1
RubyにはPythonのように「lambda本体は式でなければならない」という限定がありませんから、
f = lambda{|x|if x == 0 then 1 else x*f.call(x-1) end}
または
f = lambda{|x|x == 0 ? 1 : x*f.call(x-1)}
と書けます。lambda内でreturnが使えますから、書きたければ
f = lambda{|x|if x == 0 then return 1 else return x*f.call(x-1) end}
でもOKです。
348
これはPythonをdisっているように見せかけてRubyをdisっているのか? と一瞬思ってしまったw
だってRubyのほうが長くない?CLのfuncallみたいなcall()がちょっとうざいし…
そしてどっちもlambda式の中で束縛変数の名前で再帰可能、と
print [x*2+100 for x in [1,2,3,4,5] if x > 2 and x < 5]
暗号のように見える。
puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2+100}
思考の流れと、コードの流れが一致しているので書きやすい。
map(lambda x: x*2+100, filter(lambda x: x > 2 and x < 5, [1,2,3,4,5]))
pythonて可読性が高いのをうたってる割にはそこいまいちだよね
Rubyの場合には、左から右へと無名関数がデータフローあるいは
関数型プログラミングに不慣れな初心者でも、参照透明性のあるコードが自然に書ける
プログラマにとって優しい or プログラミングの楽しさを教えてくれるのがRuby
それと比較すると、Pythonのコードは、関数型プログラミングというものが
いかに高度で難解なものであるかという事をもったいぶってプログラマに押し付ける
もしもPythonしか知らないプログラマであれば、関数型 = 難解 という印象を持つだろう
階乗計算くらいだと単純すぎて、ナゼ重要なのかが分かりづらいと思うのでコードで示す
result_list = source_list.map { |elem|
x = foo(elem.x) # ここが局所宣言を書く部分
x + y # 最後に評価された式の値が、無名関数のリターン値になる
}
Rubyでは、map等に与える無名関数の中で局所的な環境(クロージャ)が作られるから、
x = foo(...) のような代入文がいくつでも(= 複雑な処理でも)書ける
このポイントは、実用的なプログラムを関数型風で書こうとした時に、威力を発揮する
余計分かりづらくなった
高卒ドカタなんだろうなぁと可哀想になる
集合の表記に似せてることが分かるから
355
>map/filterはfor/ifと同じだと言っているだけだから、難解という印象は持たない。
関数型プログラミングに慣れた、あるいは得意な人であれば、そういった印象なんだろね
Rubyの魅力はこれから関数型プログラミングを学ぼうとする初心者、 あるいはそんな初心者へ教える立場から見た、優しさ or 分かりやすさなんだ
[1,4,3,2].sort.reverse.map{|x| x.to_s}.join('-')
Pythonだと読みにくい。
'-'.join(map(str, reversed(sorted([1,4,3,2]))))
Pythonでは思考の流れと一致しないばかりか、「カッコだらけ」のコードになると.....
カッコだらけのコードを分かりやすくする基本的な方法は静的単一代入じゃないか
Rubyのやり方は基本ではなく玄人のやり方だろ
Pythonでは組み込みの型でメソッドチェインはやって欲しくないな
似たようなコレクションtuple,deque,array,queue等にも同じメソッドが必要になってくるし。
372
外部のライブラリでも列挙可能なものは、たいていEnumerableモジュールをimportしてますね
Rubyユーザーは列挙可能なものはmapやselectできて当然だろって思ってる気がします
Pythonは「何かを便利に書くためのしわ寄せ」をはっきり寄せてくる
得意と不得意を言語レベルではっきり主張するのでメリケン好みと言えなくもない
Rubyは全方位になんとなく八方美人なので、全体的になんとなく書きやすくてなんとなくキモくて遅い
「書きにくいってことはその処理に向いてないってことだから諦めろ」を地で行く
無名関数が文を使うほど複雑なら名前を付けるのが Python 流と想像。
これを読みづらいと感じるのは、左から右に流れる
もしかしてアラビア語ネイティブな人からすると逆に読みやすいのか?
今週ブログ巡回中にチェックした本。とりあえずクルーグマン系は読もうかな
知識人とは何か (平凡社ライブラリー) - エドワード・W. サイード
僕が「チャングム」から教わったこと―人を喜ばせる「仕事・もてなし・サービス」の原点 - 田崎 真也
荒木飛呂彦の奇妙なホラー映画論 (集英社新書) - 荒木 飛呂彦
格差はつくられた―保守派がアメリカを支配し続けるための呆れた戦略 - ポール クルーグマン
とりったー (リュウコミックス)
良い経済学 悪い経済学 (日経ビジネス人文庫) - ポール クルーグマン
スティグリッツ教授の経済教室―グローバル経済のトピックスを読み解く - ジョセフ・E・スティグリッツ
文章の書き方 (岩波新書) - 辰濃 和男
Webサービスになるんじゃないかなーってことを思いついたので、自力で作ってみよう思う。
プログラマとして社会人約三年経験後、無職半年目。別業界に行こうと思ってた。
でも思いついたからやってみるって言うのは有りだと思うんだ。
機能拡張とかばっかりだったから、どうしていいのかいまいちわかってない。
・レンタルサーバを借りる
・余裕があればドメイン取得
・開発言語はPHP(とはいえ独自フレームワークばっかりだったのでCakeとか使えないぞ……)
・MySQL実は使ったことがないんだよな。関数をチェックしておく必要性あり。
・UIはHTML5を意識したXHTMLで書いておけば将来的な移行がしやすいのかな。最初からHTML5で書くというのも手か?
・CSS3使ってもいいのかなあ
・関連商品の表示のために何をすればいいのか(DBに閲覧履歴を保持するのか?)
・他にも思いつき次第追記
・ここがわからないのであった
・twitterとかなのかな
まあ、作れないかもしれないけど、その時はその時。
先日「Flashエンジニアが今後10年食べていくには?」というテーマを元に
Flash に精通した Web 技術者達のディスカッションが行われる催し物があった。
http://www.publickey1.jp/blog/11/flash10.html
この記事だけでは内容が省略しすぎているため
時間があれば是非録画の模様もみていただきたい。前半初頭は音量が小さいので注意。
こういった催し物は面白いなと、私はとても楽しく見させていただいた。
http://www.ustream.tv/recorded/19073524
http://www.ustream.tv/recorded/19074357
ディスカッションでは Flash だけではなく HTML5 についても触れている。
ディスカッションの感想をディレクションや営業を行なっている知人に聞いたり、
ネット上の反応を見てみたところ以下のような意見がいくつかあった。
「『Flash が好きな人』だけではなく HTML5 派の人との対談もあればよかった」
「Flash 派の人の話だから HTML5 が使えないという話はいまいち参考にならない」
『Flash 派』『HTML5 派』という くくりで考えてしまう人は
まだまだ多いと実感する。
パネリスト達は
過去から現在までに様々なプログラミング言語を利用し、あらゆる技術に精通している。
Flash という表示媒体/環境開発がベター(時にはベスト)だと考え、
Flash をよく扱っている、という旨を話している。
最後の締めとして
Flash よりも優れたものが登場するのであればそちらに移行するでしょう、
とも言っている。
これだけの説明があったのに
ディスカッション内で触れた HTML5 に対する否定的な話は、
『Flash 派』とやらのポジショントークだと目に写ってしまったのだ。
Java やら C やら objective-c やら perl やら php やら
サーバサイドからスマホ用ネイティブ言語を用いてのアプリ制作まで
色んな事やってます、と言っても
現在世の中には HTML5 を推し、合わせて Flash を否定する記事が結構出回っている。
技術者が話す専門的な用語の飛び交う話よりも
HTML5 vs Flash 的な読みやすい記事に耳を傾けてしまう人はいる。
Apple 製品を好む人は「ジョブズがそう選択したのだから」と
なおさらこういった記事に目を向けてしまう。
「Flash vs HTML5 の話にのせられてしまうのは、よくわかっていない人だ。」
ディスカッション内では、
ネット上の煽り記事を読み不安に思ったクライアントから連絡を受け
きちんと状況をゼロから説明するハメになってしまった、という内容があった。
似たような状況になっている人もいるのではないだろうか。
当方周辺では、
「Flash は駄目だ」「Flash でなくても HTML5 ならできるはずだ」
「HTML5 は Flash の代わりになるものだと言われている」と
クライアント、あるいは仕事先の関係会社から耳にする機会が増えてきた。
技術者の及ばないところで
ベターではない技術が選択、あるいは勧められてしまう やっかい性。
その記事は世間の目には届かない。
TV CM でバンバン流れている iPhone や iPad では Flash を見ることができない
という状況に乗じた
勘違いを正すためには、今までよりもより一層
あるいはメッセージを発信するよう心がけていかねばならないと感じる。
パネリスト達のような
Flash を扱う事が可能な技術力を持ち合わせている人にとって
Flash が終わろうが、代わりの技術が HTML5 やらその他何になろうが
大した影響はない。
『プログラミング』についての話をしてみる事にする。
「世にあらゆるプログラミング言語があるが
「何か一つ言語を習得し
『Flash の事は全く知らないがプログラミングプロフェッショナルの人』
が近くにいるならば是非上記について伺ってみてほしい。
その通りだと答えてくれるはずだ。
他の言語で作ったものを Flash のプログラミング言語に移植することも容易いのだ。
ここで上記三行の「他の言語」を「JavaScript」に置き換えてみてほしい。
HTML の DOM 操作に必要な言語は JavaScript である。
言語は、Flash ならば ActionScript、HTML5 ならば JavaScript を用いる。
画面描画は
あるいは用意されている描画用 API を ActionScript で呼び出し、
あるいは用意されている描画用 API を JavaScript で呼び出す。
Flash と似たような技術として Java Applet や Shockwave があるが、
これらも一緒で
言語を変え、その技術に合わせた描画を行う処理を記述するだけだ。
Web 技術者が何かに属していて、何かには属していないかのような区別の仕方は
的がはずれている事を なんとなく感じていただけただろうか。
仕事に対し、あるいは表現したい事に対し、ベターな選択を行うだけの事なのである。
環境や表示内容に合わせ両方を採る選択もあるだろう。
パネリストの中に ActionScript が好きだ、という人がいた。
これは別に
Flash が好き(製品のファン)だから ActionScript が好き、と言っているのではない。
ActionScript が優れたプログラミング言語だと判断しての発言なのだ。
HTML5 を選択するだけの事であり、
その別の技術を選択し、
Flash より優れた技術が登場しなければ Flash を使い続ける、
ただそれだけの事なのである。
もう少し突っ込んだ話をすると
Flash のプログラミング言語である ActionScript(ActionScript 1.0)と
HTML 表示制御を行う言語 JavaScript は 実は同じ言語仕様である。
『ECMAScript』という単語で調べてみてほしい。
「Flash と HTML5 は対立するもの」と考えていた人、
あるいは ActionScript や JavaScript を触れたことがない人にとって
「え?そうなの?」と思う人もいる事だろう。
JavaScript は大規模開発に向いていない、という話は聞いたことがないだろうか。
同様の言語仕様である ActionScript 1.0 はこの問題を解決するため
ActionScript 2.0 から ActionScript 3.0 へと進化していった。
Flash は開発がし易い、という話がよく挙げられるが
その理由の一つがこれである。
現行の JavaScript と ActionScript 1.0 は ECMAScript 3 準拠に対し、
ActionScript 3.0 は ECMAScript 4 準拠である。
言語として進化しているものを Flash は採用しているので
開発は抜群にし易い。
ECMAScript 4 準拠の JavaScript も登場する日もあったかもしれなかったのだが、
ECMAScript 4 標準化が白紙、
ECMAScript 4 は無かったことになってしまったのだ。
ActionScript 3.0 で作成したプログラムが
ちなみに JavaScript は大規模開発に向いていない、という事に対し、
最近では Google が新言語 Dart というものを開発している。
位置づけとしては ActionScript 2.0 に近いと比喩した人もいる。
ActionScript 2.0 はコンパイル時 ActionScript 1.0 に変換されて出力される。
Dart も同じく JavaScript 変換機能を持つ。
先の事は誰にもわからない。
HTML5 が成長するとは必ずしも言えない。
技術者は身を持って知っている。
表示と動作の差異、技術者はずっと苦しめられてきている。
めんどくさい。コストがかかる。
HTML5 も同じ道を辿るのでは、と言われてしまうのも仕方がない。
実際に HTML5 の各ブラウザの実装具合はバラバラである。
Flash はといえば、
今でも 10年以上前のスクリプト言語 (ActionScript 1.0 よりも前の言語)で
Flash が動作するブラウザがいつまで携帯に搭載され続けるのか、
まだ誰にもわからない。
今後も当面携帯向け Flash を作り続ける事になるのかもしれない。
携帯向け Flash は一つの容量が小さいというのが救いである。
IE6 対応 HTML サイト制作にせよ、携帯向け Flash 制作にせよ
状況に応じて何を選択するかを判断できるほどの技術力を身につける事
選択する技術に何ができて何ができないのか、
どの技術を組み合わせるとよいのか、
自ら判断できるようになった時、一人前の Web 技術者になったと言えるだろう。
一つ何かをモノにしてしまえば前述の通り移行は容易い。
それを極めるくらいまでとことん勉強してほしい。
続けていくと見えてくるはずだ。自信という名の悟りの道が。
気になった点をいくつか。
現状の HTML5 の実装具合のバラバラさに対し、
「(HTML5の)表示の差分を埋めてくれる何かが登場するかもしれない」
と言う発言があった。
言った当人も会場にいる人達も、きっとこう思っただろう。
「それってなんて Flash Player?」と。
「あれはやめたほうがいい」という発言があった。
勝手に注釈するのであればこの発言は
「Flash で作られた重たい Web を HTML5 でまた再現するつもりなの?」
という皮肉であろう。
FuelPHP Advent Calendar 2011 の 15日目。
FuelPHP の URL とコントローラの関係から続いて寄稿します。
早速ですが本題。
といって、そもそもの経緯を先に。
fuelphpを試そう!ってなもんで既存のサーバでPHP5.3にしよう〜という所が発端。
既にyumでPHP5.2ベースで環境が構築してあったせいで、色々とconflictしてインストールに手間取る。。。
案外、環境構築ってはまると手間よねーといった意味合いも込めて、
今後の参考迄に割とストレートにいける様にセットアップ手順をログります。
今回はせっかくなので、色々と最新パッケを用意します。
なので、fuelphpを動作させるために、今回は最新のRPMパッケからPHP5.3をインスコ。
$ sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
(PHPを先にインストールすると色々こけるので先にmysqlをセットアップ)
で起動テスト。
いや、こけた。
起動せず。。
ふむ。repositoryをremi-testにしなければダメな模様。
再度インストールの場合には依存関係のパッケージでconflictするのでとにかく消す。
ごっそり消す!!
でインストール。
$ sudo yum --enablerepo=remi-test install mysql mysql-server
$ sudo /etc/init.d/mysqld start
Starting MySQL: [ OK ]
いった!
自動起動設定だけ済ませて次へ。
既存のphp5.2以前がある場合は、やはりとにかく、ごっそりremove!!
で以下に続く。
$ sudo yum --enablerepo=remi install -y php php-mysql php-xml php-mbstring php-common
ほんとはハマった辺りのログとかも入れた方がいいんでしょうが、今回はこれでご勘弁。
ソースから入れた方が楽だよなぁ・・・と何度か方向転換しかかりましたが・・・なんとか。
明日16日目は@madmamorさんの「FuelPHPのcoreクラスを拡張してみる。」ですね!
おたのしみに!
完全な初心者の状態から勉強を始めてから大体5ヶ月でウェブサービスが完成したので何を用意したり何をどうやって勉強したらいいのか色々書いてみました。
アイデアはあるんだけど、プログラムとか難しそうで自分にはウェブサービスなんて作れないと思ってる人がいたらその敷居を少しでも低くできたらいいなあなんてと思ってます。
ちなみにボクはぼんやり1年くらいはてなブックマークにのってる記事を見ていてプログラムとかできたらいいよなあなんて思っていてようやく重い腰をあげた人です。
さらに自分は文系で数学も英語もロクにできない人なので、基本的に誰でもサイトは作れると思います。
そもそも中学生でもプログラミングができるんだから大人に出来ないわけないですよね。
これからウェブサービスを作りたいっていう方の参考になればと思います。
※自分も初心者なのでまちがってることがあったら教えてください。
●何を用意すればいいのか
※自分がWindowsなので何個かWindows向けのソフトを紹介しています。
※Macの方は申し訳ないですが、Mac向けのソフトをご自分で探してください。
(1)メモ帳
アドビのdreamweaverっていう便利なソフトがあるらしいですがお金もかかるし別に必要もないと思います。
ただのメモ帳だと使いづらいのでボクは「TeraPad」っていうフリーソフトを使っています。
例えばプログラム言語ごとに表示を切り替えると、関数とかコメント部分の色が変わって見やすくなって便利です。
・TeraPad : http://www5f.biglobe.ne.jp/t-susumu/library/tpad.html
サイトを作っても各ブラウザごとに見え方が違うのでそれぞれ確認するために何種類かブラウザをインストールしましょう。
ボクはIEとFireFoxとChromeの3つをそれぞれ表示して確認していました。
OperaとかSafariも本当は確認しないといけないと思うんですがこの3つで十分だと思います。
(3)XAMPP
ザンプって読みます。ざっくり言うとローカル環境(自分のパソコン)でプログラムを動かす環境を作るソフトです。
いちいちサーバーにアップロードしなくても、プログラムが動くかを確認できるので便利です。
またレンタルサーバーでプログラムが暴走してしまうと迷惑がかかるらしいのであらかじめ自分のパソコンで確認するのがいいようです。
・XAMPP: http://www.apachefriends.org/jp/xampp-windows.html
(4)ドメイン
何とかドットコムっていうやつです。ネット上の住所的なやつです。example.comとかexample.netとか。
ボクはお名前.comでドメインをとりました。ドメインの個人情報を隠せる?サービスがあるのが理由です。
まあどこで取っても大して変わらないと思うので目についたところで取るといいと思います。
「.com」だったら年間1000円くらいです。長すぎるドメインはとらない方がいいかもです。
(5)サーバー
ネット上にファイルをアップロードするところです。ドメインが住所だとすると土地みたいなイメージです。
ボクはさくらインターネットさんのレンタルサーバー(スタンダードプラン)を借りています。
理由はグリーの社長さんがほめてたから。お金も月額500円なので安いです。
同じ500円だとニコニコ動画のプレミアム会員になれますね。ちなみにボクは一般会員です。
さっきファイルをアップロードとかさりげなく書きましたが、そのファイルをアップロードするソフトがFTPソフトです。
ボクはFFFTPを使っています。最初使い方がわからなくて戸惑いましたが慣れれば簡単です。
・FFFTP : http://www2.biglobe.ne.jp/~sota/
(7)FireMobileSimulator(FireFoxのアドオン)
携帯電話のサイトを確認するには基本的に実機で確認するのが一番ですが、個人で全部そろえるのは難しいです。
そこでFireFoxのアドオンのFireMobileSimulatorという拡張機能を使って簡易的に確認するのがおすすめです。
XAMPPのようなローカルサーバでも確認することができます。
・FireMobileSimulator : http://firemobilesimulator.org/
FireMobileSimulatorで確認できるといってもやはり見え方は違います。念のため実機で確認しましょう。
ボクはiphone使っていてそれの確認はしてるんですが、androidの友達がおらんのでまだ確認してなくて実はまだ不安だったりしてます。
上と同じようにやはり実機で確認した方がいいです。特にガラケーは見え方もそうですが、プログラムがうまく動かなかったりします。
例えば、AUだけフォームに「enctype="multipart/form-data"」を入れてると文字化けするという謎の現象が起きたり。
他にも色々あって制作に時間がかかったのは正直このガラケーのせいです。色々3キャリアで統一とかしてくれないんですかねえこれ。。。
友達のY君とMさんとNさん本当にありがとうございました。匿名ブログだけど感謝してます。
●何を勉強すればいいのか。
さて具体的に何を勉強すればいいのかわからない人がいると思いますが、以下を勉強すればウェブサービスが作れます。
ということでひとつずつ説明。
マークアップ言語っていうらしいです。プログラムじゃなくてhtmlファイルを作る言語です。
とりあえずhtmlでサイトの文書の論理構造を書いて、cssでサイトの見た目をキレイにするものだと思ってください。
適当に検索すれば勉強できるサイトがたくさん出てくるのでそこで勉強してください。
本も売ってますけど基本的なところは難しくないので買う必要はないと思います。
調べると、html5とかxhtmlとかあって戸惑うかもしれませんが、とりあえずPCとスマホなら何でもいいと思います。
(ガラケーについては各キャリアごとに対応させる必要があります。書くとすごい長くなるのでガラケー用にサイトが作りたいなら調べてみてください。)
ただhtml5が一番新しいので今後勉強される人はそれの方がいいかもしれないです。
ちなみにボクはたまたま見たサイトがxhtmlの説明だったので今回はxhtmlで作りました。
まだボクは90年代初頭のホームページみたいなデザインしかできないので偉そうなことは言えないんですが(笑)
最初はhtmlだけでサイトが作れると思っていたんですが、はてなのような動的なサイトを作るときは何かしらプログラミングする必要があります。
んで、いろいろ調べるとperlやらRubyやらJAVAやら色々でてきて一体どのプログラム言語がいいのか悩むと思いますがウェブサービスが作りたいならPHPがいいと思います。
理由はウェブに特化した言語っていうのと他に比べると簡単で勉強時間が少なくて済むらしいので。
PHPなんかで本なんか買う必要はないらしいんですが、ネットのサイトだとよく理解ができなかったので本を買いました。
以下の書籍がとてもわかりやすくていいです。おすすめです。やっぱり本は体系的にまとまってるので勉強がしやすいです。
この本の通りやっていけばとりあえずプログラムが動く感覚が得られます。
あとすごい賢そうなことをやってる感覚になるので頭がよくなったような気がしますよ(笑)
MySQLもこの本で勉強ができます。MySQLというのはデータベースで、そういうソフトです。
他にもOracleとかPostgreSQLとかあるらしいですが、
とりあえずMySQLでSQL文っていうのを勉強するとデータの検索だったり、データのアップデートだったりが数行でできたりするのですごい楽になります。
決して簡単ではないですけど、思ったより難しくはなかったっていう印象です。
自分は大抵その時理解できなくてもだいたい一晩寝てから、もう一度頭からやり直すと理解できました。
(3)Apache
ボクはさくらさんのレンタルサーバーを借りていて今回はあまりいじってないんですが例えば「.htaccess」という名前のファイルを作るとapacheの設定をいじることができます。
例えばアクセスされたくないファイルがあったらそういう指定を「.htaccess」というファイルに書いておけばアクセスされないようになります。
基本的にパソコンと同じように作ればいいです。ボクは以下の本を見て勉強しました。
「iPhone+Androidスマートフォンサイト制作入門(たにぐちまこと)」
正直ネットの情報でも十分だと思いますが一度体系的に勉強するのもいいと思います。
ガラケー向けのサイトの制作は特殊で一度頭真っ白の状態で勉強した方がいいです。それだけPCとスマホとは全然違います。
ネットにも情報はたくさんありますが、断片的なものなので以下の書籍で体系的に勉強してから補助的にネットで調べた方がいいです。
この本は実践アプリケーション集というだけあってそのまま使えるコードが収録されているのがとてもいいです。
正直PHPのプログラミング自体はそこまで難しいという印象はなかったんですが、この本に出会わなかったら多分ガラケー向けのサイトは作れなかったと思います。
もしガラケー向けのサイトが作りたいならこの本を買うのが近道だと思いますよ。
CakePHPとかSymfontとかいうのがあるらしいです。
このフレームワークを使うとあらかじめある程度のところまでできてるんで、ボクみたいに全部TeraPadで手書きしなくてもいいみたいです。。。
(2)javascript
PHPはサーバーで動作するプログラム言語ですがjavascriptはブラウザ上で動作するプログラム言語です。
非同期通信なんていうよくわかんないけど何かすごいこともできたりするらしいですよ。
●もし調べまくってもわからなかったら
もし一日中検索してもよくわからなかったらそういう時はネットの頭のいい人たちに質問しましょう。
ボクは以下のサイトで質問していました。
(1)ヤフー知恵袋
巷ではヤフー知恵遅れなんて言われてますが、コンピュータ系の質問に関してはしっかり教えてくれる人がほとんどです。
ポイントを100枚くらい使うとカテゴリマスターなんていう天才が回答してくれます。
(2)2ちゃんねる
どういうスレッドなのかよく読んで質問しないとボロクソに言われますが、2ちゃんねるなのに皆さんすごい優しく教えてくれます。
たまにケンカしてたりすることもありますがそのときはケンカが終わるまで待ちましょう。ケンカの流れで質問がスルーされたりします。
ヤフー知恵袋も2ちゃんねるもそうですけど、質問するときは自分の環境をしっかり書いて何がしたいのか、どんなエラーがでるのか明確に書きましょう。
回答する人もわからないですし、自分がほしい回答がまず来ないと思います。
あと当たり前ですが回答してくれたらお礼をしっかりいいましょうね。
●こうして出来上がったウェブサービス
こうやって今回できあがったのが6人まで登録ができる招待制のレンタル掲示板です。
「ひそり-秘密共有ネットワーク」(http://hisori.com/)です。
なんだ掲示板かよー!!とか言わないでください(笑)これでもけっこうがんばったんで。。。
そういえばサイトを作ろうと思った経緯を書いてなかったんでちょろっと書いておきます。
ボクはミクシィとツイッターをやってるんですが、一瞬その時だけ仲のよかった人の更新とか見たくなかったりするんですよね。
でもマイミクを外したりフォローを外したり小心者のボクにはできなかったりするわけです。
そもそもあーいうソーシャルって自分のキャラに一貫性をもたせないといけないから窮屈なんですよね。
例えば、会社の同僚には真面目を絵を書いたようなキャラだけど学生時代の友達には下ネタ好きのどうしようもないキャラだったりすると
マイミクやフォロワーにその会社の同僚がいたら、下ネタなんか書きたくても書けないという窮屈さがソーシャルにはあるわけです。
だったらあらかじめ人数制限しておいて、例えば同じ学生時代の人しか見ることができないサイトがあれば
下ネタだって気にしないで何でも書けるよねっていう考えに至ったわけです。
今回6人までという人数制限と招待制っていう形にしているのはそういう理由と本当に仲のいい何でも話せるグループに使ってもらいたかったからです。
んで、ネットにそういうのがなさそうだったので勉強がてら自分で作っちゃえ!ってことで今回作りました。
ちなみに何で秘密共有ネットワークなのかというと「招待制無料レンタル掲示板」だとどんなサイトかイメージがつかないと思ったからです。
じゃあ何て名前にしようかと考えた結果、秘密でも何を書いても大丈夫ですという意味を込めて「秘密共有ネットワーク」って名前にしました。
とまあ、そういうことで初心者でボクみたいな完全文系の人でもこれくらいのサイトなら作れるんで
もしプログラムとか難しそうとかそういう理由でウェブサービスの制作を躊躇してる人はぜひチャレンジしてみてださい!!
※もしサイトが変な挙動がしてるとかあったら更新報告用にツイッターのアカウントを作ったんでよかったら教えてください。
http://twitter.com/#!/hisori_com/
ではでは。。。
生物と無生物のあいだ (講談社現代新書) 福岡 伸一
不機嫌な職場 (講談社現代新書) 河合 太介、高橋 克徳、永田 稔、渡部 幹
臆病者のための株入門 (文春新書) 橘 玲
日本はなぜ世界でいちばん人気があるのか (PHP新書) 竹田 恒泰
わかったつもり (光文社新書) 西林 克彦
いつまでもデブと思うなよ (新潮新書) 岡田 斗司夫
ツイてる! (角川oneテーマ21) 斎藤 一人
日本を貶めた10人の売国政治家 (幻冬舎新書) 小林 よしのり
脳が冴える15の習慣 (生活人新書) 築山 節
「世界征服」は可能か? (ちくまプリマー新書) 岡田 斗司夫
世にも美しい数学入門 (ちくまプリマー新書) 藤原 正彦、 小川 洋子
TPPが日本を壊す (扶桑社新書) 廣宮 孝信、 青木 文鷹
http://anond.hatelabo.jp/20111113010022
こちらに触発されて書いてみる。辞めてからかなり時間も経ったのでそろそろ書いてもいいかなと。
訓練内容はAdobeのCS4の操作方法→自主制作というのがだいたいの流れとなっていて、それぞれのアプリケーションのテキスト(フォトショ、イラレ、DW、Flash)とHTML+CSSの本という感じ。
このテキストを選定しているのは教室を運営している会社のようで、(伝聞で聞いたので定かではない)もし運営してる会社がWEB制作を知らないとか知っててもテーブルレイアウトだった場合にはあまりいい本は選ばれないようです。また運営会社同士でヨコの繋がりで話し合って本を決めてる部分もある(複数の教室で同じ本だった)のかな?と予想しました。
実際の訓練内容はハローワークで決めているのか運営会社で決めているのかは解りませんが、講師は訓練スケジュールやテキストに関してなにも言えない、わからないまま講義が始まります。
HTML5時代だというのにFLASHにえらく時間を割いたりするスケジュールで、受講生から「せんせーFLASHってどうなんすか?」と物凄く困る質問をされたりします。
また受講生はAdobe製品をアカデミックで買えるというナイスな特典があったりしますが、授業で使ってるのはCS4だけど買ったのはCS5.5みたいな微妙だけど重要なアクシデントが発生します。
HTMLの本もXHTMLならまだしもHTML4.01(しかもStrict)で書いてる本だったりすることもあります。
受講生はテキストを実費で購入しているため、ないがしろにするわけにはいかないので「これいらんだろ」とか思ってもとりあえず本の通りに進めなければなりません。(例えばHTMLの本を早めに終わらせてXHTMLの話をして余計混乱させたりとかあった)
ここで問題なのは受講生は基本的にお金に余裕がある人は少ないです。
AdobeのWebプレミアムがアカデミックで買えるとはいえ10万以上の余裕があるなら基金訓練なんかコネーよ!という人が半数以上いるんじゃないかと。
体験版はあるけど1ヶ月で終わるし、訓練自体は半年あるわけです。
なのでGIMPとかInkscapeとかもサラっと存在を教えておいたりします。
あとはフォームのHTMLだけ教えて肝心のPHPやらPerlやらには基本触れないのでそこも工夫が必要です。
教科書3冊くらいクリアするころには生徒からこれで本当にWEB屋さんになれるの?とか疑問を持たれますので、フリーでやっていく方法とか自分の経験談の話をすると人気の講師になれますが、会社からはいい顔されないかもしれません。職業訓練なのでどこかに就職するのが大前提なんです。
指導要綱みたいなものはキホンないので講師の思うとおりに教えられますが、上記のテキストの縛りとスケジュールの縛りがあるので本が変わる前にグループを作ってもらって共同作業させることを取り入れました。実際にWEB屋さんにいったら分業しますしね。
さて、各アプリケーションのテキストがいいものだったらよいのですが、そうでない場合は自分で課題とかを作る必要があります。
フォトショやらイラレはいいんですが問題はHTML+CSSとFLASH。FlashなんかはASがゴッソリ抜けてたりすると生徒から「やりたいことができない!」と嘆かれます。CSSなんかも「やりたいことができない!」と言われがちです。
実際は一人の講師が2コマやることがザラなんじゃないかと思います。
AM9時からお昼を挟んでPM3時まで+PM3時からPM9時まで。若干ズレはするでしょうがこんな感じなんじゃないかと。
これで課題を自作していたら睡眠時間は3~4時間くらいになっちまいます。ああ祝日ってステキ・・・。とか思い始めます。フリーランサーは普段の仕事は全部お断りしないとイカンかもしれません。
テキストの内容とスケジュール(x月x日からx月x日までFLASHとか書いてある)なんか完全に合わないので苦悩します。
事前に用意できればいいのですが先に書いたようにスケジュールやテキストは開講数日前にコレでヨロ!的に渡されますので初めてやるひとは対応難しいでしょう。
とりあえず今日はここまで。
津波で浸水したサクラ狂い咲き 青森県八戸市三島下公園 2011/8/29
tp://www.47news.jp/photo/265458.php
岩手県宮古市で季節外れのサクラ開花. (読売新聞) 2011年10月05
tp://www.yomiuri.co.jp/national/news/20111005-OYT1T00105.htm
津波かぶった桜に季節外れの花(岩手県大船渡市、岩手日報) (2011.9.1)
tp://www.iwate-np.co.jp/hisaichi/h201109/h1109014.html
いわきで桜咲く 秋なのに春到来?(福島民報) 2011年9月17日
tp://www.minpo.jp/pub/topics/jishin2011/2011/09/post_1948.html
tp://www.digibook.net/d/d004857b909caed4a246c524056e7445/
tp://suzakiokami.jugem.jp/?eid=4
桜返り咲き(狂い咲き) 千葉県ドイツ村で (2011/10)
tp://sakura.way-nifty.com/sakura/2011/10/post-3e98.html
tp://yakata.i-ra.jp/e400704.html
秋空の下、人知れず桜咲く 長野県伊那市・美和ダム管理支所 11年10月 8日
tp://www8.shinmai.co.jp/flower/2011/10/08_014118.php
tp://blog.blochiita.jp/mimi/kiji/55187.html
tp://hanako0119.cocolog-nifty.com/blog/2011/09/post-a1ec.html
tp://www3.nhk.or.jp/news/html/20111001/k10015971701000.html
tp://sankei.jp.msn.com/life/news/111004/trd11100419200010-n1.htm
tp://news.tbs.co.jp/20111009/newseye/tbs_newseye4847106.html
tp://www.jalan.net/yad324016/blog/entry0001487983.html
tp://sakujo.webspace.ne.jp/bbs/
神戸市生田神社で染井吉野咲く、移植の影響か (2011/9)
tp://mytown.asahi.com/hyogo/news.php?k_id=29000001109150005
tp://www.kobe-np.co.jp/news/shakai/0004535027.shtml
tp://www.shikoku-np.co.jp/kagawa_news/locality/20111007000129
秋に桜が狂い咲きするわけは?徳島県鳴門市 (2011/10)
tp://www.bes.or.jp/naruto/blog/detail.html?id=2716&category%5B4%5D=4
tp://plaza.rakuten.co.jp/miemom/diary/201109110000/
tp://www.nishinippon.co.jp/nnp/item/267169
サクラが返り咲き 鹿児島県南さつま市笠沙 (2011 09/20)
tp://www.373news.com/modules/pickup/index.php?storyid=35139
tp://futao2.blog135.fc2.com/blog-entry-309.html
津波原因?季節外れの桜咲く 岩手県山田・中央公民館近く (2011/10/20)
tp://www.iwate-np.co.jp/cgi-bin/topnews.cgi?20111020_7
秋晴れの下、季節外れの桜が開花 新潟市東区 2011/10/15
tp://www.niigata-nippo.co.jp/news/pref/28124.html
新潟県燕市・吉田ふれあい広場で一本のソメイヨシノが季節外れの開花 (2011.10.18)
tp://www.kenoh.com/2011/10/18kuruizaki.html
tp://www.fukaya-toyosato-j.ed.jp/index.php?key=jowwje6w1-45
季節外れのサクラ開花 千葉県成田ゆめ牧場 2011.10.12
tp://sankei.jp.msn.com/region/news/111012/chb11101222140006-n1.htm
日本橋サクラ 勘違い? 東京都中央区 2011年10月17日
tp://www.tokyo-np.co.jp/article/national/news/CK2011101702000169.html
Future SEVENに桜が咲きました。 東京都港区南青山 2011年10月19日
調布市・味スタ通りは、もう春?-季節外れの桜開花 東京都 2011年10月19日
tp://chofu.keizai.biz/headline/815/
神奈川県秦野市 季節はずれの桜が開花 2011年10月27日
tp://www.townnews.co.jp/0610/2011/10/13/121243.html
tp://www.sannichi.co.jp/local/news/2011/10/12/7.html
tp://www.parupi.biz/blog/2011/10/post-712.html
季節外れのサクラ咲く 静岡市・葵区の駿府公園 2011.10.13
tp://sankei.jp.msn.com/region/news/111013/szk11101317540011-n1.htm
春と勘違い?長野県松本市で季節外れの桜咲く 11年10月20日
tp://www.shinmai.co.jp/news/20111020/KT111019GUI090005000.html
伊勢・二見興玉神社 台風の荒波 海水浴びた桜に花 2011/10/13
tp://www.isenp.co.jp/news/20111013/news06.htm
「冬眠」忘れた ソメイヨシノ 滋賀県大津市県立図書館 2011年10月13日
tp://www.acs.yomiuri.co.jp/e-japan/shiga/news/20111012-OYT8T01204.htm
tp://headlines.yahoo.co.jp/hl?a=20111014-00000184-mailo-l25
あらっソメイヨシノ…賀茂川沿い 京都府京都市 2011年10月14日
tp://www.yomiuri.co.jp/otona/naturallife/08/kyoto/20111014-OYT8T00558.htm
奈良市山陵町山上八幡神社 季節外れのサクラ咲く 2011年10月14日
tp://mytown.asahi.com/nara/news.php?k_id=30000001110140002
tp://yakuri.blog.ocn.ne.jp/blog/2011/10/post_75b8.html
サクラ狂い咲き 徳島市眉山パークウェイ 台風でダメージ原因? 2011/10/13
tp://www.topics.or.jp/localNews/news/2011/10/2011_131846965467.html
tp://mytown.asahi.com/tottori/news.php?k_id=32000001110190003
tp://www.chugoku-np.co.jp/News/Tn201110150130.html
サクラさん、まだ秋だよ 宮崎市船塚 県総合文化公園 2011年10月18日
tp://mytown.asahi.com/miyazaki/news.php?k_id=46000001110180002
--------
「八のつく日に気つけて呉れよ、だんだん近づいたから、辛酉(かのととり)はよき日、よき年ぞ。
冬に桜咲いたら気つけて呉れよ。
八月二日、ひつくのかみ。」
下つ巻 第三十帖
旧暦の日本の四季は大まかに分けて、1・2・3月=春、4・5・6月=夏、7・8・9月=秋、10・11・12月=冬となる
今年は10月27日が旧十月一日であり、今は冬に入っている
つまり神示で言う「冬に桜咲いたら」の言葉は既に日本全国で実現している
次に来る「八のつく日」の「辛酉」は旧十二月八日、新暦の1月1日、元旦になる
「よき日、よき年」とはそういう意味だ
プログラミングを勉強したいと思って始めると、イメージつかめなくて苦戦すると思う。
技術者になるような人たちは、先に「これが作りたい」って作りながらエラー吐きまくりながらおぼえるので早いんではないか。
とりあえずjavascriptとかPHPあたりの、そこそこ適当でも動く奴使って、考えるよりもソースみて覚えた方がいいかも?
どの言語もベースの処理は似てるから、一種類解るようになると比較対象ができていいとおもう。
最初苦労する分、思うように作れたときの達成感はひとしおだよ。
がんばー。
違うけど。
printf("Hello World!!\n");
の先にあるんだ。
データ処理をしたい、ユーザーに選択させたい、次のステップに進むとき、マイクロソフト系は環境を用意しやすいんだよ。
データベースアクセスだって、VBならアクセスライクのDBでSQLを疑似体験できる。
ここのステップを超えられないと、プログラムで「何が出来るか」に気付けずに、「つまんない」で終わっちゃうんだよ。
正味な話、PHPとかpythonって、初心者に「次」を用意するのがしんどいんだよ。
プログラミングは静的言語(C/C++,Java,C#など)と動的言語(rubyとかpythonとかperlとかいわゆるスクリプト言語)と関数型(lispとかF#とかhaskellとか)を一つずつくらい眺めた方がいいと思う。
どれか一個くらい自分に合ってるのが見つかるかも。
やりたいことにどの実装系が一番適しているかを考えるべきで、実装系を目的に合わせるべきじゃない。
そういう考えでいると、PHPで何でもやる奴とか出てきて迷惑なんだ。
そもそものロジック構築などは、ターゲットには依存しても、言語にはほとんど依存しない。
馴染むための登竜門って意味で言えば、VisualStudioなどのGUIでデバッグが出来る環境をもった言語が良いし、VB,C#などのサンプルが豊富で結果を確認しやすい言語が良いと思う。
C
をこの順番で覚えた。
変り種は2006年に勉強を始めたC++で、軽量言語花盛りのその時期に、CGIを書きたいがためにC++を学んだ。
C++は習得が難しい言語と言われているが、必要性を感じなかったので参考書の類は買わなかった。
他の言語もそうだ。
参考書は必要なかった。
これ自体は悪い本ではない。
でも結局、最初のWEBアプリ(サービス)はPHPではなくC++で作った。
この読書は、購入前に漠然と感じていたPHPへの不快感を再認識させただけだった。
そして学んだ。
歴史は繰り返す。
今まさに「明解Java 入門編」を購入しようか思案中なのだ。
今までJavaを避けてきたのは「ジェームズ・ゴスリンが嫌い」あるいは「金の匂いがする」からだ。
PHPの経験から言って、Javaも実用できないかもしれない。
Javaを覚えれば幅が広がるのは分かるんだけど…
なぜだろう、ワクワクしない。
http://anond.hatelabo.jp/20070508170219
もっと上手いやり方があるんだろうなぁ。
$i3=1; $i5=1; $flag=0; for($n=1;$n<101;$n++){ if($i3==3 && $i5==5){ echo "FizzBuzz¥n"; $i3=1; $i5=1; }else{ if($i3==3){ echo "Fizz¥n"; $i3=1; $flag=1; }else{ $i3++; } if($i5==5){ echo "Buzz¥n"; $i5=1; $flag = 1; }else{ $i5++; } if($flag==0){ echo $n."¥n"; } $flag = 0; } }
※一部全角化(&¥<)
THANKFUL WORLD - 世界を「ありがとう」でつなげよう -
似たようなサービスは既にあると思いますが、PHPプログラムの練習課題として作成してみました。
投稿者から「ありがとう」にまつわる話を投稿してもらい、感謝の気持ちを伝えるサービスです。
この中で一番の目的だったのは3番目の最後までやり遂げるだったりします。
本当にどんなものでもよかったので、最後まで作り上げて公開するのを目標にやってきました。
Webサーバの構築課題も含めてなので、さくらのVPSを一台契約しました。
インストールから設定まで行って初めて分かることも多くありました。
1週間
今できることを高めることも重要ですが、自分に足りないものを吸収してより良い形で昇華することも必要。
個人でサービスを作る以上、自分自身がクライアントなので途中で行う仕様変更(改善や思いつきによる変更など)に対する文句のぶつけ場所もありません。
念入りに設計を行い、それに基づいて開発を行う。
何事も初めが肝心です。
ひと通り開発を行ってみて、自分の知識や能力についてもある程度把握できたように思えます。
今できることもわかったので、次は今できないことをできるように知識を深め、
今できることと合わせて新たな段階に進めればと思います。
ソーシャルゲームはイノベーション。だがイノベーションは、すべてのユーザーが接続された単一のサーバーを使う、マルチプラットフォーム、マイクロトランザクション、コレクション中心のゲーム性、ゲームマネーとリアルマネーの最小限の垣根、スマートな課金システム、ゆるやかなコミュニケーションではない。ソーシャルゲームのコア技術。だがゲームや伝統的なオンラインゲームやウェブサービスなどが実現済み。だが人類史上ソーシャルゲームだけが実現した特徴。人間とボットが混在してもボットの存在が気がつかれない革新的な環境。ボットが人間に擬態して人間とゲームをプレイしてゲームを盛り上げるSF近似の環境が実現。ソーシャルゲームではユーザー同士の人間的なコミュニケーションを極限まで減少することでこれを可能に。革新的なことにもかかわらず不思議に語られない。すごく残念に思う。私が語ろう。
#
ボットは、パソコン MMO では周知の事実で違法がはびこっている。これから話すことは少し違う。ソーシャルゲームのボットは、ゲームメーカー自身によって開発された。ボットは、普通のユーザーには区別がつかない。仲間やあなたの競争相手のいくつかはボットと考えるのは簡単。多くの人が疑問に思う。人間とボットの区別がつかないはずがない。セカンドライフとパソコンのMMOのような環境でボットが人間のフリをするのは大変困難。MMOはすべてのプレーヤーの動きをリアルタイムに見ることができる。すべてのプレイヤーがどのように動作するかを誰もが見ることができる環境では、特異な行動パターンは際立って目立つ。ほぼ同じアクションが繰り返されるならすぐにボットとわかる。ありえない動作もすぐにわかる(超高速移動、不可能なタイミングの攻撃を続ける、など)。MMOのボットのためのチートツールは不自然ではない動きの再現に苦労。NPCキャラの移動は不自然。同じ場所しか歩かない。不自然に遠回り。隙間に入って抜け出れなくなるなど。人間の操作する自然な移動は非常に困難な技術。ボットが人間とパーティを組んで行動するのは不可能。ボットは会話できない。MMOはキーボードと共にある。ゲームのチャット機能も充実。チャットをするのは当たり前。完全な無言のユーザーは不自然な存在。協調行動は全く取れない。すぐにボットが露見するであろう。
#
対照的にソーシャルゲームでは人間とボットを区別する機能が軽視。あるいは未実装。他のプレイヤーの行動は目立たない。気がつかない。他のプレイヤーにあまり興味を持たないことでボットことに気がつかない環境。他のユーザーが何をしているのか分からない。ユーザーの仲間は行動記録を閲覧できる。ユーザーと対戦したユーザーとの試合結果は見ることができる。それは非常に断片的。ボスを倒した、ダンジョンをクリアした、などの結果しかわからない。他のユーザーのプレイの状態を把握することはできない。ソーシャルゲームでは装備の着替えを繰り返しているユーザーがいても誰も気がつかない。MMOで装備の着替えを繰り返しているユーザーがいたらすごく目立つ。ソーシャルゲームでは異常な行動パターンをとっていても問題にならない。目立たない。ボットにとても都合が良い。ソーシャルゲームでは移動に必要もない。移動はリンクのクリックだけ。人間らしい移動アルゴリズムは不要。ソーシャルゲームでは会話がとても軽視。他ユーザーへのコメントや掲示板がある。しかしあまり活用されない。ゲームに協力する戦略性が必要が薄いため。またキーボードが使えない。ずっと無言のユーザーも珍しくない。会話がとても少ない。ボットの理想的環境。ソーシャルゲームは最低限のコミュニケーションで成り立つことに最適化。それは同時にボットが人間に擬態することにも最適化。結果的にボットが人間に擬態できる環境が生まれている。結論。リンクをランダムクリックするだけでもボットが完成。それは不自然なゲームプレイが予想される。だが他ユーザーは気がつかないであろう。
#
ボットを活用しているのは違法ユーザーではない。ゲームの開発会社が用意している。運営している。言い換えればハック不要。無制限にデータベースへのアクセスが可能。実際にゲームを操作する必要ない。データベースに記録を行えば良い。SQLだけでボットを作ることが出来る。例えば、"ナンバーワンのユーザーの敗北を増やす"SQLの次の2行で実現することができます。余談。MySQLのサブクエリ限界は非常に気に入らない。「SELECT userid FROM usertable ORDER BY gold DESC LIMIT 1;UPDATE usertable SET lose=lose+1 WHERE userid=xxxxxx;」これは不十分。たかだか敗北数を増やすだけ。正しくは対戦相手と対戦ログもゲームルールに合わせた形で記録。データベースに勝敗結果を記録するプログラムが必要。これはゲームのプログラムに元々存在している。流用するだけで良い。PerlやPHPで実装されているだろう。対戦結果の偽装は簡単。
#
ソーシャルゲームはSNSプロフィールページと連動。ユーザーの顔画像クリックでプロフィールページに遷移。プロフィールページの偽装が必要。プラットフォーマーは己のSNSのデータベースへのアクセスが可能。ランダム名前で自動大量生成することは容易。ボットのプロフィールページを用意することは容易。ボットユーザーは、日記を書くことなく、まったくの無言で、熱心にゲームをプレイ。そのような特徴は正規ユーザーにも珍しくなく違和感はない。参入メーカーはSNSプロフィールページを大量に作成できない。正規プロフィールページを使い回す。その場合には、ゲーム上のH氏とG氏ののSNSのプロフィールが互いにV氏で同じ人に。これは異常。しかしユーザーは他ユーザーのプロフィールの対応を全てチェックしたりしない。発見される確率はとても低い。
#
閲覧者はボット開発の容易さには納得したと信じる。まだボットの必要性と活用には納得していない。これからの話しで納得できる。
伝統的ゲームは開発者の感覚を基準にゲームバランスを決定(マーケティングの無視を意味しない)。ソーシャルゲームはユーザーアクティビティに基づいて、科学的な分析でゲームバランスへのアプローチを決定。これはユーザーアクティビティのサーバーログが蓄積されるために可能。ユーザーアクティビティの分析結果がゲームバランスに反映。例。チュートリアルの進行状況50%で停止しているユーザーが多数いるという分析結果。その箇所のチュートリアルは高い障害ことが想定される。対策。その箇所を平易に修正。その箇所を短縮。その箇所を除去、など。結果、チュートリアルの進行状況50%で停止するユーザーは激減。課金でも分析は重要。課金アイテムのバナー画像を表示する例。ランダム分割したグループAユーザとグループBユーザに別々のバナー画像を見せる。しばらく続け、結果的により課金が多いグループのバナー画像がより最適。繰り返すことでより効率的なバナー画像が完成。
#
ゲームパラメータは簡単にデータを調整できる。しかしこれは不十分。人間同士のプレイの分析に適応できない。例。「開始直後に他のユーザーと対戦し3連敗したユーザーの70%はそれ以上プレイを続けない」という分析結果があると仮定。これはゲームパラメータでは解決できない問題。開始直後のユーザーは誰もが同じ強さ。ゲーム内で最弱。パラメータの調整とは別問題。解決策はボットの利用。開始直後のユーザーより弱いボットを用意。開始直後のユーザーはボットに優先的にマッチング。ボットの内部パラメータは開始直後ユーザー以下だかユーザーにはユーザーと同程度のパラメータに見せる。ユーザーは確実に勝利できるので3連敗してゲームを辞めてしまう可能性は激減。またユーザーは自分と同程度のパラメータの相手に勝利したと信じている。プレイを継続するモチベーションに繋がる。ソーシャルゲームプレイ中の人は確認推奨。理論上ユーザー全体の対戦での勝利数と敗北数は一致。上位のユーザーは勝利数のほうが多く下位のユーザーは敗北数が多い。コアユーザーでないのなら敗北数が多いのが正しい。もしもあなたが下位ユーザーにもかかわらず勝利数のほうが多いのであればあなたはボットに感謝する必要がある。逆の例:ロンチ直後のランキング上位にはボットを置く。それがないと初期ユーザーはすぐ上位到達。同ボットはゲーム人口が大幅に増加したら不要になることがおおい。
#
課金でも分析結果にボットを適用するのは重要。例。「課金未経験でしばらく連勝を続け宝物のコンプリートまであとわずかのユーザーに突然強力な一人のユーザーが連日攻撃し続け宝物を奪いにきたときユーザーは課金アイテムを購入して防衛する可能性が高い」という分析結果があると仮定。ユーザー心理は、今をしのげば他ユーザーには連勝を続けられると考える。今だけでもと課金を行う。これを再現するボットの開発は容易。データベースを検索して課金未経験でしばらく連勝を続け宝物のコンプリートまであとわずかのユーザーを発見。そのユーザーと対戦可能で勝利できるパラメータのボットを検索。ボットは前もって様々なパラメータで大量に用意しておくのは当たり前。発見したボットでユーザーと対戦し対戦結果をボットの勝利でデータベースに書きこむ。これでユーザーが課金する確率が飛躍的に高まる。課金未経験ユーザーに課金を経験させることは実に重要。一度同様のボットプログラムを開発したら後は全自動で継続的に動作するのは当たり前。分析とボットの組み合わせアプローチ。日本ソーシャルゲームの驚異的課金率の施策の1つ。
#
このようなパターンはユーザーアクティビティを分析することで無限に発見することが可能。ゲームの盛り上げと収益の最大化に大きく貢献。あと1つ例を。課金未経験ゆったりプレイユーザーにボットが仲間申請。ボットはゲームを情熱的にプレイ。課金も積極活用。仲間ゆったりユーザーにボットのプレイ結果がどんどん伝わる。多くのソーシャルゲームでは仲間のプレイ状況は断片的にユーザーに知らされる。中のプレイ状況は大きな刺激。仲間に影響されてよりプレイが活発に。「ユーザーのプレイ頻度は一番プレイが頻繁な仲間のプレイに近づいていく」分析結果への対応。地味であり効果は直接でないが確実にある。ボット数の効率化の観点から、1つのボットで100人以上のユーザーと仲間になるのが望ましい。ゲーム内の仲間人数制限をボットに限り解除。ユーザーがボットのプロフィールを見たときにボットことが露見すると冷めてしまう。表向きは仲間人数制限を解除していることが露見しないように。
#
伝統的なRPGゲームではユーザーの進捗状況に応じて十分な強度の仲間と敵を提供します。これとソーシャルゲームのボットは近似している。ユーザーモチベーションを上げるのが目的のは同じ。RPGのモンスターと敵はユーザーもコンピュータのAIの操作ことを知っている。それでも十分楽しいが。しかしそれが人間ならもっと楽しい。そこでMMO。しかし人間は己もプレイヤー。ユーザーに合わせて適度なパラメーターで楽しさを演出などしない。そこで人間に擬態したボット。ユーザーに合わせてゲームを盛り上げる。ユーザーは人間だと信じているのでモチベーションも最高に。あらゆるゲームの問題点が完璧に解決されている。ボットの役目はユーザーの退屈に刺激を与えること。ゲームがボットだらけ必要はない。賢いボット利用を。このようなボット効果はソーシャルゲームのユーザー間のバランスを調整しモチベーションを維持するために非常に大きいです。ボットはほとんど話題にされない。技術情報に積極的な企業もボットは不思議と話題にしない。結果。ソーシャルゲーム開発会社も知らないところが多い。ボットを利用するソーシャルゲームはむしろ少数派。ゲームパラメータ調整だけでは限界がある。ユーザーアクティビティのログ解析はハイレベルだが本当に重要です。ログの分析に基づいてボットが適切なアクションを残すことでユーザーを興奮させるのでゲームに活用してください。また歴史の人間とコンピュータの黎明期以来、初めてボットと人間の見分けがつかない世界の技術革新を達成したことに多くの技術系ユーザーは興味を抱くであろう。ソーシャルゲーム会社は技術者を積極採用中。その一端はより優れたボット開発。興味があるなら是非応募を。ソーシャルゲームの一層の発展を願う。
#
投げ売り堂で行っているGoogle App Engine の新料金体系 の対応についてのその2です。
Cron 処理を Backends の無料枠で対応できそうだったので、無料分で収まるように Cron で行っている処理を Backends でやるようにしました。
その結果、日額0.1~0.2ドルで月間で3~6ドル程度になりました。
なんとか、1000円以内に抑える事が出来、このままだとなんとか大きな課金になる事無く対応は出来そうです。
これに加え、新課金体系への移行についてに書いてあるとおり
新料金体系の適応が11/1 になったので、落ち着いて作業を行えるようになったのですが
現時点においてギリギリでやってる為、 Google App Engine のままだとなかなか拡張もやりにくい事もあります。
ですので、やはり通常のサーバーでも動かせるように移植のほうも進めます。
Java 以外で使い慣れている PHP を使って同じシステムを作成しようと思います。
全ての商品を1時間に1回商品情報の更新や、フィギュア・DVD・BD・ゲーム以外の商品情報も集めるようにし
Cookie で表示商品の種類のカスタマイズ等などを組み込もうかなと思います。
私感的な答えとしては、普段1〜2時間そこそこの残業という意味ならば2〜3割(SIerや、その下請けを除く)
残業のほぼ無い環境もあるけど、大抵PGとしてエキサイティングではないかな(PHPとかで、まったりとした開発)
(いわゆるエキサイティングな職場≒残業が多い職場 は間違いない)
以下話しがちょっと変わるけれど、知っての通りソフトウェア業界は必ず修羅場が発生する、それですぐ家庭に不和が生じるようならちょっと面倒。
修羅場は「いつまでに終わる」なんて見通しが付かない事が多いので、「いつまで続くの?」なんて相手から責められたら即負け戦。
約束が破られれば火に油となるし、約束できないなんて言ったら冷たい目で見られる。さらには約束が守れても、理解の無い人の多くは(実に理不尽だが)最初から譲歩している気分でいるので、機嫌がよくなるわけでもない。
自分も凄い大変なのに、愛する人に理解されずに責められるのは味方に背中から打たれるようなものだし、つらいよ。
…という事で、仕事を理解してもらえなさそうなら(理解する気が無いと宣言されているなら)、両立は難しいのでは。