「DSL」を含む日記 RSS

はてなキーワード: DSLとは

2024-03-04

生成AIによって仕事が奪われる

COBOLVBDSL、ノーコードetc.

ほとんどのプログラマ(ソフトウェアエンジニア)は開発ToolAIに変わるだけで

プログラマ仕事はなくならないと思ってるやん?

仕事のやり方は変わるだろうけれども



ソースコード著作権法でも保護された著作物であり、美しいコード芸術でもある。

からこそ手入力タイプした方が魂が伝わってくる...コーダー仕事死ぬだろうけど

2022-04-20

インターネット女性ユーザー

2ちゃんねるで女叩きがあったことは筆者自身見て知っているが、なぜそのような空気感が醸成されたのか?についてはニコニコ動画登場以降にインターネット新規参入した筆者にはわからない

https://anond.hatelabo.jp/20220420074936

便乗して、現時点で四十台の人間視点からインターネット文化の変遷について書く。

インターネット黎明期参加者

ごく普通の家庭からインターネット接続するようになったのは 2000 年を過ぎた頃のことで、それ以前のインターネット参加者は限られていた。

あたりが主。

まり全体としては知識階級ということだ。

費用ハードル

インターネットを利用するにあたって費用ハードルがどれくらいだったのか。

1990 年台の中頃では平均的なパソコンの値段が 30 万円前後くらいで、ガチユーザなら 80 万~ 120 万円くらい (周辺機器を含む) は出してた。

回線ダイアルアップだったりするのでそれだけでも通話と同じ料金 (最低で三分十円、アクセスポイントまでの距離次第でもっと高額) がかかる。

インターネット接続料も従量課金普通

月に数万程度は出費の覚悟必要だった。

バブル経済残滓がまだ残っている時代ではあったが、普通の家庭でそれだけの額を出そうという人はそんなに多くなかっただろう。

テレホーダイサービスが始まってもそれが全国的サービスとして提供されるまで少し時間がかかった。

インターネットの急成長

2000 年を過ぎた頃にインターネットが急成長しはじめた。

この頃には田舎でも DSL 回線がまあまあ利用できるようになった。

女性が増えたというよりはインターネット人口のものが爆発的に増えた。

私にとって「インターネット黎明期」とは 2000 年より前のことを指す。

(私の文章ではこの定義に基づいて「黎明期」と述べていると解していただきたい。)

私が用語定義するなら 2000 年から 2010 年あたりを (日本における) インターネット成長期とでも呼ぶだろう。

新しい参加者

個人経験で言うなら、このインターネット急成長前にも女性ユーザはいたが特に厄介だったという記憶はない。

インターネット急成長以後の新参インターネット参加者は男女関係なくリアル感覚インターネットに持ち込んでいた。

ただ、元々の「リアル感覚」が女性は「話題」ではなく「人」で分けがちなんだと思う。

話したい人には何でも話してあまり話したくない人とはやりとり自体をひかえ、場所ごとに違う話題を取り上げるという感覚希薄なように見える。

あるスレに馴染んだらそこの人と仲良くなった気分になって別の話題でもよいと思ってしまったんだろう。

ある意味では女オタクもわきまえてはいた。

そこの人たちと仲良くなろうという意識はあったし、仲良くなるまでは何でも話そうという感じでもなかった。

ただもうルールを浸透させるまでにとにかく次から次へと人が増えていった時期だったことがよくなかった。

2021-10-24

anond:20211020230609

言いたいことはわかるが、それはテーブル設計ミスあるよ。あと、Ruby 界隈で DSL常人が扱えるようにすると、事故るって噂を聞いた。

2021-02-17

anond:20210216171259

id:toshimasaki 弱者女性男性の性欲や支配欲を満たす存在として需要があるが逆はあまりないというだけの話。知的精神問題があっても体が元気ならセックスできるし子どもも産ませられる。言いなりにもさせやすい。反吐が出るが。

https://b.hatena.ne.jp/entry/4698582318593596514/comment/toshimasaki

 

[だっからさああああああああああ いったい何回説明したら気が済むん??? ]

https://b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20210216171259

いちばんスター集めてトップになってるブコメがコレ。

 

世に多数いる「障害問題持ち女性と健常男性カップル夫婦男性は「性欲や支配欲を満たすために付き合ってる」となんの根拠もなく決めつけ侮蔑する偏見に満ちた、この酷すぎるブコメトップブコメ

 

これ書いたid:toshimasakiスター付けた連中、世に多数いる「障害問題持ち女性と健常男性カップル夫婦すべてをバカにして侮蔑してる自覚あるの?

直接侮蔑された男性だけでなく、「こんな素敵な彼くんが」とニコニコ顔の女性に「お前のパートナーはお前に対して愛でなく性欲と支配欲で付き合ってんだぞ。お前の頭がアレでも体はセックスできるし孕めるし、頭アレで寧ろ言いなりにさせやすいから付き合ってんだぞ。」と顔に泥ぬりたくってる自覚あるの?「障害問題持ち女性と健常男性カップル夫婦当事者がこれ読んだらどんな気分になるか想像した上で書いてスター付けてるの?

 

本気でそう思ってるなら、障害問題持ち女性を男の性欲・支配から守るために、障害問題持ち女性に対し「あなたと付き合おうという男なんて、みんなあなたの体目当てで、セックスして孕ませて言いなりにするために近寄って来てるんだよ!みんな拒絶して!」と堂々と社会運動として呼びかけてみろよ。できないだろ。

それは「あんたらみたいな女にまともな男が近づいてくるはずがない」という偏見のものもの

そういう偏見自分にあること自覚してる?自覚してるだろうね。匿名でないとこんなブコメ書いて支持できないもんね。

だとしたら非人間だよお前ら。人間のクズ

  

それとも、「女性は恵まれてる存在であってはならず、常に搾取され虐げられる哀れな存在でないといけないんだ」というジェンダーバイアスで反射的にブコメ書いてスター付けちゃったのカナ?

まあそのほうがフェミニスト的には都合いいよね。弱者被害者ポジションは最強で、常に他者一方的要求をつきつけて、何の義務も負わず責任もとらなくていいもんね。楽だよね。心地いいよね。「守りたい、このポジション」とつい口が滑って本音が出ちゃうのも仕方ないよね。

女性性が優位な「弱者被害者ポジションを維持するためなら、当事者侮蔑することに何ら躊躇しない、それがはてフェミなんだね。

軽蔑するよ。

 

greenT トップコメ、鬱をケアする彼くんの漫画を見るたびにこいつは性欲や支配欲で女を手に入れたんだなって想像しながら読んでるのか。歪みがすげえな

これな。

 

2/17 16:30時点でこの侮蔑ブコメスター付けてる歪みがすげえ連中、スター消す前に保全しとく。

damonon

damononさん がスターを付けました。

skgctom

skgctomさんスターを付けました。

nicoyou

nicoyouさんスターを付けました。

Cottonton

Cottontonさん がスターを付けました。

tswi

tswiさん がスターを付けました。

baronhorse

baronhorseさん がスターを付けました。

wanimiho

wanimihoさん がスターを付けました。

binbocchama

binbocchamaさん がスターを付けました。

kralica

kralicaさん がスターを付けました。

kralica

kralicaさん がスターを付けました。

hitoyo14142

hitoyo14142さん がスターを付けました。

kutabirehateko

kutabirehatekoさん がスターを付けました。

utabuti

utabutiさん がスターを付けました。

nacady

nacadyさん がスターを付けました。

Qalicen

Qalicenさん がスターを付けました。

Qalicen

Qalicenさん がスターを付けました。

sinsara

sinsaraさん がスターを付けました。

kamezoo

kamezooさん がスターを付けました。

lenore

lenoreさん がスターを付けました。

lifeisadog

lifeisadogさん がスターを付けました。

pufi

pufiさん がスターを付けました。

pikopikopan

pikopikopanさん がスターを付けました。

pikopikopan

pikopikopanさん がスターを付けました。

pikopikopan

pikopikopanさん がスターを付けました。

hyoutenka20

hyoutenka20さん がスターを付けました。

Arturo_Ui

Arturo_Uiさん がスターを付けました。

AODeath

AODeathさん がスターを付けました。

AODeath

AODeathさん がスターを付けました。

Mofuyuki

Mofuyukiさん がスターを付けました。

LaNotte

LaNotteさん がスターを付けました。

tttkm

tttkmさんスターを付けました。

mobile_neko

mobile_nekoさん がスターを付けました。

napsucks

napsucksさんスターを付けました。

huta-ai

huta-aiさん がスターを付けました。

rshi

rshiさん がスターを付けました。

grandao

grandaoさん がスターを付けました。

shimajitan

shimajitanさん がスターを付けました。

MiG

MiGさん がスターを付けました。

tutumisuke

tutumisukeさん がスターを付けました。

dsl

dslさん がスターを付けました。

ikanosuke

ikanosukeさん がスターを付けました。

chinachang

chinachangさん がスターを付けました。

usaginokainushi

usaginokainushiさん がスターを付けました。

politru

politruさん がスターを付けました。

m4i

m4iさん がスターを付けました。

aaaaaaaaaa10

aaaaaaaaaa10さん がスターを付けました。

stk132

stk132さん がスターを付けました。

melion

melionさん がスターを付けました。

yetch

yetchさん がスターを付けました。

tsubaki315

tsubaki315さん がスターを付けました。

hamu_start

hamu_startさんスターを付けました。

hamu_start

hamu_startさんスターを付けました。

hamu_start

hamu_startさんスターを付けました。

hamu_start

hamu_startさんスターを付けました。

hamu_start

hamu_startさんスターを付けました。

arcom

arcomさんスターを付けました。

kerokeropippi

kerokeropippiさん がスターを付けました。

kinnosabakan

kinnosabakanさん がスターを付けました。

shiju_kago

shiju_kagoさん がスターを付けました。

birnamwood

birnamwoodさん がスターを付けました。

iroha2_hohe

iroha2_hoheさん がスターを付けました。

kuroi122

kuroi122さん がスターを付けました。

amtmt

amtmtさんスターを付けました。

2020-06-19

センスのない奴はプログラマになってはいけない

センスの無い奴の問題は、知識がないことではなく、頭がおかしことなんだ。

これは後天的に直せない。そして、センスのないプログラマ他人迷惑をかける。だからセンスのない奴はプログラマになってはいけない。

たとえば、BMI計算するプログラムを作るとしよう。

こんなのは誰でも書ける。身長(m)と体重(kg)を受け取って、(体重)÷(身長*身長)を計算して出力するだけだ。

GUI等をつけたとしても、総コード行数10数行で実装できるだろう。

ところが、センスのないやつは全く違うことを考える。

彼らの一部は、BMI計算するプログラムを作るのに、なぜかユーザー登録画面を作ろうとする。

そして、身長体重のほかに、年齢や性別などの様々なパラメータ管理できるようにし、それらのパラメータを日ごと、あるいは週ごと、あるいは月ごとに入力できるようにし、指定期間での推移をグラフで表示するシステムを作り出す。

ユーザーごとに管理するパラメータの種類は増減するため、BMI計算する場合、「身長体重はどのフィールドに格納されているか」というような間接的な情報必要になり、それを記載した設定ファイル等を読み取る別のプログラムを作り出す。

BMI以外の様々な指標計算させるために、設定ファイルに書ける独自DSLのようなものを作り、パラメータ同士の加減乗除や、指定した期間の移動平均などを計算できるようにする。

データ定義にもとことん拘る。単位を何にするかとか、グラフで表示したときに何色にするかとか、軸に単位を表示するかとか、スケールからはみ出したときにどう表示するか等のありとあらゆる情報を各パラメータに対して定義できるよう設計する。

こうして出来上がった巨大なシステムは、身長Hと体重Wを入力すると、W/H*Hの結果を表示するためだけに使われる。

既に述べたように、ここで問題なのは、彼がYAGNIYou Ain't Gonna Need It.)という原則を知らないことではない。

普通開発者ならあえてそんなことはしない」ということを自然に行ってしまうこと。これが本質的問題なのだ

ちなみに、センスのない奴の頭のおかしさというのは、本当に常軌を逸している。だから、読者がすっと腑に落ちるような例を挙げることは極めて難しい。

たとえば、「数学ができない生徒がいる」という現象説明するためには、「計算問題は解けるが、文章問題は解けない」というような類型を示すことができる。しかし、「センスのないプログラマ」は、常人世界観を超越しているので、そういうシンプルな例示や説明ができない。上に書いたたとえ話ですら、実在する彼らに比べれば、まだマシなのである

2020-02-02

scanz、スキャンコレクション

anond:20200201113849

グラビアスキャン画像蒐集する趣味を楽しんでいた時期がある。

グラビアと言っても日本週刊誌アイドル雑誌グラビアではなく、主に海外ソフトコア雑誌セレブ誌のグラビアである

飽きてやめてしまうまでの数年間、日本人の同好の士とは出会えなかったので、たぶん日本人でそれをしていた人はごく少数だったんじゃないかと思う。

自分はただのエンジョイ勢だったのでそれほど深い知識があるわけじゃないけど、日本語の文献も見つからないようだし、思い出としてちょっと書き留めておこうと思う。

だいたい20年くらい前の昔話。

この趣味名称

よくわからないが、Online Scan Collection とか scanzwarezのノリ?)と呼ばれていたと思う。

概要

スキャナと呼ばれる職人が配布する画像ファイル(主にグラビア)をコレクターが集めたり、コレクター同士でトレードしたりする遊び。スキャナーはコレクターを兼ねていたりもするし、コレクタースキャナーとなって配布を始めたりもする。

スキャン

配布される画像スキャンと呼ばれる。紙媒体で売られている雑誌グラビアを高解像度フラットベッドスキャナで読み取り、もとが印刷物であったことなどわからいくら美麗にレタッチされたJPEG画像である。600dpiクラススキャナと高機能レタッチソフト(ほぼPhotoShop一択)がたぶん必須

題材は大半がセクシー女性グラビアで、ヌードでもPLAYBOYPENTHOUSEに載る程度のおだやかなもの水着下着姿のものも多い。が、たまに美しい風景シリーズがあったりもする。

画像の片隅にはそれを作ったスキャナーのシグネチャ(かっこいいアイコンなど)がウォーターマークとして付される。

あ、上で「日本人はごく少数」と書いたが、おそらく日本人だろうというスキャナはいた。中でも印象に残っているのは Kuni Scan という2万枚ほどのシリーズで、題材が日本グラビアだったし名前からして日本人だろう。Kuni Scan画像検索すると今でも彼の作品の一部を見ることができる。

一次配布

今でもそうだが印刷物スキャンして配布するのは明白にコピーライト違反であるし、ことに題材が肖像権にがっつり抵触していることもあって、一次配布はきわめて目立たないかたちで行われていた。

スキャナーたちが「新しいのできたよー」と最初の配布を行うのはおそらくIRCチャンネルだったと思う。自分外人たちと英語リアルタイムチャットをする自信がまったくなかったのでIRCにはほとんど近寄らなかった。なので一次配布の現場のことはよく知らない。

当時はimgurのような匿名画像アップロードサイトなどもなかったのでこのような個人間のやりとりで配布が行われていたのだろうと思う。

この時、スキャナーは画像とともにスキャンリストも一緒に配布するのであるが、それについては次で述べる。

シリーズスキャンリスト

スキャンは数十枚~100枚程度のテーマを持ったシリーズとしてリリースされる。テーマモデルであったり、雑誌であったり様々。

最新リリースには必ずそのシリーズに含まれファイルの一覧を記したCSVが添えられる。

このリストこそがコレクションキモになる。

リストに記されているのは [ ファイル名, ファイルサイズ, CRC32 ] の3項目(CRC32はファイル指紋のようなもので、データ同一性確認するのに用いられる通信技術)。

この3項目が一致していないとオリジナルデータと認められず、集めたことにならない。

たとえばWebで目当てのファイル名の画像を見つけたとしても、それが何者かの手によってリサイズされていたり再圧縮されていたりするとCSVと数値が一致せず、コレクションに加えることができない。

シリーズには継続中のシリーズとすでに完結したシリーズがあり、CSVファイルに[finished]といった名前がついているのが完結したシリーズである。これに載っているスキャンを全部集めたらコンプリート

CSVはこんな感じで今でも配っているのを見つけた。

http://www.scancollections.com/CSV/list_csv.php

(私がかつてひとつだけスキャナーとして配布したシリーズも含まれていた。なんだかうれしい)

蒐集

一次配布時にIRCを通じてスキャナから直接手に入れることのできなかったスキャンは別の手段で探すことになる。

Webにアップされているものを探したり、同好の士トレードしたり、alt.binaries(ニュースグループ)でも交換が行われていたように思う。

私は主にWebサイト経由で集めていたのだけれど、当時個人ホームページの割り当てボリュームは数MB程度がふつうだったので、スキャンをアップしてくれるサイトも古いものはどんどん消されてしまった。しかも1枚1枚がやたらでかい。今でこそ一辺が1000ピクセル以上あるような大きな画像でも表示は一瞬だけれど、DSLすらなかった時代の混み合うテレホーダイISDN回線では300KB程度のJPEGでも上からじわじわ表示されてくるのを待つ感じだった。

海外同好の士からトレードを持ちかけられることもあった。トレカの要領。ロシア台湾コレクターと、お互い非母国語英語でたどたどしく「おまえこれ持ってるか」「おれのこれやる」トレードのやり取りをするのである。基本は1:1で持ってないもの同士を交換というタテマエだけど、自分は持っているものは気前よく差し上げていた。ドイツコレクターとはたまたま音楽趣味が合ったのでしばらく文通してたな。

そうやって新しく手に入ったスキャンがあると、コレクションマネージャーみたいなソフトを使ってCSVと照合する。CSVと一致しないデータを取り除いてくれたり、リネームフォルダ分けを自動でやってくれたりするスキャンコレクションに特化した管理ソフトがあったのである

やめてしまった理由

自宅のネット回線FTTH常時接続に変えたとたんにコレクションがつまらなくなった。

どんなサイト画像もピュンピュン一瞬で表示されるし、コレクションがウン千枚詰まったZIPファイルですらたちまちダウンロードされて、「苦労して一生懸命集める」という手応えがなくなって、やりがい」がなくなってしまったである

DSL常時接続の普及にともなってネット上には高解像度データがあふれるようになり、スキャンしか見ることのできなかった美麗画像の希少性がどんどん下がっていったこともあると思う。

同好の士

「それ俺もやってた!」って人いますか?

2020-01-07

anond:20200107095705

DSLが思ったより早く死に絶えたんだよね

大半の人にとってはWANなんて10Mbpsで十分だったろうに、なぜか恐ろしい早さで淘汰されていった

2019-02-06

COBOLってこんな言語

日経xTECHの元記事を読んでもCOBOLの特徴があんまり伝わってこない感じだし、かといってそれをディスってもしょうがないので、書いてみた。

https://anond.hatelabo.jp/20190205192741

COBOL本質的にはDSLなんだけど、一見汎用プログラミング言語に見えてしまってRubyPythonなんかと比較するのが誤解のもとではあると思う。今の人でも知ってそうなCOBOLに似ている言語はたぶんSQLで、データを処理するための専用言語。ただ、SQLは頑張ればすごく複雑なこともできるパワフルな言語で、だからこそ現代でも生き延びているわけだけど、COBOLはわりとシンプルデータ処理を想定している感じ。

SQLだけでアプリケーションを作れないのは触ったことある人なら誰でもわかると思う。普通JavaRubyで全体の流れを記述してデータベース入出力をSQLで書く。COBOLもそんな感じで、全体の流れをJCLやShellスクリプト、あるいはJP1のような運用管理ソフトで書く。SQLの1個の処理に相当するのがCOBOLコンパイル単位で、それごとにソースファイルが分割される。ひとつソースファイルに2個以上の処理を書くこともできるけど普通はしない。ここまで理解すると古いCOBOLに1ファイル内のすべての処理に影響するグローバル変数しかないのや、今のCOBOLコンパイル単位をまたぐ真のグローバル変数がないのも、それほどクリティカルではないことがわかると思う。もし、本当に複数の処理にまたがる値が必要なら、データベースに格納してしまえばいいんだし。

で、SQLでいうところのデータベースに相当するのがCOBOLではデータファイルsedawkテキストファイルCSVファイルを行ごとに処理するのとちょっと似てるけど、COBOL場合は固定長ファイルという点が違う。改行文字は入ってなくて、たとえば150バイトごとに次のレコードみたいな形式。これの1レコードごとに何月何日何時に〇〇という商品を□□円で売ったとか書いてあるのが典型的データの内容。それを集計して今日は〇〇が何個売れて売上がどれだけあったとか、出金合計がいくらで入金合計がいくらで、みたいな財務諸表を作ったり。SQLと同じように税率なんかが書いてあるマスタデータと、日々の売り上げが書いてあるトランザクションデータがあって、突き合わせたりということもする。こういう集計処理だからUIはなくて、夜中に自動起動するようなバッチプログラムが主な使われ方。(混乱するから余談だけど、今のCOBOLSQLを使って普通RDBにもアクセスできる。ただ使い方としては、RDBファイル処理→ファイル処理→ファイル処理→ファイル処理→ファイル処理→RDBみたいに、最初最後だけみたいなのが普通

入出力がファイルから今の感覚で考えるとアクセスは遅い。でもメリットもあって、1回に1行しかメモリに乗せないからどんな巨大なデータでも時間さえかければ処理できる。それこそ国民ひとりひとりの年金データとかね。あと、途中でバグ不正データで止まってもデータを失うのは最小限で済むので復旧が比較的楽だったり。

データベースの話に戻ると、テーブル定義はどこに書いてあるかというとデータファイル側ではなくてCOBOLプログラム側、というのがSQLと一番違うところかも。つまり、このデータファイル構造はこれこれこうなっていると想定して読みます、とソースコードに自分で書く。当然実際のデータ構造がそれと違ってたらおかしくなる。

まあそんな感じで80年代くらいに会計処理をする目的だったら悪い言語ではなかったので、銀行官公庁とか、電力水道ガスといったライフラインを扱う大企業がこぞって導入して今に至る感じ。普通大企業は途中でSunかに置き換えてその後Linuxクラウドさらに置き換えたりしたけど、最初に作ったシステムが大きければ大きいほど、重要であれば重要であるほど現代的な環境に置き換えられないというのが今の課題

2017-11-23

メタナントカ

例えば「AB」という概念があった時, 「ABAB」「ABのAB」「ABに関するAB」という概念も成立しうる場合, その概念は「メタAB」と呼べそうである.

あたりがぱっと思いつくけれど, 身近な例でも応用できないだろうか.

意外と難しい.

2017-08-26

Rails ってそんなにいいか・・・

Rails を使ってはや10年。

Rails のことはかなりわかっている方だと思う。

だが、最近 Django (Pythonウェブフレームワーク)を使いはじめて、いままで苦労して Rails を使ってきた努力は何だったのだろうと思った。

Rails だとすぐアプリが開発できると人はいう。

それは嘘じゃない・・・だが大きな犠牲を払ってだ。

RailsRuby の柔軟さを利用(悪用)して、徹底的に Ruby 言語が改変されている。

DSL が多用されている。

要するに、「レール」を外れると、どうしたらいいのかすぐわからなくなるのだ。

から四六時中、フレームワークプラグインgem)のソースコードを解読しようと格闘する羽目になる。

その点 DjangoPython らしく、フレームワークは余計なことをしない。こちらが何かしないかぎり、何も起こらない。

すべては明示的(explicit)に行う必要がある。

明示的なものは暗黙的(implicit)なものよりよい、というPython、そして Django思想

なんという安心感だろうか。

しかRails のほうが開発に必要記述量は少なくなるかもしれない。だけど、わずかな記述量を節約したところで、見通しが悪くなったら元も子もないではないか

私は、本当に Rails 教に洗脳されていたんだな、といま感じている。そして、洗脳から解放され、いま、より広くて成熟した Python コミュニティに参加しようとしている。Ruby も悪くない言語だし、Rails もよいフレームワークだけど、もういいかな。これからPython と共に歩もう。

2017-06-06

Rubyから解放

最近Python にどっぷり浸かるようになって、「Ruby 教」とも呼べる宗教的な縛りから解放されるようになってきた。それにつれて、いままで Ruby コミュニティで当たり前とされてきたいくつかのプラクティスに対して批判的な気持ちが育ちつつある。

いままで一部の人たちが Ruby 界隈を忌み嫌っているのを見てきたが、その理由がわからなかった。でも、Ruby一種新興宗教のようなものだ、と考えればその理由理解できる気がする。

プログラミング思想というのは、絶対の正解がないために、結局、それを信じる人たちが集うという「信仰」の形を取るしかない。より主張の強いグループ宗教的な形を帯び始めるのは少しも不思議ではないだろう。

なんかマジ、Ruby ダルくなってきたわ…。

P.S.

特にキモいのは、RSpec

Ruby変態 DSL の極みみたいなもの

Python のほうがスッキリしていてずっといいわ…。

P.S.2

Rubyな人たちは二言目には「テスト」とかいうけど、自動テストがすべてを救ってはくれないよね。

テストコードメンテ自体、莫大なコストがかかるし。

私は、テスト必要最小限にして、メリハリを効かせて書くべきじゃないかと思う。

基本的には、リグレッション対策で十分な気がするけどね。

2017-05-06

Infrastracture as code (笑)

ansible

結局yamlデータ構造を現すもので、プログラミング的な繰り返しとかIF文は無理やり過ぎて違和感しかない

chef

RubyDSLって普通にダメねこりゃ。実行順序も分からんし、普通にRubyで書いた方が良い気さえする

puppet

独自のSyntax覚えるのかったるすぎる。大して便利じゃない

でどうなった?

何でもやろうとすると結局、プログラミング言語みたくなってどんどん可読性が落ちる

結局最後bashで良いんじゃねーかなってなる。シンプルにできるなら一番筋が良いのはansibleだけど微妙に書き方変わったりして追従がかったるい

俺の知ってる会社chefで全自動だぜ!とか言ってキラキラ感だしてる会社あったんだが今は全然回ってないらしいww

一時はもてはやされたけどDockerとか出てきた昨今こんなの今頑張らなくてもいいのかもな

2017-04-22

C++/Perl/Rubyゴミ

分かったのは言語の多機能さというのは、一点水準さえ満たしていれば、それ以上足しても生産性寄与しないという事

自分しか使わない、最初書くときに限れば書きやすいと思うこともあるが、それ以上に保守性を落とす

ライブラリを利用したり他人コードを読む機会の方が多い昨今マイナス要素でしかない

perlスローガンだかに "There's More Than One Way To Do It." というのがあるらしいが、読む側からするとたまったもんじゃない

演算子オーバーロードされてるかも?モンキーパッチされてないかな?等々あれこれ想定しなきゃいけないのが苦痛しかない

スラムダンク流川が沢北を抜いたのも

パス選択肢を見せた事で沢北が集中できなくなってしまたか

それほど選択肢が多いということはストレスになる

Rubyゴミ

DSL(笑)が良いと思ってるのは最初だけで、最終的に負債しかならない糞コード

統計機械学習系のライブラリが皆無で先細りのイメージしかいかRailsと一緒に心中ください

Perlゴミ

リスト評価スカラー評価とか意味わかんねーくくりもtie変数アイディアは糞中の糞

Perl6にいたってはわけわかんねー演算子オンパレードで悪いところをさらに悪くした感じ

C++ゴミ

テンプレートマクロboostも何もかもダメ意味不明

オーバーロードされまくりコードなんてどっから読んでいいかわかんねーよ

こんな意味不明なことを覚えていられるほど人生長くない

結局PythonとかGo言語現実的な解で黒魔術のある言語なんて意味ない要らない使わない

2017-03-08

Railsつらい

バージョンアップがツライ

毎度毎度、バージョンアップで非互換修正加えてコード修正必要になって、Gemも上がって依存が壊れて

いつまでやってんだよw

Railsプロジェクトでどれだけの人が最新版追従できてんだよ?テストを書いてれば余裕?

本当かよ?正直に言ってみろよ?実際はレガシーRailsの山だろw

概念・周辺ツールがツライ

ヘルパーやらマイグレーションの仕組みやら最初は良いかなと思ったけど、どう考えてもやり過ぎだ

短くかけるとか喜んでるやつは一度考え直せ

複雑さがRails側に寄ってるだけでなんも解決してない

それで良いんだって自分コントロールできない知らないコード依存して結局バージョンアップ地獄みてるだろw

最低限中で何が起きてるか理解しとけよwまあ理解できるころにはRailsでなくても良かったんやwってなるけどなw

RAILS_ENV=productionだとstaticファイル自分で返さないassetコンパイルで小さくしましょう

→ developmentで動いてたけど本番だと動きませんでしたw

どんな茶番だよw馬鹿か?

Gemがツライ

毎度毎度、アホみたいにGem入れやがって、もう自分で把握できる状態じゃねーだろ?

bundlerだから完璧にvendoring出来ますだって

本当かよnaitive extensionGemなんてどう考えたってRails管理外のヘッダファイル依存すんだろ

bundle installがこけるなんて日常茶飯事だろw

環境構築がツライ

ruby入れてGem入れてGem入れるためのヘッダ用意して

めんどくせーなbundlerもこけるし、rbenv使ってrubyバージョン揃えろとか

ホントめどくせーよ

deployもcapistrano便利とか言ってるけれど、そんなに便利じゃねーよw

あんDSL覚える時間あんならシェルスクリプト書けるようになっとけ

rackサーバがたくさんあってよかったねじゃねーよ集約しろ馬鹿

unicorn, puma比較しましたとかアホ記事書いてる暇あるなら集約するかなにかしとけ

信者がツライ

この手の話すると信者が使わない方法もある・選択しない方法もあるとか擁護してくるけど

そりゃあるけどそれ調べんのがめんどくせーって言ってんだよw

何でもかんでもレールに乗せてそれを強要してくるような感じがすんだよw

turbolinksなんて仕組みをデフォルトONにしてくるやつらの態度が嫌なんだよ

2016-09-03

http://anond.hatelabo.jp/20160902031012

http://anond.hatelabo.jp/20160902031012

はてブ批判してる人たちよりよほど志のある学生さんだと思うので、いろいろ書いてみますおっさんのたわ言ではありますが、元記事の人にすこしでもヒントになればと思って。

大学に行っても実用的なソフトウェアを書けるようにはならない

実務の話!! 実際に「IT系のおしごと」というのがやってるような話で、特にコーディングに直接絡んでくるようなもの

技術実態みたいなやつ。そういうのは学校で教わらないんですよね。

まず、日本大学勉強しても実用的なソフトウェアが書けるようにはなりません。どういうことかというと、「情報系の大学に行けば○○が作れるようになる!」という世間一般の期待と、実際に大学で教えている内容には大きなギャップがあるということです。

これは大学が悪いのではなく、大学はそもそもそういうものであって、それが世間認知されてないというだけです。

具体的に挙げてみましょう。

大学で教えてる内容ってこんな感じなので、ゲームアプリサービスを作ることが目的の人から見ると、役に立たない内容にしか見えませんし、実際たいして役に立ちません。その証拠に、大学情報学科を出ていないのにゲームiOSアプリWebサービスを作っている人はゴマンといるし、逆に日本大学先生ゲームiOSアプリWebサービスを作れる人はほとんどいません。

日本大学先生実用的なアプリサービスを作った経験がない

これは重要ことなのでもう一度書きますが、日本大学先生ゲームアプリサービスを作れる人はほとんどいません。大学先生が得意なのはプログラムを書くことではなく論文を書くことです。論文のためにプログラムを書くことはありますが、あくまでおまけです。

そのため、大学勉強してもゲームアプリサービスが作れるようにはなりません。だって教えている側の先生が、ゲームアプリサービスを作ったこともなければ、作り方も知らないんだから

そういう経験のない人たちばかりですよ、日本大学先生って。そんな人たちの授業を受けて、アプリサービスが作れるようになると思うほうがおかしいでしょう。

ためしに、先生方のTwitterアカウント名でGithub検索してみてください。いまどきGithubアカウントがないとか、あったとしてもTestCaseすらないコードとか、そんなものばかりです。「研究内容をライバルに知られるわけにはいかないかGithubは使わない」という言い訳する人がいそう。けど、本当はGitが使えないだけでしょ?

あるいは、先生方の個人ページや研究室の紹介ページを開いて、HTMLソースを見てみてください。doctype宣言がないとか、viewportの指定がないとか、Pタグの中にULタグを使ってるとか、そんなのばかりです。HTMLすらろくに書けない人が、Webアプリを作れると思いますか?きっとXSSCSRFも知らないですよ。

ですので、そういうことを勉強したいなら、ベンチャーIT系企業に入るべきです。大学でそういうことを勉強しようとしても、教えられる人がいないから無理。
(「大学はそんなことを教える場所ではない!」と怒る人いると思うけど、教えられる先生がいないという事実ごまかすために怒ってるだけだから。)

ジャンルが違う

はいっても、大学先生プログラムがいっさい書けないというわけではないです。彼らが得意なのはコンパイラインタプリタOSやソルバを作ることです。これらも実用的なソフトウェアと言えなくはありませんが、ゲームアプリサービスとはジャンルが大きく違います

そのため、大学情報学科に進めばコンパイラOS機械学習ライブラリを書けるようにはなるかもしれませんが、それはゲームアプリサービスではないので、繰り返しになりますがそれらを作りたい人には大学は向きません。

大学で教えている内容ってムダなのか

じゃあ大学で授業を受けるのってムダなのかというと、必ずしもそうではないです。

大学で教えている内容って、ゲームiOSアプリWebサービスが一通り作れるようになってから、その先を目指すときになって初めて必要になることが多いです。たとえば、

こういうときになって、初めて大学で教わった内容が生きてきます。逆にいうと、そういう状況にならないと、大学で教わった内容は生きてこないと言えます。(情報系の学科で学んでいるなら、ライブラリ言語OSを「使う人」ではなく「作る人」にぜひともなってほしいですね。)

元増田に進めたい進路

元増田は、社会に役立つ実用的なソフトウェアを作りたいようです。しかし残念なことに、大学が教えている内容はその目的には合致していないことを説明しました。

こういう事情なので、元増田には大学ドロップアウトしてIT系会社入社することをお勧めします。ドロップアウトが難しいなら、インターンバイトでなんとしても入り込むことです。

入るべき会社は、教育に力を入れている会社です。20人未満の小さな会社では教育に力を入れている余裕はないので、小さな会社はやめたほうがいいです。簡単にぐぐってみたところ、はてなPixivクックパッドDeNAドワンゴ教育制度確立しているようです(違ってたらごめん)。そういった会社に入ったほうが、大学の授業を受けるよりも、元増田目的にかなうのは間違いありません。

そして何年か働いて、iOSアプリWebサービスが一通り作れるようになったら、大学に入り直すことです。これはとても効果的なので、元増田には強くお勧めします。

上で説明したように、大学というところは、ゲームアプリサービスの作り方は教えてくれず、それらが作れるようになって初めて役に立つことを教えてくれます。そのため、元増田IT系会社に入ってアプリサービスの作り方を勉強し、それらが作れるようになってから再度大学の門をたたくのが、いちばん効率的です。

なお繰り返しますが、入るべき会社は「教育に力を入れている会社」です。今のIT系企業では、インターン生を「格安で使えるバイト君」としか見なしていない会社が多すぎます。そういう会社は、コストが掛かることはいやがるので、教育もろくにはしてくれません。逆に教育に力を入れている会社では、インターン制度を「将来の戦力を選別する期間」と見なしています

残念ながら、そういう会社東京に集中しているようです。例外京都はてなくらいでしょうか。地方大学生にとってはつらい現実なので、はてなPixivドワンゴ地方でのインターン開催をお願いします。あとレベル5は九大と九工大学生を鍛えてあげてください。

余談ですが、学生さんにひとこと:

インターンバイトで潜り込む先の会社を選ぶときは、就活と同じような時間をかけて選んでください。バイトからとかインターンからという軽い気持ち会社を選ぶ大学生が多いから、それを食い物にしている悪質経営者があとを立ちません。インターン生が「格安学生バイト」として使われている現状を是正するために、学生のほうでも注意してください。

大学で授業を受けなくても独学で効率的勉強する方法

ドロップアウトを進めた手前、書こうと思ったけど、長すぎるのでやめた。

リツイートが100超えたら書く。

2014-10-11

アプリ屋がRailsを初めて触ってみて感じた事

Qiitaに書こうかと思ったけど、言いたいことも言えない、こんな世の中じゃ。

発想が古臭い

モバイルファーストAPIファースト文脈ハイブリッドWebをやってきた目からすると、サーバーサイドでHTMLを生成してページ遷移させるなどという90年代調のクラシカルな発想を基本に据えるフレームワークはとても斬新に思えました。HTMLゴリゴリ生成するなんてよほど特殊最適化をしようとするのでなければそもそも発想として出てこないです。それでいてDSLメタプログラミング等のテクニカル技法宝石のように鏤められている様はまるでエジプト時代骨董品を見るかのような趣がありました。turbolinkなどは、かつて表計算ソフトに出しゃばっていたイルカを思い起こさせる味があります。かつて慣れ親しんできたSPAが星のように遠い存在になりました。

モデルMVC

Web界隈の人々がモデルだとかアクティブレコードだとか"MVC"だとかを非常に具象的に話す様を見るにつけ、お前らどんだけPofEAA読み込んでるんだよと畏怖していた時期が僕にもありましたが、どうやら彼等はRailsクラスディレクトリという特定実装について話していただけだったようです。Modelという概念もこれだけ肥大化してしまったら、オリジナル概念で彼等と会話するのは諦めるべきかなと思いましたし、Railsの"MVC"をアンクォートして語るのはもはや害悪であるとすら感じました。

レールから外れる辛さ

Rails界隈の人がよく「Rails流儀」や「正しい"MVC"」というのを口角泡を飛ばし議論しているのを目にするのですが、おそらく外に広がる不条理で火傷を負って快適なRails世界に引き篭もった結果としての一種のストックホルム症候群なのだなと思いました。いまやAjaxとかWebsocketとかWebRTCとかを組み込もうとする至極真っ当な方法論がとてつもない高難度に見えてきます。設定よりも規約、というのも一つの方向性だと思いますが、ドメインサービスレイヤ名前空間を構築しようとしたりコードジェネレーションしようとしたりしただけで地獄のようなCircular Dependency罰を受けてしまったので、自分がとても間違った事をしているような気がしてしまいました。とはいえConcernsに特別名前役割を与えられても正直しんどいので、皆が皆libゴミを放り込んでいく様子にも納得がいきました。

レイヤ?何それおいしいの

RailsAPIサーバーとして使おうとするとまずビューが無くなってMとCだけになりますが、いわゆる"MVC"の文脈で育ったエンジニアがなぜ息を吸うようにFat ControllerやFat Modelを作ってしまうのかという事が良く分かりました。多くのRailsリファクタ手法と称されているものクラスを書くファイルを分割する事以上のものでは無いように思えたので、Rails使いを大きめなAPIサーバー案件に回すときセットポジションDDD青本を投げつける必要が有るなと思いました。

TDDやれんのか

ビューとコントローラを結合させた場合結合テストはCapybaraとかのBDDマークアップサイドとの干渉を恐れながら強い気持ちでメンテしていくしか無いのかなと思いました。おそらく脳に電極を埋め込んでいるか緑色のランプを見るだけでハイになれる特殊な人にしか生き抜けない闇が垣間見えました。コントローラを薄くしてサービスレイヤを挟めばその辺りもうまくいけそうな気がしましたが、ビューからヘルパーモデルがいくらでも透けて見えてしまうという状況では裏側の完全性に自信を持つ事は難しそうでした。

分業とか出来るんだろうか

ビューがRubyを叩いて永続化レイヤと直接コミュニケーション出来るというのはとても生産性が高いのだろうとは思いましたが、こうして出来たパーシャルやら何やらをデザイナーとどうやって共有するかを考えると頭痛が痛くなりました。おそらく適当に切り出して綺麗な空間をassets以下に構築した上でpublicにRPCのような窓口を備えたゴミを量産していくのかなと思いましたが、もっと綺麗な方法はあるのかもしれません。でもきっとRails案件に関われるデザイナーRubyバリバリ書けるに違いないはずなので、ここが問題になる事は無いのだろうなと思いました。

RESTとかきついです

RESTはとても美しいパラダイムではありますが、そもそもHTTPがさほど美しくないので歪んだ空間には目を背けるか勝手解釈を与える事で人は初めてRESTfulを名乗る事が出来るのだと思いますGETbodyを(公式には)持たないという事について美しい説明を与える事は出来ないでしょう。サーチAPIはどうしますか。ステータスコード足りなくないですか。401エラーはどうしますか。そしてRESTあくまリソース抽象化する美しい概念なので、アクション副作用については貧弱です。動詞が足りないですし、一般動詞に狭義の意味を与えてドキュメントするのは二度手間しか見えません。PUTには冪等性があるべきみたいなこだわりは家の猫にでも説教してればいいと思います。というわけで、REST的な設計拝借することはよしとしても、「○○はRESTでは無い故云々~」みたいな注文はやめて頂きたいものです。

そんなに嫌なら他に行けば

とか言わないで欲しいです。こういう時にセットでPHPをディスって悦に浸るのは知る限りRubiestとPythonistaと中学生だけです。それにこれはあくまサーバーサイド初心者感想なので、想像するにこれ系のFWは多かれ少なかれ似たような不満を抱えるものなのかなと思います。というわけで、おそらくこれから選択肢がある限りはRailsを使い続けると思います

だってRuby楽しいんだもの

2014-07-17

関数型入門以前

これ読んでも関数型分からないけど、入り口の前あたりに立つために

関数型言語覚えたらなんの役に立つの

プログラマとしての引き出しが増える。

って書くと「そんなもんどんなプログラミングテクニックだって一緒だわ」って言われそうだけど、でもそうとしか言い様がない。

とりあえず、オブジェクト指向と同じで、プログラム構造化して、複数レイヤーに切り分けて部品化していくテクニックだとは言える。

ただオブジェクト指向とは大分切り口が違う。何ていうか、割と直交する切り口でプログラム構造を切り分けていく。

なので、関数型とオブジェクト指向と両方憶えるだけで、大分切り口の引き出しが増える。

オブジェクト指向関数型両方憶えると、プログラマとしての引き出し増やすのに効率が良い、って思えば良いかも。

具体的にどう切り分け方が違うの?

オブジェクト指向は、プログラムの各部品を「あれの中のこれの中のそれの中にあるあれ」みたいな感じで組み合わせる。

部品が更に細かい別の各部品で構成されていて、それぞれの部品が噛み合わさって、複雑な一つのプログラムを構成するような切り方。

関数型言語は、プログラム部品を「あれをした物にこれをした物にそれをした物にあれをする」みたいな感じで組み合わせる。

もっというとプログラム全体を簡単に記述するできるDSLがあって、そのDSLを簡単に実装するためのDSLがあって、DSLの入れ子構造で一番小さい部品シンプル関数、みたいな切り方。

どう使い分けたら良いの?

ケースバイケース。

ではあるんだけれど、シンプル部品を大量に組み合わせて構成するのがしっくりくるならオブジェクトで、部品数が少ないんだけど一個一個が複雑な動作する構成にしっくりくるのが関数型……かも?

関数型言語の紹介見てると、何かひたすらイミュータブルなデータを弄繰り回す説明ばっかり出てくるんだけど…

関数型言語たる条件として「関数が第一級オブジェクト」ってのがあるんだけど、関数が第一級オブジェクトだとイミュータブルなデータを素直に扱える。

で、イミュータブルなデータ構造使うと色々便利、ってことで実例として一番出てくるという。

何か型型言ってるんだけど、型くらいC言語にすらあるわ。メモリ領域の確保量を示すあれが何でそんなに重要なの?

関数型言語エポックメイキング的な言語が三つくらいあって、元祖Lispとその流れ汲んだMLMLの一種で関数型をある種の到達点に持っていったHaskellって感じ(独断偏見)。

で、このうちのMLって奴が、プログラミング言語に型システムがついてるんじゃなくて、型システムプログラミング言語がついてきた存在だったりする。

型で色々やるために生まれたわけで、まぁなんというかそもそも型と密接な関係にあって、Haskellもその流れを汲んでて、こいつが超有名になった、って感じ。

おかげさまで、型使って色々やったりする方法が日々考えられているわけです、静的型付関数型の世界では。

クロージャって、大まかな概念wikiとかで理解したけど、関数型でどう使われてるの?

関数型言語ではよく「関数関数を引き取って、合成した関数を返す関数」みたいなのが使われるんだけど、関数関数の合成って、それ合成された関数がもともと引数として与えられていた関数憶えてないと無理やん? 自分自身の構成部品憶えてられないわけだから

クロージャあると憶えててくれるわけですよ。

そんな感じで高階関数実用的なレベルで使うのには大体必須と言う。

モナドとやらは何に使うものなの? 何が便利なん?

関数型言語DSLを作りまくる言語みたいに書いたけど、モナドちょっと複雑なDSLを簡単に作らせてくれる仕組みだと思っとけば良い。

Haskell副作用が一切ない純粋関数型言語って言うけど、副作用なしでどうやって入出力してるの?

まず純粋定義だけど「全ての関数は同じ引数を与えられた際、必ず同じ値を返す」ってことで、これがいわゆる副作用がないって状態だ。

で、これって逆に言えば「プログラムである関数に対して、絶対に同じ引数を与えさえしなければ、その関数がどんな値を返したところで、事実上純粋だと言えてしまう」ってことでもある。

本末転倒感があるんだけど、HaskellではIOモナドという仕組みと特別main関数を使って「呼び出すたびに絶対に違う引数自動的関数に与えてくれる仕組み」を実現していて、こいつを使って入出力する。

うん……凄い本末転倒。ちなみにこの自動的に与えられる引数はRealWorldって名前がついていて、要は「刻一刻と変わり続け絶対に同じ状況にならない現実世界の状態を引数に取っちまっているようなもんだからしょうがないだろ?」的な感じ。

2014-06-24

はてなブックマークもっと便利に楽しめるかもしれない非表示リスト

otsune|kanimaster|jt_noSke|habuakihiro|mohno|munyuu|ChimeraJpn|DoukiHousou|Nazo_Gen|wataru-ishizuka|kenken610|ncc1701|koumet|s62|gingin1234|saposaposen|SiroKuro|hascup|s_hosokawa|thermalpaper|triggerhappysundaymorning|foobaafoo|marupin|chintaro3|minakon1979|NOV1975|predator995|goodhome2|Frequency_Random|jankoto|netisfree|API|artzt|iiyoko|LossCuts|kame2332|vid|gasemato|oguogu|kyoupon3|Moonlightdance|cybo|yo_423|palo|thesecret3|skywave1493|HSE|yingze|tanizakura|Outfielder|RIP-1202|itsukiranru|kento255|nekora|kentultra1|mitsu0227|F-SQUARE|hatenkou001|yhiroko60|ruletheworld|ototake|kaorionda|kurodamiho|malark|iya_honto|Dursan|takuyakoba|m-matsuoka|mk-biz|k-takahashi|arbitrage1979|abdullahthebutcher|jujubea|kumonopanya|mai0727|kenyu77|c6216|akibakaori|furukatsu|deadcatbounce|TOM2005|ks1234_1234|manydsvn|Yagokoro|A410|Hige2323|activecute|KANIBUCHI|Zarathustra1951-1967|hatoken|ftype|etherealcat|taikoubou1|toraba|Midas|infobloga|motowota|enderuku|tamase|vitamin_G|www6|hatredlef|chnpk|vanish_l2|katsura_1|zions|tdam|momo21C|braverobo|looot|kirche|a3sw|K-yamada|chousuke7|big_song_bird|neogratche|hagakuress|Assume|Takewaka1976|Gakkuri-Kanabun_09|nextworker|pribetch|shikaku3|fujichan1234|Membrane|justgg|andalusia|clclcl|ka-ka_xyz|teracy_junk|weekly_utaran|SENAKA|okurus|mori-yoshiro|yamamoto8hei|sudo_chown|fumichan23|sashatwix|uciga|babylonia2011|mizuno8387|touitsumizuchan|moonie|wavewave2013|member21|evifrailove|kimkim108|ucadachi|tameniikiru|satromi|xxix29|anpo-sumeragi|sonickhedge|anigoka|yuka_taso|nicotag2525|yuhtan|blackwing83|yoshiyuki007|renaikogaku|FEFE|aikoku_sensei|yoshino2|st_valley|serio|asahinoataru|denden-cafe|geist1979|heyacho|Harnoncourt|Hiro0138|shoot_c_na|TakamoriTarou|spoichi|sekiryo|sukemasa_fujiwara|a2de|bakeneko44|zichao|gremor|timeismoney|pink_revenge|bumble_crawl|moccai|eijiso|UlickNormanOwen1924|daigakuseikyou|sys-arts|glass-_-onion|k146|rt25|seamore0228|katayoshi|wbbrz|mgkiller|shichimin|mobanama|a96neko|hirokazuiwai|mostaga|okemos|Jolokia|obata_hiroshi|John_kit_tea|tiro2010kina|utushi|gulugulu|tetradrop|Baatarism|daruism|wangshot1155|axel69|yingbb|satomi_hanten|Chosuke|keima1230|ripple_zzz|unaken|jitojito|mnox|cladegifan|Moodykajigaya|saekik|dodorugefu|l-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_l|hobo_king|shun346|munioka303|ao-mid|koubemise|gomunaga|minaminoani|yasyas|sybianoid|ysync|washita|dagama|aaact4|Kukri|the_sun_also_rises|aruzentina|araigumanooyaji|tonapa|napsucks|ferias|y-wood|attoku|Naotoh|midnightseminar|daruyanagi|gimonfu_usr|buu|Snail|sakuragaoka99|hyakuhyaku|charleyMan|doroyamada|kempff_n|yem3399op|AmahaYui|nippondanji|sacredjustice|ken5chi|myosho|melo-ria|kikori2660|hidamari1993|raf00|batz-22|nokonoko11|operazard|orihime-akami|aimind77|taka_atom1007|kaionji|tyokorata|ashigaru|JULY|amateur2010|habuakihiro|kyuuiti92|sa_tie|jack_oo_lantern|kingate|monono|bengal00|miitocha6|hrn_k1|fragilee|ahmok|kibitaki|matsOS|simbelmyn|a1101501j|srsrbilly|filinion|bitey|falkbeer|jojojojoen|ketudan|ym_lennon_papa|doudemoii99|locust0138|Oriuta27|naokibtn|twisted0517|ryokusai|tonatonatonac|velvetgrouse|npoposse1|nekosichi|LawNeet|jay926|osakana110|kzhvsonic|komamix|bookiori|copuy|dmnlk|dog_me|Donca|d_animal141|ebi73|evertex|hamhamtarou|hatataw85|i_am_kawai|khujhlo|maedakingdom|mikayu55|mi_zu_ta_ma_mi|moemoe386|nanagami|nurie19782|omosoku|outotsu|reglanz|saitousansaito|shrimp17|toshi19650104|TsutomuOnoda|unyuunyuho|WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW|yoshirou777|houyhnhm|synonymous|zaikabou|ululun|sin2mo|xevra|daybeforeyesterday|omf|H58|politru|hazama-hazama-hazama|Apeman|believemeimaliar|ksaitou|YTR8335HS|letterdust|bogus-simotukare|sotokichi|mangakoji|Louis|omega314|noabooon|guldeen|tadasukeneko|okachan_man|kuippa|mahal|lkhjkljkljdkljl|TERRAZI|BassVoiceXYZ|feita|haunebu2|m_yanagisawa|simpe|sorarisu0088|marsrepublic|ponako10|superpuma|o030vv|kathew|k_wizard|festerfester|as1_htn|foxtrot0829|d0i|yakouhai|kiku72|vocaloid|and_hyphen|b4takashi|nattoh|hate_flag|okanoao|frothmouth|with-must-fel|bakadomoga|gasparl|AKIT|fk0407|takehana_masaki|noraneko|pollyanna|pokute8|msukasuka|pazpon|SHOWFKUP|yoko-hirom|vanacoral|kogarasumaru|K-Ono|nanospectives|ponyorin|kumaroku|suzu_hiro_8823|kosui|tenkinkoguma|pero_pero|hi_kmd|sasurai7|dai_air|hatebu_music|dononymous|kenjou|nabeteru1Q78|tarekenroom|momopopohate|miyamotosan|debriel|hihi01|n-styles|wandering_emanon|shueiwaka|yutamoty|kimikitan|browneyes|beth321|gikazigo|rosaline|kitamati|shouchan7428|longroof|loveanime|gureusa-and-kurousa-rabbits13|h5c223tc6qvxc|tsukitanuki|Taro416|arama000|baka020|Lumin|gmochein|masa_bob|takanofumio|qadapix|richest21|nenashigusanora|penguin_002|kagecage|drumandara|app2641|internus|topisyu|north_god|echo2944|honeybe|fujiyama3|ricemountain|zeromoon0|negril67|k19d|moghiko|sqrt|minonet|trini|kazukichi_0914|chris4403|Blue-Period|korn_freak|iasna|lastent|SndOp|pepeky|treve2013|Lag_TY|sakura_123|cider_kondo|garage-kid|sketchlife|kana321|inukorori|fumifumi43|aukusoe|oinosaka|macchauno|high_grade_works|gdk0213|poppun1940|west-hiroaki178|kasumani|ekken|TM2501|rascalrascal|d1b|ikari51|meme-o|plutan|feather_angel|katc|iwax666|i2i|fuba|Asay|hatekun_b|takanorikido|sunamandala|akira-2008|jaikel|suikax|Falky|Nean|yas-mal|aodifaud09|solidstatesociety|furakutaru|kyo_ju|raitu|tg30yen|jou2|miruna|rag_en|nuicksilver|kodamatic2|quabbin|kana-kana_ceo|Arturo_Ui|REV|juverk|haruharu1|terminalhead|kazoo_oo|ellm9|rAdio|akikan2|naohero22|nenesan0102|oyasai55|glasstruct|pullphone|ramyana|abc0123|Gl17|sabacurry|shigeto2006|popoi|netcraft|vndn|craft_kim|kenjiskywalker|sonicdrum|jorgekosuke|ytn|analogical|kaz256|birk|arayutw|tomymot|sisui_ro|hidex7777|uwasanoaitsu|uhyorin|shunpei55|yuki_2021|ore_de_work|narwhal|GOT4416|nurupo889|cutplaza|Notizie|kisiritooru|Caat|washburn1975|zyusou|luccafort|my-kana|thirty206|Journey|rider250|MK3110|mizu2014|jaga_rikoo|steel_eel|mousecat|wapa|Saitamakei|n2khjm|tamtam3|sho|lesamoureuses|kyupi-n|blueboy|yoruneco|meerkat00|copyxxx|shukaido170|kaz_the_scum|munetak|caligo|hokuto-hei|agleldvr|hikaruda|mah_1225|okxiav|uma666|coolstyle|Ivan_Ivanobitch|straychef|theatrical|kazuya030|sakuracon|mame-tanuki|SusanoJapan|exadit|catryoshka|s1_snake|h1romi|miss0803|Soregasi|SEIKI|mobile_neko|miryu2008|cake_holl1515|Borom|sync_sync|zorio|highrise|Lhankor_Mhy|John_Kawanishi|karatte|yoko_kitchen|kyoumoe|katabiragawa|coper|quix_que|scopedog|usi4444|Ayrtonism|hitouban|nunnnunn|Jun-Sugihara|amakanata|peco_poco3408|nemu_ichinose|ikurazu|ryo71724|suminotiger|bambi_eco1020|koiyaro|nao0990|nekonekonekotori|kagamihoge|gui1|hkurata|maicasato|akawi|mae-9|teacheers|banban|akimaruworks|yzxnaga|Amontrue|Gustav13|zmoi|ze-ki|haruna26|gin0606|paradisecircus69|primedesignworks|amori|kouas1100|trade_heaven|ricenoodles|gryphon|style_blue|upran|bzb05445|kikuchi1201|fusanosuke_n|Nowhereman|Domino-R|suburban_researcher|agage|coolpix|smilestyle55|seagullwhite|chess-news|zuiji_zuisho|koyhoge|rorinana|W53SA|Changeoneself_Lifehack|yukimurasama|omiya6048|SchizoidMan|daichan330|aquos12345|sarcoid|asobi|TakahashiMasaki|bioweb|non-chan3|k-h|a_micchan|t_utsumi|nakomaru|re_peko|benelux|BuntaPig|T_Tachibana|goodbadnotevil-syamo|chobinuke|barias|s4d|sumito0720|amamiya1224|asarina-k|snowwhite1090|peketannku|kirifue|tsuki-rs|nagisabay|masaki_akiko|Sato_4tree|aozora-pedal|cyborgninja|x9629|natsu_san|joker1007|linden|terurou|benkeiblog|lordkf|keim_at_Si|toomuchpopcorn|marumusu10|rokujyouhitoma|mshs0609|damae|peketamin|USuck|poipoichang|era1978|lastline|kanamatch|ElizaAcolyte|azumi_s|Pandasista|masutaka26|dadapon|kamei_rio|kyasarin123|coppieee|nobby81|shoshirasaka|kastro-iyan|aktk_f|toripika|unsoluble_sugar|alovesun|Ta-nishi|lylyco|meeakat|hidamalar|yubigasol|neco22b|a-lex666|brendon|himomen|htb48|Marin_MTB|mumincacao|vanillableep1618|shoG3|calcan|youichirou|Landmine|azure-frogs|You-me|kissuijp|yamuchagold|comzoo|zakinco|Vorspiel|YOW|syuu1228|whkr|death6coin|izatan|seiyuDB|camellow|koluku|yunottinoatama|Nyoho|pianocello7|shufuo|princo_matsuri|ikkiii|typex2|kurisann000|at_yasu|kiyohero|tahaji0117|mizukemuri|moritata|takuya916|gigi-net|odoru-mn|htnmiki|ippeichangg|POPOT|BRITAN|taihe|moons|ntmukai|ptolemychan|kagobon|niryo0113|zz_sexy|underd|migurin|Besucher|yuki_drop|nomitori|navix|maijun2|vhthlh|mas4bookmark|killerQueen|ipa5963|hajime0329|o_mega|xr0038|hoshinasia|studio3104|yaruo3dao|inulab|sho_yamane|naga_sawa|shamr|qittu|QJV97FCr|masudamaster|white_rose|mifasorashido|kaitoster|mujisoshina|Rlee1984|narug_summers8|osushi_soba|k71360274|lejay4405|dododod|shields-pikes|yuta25|aquarla|mame_koo|ZeroFour|syakinta|kkobayashi|richard_raw|mmsshhrr|neriu|hase0831|chuunenh|hiroshi_revolution|tatage21|seabreamlover|ranpei|aassddmizuta|nagaichi|monakiko|miyagi12|sawayaka_b|kamibukuromiata|mkusunok|tenchikometen|turry|miya999|kamayan1980|kiyo560808|biztaka|miki3k|El_Fire|kirte|tanmeso|maritimecolor|masuruku|suna_kago|kurahito3|ikd18|kouhei_kain|mcddx30|timetrain|sima_pan|pomojan|usagino-mori|tyu-ba|masakih|riocampos2|rain-tree|sakuragaoka|zu2|lyri|komochishisyamo|suzuki84g|hal9009|hakidameru|makoto725|shinagaki|aki-17|shiba_yu36|uturi|gfx|fjwr38|mico-mico|y-yosuke|desuzo896|buffbuffrat|Barton|ornith|unyounyo|turretmusuko|wes2626|negi_a|aratah|tiki0108|YaSuYuKi|kuroi122|yk4192|yoiIT|takhino|kakipo|isano|qtamaki|ustam|hiero|kakakauchi001|sin4xe1|gdno|tkamu|AR30|gugod|chochonmage|sika2|metroq|ikusana|tkysktmt|tanaka_yuuma|takuzo1213|y-mat2006|yuiseki|suzukidesu23|hisawooo|KoshianX|tskk|shunning|mochidori|namikawamisaki|mustelidae|MoneyReport|ente04|isshoku|take-it|kiku-chan|reima|kiichan1115|cj3029412|jassmaz|silverscythe|cloq|ossan3|crapman|yuchan893n|muchonov|sph_375|namawakari|sugikota|taketyan|Swatz|kuroaka1871|tanorityy|daddyscar|ch1248|yeenee|testa_kitchen|wl0x0lw_lenz|pirokarupin|katanyan|tikani_nemuru_M|papamao|misias|jiskay|Aodrey|bean_hero|flclover7|kura-2|kaeru8823|Cliche|EG_6|yukitanuki|hungchang|ktasaka|inmysoul|inurota|georgek5555|jKandai|oka_mailer|mikanyama-c|watto|chikurou|Sediment|tecepe|toshi20|marony0109|fellfield|aflat_1000dai4|xisher|narukis|kagasan|gnt|Sinraptor|blackwatch|Ni-nja|kyrina|hasiduki|tomiyai|c_shiika|caplsy|whiteball22|manFromTomorrow|nejipico|zatpek|kotobukitaisha|mah-fa|m_uchino|yujing_musume|yotinakk|sumida|NAPORIN|modal_soul|oceo|hamatsu|naoto111|misaquo|muso00|Cunliffe|sink_kanpf|hiruhikoando|doronpa55|hunyoki|laranjeiras|kirigirigirl|barubari2955|outroad|ecochiko2|alloreverything|hagex|sny22015|aurijpn|bbb_network|jogjogjog543|outland_karasu|linus_peanuts|watakochan|ponkotukko|totoronoki|tpircs|hitode909|keishut725|wakasatoshi|iida-kana|tanukichi087|north_korea|watapoco|lp008962|tohima|aereal|Caerleon0327|horahareta13|footwork_x|satis|kazuhooku|s_tosha|deeeet|reteru|sigwyg|toya|gorodoku|operationservicebu|itamae|kohgethu|ureyubo|kaipu1224|usa02|usamyu56|mockingbird0619|hylom|kanariezuki|Vudda|tsubame_nanami|djsouchou|rio123dx|rikzen|sampaguita|el-bronco|ranobe|kotaro0413|IkaMaru|luxsuperpoor|Gelsy|momizikeiko|TequilaBancho|dadywada|welchman|lochtext|uunfo|bronson69|mesomeso|soooma|sucelie|cs133|monica83jpn|penguaholic|n_pikarin7|nonogray|wienerhorn|mmdawson|CDG|himashuhu|omerico|kazuya53|shimaguniyamato|zhenyan|shironeko_t|akihiko810|s-tomo|t_trad|gagegogi|utaro2013|murishinai|Sigma|deneb-y|reachout|mo__ki|k-rallyart|nymc|ueshin|popoon|masato611|kotesaki|taka2071|reikax|duck75|menjoh4486|keloinwell|Akimbo|exterminator|mk16|ni-ten0|mainyaa|hiro_y|twilightmoon99|shiromochi923|fb001870|seppu|suzutreeadd1plus5|hiroyukixhp|nogutyo|thyme56|kyokucho1989|sensitiveplus|thyself2005|fa11enprince|adgt|mu_hal|sato0427|vifam84|BT_BOMBER|yunoka0314|tetsuya_m|mogmognya|sirocco|Yozhik|kskmeuk|coolworld|yamada_maya|alphabet_h|kankichi20|louis8917|kowyoshi|ohira-y|wata88|toratorarabiluna273momomtan|kiyoami|An7s|smbd|puruhime|hiromo2|takashi1982|nagaimichiko|opemu|shifting|buhikun|SirVicViper|Dirk_Diggler|Rinta|haruhiwai18|goldwell|dgwingtong|hotsuma|wwitzmaster|spherera|gsindiv|asahiko|senomama|aoi-sora|oktnzm|onigashira_3|kerokero0218|daisuk-com|soulful828|hatchman|kongariknow|nyokkori|kirin_tokyo|hyougoishin7|Utasinai|kamm|BlackJoker|mugdmugdmugd|automaton37564|nicoxnico|diet55|nasunara56|bloominfeeling|nariakioki|infomuseum|sub_low|MagnesiumRibbon|mekurayanagi|kast|evolymyllas|omi_k|name-25137412|urbansea|zyoucun|kyuuuuuu66|JacknicoL|da-vinci-da|NMDA|jkondo|mtakano|otokinoki|nijuusannmiri|TT_TT|Dersu|nandeyanen36|matsuo0221|nobodyplace|wetfootdog|Micawbe|kalmalogy|taka18782|kumeyu|AHOUJIN|letoro_mania|rgfx|kanu-orz|yukitoame|Mu_KuP|bullsco88|rn88888|soylent_green|kenchan3|deep_one|sarariiiiin|stumsky|kunipon|dobashi|naglfar|anoncom|smicho|sundays_co|arien_nu|junp_n|sagisite|hamukatumix|pinkyblue|mikankueyo|penpen-0704|kenzy_n|kakimasu|Yoshitada|nakayubi3|wow64|sase|xxbb77|tamamusi|cruyf|zinjoutarou|Kmusiclife|yoshiyoc|lestructure|kaanjun|cleome088|duckt|debabocho|hogeanonym_20101012|Panthera_uncia|Windfola|nekonyantaro|kloud|m-kawato|kako817v002|sugar_jirou|shun_libra|Mattyan|oskimura|MermaidSong|cubed-l|Shingi|shikiarai|norinorisan42|ookamu|take1117|CrowClaw|Sarutani|tannomizuki|nishinq|kukky|cider3613|law|Dicer|kane_to_onna|hikky1022|dowhile|inaminn|morita_non|oono_n|kouchi203|MS310ru|naotoj|enkunkun|Ukey|grshb|hattoushinha|jurgen|nekobosi|pha|kujoo|deamu|K_SHIKI|zebraeight|roppara|raraya|atoh|hakodama|fk_2000|matsuwo|kemononeko|mememememiti|uncloud|kei_1010|naqtn|gohankun|julajp|tomoya5|mirror_fukuyama|masa-wo|mattttsu|kimzo|denken|brainparasite|kanose|udzura|RPM|snobocracy|nre20689|murashit|Nihonjin|orangestar|p_shirokuma|nakakzs|kkk6|suVene|megamouth|aureliano|kensuu|yoh596|Red-Comet|i196|FunnyBunnyDizzy|tuisumi|hana5521|showgotch|endlessdoor|gnufrfr|Nayuta|sho322|barlog|naquamura|DustOfHuman|soteciki|nagonagu|hal-e|abc1cba|cho45|kawango|basseyboost|yuyans|BIFF|uzusayuu|shifumin|closer|semimaru|funapon33|rusemoly|demodemodatte|sifue|brtRiver|tatsunop|snowdrop111|gouzou|y-kawaz|amigogrj|the_dirty_boogie|rokushou|on_your_mark|monaken|ROYGB|D1953ColdSummer|FUKAMACHI|uxoru|NOT4beat|zenibuta|utd_sn3781|kubomi|nuba|ki-sa|ttttttttt123|saz_go|norinaka|yP0hKHY1zj|susahadeth52623|ScarecrowBone|kujira_aoi_blue|suteacco|mats3003|manaten|shibuyan730|tsutomu-switch|FTTH|msmaiplruri|mixxcolors|cinefuk|dsl|chocolaterock|sjn|toritori0318|e-chikuwa|nayuko22|atsuyoshinarumi|sand_land|wsskho_m|houjiT|oritako|kijtra|ogawalaw|tsu_nyan|nochiu74|Yuta_Eno|hanyA|gajumaro|kiyo_hiko|haruten|ShangriLa|jiminko|rti7743|tamasuji|about42|n_y_a_n_t_a|charismanbou|howlingmoon|nisezen|guru_guru|katsushisasaki|tmura3|yamaimo_san|kz78|saizou4|CCCPdotK|pkm|fut573|nemuibayashi|neowotona|tnh|gintasoy|asamaru|sora-papa|aomeyuki|fjsk|obimaruko|moomintroll0814|n314|yoshihiroueda|pukarix|fooky|nerimarina|genzouw|skur2|jgoamakf|loop|henohenoktmk|haruways|mikawa_1964|shigeno57|h935|royaltouch1297|palehorse82|mfrider|mama_yuyu78|syu614|Countdown|decnonet|Waspkissing|Hamachiya2|dusttrail|jeffwayne|sktknko|Hana56|go32ing|GROOVY|LaNotte|junnishikaw|chazuke|mchmakki|kimasse|sm3823|tweetbot|fukurow57|khss_keita|Ereni|Dy66|lovely|studiosilk|clapon|sukekyo|tomoneko029|mifio|haburashi13|ajic0n|Amrak|font-da|j-crouch|OzzyZOW|neko-panchi842|junmk2|sachi_pop|funkynaonao|lenore|yuki_sheena|hinaho|ohmomo|Yuryu|toh_chika|Eriador|ophites|erya|wander1985|keys250|lisagasu|hariopip|mpresso|saicolobe|chrl-ohya|ichiharu12|un_eternity|kyabana|slywalker|as3187|y-towa|heaco65|Zephid|chira_rhythm55|hazisarashi|Isuzu_T|kuzumaji|itotto|poponponpon|Dreaming-realist|skgctom|aplmyuki|ushi_mo|GuriGura|kato_19|qppxw221|yuuy0424|nomeaning22|dal|hisamichi|T-norf|angmar|shea|tnakamura|citron_908|ohnosakiko|rin51|sasakill|mixvox-j|saigami|bookbridge|goemon08|kerodon|segrokamome|seachikin|kaz-coz|marief8107|eriko315|a_dogs|senchafreak69|fuyuohmine|kananaka|AfroRay|kaerudayo|bigboy-kyt|abc9razysalt|KIKUKO|mahiru123|nogikusan|a666666|kurapapa|yuki_koga|ttrr|attrip|shun1s|mini_big_foo|yamadar|aliaki|rainbow_doll|rirekichi|potD|nanoha3|AltNight|takuwz|nowa_s|ebibibi|remcat|makopooy|navagraha|kamemoge|ikd9684|gedroid|chap_py|sripura|yhm96625|bluemuddy|fjb1976|taturo-00|hkn|workingmanisdead|mst_capri|rosedust1192|takefour|upapa04|Ez-style|igusa|umiusi45|nicottowatch|hatayasan|simplemind|kangiren|ikihaji_kun|sisya|elephantskinhead|sakichi33|wasai|posinega|tydk27|apricotbarley|ysog|umi1334|mantol|suihan74|hobohate|enemyoffreedom|underhitpoint|yachimon|findelight|adliblogger|tsupo|hanya_pung|uehaj|musyokuneet556|ninosan|Ohgyoku|sakuratandotbiz|arlu|lovecall|kasajei|flagburner|taka222|rocketboy_miya|linuxdiary|akio6o6|originalorange|behoimin555|bulldra|ami-go40|aoiro_moon|ko-ya-ma|masao_hg|u_eichi|s17er|ubiquitous2011|zentarou|ryoju|Lobotomy|cardmics|batti-8|new3|morimemeta|asimino|wschldrn|luvlife|tenku65820|tailtame|eriotto|RINKINGA|tukirou|soratokimitonoaidani|lost312|td_kirin|tsfmysd|caq|thrakt|bbk0524|keshitai|tuki0918|kunitaka|fuzz0114|michiki_jp|t-ueno|Islecape|HBK-mn|hyolee2|mattilda|dogear1988|trashtoy|wadap|kubodee|sokodora|hirosh_yoshida|kp1|AC0|miyadai454|dj_superaids|onelineca|edechang|sextremely|suzuki_yamadori|halcana|kawa7610|likk|hiromikov|unigame|todo987654321|kuxttoba|unionia|spacefrontier|asazuki508|type-100|IthacaChasma|MersA|yellowbell|rajahbrooke|YMZ|simabuta|mongrelP|masm|hharukaa|pazl|moiwamoiwa|redlabel|laislanopira|usukeimada|Nobeee|ktakemoto|kaggiko-chie|tahatahon|allezvous|whazuparthur|mofutofu|tackyv0o0v|yamadadadada2|yukke1006|T_Haahi|masudamasuo|yoooen|dobonkai|YukeSkywalker|datemakio|until600331|mak_in|pacha_09|threecloudjp|shira0211tama|kumokaji|americanboss|dual_shock_blue|utsuro|akiat|geerpm|spamalot|Luigitefu|tonton-jiji|kuriemon|northlight|dummy1|xsinon|kaeru-no-tsura|ledsun|odoratec|uwananiwosuru|gazi4|lotusland|montnoir|dennou_kurage|aienstein|hanazukinokita|cheapcode|megane1972|wakachi_fehhu

2014-05-03

http://anond.hatelabo.jp/20140503095216

みんな少ないね。おれは前はかなり非表示に入れてたよ(下を見てね)。気にいらない記事をブクマしてるやつらは全員非表示にしてた。これだけ非表示にしてもたいして見える景色は変わらない。いまは元に戻したけど。うぜえと思ったらどんどん非表示にするといいよ。(*追記 なんか改行しないせいか途中で切れてたので、ところどころ改行してみた)(*追記2 文字数制限でもあるのか全部入らないので別記事にする→http://anond.hatelabo.jp/20140504105600http://anond.hatelabo.jp/20140504110458

angmar|ryokusai|activecute|mamasan84|hurdle91_4|TakahashiMasaki|tajimaboard|hatake|metalbabble|xevra|ftype|zaikabou|atoh|zenibuta|IGA-OS|waccher|susahadeth52623|FukayaAruto|Hana56|rfg5ks|ys0000|CavalleriaRusticana|solidstatesociety|cheapcode|Yagokoro|tanakadaishi|Cichla|y2_naranja|nagaichi|www6|ain_ed|anticipate|yurutena|akkakka|jtw|konkon1986|frsatti|rag_en|aenea|junshoku-159|skeleton-lair|fusionstar|n_pikarin7|edr|tirol28|ttlweb|mintpafe|almondcrisp|by-the-A|sagonohashi|papaopao|kingworld|Southend|phe|babanshika|mujisoshina|koubemise|telmine|kawatuka|mi2maru|honeybe|pumpkinphilicity|rika-rikarin|WinterMute|rz1h931f4c|snipesnaps|hamatsu|aminisi|faintmemory|Carbon12|narita_seiki|yuki-endo|syuu1228|Kou_RYU|ult100|h_tksn|DrFaust|imai78|momonger|Iridium|deadcatbounce|tender_apricot|Louis|ore_de_work|ranobe|ask11|aont|m_uchino|citron_908|orenonihongogayabai|temtex|raf00|barnout|raizon_detre|wartanenemon|HirokiJpn|chochonmage|jaikel|sulraw|MersA|ululun|hokuto-hei|ketudan|runeharst|k_gobo|n-styles|tomitake_flash|ta|takey107|pulp_literature|shibuyan730|vierger|karpa|feita|Serious|isshoku|hisamura75|quwachy|chuck_41|timetrain|kurai|icchan0000|vid|F-SQUARE|saebou|zz_sexy|me5655|md2tak|vitamin_G|konekonekoneko|false_alarm|kawacho|harumomo2006|tannsuikujira|diveintounlimit|mainichigomi|Irris|what_a_dude|konstantinos|koinobori|dlit|Sinraptor|ghostbass|sor_a|AmanoJack|kono1|Pokopon|genovese33|iwasi8107|Tamemaru|kirarapoo|goldwell|furukatsu|inadatomoaki|xufeiknm|mohno|north_god|mk-biz|zu2|kurostocking|shikinami|kahusi|Harnoncourt|rzio|mappy0x1e|tohky|delphinus35|imoguratan|hidenob|kirishima2813|tikani_nemuru_M|bsiyo|nanoha3|abtendon|hal9009|ChieOsanai|brimley3|gigi-net|no45|yajicco|sakage001|jituzon|Amerikan|wackunnpapa|ruletheworld|monaken|kimuratoshifumi|yuka_taso|kensir0u|mushi_cake|naok1991|irigium|goodhome2|lightningraft|lv-99|mashiroinc|wasara|mobanama|funaki_naoto|arktks00|tutomutti|MagnesiumRibbon|Snail|a1101501j|kowyoshi|snobsnog|rAdio|oskimura|soylent_green|Inuneco|nakakzs|Naotoh|paulownia|malark|itotto|law|key_motar|ryankigz|DG-Law|BEW|gyaam|sekiryo|noitseuq|HMCO-409|miruna|masa2501|rosa_nera|schnja|raitu|hiroyukiegami|gerling|hihi01|tappyon|kanimaster|omega314|CrowClaw|masaru_al|tezawaly|tester000|a2de|fazz0611|m-matsuoka|y-shift|Ri-fie|motorunder|cubick|gilugilu|oldriver|ueda2|k_ueda|TiMaria|thesecret3|nuke|sdsdsdd|whiteness|sunoho|riu3o|copipegetter|sugowwww|PSV|jay926|SiroKuro|tonapa|mfrider|inet_malic|kmyken1|passy_no_okan|mats3003|kamisetsu|h108|zonia|jollymolly|sajiwo|Junpecon|pompom20|qma5|netnotora|machida77|kyoumoe|sinx|simulacre|Geroro|nekoaruki|on_your_mark|chihhi1105|matsuda0111|repunit|t_ommy|utd_sn3781|seenone|iguchitakekazu|boke-boke|ymScott|gure3333|saurel|acchonburike|chocolate-choko|more_white|migurin|ID_u1nje3rh|install_maido|Memeo|kumonopanya|solaris_almagest|labeneko|Ilovenoel|junya_asa|don_ashill|laislanopira|serizawawawa|yachimon|ZeroFour|atoz|chi_to|isikasa|AKIYOSHI|n_euler666|namasutenohito|k_wizard|onanieCEO|minorito0411|kazuichi85|waferwader|gogatsu26|takanofumio|SerpentiNaga|kaworry|rjbook|baatmui|deadcalm|Scatterbrain|htktyo|medicineman|jun8|kaos2009|curln|sika2|TKK8637F|hvc-001|temtan|Dersu|Nowhereman|death6coin|himajin774|yutamoty|atsushifx|worris|halfstory|sasahira|noraneko|suzu_hiro_8823|dreamplan2004|u-chan|u_eichi|fuuumi_jp|reima|siso3|mrmt|RocRoc36|oreimo|Cliche|f_e_ita|Ratty|O_C_T|nunnnunn|y883p2|HitTheSupportersBull|mansour|chintaro3|wacking|erohi69|tareishi|www_taca|meganemegane103|hiro-rock|headstream|vanish_l2|dark_dove|kadukimoon|na23|lbuki|KANIBUCHI|gokino|CelestialFire|kaerudayo|remsleepless|jimihendrix0418|tsumiyama|coffee_and_tv|shinobu11|complex_cat|mightyflapper|yamanone44|harpy|yoghurt|teren|yamigome|joruri|napsucks|sagittaro|buripig|TsumuRi|setoFuumi|klaftwerk|zakima4|noma-n|wassy_5|corgi_corgi|mizkiyo|makoponpon|mayu_boooon|Clock0311|f-nyoro|wawawaw73|planetes|wands_ace0|amajam|Soraneko|kurokuragawa|karatte|nakamurabashi|goodbadnotevil-syamo|arakawakumiko|hamanako|API|WereIm|Cunliffe|gasemato|smartbear|rikopapa|skintight|pop23|sbr_m|shipayon|giant-killing|Gesaku_G|rxjun|KIM625|Mist|masatanz|hatesenID|murderboy|boom-boom-boom|hanaseleb|MHz0129|sooe|iMomonga|amamiya1224|zakshin|kimamaxx|high-d|moshimoshimo812|miryu2008|erogazo2|ks1234_1234|knagayama|uporeke|kuborie|welpherd|perfectspell|neogratche|sakurasuisan|maru-herzen|idiOt|yukatti|bohemianway|takaharu07|y-mat2006|hidematu|gensouyugi|weissorvice|aereal|wazurai|pokkurishibou|nashitomo|izumino|steel_eel|heal106|okakao|amamako|gapao|kisaragisan|waumao|okemos|sillyfish|kzhvsonic|manndora|sa_tie|Nakano_Hitsuji|tenku65820|tsunami246|kikujidou|SIVAPROD|tano13|tunaguinfo|Francesco3|coldbrain|koutyalemon|hiruhikoando|Rings_of_Saturn|guldeen|aotake16|besvna|mackey13|mikemaneki|a_dogs|wideangle|shinpei0213|mg69|sichimin|cubed-l|CIA1942|turu_crane|yetanother|Nachbar|kamikami3594|takobue|ext3|yahen|KoshianX|Cujo|goma108|Mikagura|an111|matagashi|Fou|ritsuca_ms|kagiya|mizunotori|feinyao|karin0712|nasuhiko|setopero|one-night|memoclip|kits|taninsw|maturi|ezk|dal|toaruR|sugi-cho|appletriangle|orchid_888|sisya|karekomi|shibudqn|takari27|hshinoda|pikayan|yukisatoshi|kozai|qxpi|yamifuu|hisaichi5518|ryukawasa|kangiren|tora_17|karuran|CGA|takeishi|shimomurayoshiko|enemyoffreedom|shijuushi|xr0038|nmit1939|anbul-441-x|snow113|misias|asami81|tekitouotoko|kussun|rs6000moe|yasumo|pycol|Mash|fm7743|fs001493|fogshadow|inumash|blue456|feilung|yuiseki|northlight|denken|ringo304|briers|sutara_lumpur|nippondanji|azumi_s|katow|SHMT|Tomato-360|sadadad54|iluka18|morriedes|lostman6|kurano|ken47|SasakiTakahiro|dododod|shortcut3|shin1830|T_Tachibana|kwhm|akawi|mizukemuri|kmagami|wander1985|mangakoji|shby_sht|skymkt|mahal|wanderingdj|ocura|sirocco|hyperkick|neojin|yokomichisizuka|spring-ephemeral|undo0530|aklaswad|takhasegawa|nogikusan|inoken0315|b00512177|unigame|multiplex00|manFromTomorrow|chinu48cm|mi0115619|seabose|hasetaq|miulunch|rxh|caz-spatial|zakkie|camel_neck|donncherrrryy|suift|kakkunpakkun|takadayararetayo|Assume|bsumoru|redfang396|hatoken|ysync|kyorakuan|taro-r|qpwo1|bioweb|wdnsdy|Domino-R|gifumaster|aitanisan|mycrabhands|juner|zatpek|tyuke|fumysan|tailtame|mikkemac|osakana110|KH_suecat|lucy5485|GEGE|jeswear|yamada_si|ryosukeoi|shoot_c_na|ak9|makaronisan|magaz11|umiusi45|ricto|dp643|crazy_pumpkin|FAEB|iaskell|anigoka|linden|llil|hbkm|kurahito|niccoro|dsl|escape_artist|azurun|asitanoyamasita|meme-o|atolsha|highcampus|frivolousman|yaoki_dokidoki|GiGir|kaitoster|p_shirokuma|genesis|zuzusea|ddd01|there_and_here|torinanban|ardarim|mashori|scoops|yspmymt|aoasagi|nzai|sota344|yu14f|tukinoha|Run2|y_arim|hazardlamp0855|alshine5|measure0315|fukken|sander|kathew|bigburn|darry129|yukikeiichi|chlono|Erlkonig|sontyo|Real_Great|youichirou|s_atom11|Santamaria_morishi|te2u|FFF|nextworker|yuaaa|top-poi|shaphere939|damepon|ka_ko_com|noreply|fuba|uxoru|harax|marvelarrows|omosoku|evertex|testa_kitchen|noritak|sin_cos|kashmir108|Philos|acqua_alta|nicovideoch|cloverleaf24|uduki_45|momo_suke|naru0504|o_mega|sotokichi|plutan|A410|hanazappa|crescent398|habanero02|bluesunday|Phys|donkey145|momomubi|hyougen|toocheapjp|fontedeagua|yteppei|came8244|bb_river|shimazoom|gebugebu|kybernetes|type-m-c|instance0119|smtp|shimada65536|SoraNyasukE|mfigure|ten_ad|air25|cutxout|yukky2000|jingi469|SZKAKTK|mil-memory|tama_no|nrke|ritsuch|kossie89|reve_rainforce|rinrinbell|poccopen|asiamoth|tow-mas|panparade|urarai|ten7132|a6u|kusaret|perucho|REV|paraselene|rdcs|dekijp|yasunori|Dic|t-rio|anoncom|John_Kawanishi|hyaknihyak|honyapen|koyhoge|uasi|arajin|lancys|ukdata|rairai16|hiroomi|angelica4ro|kidego|hakodama|unnmo|yukipo2008|ermine_twitter|imo758|shinpson|Naruhodius|Pz-4|sadn|pinoem|noname_lab|Usaku|babelap|hirali|yamakozawa|ocha39|whiteball22|sezitak9|necolaus|hannover|Barak|ahya365|EurekaEureka|suimon|Pasta-K|zoidstown|silvermoai|love-peanut|nekozea|toronei|haru-s|deeplove|TEtra|nkoz|GilCrows|nasunori|asmblr|dodorugefu|ueday|gogo0721|plustica|kobayasiikumi|howaito_denkyu|mst66|rsh|howdying|spade9970|TOKOROTEN|shinagaki|hidesuke|lovelovedog|siromado|d_pressure|coldcup|amesuke|kenzyarai|termin2|hitohitohitto|y-kawaz|jnanukom|hashimoto0226|takeyamaken1989|zorio|otsune|tatsuzawa|nemiko0324|R_Goines|kubodee|pulltop-birth|impuritynot|loliniichan69|cazukit61|tuds7280|pochi-p|Xenophias|zeki|akumasyougun|sucrose|chopapapa|takashi1970|manaten|TYK|suzunami1001|Jinmen|rin51|qnighy|gikazigo|kir_royal|ohmomo|yamada55|halt_haru|prodakuto|kousuke425|hazime2914|keyxxyz|kuroneko15|doraman|kobo454|Shimataroh|Sumitomo|nicoyou|jingi2525|kimottamakimo|cheva|era1978|bovis|kaipu|worcel_0910|wakabatan|tenkoma|u-ichi|anpo-sumeragi|neco22b|bobcoffee|u-c-h-i|choco-holic|akishin999|takuwz|torish|dnsystem|Aiffet|yuhsuke19_hg|solailo|kensk714|farfromforest|type-100|cupnude|NOKIA|a96neko|Lif|benriman|mesowest|makimura_amane|rna|quesera2|chihaya_72|gggsck|yukkie_strike|frog78|geromi|ku4ro|perisy|mk16|deep_one|hiyamad|a_matsumoto|sai-coro|mock_on|smicho|kameniwa|kokogiko|keiseiryoku|ktasaka|sophizm|unterwelt|mate-ra|ashitamad22|kamayan|panpanpanda728|hiromi163|tekipaki_work|ramyana|very_high_energy|Misapon07|Keee|softnet|est-ferelith|SizSiz|mk_chap|boukoku_db|plopea|tabyy|Hakase|gajumaro|kskb|outalaw|dita_69|kurean|netto_mk|tk18|eagletmt|vimp_fun|Magicant|junboo28|textmarch|yamakaz|amemorandum|nekoluna|da-yoshi|rikokis|muhimebiko|Makkon810501|karimikarimi|pushol_imas|crimson00|c430c|yhmt|ago_kyo|hotnot|kuronaga|goroyung|sikii_j|Bottoms_at_Narashino|elve|bunbun56|tanemurarisa|kamizyousan|KAOLY|KatmanZ|hidex7777|DocSeri|gauqui|hiby|zekky_f|natsu_san|toratorazero|tigertissue|takanorikido|stick01|rerofumi|t_sabaku|latemder|gogorou|masterknight|clworld|thvenr|pacchii|rikuo|keta_chop|kasuyarou|hu-ya|kura-kura|aka-ari|domenetwork|ken3884|BRITAN|harasyo865|sea_side|MAXjeep|aria_corp|kotamania_00|yutta125|agni|jalapeno78|nobby81|secondary9999|whirl|rxv15051|dudley_ty|lain1394|pugiemonn|arlu|mits_00|Heron|pega2s|cosmetick|tokigami|p_ny|thrthrsvn|fellows|ikemo10|hase0831|hexol|decimal|xzglrete|bookmarkjp|atawi|nugget|takayuki666|dokumizu|unyuunyuho|tzt|humid|himitsudesu|hildo|s-tomo|joyjoyjo|Coolions|kudokann|seaview_p35|totttte|sorshi|tricksterchaos|ikoekoe2|irhutnyui|brax|kasuga-k|sekiyado|porimern|silverscythe|pccs15|rutenworks|oka_Elizabeth|beaux25|kenny_green|osankuma|dirtjapan|plumsyrup|haru-mutsuki|Rikerike|modahand|fujeans|Netalacy|kazoo_oo|itouhiro|fright|crea555|samepa|kana-kana_ceo|multi12|b4takashi|nnh|FeZn|richard_raw|qinmu|neko73|takisok|rumbaba|shinchu|ya--mada|rk22|fabu0405|someinu|haruka-izumi|taqpan|Cetus|candy296|cubeon|reds_akaki|MERIHARIBOY|hidekkytsuji|TiTo|gomis|arien_nu|pogemutaBN|AmaiSaeta|masarusanjp|Nihonjin|SL230|mikage014|jackbartlett_mhp3|gui1|a-mutter|aegis09|FTTH|kusigahama|dame_40|sakurasakuras|laiso|mumu3|sank0n|shimanp|hush_in|ekwosbooks|yuumi09|lifespiel|geppey|wancyope|Mukke|kugyuemon|shmras|caliburn|oppekepei|t-tanaka|lepton9|lemon_tea906|madhatter08|weeklydennpagraph|orbis|posinega|damekana|inaco175|sasaplus1|waribashi|Eis|sik308|sigege|mustang1234|iitripod|Muke|solunaris149|sumoa|munetc|egpehcbd|junmyk|kk_solanet|shiba-710|Bifuteki|t-murachi|kommunity|asagiazure|erog|myoukabi|neko0_neko0|SimonMajin|McCammon|racec|funekaz|eo64air|watchcat|kabutch|Gelsy|kitayama|nvs|AnonyPre|masudamaster|usamyu56|hamusoku3|jojo0312|oreimo1234|braverobo|Outfielder|FEFE|radu|T_da|hatebu_test2|ksaitou|fuga_maito|wata300|k-noto3|tomo31415926563|tencube|vanacoral|kogarasumaru|min2-fly|negi_a|kagioo2uma|ippai_attena|mizuki-yu|ncc1701|gimonfu_usr|holidays1976|appbank|abiruy|pasokonta|sleepyuzura|asakura-t|seachikin|atsk|bewzew762|revanya|flasher_of_thought|yasugoro_2010|rainbowsazaki|kagurakanon|repulse|idoyesido|terata|orosi02|Chlocha|takhino|mu025rara284|yamanka00|ninntai|sak1ta|Sion96|dai_original|hoshiyo|kujoo|nj0831|funiuni|egys3|Briareos|warriorking|bzb05445|juyenmaru|tanakara_botamochi|joenaha|riksdybednmtuk|dokaisha|vdsayere|TakamoriTarou|home1986|isaisstillalive|muramasa0717|lqgq|tinsep19|cad-san|katryo|garage-kid|Yamakatsu|Okky|emiladamas|suesh32|cotton6|maromii|kasajei|gabuchan|tukasa55|ryuzi_kambe|kaz5555|STARFLEET|okra2|mythm|repon|shields-pikes|kari-ko|cha-cha-ki|Sucker|takeodon|houyhnhm|takimo|tamakoshidada|kash06|kasaraku1|onavi|hanatarekozo3|kyotoeye|mornig89|cormorantcraft|seiyuDB|waman|benrista|nishiokamakoto|dora_rash|mkzk|twisted0517|y_ryuzan|takc923|HSIN|omi_k|sumida|vanishatea|detteyouchi|junkbots|segawa-y|thun2|delusion_epk|birthday66|tsfmysd|str017|mike_neko|k-p_aoikuma|sakura-hayabusa|sasaq|yakitori-siro|childdoc|komamix|U1and0|sasaboushi|ShangriLa|genpi|iww|as62|Gustav13|

2014-04-20

SIerを辞めさせてくれなかったのでエロサイト作りました

結論から申し上げますエロサイト作成いたしました。

ゆーすけべーさんが以前に作ってたimeeroみたいな感じです。画像Blogスクレイピングしてエロ画像効率的に見るサイトです。

だらだらエロ画

なお、先程解約手続きを済ませたので4月末くらいに見れなくなりますエロサイト自体にあまり興味がなく、ローンチしたらやる気が無くなったのです。

主要な技術

生産性よりも憧れの昇華を重視しました。

テスト駆動開発がやりたく、DSLに強いロック魂を感じたRSpec

はやりに乗ってBootstrap

特にCapistrano名前キュートでやっていることがカッコイイのでどうしてもやりたい技術でした。

あと、メインとなるRailsこの記事に書いているスキルの中で唯一経験が無かったというのが一番の理由です。Rubyが好きなのもありますけどね。

辞めたい理由
会社を辞められない理由

いやぁ、退職しようとすると会議室で8時間説教されるって都市伝説じゃないんですね〜。

ところで転職活動をした感覚だと、今より給与が2倍出るところでも簡単に内定が出ることが分かりました。

転職活動やエロサイト作成を通して精神的な余裕も出ましたので、もう少しSIerのものの問題、仕事の進め方などを熟考した上で、本当に正しいSIerのあり方を考えたいと思います。無理そうなら逃げます

以上、よろしくお願いいたします。

2014-04-10

http://anond.hatelabo.jp/20140410134501

id:minamiyama1994 さん、反論してくださってありがとうございます

Haskellファンのご意見がいただけて嬉しいです。元増田です。

記事全体で「関数型言語」と呼ばれているものは「関数型言語一般」ではなく「Haskellや一部OCamlの話題を含むごくごく一部の言語」の話である

わかりにくくてすいません。記事では「関数型言語」の話はしていません。「関数型プログラミング」の話をしました。

関数型言語」は範囲がよりボンヤリとした表現です。たとえばC言語関数型言語かどうかをみても賛否両論にわかれるでしょう。

私が記事を書いた目的は、”関数型プログラミングに縁のない人に関数型プログラミングをわかりやすく紹介したい”でした。

その目的のため、「関数型言語」という表記を注意深くとり除き、代わりに「関数型プログラミングサポートした言語」という言い方をしています

このスタンスの上で、

関数型プログラミングをフルにサポートした言語”の代表として、Haskellを紹介し、

関数型プログラミングへのサポート片手落ち言語”として、LispErlangなどを扱いました(それらのファンの皆、ごめんなさい)。

言語パラダイムの話題」と「言語の話題」と「ライブラリの話題」と... を混同している

関数型プログラミング初心者の方は、それらの差異なんてどうでもよい、と考えるのではないでしょうか。

関数型プログラミングとは何が良いのか、を大雑把に知りたい。

そうなのではと考えて、あえて区別せずに記事を書きました。

「たとえばモナドを知っていれば、30分程度でパーサー(解析機)を理解することができて」? モナドはそんな限定的用途のものではないし、パーサの理解とは無関係だ(単にライブラリ設計の問題)。それにApplicativeスタイルのほうがパーサが書きやすいという人もいるだろう

id:minamiyama1994 さんの仰るとおり、モナドはパーサー以外の多くの応用があります

現状多くのパーサーがモナディックパーサーとして書かれていますモナディックでないパーサーは、あまり多くのユーザーには使われないでしょう。

モナドなどの抽象的な構造が幅を利かせてるお陰で、ライブラリに秩序が生まれ、ユーザーはそれを使いやすく・読みやすくなっている、というのが私の言いたかった主張です。

(なお細かいことで恐縮ですが、ある種のモナディックパーサーはApplicativeでは書けません。その点をお忘れですよ)

テキスト処理」に対して

お前それShellやPerlRubyPythonの前でも言えるの?

GUI」に対して

GUIライブラリ設計にもよるけど、GUIってOOPの強い分野だと認識していたのだけれど、さてはて

この二つは、先人が不利な環境ですごく頑張った成果が現状なのだ、と思っています

本質的には関数型プログラミングの強みが活かせる分野のはずです。

「個人の技量の話題」

レシピ」に関しては、関数型プログラミングスタイルでは、手続きを手続きとして自然表現できるのに対し、オブジェクト指向ではできない(DSLチックなものになってしまう)、ということを言いたかったのですが、

わかりにくかったですね。

「書きやすい」

(*)関数の例で、関数型プログラミング無駄の無さを示せた、と思ったのですが…

僕自身はC++Haskellの両方を書く人間で、確かにC++の方が「短く書ける」と「感じる」ことは多い

マヂですか…反論のためのでっち上げとかじゃなくて(失礼)?(追記: Haskellの方が「短く書ける」、のタイポだそうです)

記事そのもの価値基本的にないっぽい、こういう記事撲滅されないかなぁ

Haskell布教のために有休とって4時間かけて書いたのにーw

撲滅…

ショボーン(´・ω・`)

2014-04-09

オブジェクト指向 v.s. 関数型プログラミング

近年、関数型プログラミング重要はいろんなところで叫ばれています

Javaの最新バージョン関数型プログラミングに関する新機能が加わりました。

Rubyも昨今、関数型プログラミングへのサポートが手厚くなってきています

プログラミング教科書大手オライリーからJavascript関数型プログラミングを行うための解説書が発行されました。

関数型プログラミングへの注目度は高まってきています

おそらく、みなさんは既にオブジェクト指向が何か、を知っています

でも関数型プログラミングとは何か、胸を張って語れる人は、周りに見当たらないかと思います

実際、オブジェクト指向によってプログラミングする方法は、わかりやすい解説があちこちにある一方で、

関数型プログラミングとは何か、何が良いのか、ということについての、よいまとめは見つけることはできませんでした。

この記事を読む方の中で、「関数型プログラミングを取り入れるか・取り入れないか」で切実に悩んでいる人は、おそらくいないでしょう。

この記事はあまりかいところに立ち入りません。関数型プログラミングを使う側の立場に立って、利点や向き・不向き、それが導くスタイルを書きました。

みなさんは鳥のように飛んで、高い空から関数型プログラミングとは何か、何が良いのか、を見渡してください。

ふたつのアプローチ比較

オブジェクト指向アプローチは、名前をつけてプログラムを整理する

関数型プログラミングアプローチは、汎用部品でなんとかする

オブジェクト指向アプローチ

Googleが近年リリースした言語、Goには、”継承”を直接サポートする仕組みが無いことが話題になりました。

また、Mac OSXの基幹ライブラリCore Foundationは、ライブラリ自体C言語で書かれているにもかかわらず、その設計方針は明確にオブジェクト指向です。

継承クラスは、オブジェクト指向必須条件ではありません。

オブジェクト指向本質とは、何でしょうか。

その本質とは"名前をつけて対象を識別し、それを扱うこと"、にあります

最もプリミティブなオブジェクト指向対象は、ファイルハンドラです。あるファイルを開いて、読み込んで、あるいは書き込んで、ファイルを閉じる。

これらの処理をまとめたら、わかりやすいですよね?

対象に関する処理を、対象の周りにまとめる。これがオブジェクト指向の基礎的な理念です。

識別することとイコール比較できることは、とても良く似ています

イコールによる比較は、オブジェクト指向では鬼門であることが知られています

PointクラスインスタンスとColoredPointクラスイコール演算をどう決めればいいかに、正解はありません(詳しくは"effective java"をご参照ください)。

また名前をつけて識別する対象は、フワフワしていてはいけません。

たとえば、"軍人階級"をオブジェクトにしたとしましょう。"大佐"クラスのある兵士名前フィールドや、性別フィールドを持っているでしょう。

ところで彼が昇格したときに何が起こるでしょうか。

新たに"少将"クラスインスタンスが作られます。"大佐"クラスを破棄する前に、名前性別、その他沢山のデータを引き継がなくてはいけません。フィールドを増やしたい場合はその都度コード修正を加える必要があります(*)。

なるべくイコール比較を避けたい。対象不安定なものはいけない。では何に名前をつけて、識別するか。そこにオブジェクト指向技術者の熟練度が現れるのです。

関数型プログラミングアプローチ

一方、関数型プログラミングでは、特定の何かに名前をつけるより、極力、汎用部品でなんとかしようとしま

さな関数を、集めて撚り合わせて、新しい関数を作る。

関数自体リストなどのデータ構造に詰めることもよく行われます

実は、関数型プログラミングというのは本質を表していません。

その真の名は、"値指向プログラミング"です。

関数をはじめとして、リスト・ツリーのようなコンテナ手続きを抽象化したもの、回路を抽象化したもの

あらゆる対象を値として、合成し、ときに分解し、新しい値を作ります

変数という概念必要ありません。

変数適用する処理を作りあげることが、とても簡単だからです。

四則演算定義されたデータを詰めたデータ構造もまた、四則演算可能だったり。

値をイコール比較することも、なんのそのです。

誤解を恐れずに言うと、オブジェクト指向トップダウンなのに対し、関数型プログラミングボトムアップです。

関数型プログラミングの利点

読みやすい・理解やす

関数型プログラミングサポートする言語には、沢山の汎用部品定義されています

このような構造インターフェイスとして、様々なライブラリが組まれているので、

たとえばモナドを知っていれば、30分程度でパーサー(解析機)を理解することができて、

パーサーを理解できれば、JSONパーサー・ XMLパーサー・markdownパーサー・C++パーサー ... などを理解するのはとても容易です。

理解やすいこと。これが関数型プログラミングの大きな利点です。

追記:

また、汎用部品と型のお陰で、ライブラリドキュメントが圧倒的にひきやすい、というメリットも有ります

Haskellな人がPythonにトライした結果 - Togetterまとめ

書きやす

関数型プログラミングは「厳密な事前設計必要とするため、簡単なことをやるのにも時間が掛かる」。

よく誤解されていますが、これはウソです。

スクラッチプログラムするのは、非常に手軽です。

>> map (*2) [1,2,3]
[2,4,6]

邪魔な”儀式”や、"おまじない"のコードが徹底的に撤廃されているためです。

関数型プログラミングコードは、潔癖かつ濃密です。

たとえばC言語でint hoge(int x,int y)が定義されているときhoge(3)はなんの意味も持ちませんが(コンパイルコケますが)、関数型プログラミングでは意味があり、実際に有用です。

上の例では、「掛け算をする」(*)関数は、二引数関数ですが、それに引数を渡して作られた「2を掛ける」関数(*2)は、一引数関数になります

関数型プログラミングでは、「簡単なことは簡単にでき、複雑なことは複雑にできる。ただし、間違ったことは殆どできないか、全くできない」。

多くのバグは、コンパイルエラーとして検出されます

また、静的型付けの力によって、コード補完は非常に強力になっていますインテリセンスの比ではないです。

たとえば、関数中のある表記の型を任意に表示できます(GHC/TypedHoles - HaskellWiki)。

やがてやってくる未来には、プログラムテキストエディタで書くことは時代遅れになっているでしょう。

統合環境サポートで、バグミスの少ない、スムーズプログラミングができます

そしてその環境で動くプログラミング言語は、関数型プログラミングサポートした言語なのです。

いつ関数型プログラミング

以下の様な兆候を感じたら、あなたはそのプログラム関数型プログラミングで書くべきです。

一般に、オブジェクト同士の相互作用が複雑になるほど、オブジェクト指向では手に負えなくなっていきます

そういうときは、オブジェクトを直接扱わず、替わりにその"相互作用"を扱うことで、複雑さを軽減するアプローチ有効です。

それこそが関数型プログラミングアプローチです。

オブジェクト指向の利点

初心者にとっては読みやすい・理解やす

特にオブジェクト指向有効なのはプログラミング初心者がそのコードをいじるかもしれないときです。

関数型プログラミングは、強固さと柔軟さの代償として、高い学習コストを伴います

そのため、初学者にとってはハードルが高いのです。

扱う対象があまり複雑でない時は、書きやす

オブジェクト間の相互作用が複雑でなく、着目している(名前をつけている)概念が安定しているとき

そして、プログラムをいじる人たちの間で共通理解が図れているならば、オブジェクト指向が有利です。

関数型プログラミングの得意分野はなにか

数値計算

遅延評価という機能によって、レガシー言語で扱えなかった、巨大な数を扱うことができます

分数を扱うことができます虚数もです。

関数型プログラミングで書かれたプログラムは、正確さが要求される、金融関連の業界で使われています

テキスト処理

手続きとしてパーサーを記述できるので、テキスト処理プログラムはより理解やすく、メンテナンスやすものになります

関数型プログラミングを知らない人は、「正規表現おk」と言いますが、

彼の書いた複雑な正規表現は、半年後には(書いた本人でさえ)理解できなくなっていることでしょう。

並行処理

手続き一般を扱うことができるので、途中で割り込みのある手続きの表現も容易です。

関数型プログラミングサポートしていない言語ではコルーチン(ファイバー)などをつかってなんとかするしかありません。

さもなくば、非並行処理では普通に関数として記述できるところを、並行処理のために、Builder,Strategy,Command,Interpreterパターンを駆使して書き直すことになります

Javascript使いの方は、Deferredなどの構造を使うでしょう(http://qiita.com/KDKTN/items/4c6986049d204f0645d8)。

C++使いの方はBoostで頑張りましょう。破滅的に解りにくいコンパイルエラーメッセージと格闘してください。

レシピ

もう少し簡単な例をあげます

あなたは、あるレシピにしたがって、自動的料理を行うマシン制御プログラムを書いているとしましょう。

料理レシピは、"手続き"ですよね?たとえば、カレー

1. まず玉ねぎを炒める。

2. 飴色になったら、肉を加えて炒める。

3. 野菜を加える。

4. 水を加えて煮る。

5. スパイスを加える。

しかあなたはこの手続きを関数として表現できるでしょうか。

…できませんよね?何故ならば、各ステップの"間に"、マシンのロボアームの位置や動きを調整する処理が必要からです。

これをオブジェクト指向でやろうとすると、各ステップ副作用として、それらの処理を行うことになります

そうすると、マシンが二機に増えた時などの変更量は、絶望的なものになります

あるいは関数として表現するのを諦め、手順全体をDSL記述できるようにします。

このアプローチ関数型プログラミング的です。しか関数型プログラミングサポートした言語の助けなしでは、そのDSL記述するために沢山のユーティリティコードを書かなくてはならないでしょう。

オブジェクト指向アプローチでこの問題をエレガントに解こうとすると、クラス化の粒度を上げる事になります

野菜クラスフライパンクラス、ボイルクラスフライクラス、焼き加減クラス、アームクラス野菜の大きさクラス、切り方クラス、焼き方クラス、"焦げたよ"クラスetc...

こうすると早晩レシピプログラムコードから消え去ることになります。上記のたった5行は、依存性注入のオブジェクトグラフを構築するコードに取って代わることになります。そこには沢山の挙動制御オプションとして付記されているのです。

カレーなど、ある種のレシピ限定することで、見た目の理解やすさを得ることができますが、一方それは表現力を損なうことを意味します。

C言語などではマクロを使うこともできますが、それは結局、関数型プログラミングアプローチ意味するところと同じになります。すなわち、補助のために沢山のコードを書くことになるでしょう。

GUI

iOSのAppstoreアプリは、"無料"と書かれたボタンを押すと、それが"インストール"ボタンに変わり、それをもう一度押すと、ダウンロードの進捗を表すインジケータに変わり、それを押すとダウンロードキャンセルできます

このように、位置は同じなのに、ステートに依って見た目と機能が変わるボタンは複雑です。

これをオブジェクト指向で実現しようとすると、

1. 三つの異なるボタンを同じ位置に置くか

2. 同じボタンが三つの異なる機能を持つか

という下らない問題にぶつかります

一方関数型では、"機能"、"見た目"、"状態"、を独立に扱って、それらを合成してボタンを作るので、迷うことはありません。

「同じ位置にあるUIオブジェクトは、コード上で(インスタンスとして)独立して、他から干渉を受けない」

この条件が満たされているうちは、オブジェクト指向GUIを実現することに無理はありません。

しかし、携帯端末のような小さい画面で、多くの機能を達成するためには、UI要素はコンテキスト依存的に複雑になりがちです。

近年、PCのディスプレイの大きさは、頭打ちになってきました。

画素数は増えているのですが、MacにおけるRetinaのように、複数ピクセルひとつドットを表すようになってきています

これは、ひとつの画面に置かれるボタンなどのUI要素の数は、これから先の未来で増えることはない、ということを意味します。

したがって、未来GUIプログラミングは、注意深く機能ピックアップして制限するというデザイナー努力を脇におけば、

関数型プログラミングの力を頼るしか無いでしょう。

はじめよう、関数型プログラミング

まり

Haskell さいこうなのおおおおおおおおおおおおおおおおおお!! おしっこ漏れちゃうのおおおおおおおおおおおおおおおおおおおお(゜∀。)ワヒャヒャヒャヒャヒャヒャ

1. google:すごいHaskellたのしく学ぼう を注文する。

2. Download Haskell自分のPCに導入する。

3. コンソールghciと入力して、対話コンソールを立ち上げる。

4. 次の関数コンソールに打ち込んで、結果を見る。即値で書かれているところとかをいろいろ変更してみて、感動する。

take 4 $ map (*2) [1..]

5. ステップ1で買った教科書を読んで、学ぶ。


追記:

いかがでしたか

ちまたには、関数型プログラミングの利点は変数が無いことだ、とか、より安全から、とか、より速いから、などという妄言が満ち溢れています

オブジェクト指向関数型プログラミングは、水と油ではありません。プログラマ自分プログラムに最適なアプローチを選ぶことができます

一般にはあまり知られていないことですが、Haskellにもオブジェクト指向へのサポートがあるんです(Lensライブラリ、これを使用したサードパーティライブラリ最近増えてきています)。

この記事を読んだオブジェクト指向プログラマあなたが、少しでも関数型プログラミングに(そしてHaskell)興味を持ってくださって、ホームセンター大人用オシメのコーナーが大賑わいになれば幸いです。。

2014-01-17

http://anond.hatelabo.jp/20140116013407

モデルで発生するイベントが多く、複雑になるほど、ビューとの関連は密になる。

ここの所は、今回の例ではいまいち見えづらい気がする。今回の例で複雑になっているのはモデルだけである。ビューがやる事は、「納刀する」「変色した血が飛び散る」イベントをlistenして画面に描画するだけのはず。MVCイベント機構は、モデル→ビューとコントロールモデルメッセージ通知を行うためのもので、モデル同士の通信についてはノータッチモデル内での相互作用に、単なるメソッド呼び出しを超えたあれこれが必要なら、DSLを作るなり自前でイベント機構を作るなり好きにして下さい、というスタンスかなあと思われ。

といってもQtsignal/slotなんかはモデル同士の通信にも使えるわけで、そういう意味最近GUIエンジンMVCの範囲を超えつつある。具体的に「Controllerから入力Modelの自発的な状態遷移も、同じイベント機構で扱いましょう」というのはMOVEの考え方に非常に近い。

http://blog.neo.jp/dnblog/index.php?module=Blog&action=Entry&blog=pg&entry=3442&rand=9193a

MOVEの考え方からいえば、モデルの責務が吸い出されて単なるデータになってしまうのは、むしろコンセプト通りであるとも言える。

なお、単純な例を超えてRPGの実装を自分が考えるなら、オブジェクト指向設計としては攻撃方法型や特殊作用型(毒とか呪いとか)同士の相互作用を主眼に置いた感じになって、モンスター勇者は単なるデータに近付いていくだろうなあ、と予想してみる。組んでみないと分からない事もあるだろうけれども。

2014-01-16

実はMVCってしっくりこないんです

例えばスーファミFFみたいな、古典的RPG戦闘シーンを作っていて、「勇者モンスターを攻撃する」。

勇者.attack(モンスター);

という設計だったとする。

これに「モンスターが毒を受けて、自死する」という挙動を追加するケースを考える。

毒.attack(モンスター);

やや複雑な変更になりそうだが、勇者の攻撃とのタイミングの差で、

のようになるとしよう。

さて、変更する箇所は...

まず、インターフェイス"攻撃者"をつくって、「勇者」、「毒」をその実装とする。加えて...

Model勇者への変更:

斬撃後に死んでいた場合(*) 、納刀する

入力Controllerへの変更:

攻撃前に既に死んでいた場合、攻撃できないようにする

Modelモンスターへの変更:

しかしこの変更は非常に複雑だ...

困ったこと1

この設計変更によって、

が、

の4パターンに増えた(※ただし最後パターンに関しては今回特に修正の必要はなかった)

攻撃者がひとつ増えるごとに、これらの分岐は倍、倍に増えていく怖れがある。

困ったこと2

あらたに攻撃者を追加すると、既存の攻撃者を変更しなければならない。

困ったこと3

この変更によって、全体の時間的な流れがよくわからなくなった。

例えばさらに攻撃者「呪い」を追加したとする。

するとModelモンスターには

  • 既に毒を受けているとき呪いを受けたら
  • 呪いを受けたあとに斬撃で死んだら

等々の分岐が並ぶことになる。この分かりにくさは単にStateパターンを導入しただけでは本質的には改善しないだろう。

考察

MVCにおけるモデル、は振る舞いを持ったデータだ。モデルが状態変化したときイベントが発生する。

しかしその状態変化が別のモデルの状態変化のタイミングに影響をうけるときモデル設計はとても複雑になり、読みにくくなってしまう。

モデルで発生するイベントが多く、複雑になるほど、ビューとの関連は密になる。

このような複雑さをプログラマが支配するのは、とても大変だ。

みなさんも体験したことがないだろうか、GUIで「ホニャララしているときにホゲホゲするとバグる」みたいな挙動を。

例えば私が愛用しているiOSはてなブックマークアプリは、

  1. 「人気」タブを選択して
  2. 記事のリストを(更新するために)下にドラッグしながら
  3. ドラッグしている指を離さないで、(空いてる別の手で)「新着」タブを選択する
  4. そのあと指を離して、再び記事のリストを下にドラッグ

すると、上部に表示される「更新時刻」の表示位置がおかしくなる。

RPG設計は、たとえば下記のように記述できるDSLを導入すると、劇的に改善する。

タイミング:毒 ⇒ 死ぬ ⇒ 斬撃 の順なら、納刀する
タイミング:毒 ⇒ 斬撃 ⇒ 死ぬ の順なら、変色した血が飛び散る

オブジェクト指向ではこれはStateパターンStrategyパターンを組み合わせることで実現できる。

でも、このような設計にすると、勇者モンスターモデルオブジェクト責任は極端に少なくなってしまう。

加えてオブジェクト間のやりとりの複雑さがDSLに押し込められるので、オブジェクト主体性殆ど無くなってしまい、

結果、モデルオブジェクト存在意義が怪しくなるだろう。

うん、ただのデータでいいや。

---------------------------

(*) 攻撃時に相手の状態を問い合わせるのが醜い。これを避けるには、モンスターが毒で死んだ時に勇者イベントを通知して、勇者を”戦意喪失”状態に変化させる手がある。

ログイン ユーザー登録
ようこそ ゲスト さん