はてなキーワード: Builderとは
https://anond.hatelabo.jp/20230615211440
ttp://mickmanx.blog71.fc2.com/
難易度:★★
ダークファンタジー正統派メトロイドヴァニア(ちょいエログロリョナ)。死亡した最強の女戦士が禁断の術で復活させられ、再び魔物と戦うことになる。
明確にストーリーがあるのは最初と最後ぐらいで、マップ全体が実質的に一つの大きなダンジョンとなっている構成のため、ひたすら戦闘と探索に没頭できる。ボリュームたっぷりかつ、戦闘難易度がサクサクなので、マップ埋め作業が止まらない。
基本操作のレスポンスが非常によく、ボタン連打で出る通常攻撃のコンボで戦ってるだけで十分楽しい。さらに、追加されるコマンド技も多段ヒットするものが多いため、敵をボコボコにする快感がさらに加速する。昇り斬りからの斬り下ろしのお手軽連携最高。
レベルアップ(で得たポイントの割り振り)と、発見したアイテムによる能力追加の両方の強化がある、自分が一番好きなタイプのメトロイドヴァニア。
アイテムによる強化は、空中ジャンプなどの移動系、武器種追加、技習得・強化(アイテム消費制で任意に選択可能)、各属性のオーブ(魔法)、魔法の種類追加(拡散ショットなど)……と多彩。特に移動系は、空中ジャンプ回数+1のような強化が複数あるため、最終的な機動力がとんでもないことになる。
探索面でも、各セーブポイントにはどこからでも自由に飛べる上に、現在地を同様の転移可能なポイントとして設定できたり、部屋移動時にそのエリアで未取得のアイテム数が表示されたりと、快適にする仕組みが完備されている。
エログロリョナ要素について。あくまで残酷な世界の表現にとどまっており、グラフィック的に見てもそんなに「実用性」はない。と思うのだが、行為としてはたしかに異種姦孕ませや腹パンや吐血・吐ゲロなどが描かれているので、そういうのを求めている層も忌避している層も、自分の目でアウト/セーフを判断してほしい。エロ系アクションではテンポを悪くしがちな拘束攻撃も、緊急回避技で即抜けることができるのは助かる。
ストーリー性が強化され操作キャラも複数になった続編(時系列的には過去)が予定されており、公開されている体験版を見ても大いに期待できる出来だったようだが、残念ながら制作は現在休止しているようだ。惜しすぎる。
ttp://mickmanx.blog71.fc2.com/
難易度:★★★★★
ボーカロイド(ミク・リン)を主人公にしたロックマンXパロディ。
Xの方のロックマンはほとんどやったことがないが、それぞれ近接と飛び道具担当で、ミク=ZERO、リン=Xという感じ。操作キャラはステージ内でいつでも変更できる(ライフは共有)
なぜかプロローグはスーパーメトロイドネタだったり(自爆カウント有り)、暫定ラスボスはマリオだったり、ロックマン系の敵ボスの中になぜかモリガン(ヴァンパイア)が混じっていたりと、悪ノリ全開のゆるいバカゲー的内容。
と思いきや本編は、難易度インフレしがちなロックマンオマージュ系フリゲの中でも、はっきり言って最悪レベルの激ムズさ。特にクイックマンマンステージは、道中もボスも二度とやりたくない(しかしお約束のボスラッシュがあるので最低二度は戦う)
一応、ステージ内やボス撃破で入手できるアイテムを消費して行う能力追加があり、各ボスの弱点になるリンのショットを計画的に取得していけばだいぶラクにはなるが、弱点を突いてもクイックマンは、クイックマンだけは、キツい……。あの高速体当たりをかわす方法はあるのだろうか。
上の感想はデフォルト難易度でのものだが、難易度設定はいつでも7段階から選択可能。ただ、最低の「ゆとり」は画面右上に大きく「私はゆとりです」と表示されて煽られることになるので選びづらい。
楽しかったというよりも、とにかく辛かったという印象の方がはるかに大きいが、ナイトメアスフィア同様に操作性そのものは非常に快適。壁蹴りや空中ダッシュを駆使したパロディ元風のスピーディなアクションを実現している。グラフィックに関しても、プリレンダ?の敵や顔グラはともかく、ドット絵で描かれた自キャラとしてのミク・リンは普通にかわいくてよく動く。
この超難易度が気にならないぐらいの腕さえあれば、手放しで絶賛できる内容だろう。
余談だが、ミックマンX2とナイトメアフィアにはどちらも、迷宮組曲の露骨なパロディがある。なんでもアリかつ一応ボーカロイド主人公=音楽繋りのミックマンはともかく、基本的にシリアスなオリジナル世界観を貫いているナイトメアスフィアにまで出すとは、作者はそんなに迷宮組曲が好きなのだろうか。たしかに探索系アクションの源流の一つと言えなくもないが。
ttps://www.freem.ne.jp/win/game/21774
難易度:★★★
Clickteam Fusion製
良くも悪くも普通の高難易度ロックマン(ファミコン時代)風だった前作から、大幅に爽快感がアップ。グラフィック面の強化と合わせて、全体的に非常に洗練されたゲームになった。
デフォルトで使用可能な二段ジャンプ、専用ボタンが割り振られて切り替え無しで通常攻撃と併用できるサブウェポン、射程が長めで使い勝手がいい(敵に接近し過ぎない)ブレード、下+ジャンプのスライディングではなくボタンによるダッシュ……など、気持ちよく動かせる変更が随所に見られる。体力減少時にのみ使える大技も追加され、派手さもばっちり。
さらに、一応は前作にもあったショップ要素が大充実。基礎能力の強化や、特殊能力を追加する装備アイテムの販売など、カスタマイズの幅が大きく広がった。これにより、安定してクリアできるステージを周回して金を稼いで能力を強化し、詰まったステージに再挑戦する、といったアクションRPG寄りのプレイ感覚に近づいている。
他にも、残機制廃止で無限コンティニューになってたり、復帰ポイントがはっきり可視化されていたりと、ロックマン系にありがちなストレスをなるべく排除しようとしていることがうかがえる。E缶に相当する使用型回復アイテムが、取得したステージ内で使い切る形式になってるのも、かえって後腐れがなくていい。
ただ、そうは言っても、落下即死はある(装備で軽減可能)し、ボスはある程度攻撃パターンを把握しないと弱点を突いても苦戦必至だし、やはり並以上の歯ごたえはある。ラスボスは、回復アイテム不使用で倒せる気がしない。
それぞれ操作感が大きく異なる使用キャラが6人もいて(初期2人、他は条件で追加)、アチーブメント要素もあるため、気に入れば長くやり込めるのもいい。
ttps://www.freem.ne.jp/win/game/16574
難易度:★★★★
見下ろし型アクションRPG。騎士を目指す少女が戦うファンタジー。もともと有料だったものがフリー化したらしく、全体的に完成度が高い。
通常戦闘では剣による攻撃がメインだが、攻撃ボタンを押しっぱなしにすることで、魔力を消費して装備武器ごとに特性の異なるショットを撃つことができる。さらにボス戦では、ショットの魔力消費がなくなり撃ち放題のため、実質的にシューティング化するというおもしろい構成になっている。
公式の説明では、「ボスキャラとの戦闘は弾幕シューティング風の戦闘に一変します」とのことで、ボス戦の弾幕は実際ガチなのだが、ある程度進むと通常戦でザコも容赦なく弾をバラまいてくるようになり、これも十分しんどい。
経験値を使った能力強化の要素はあるものの、イベント進行でほぼ最大値が決まっており、無制限な強化はできない。また、回復や買い物の機会がないまま長めの連戦を強いられることが多かったりと、アクションRPGの中でも、プレイヤースキルを強く求められる側のゲームといえる。難易度設定などの救済策は一応あるが。
ストーリーは、「のじゃ」語尾がかわいい(長命種ではなく単に老父の口調が移っただけ)純情で熱血な女剣士主人公と、主君であるわがままな姫のソフト百合
的な部分もないではないが、男キャラも交えた陰謀と巨大感情によるドロドロした展開の印象の方が強い。戦う相手も人間が多く、要所要所で「〇〇ーッ!」と感情を爆発させてくれる主人公が熱い。
ttps://www.freem.ne.jp/win/game/12878
難易度:★★
スーパーシンプル&スーパーインフレ見下ろし型アクションRPG。
1マップで描かれたモノクロのダンジョンをひたすら進んでいく。無限に敵の湧く小部屋で戦ってレベルを上げ、ある程度強くなったら通路を進んで次の部屋でまたレベル上げ、の繰り返し。
操作は移動と攻撃(剣を振る)のみ、ステータスもレベルと経験値とHPと攻撃力ぐらい。自機は棒人間で敵のグラフィックも似たようなものだし、BGMすらない地味さ。もちろんストーリー要素など皆無。
レベル上げは好きだし、レトロ風ならこのぐらい単純でも悪くはないかな……
と妥協しつつレベルを上げていくと、ある段階でびっくりさせられることになる。公開ページのスクショにも映っている要素なので別にネタバレというほどでもないと思うが、一応伏せておく。
シンプルなのは初見の印象通りだが、シンプルな中での大きな変化が楽しめるゲームだった。
これも敢えてのレトロ風演出なのか制作ツールの都合なのかは分からないが、セーブ機能がなくパスワード方式になっている。そもそも30分もかからずにクリアできるボリュームなのでほとんど問題はないが、できればセーブはあった方がより気軽にプレイできたと思う。
ttps://www.freem.ne.jp/win/game/22405
難易度:★★★
横スクロール超強化アクション。ひきこもりで超恵体の姫が限定販売のミルクを買いに行く。
移動やジャンプといった行動全般で体力を消費するシステムだが、主人公の姫は極度の運動不足のため、初期状態では超鈍足の上にスタート地点からスクロールすることすらなく力尽きてしまう。そこで、「こんなこともあろうと買っておいた、どんな運動不足もコインでなんとかしてしまうマシン」で主人公を徹底的に強化していくことになる。
辛うじて手に入る数枚のコインで移動速度や体力を増やし、何度も力尽きながら行動範囲を広げていき、より多くのコインを手に入れて更に強化を重ねる、というのが基本の流れ。
強化項目は体力・速度以外にも、ジャンプ力、防御力、ショットやボムなどの攻撃、といろいろ用意されていて、自由な順番で強化していける。最終的には、異常な俊足だわ、敵は触れただけで倒せるわ、ほとんど自由に空を飛べるわというチート姫ができ上がる。
難易度がどうというより、苦労して乗り越えていたステージを雑に数秒で突破できるようになって姫TUEEEを味わうのがメインのゲームだが、最後のボス戦はアクションとしてもそれなりの歯ごたえがある。
タイトル画面で圧倒的な恵体を見せつけ、ゲーム中も終始何かが揺れている主人公と、それを健気に支える従者のケモ少年という、キャラクター・関係性(おねショタ)要素もいい感じ。
現在は、上級者向けの「拡張版」である『~EXTEND』も公開されており、作者によると、
ttps://www.freem.ne.jp/win/game/24016
とのことだが、実際にプレイしてみたところ、通常版とかぶっている部分にそこまで大きな違いは感じられなかった(背景などは違う)。そのため、追加要素までプレイする気があるならいきなり『~EXTEND』から始めても別に問題ないと思う。作者の意向を尊重すべきかもしれないが。
ttps://www.freem.ne.jp/win/game/21429
難易度:★★★
Shooting Game Builder製。
「首都高には魔力がある」
↓
↓
という恐るべき三段論法が支配する世界で、走り屋たちが抗争を繰り広げる格闘?アクション。キャラ設定やセリフ回しの中二病度合を含めて、いわばレースしないレーシングラグーン。
ゲーム進行は、4人のキャラから一人を選び、他のキャラ+αと戦っていく格ゲー方式。固定画面ステージで大量に湧くシュトモン(雑魚敵)を倒しつつ一定時間が経過すると、ボス(敵走り屋)が現れるという流れ。無双とタイマンが両方味わえる。
操作としては、必殺技コマンドが専用ボタンと方向キーの組み合わせだったり、超必殺技はボタン一つで出るボム的な扱いだったり、ジャンプが無かったりなど簡略化されており、手軽に格ゲー風アクションが楽しめる。
背景やオープニング・エンディングといった演出面以外では、走り屋という設定にゲーム上の意味はほぼ存在しないが、とにかくオレはこれが作りたいんだ、これがカッコいいと思っているんだ、という強い思いはたしかに伝わってくる。ドット絵で描かれた、雪の降る首都高の美しさは、それだけで十分に価値があった(非都民なので首都高描写としての正確性は知らない)
とても本来のフリーゲームらしい一品といえる。続編もあるが、独自の世界を作ろうとしていた一作目から、ネットで流行りのネタ・パロディを取り入れた内容になってしまったのは少し残念。
ttps://www.freem.ne.jp/win/game/28506
難易度:★★★
Clickteam Fusion 2.5製
ハイスピード横スクロールアクション。ポストアポカリプスっぽい殺伐とした世界で主人公たちが戦う。複数いる操作キャラは全て女性。
ショットと近接の二種類の通常攻撃があり、それぞれ対応する色の攻撃を打ち消すことができる。こういうのは往々にしてシステムを無理やり活かそうとしてクソ難易度が生まれる元だが、このゲームでは、ザコ敵は身体の色で攻撃の種類も判断可能で、ボスはその都度事前に攻撃の種類を予告してくれるため、理不尽さを感じる場面はほぼない。
たぶん作者としては、上の打消しシステムが最大の売りだと思うのだが、個人的にはショットに関しての仕様が特に印象に残った。
通常攻撃はいずれもボタン押しっぱなしで自動連射だが、攻撃しながら移動できるのはショットのみ。そして、ショット発射中は向きが固定されるため、敵との距離を調節しながら休まず攻撃し続けることが可能となっている。また、ジャンプ時に通常攻撃をすると落下速度が遅い半ホバリング状態になり、ショットなら滑空に近い感覚で横移動ができる。
バリバリ弾を撃ちながら立ち止まることなくガンガン前に出ることができるこの操作性が、もともとの移動速度の速さとあわせて圧倒的なスピード感を生んでいる。
前作がありそちらも遊んでみたが、自動連射と移動しながら攻撃可能なこと以外は、ショットのこの仕様は今作から採用されたもののようだった。一見地味だが、コロンブスの卵的にプレイ感覚が劇的に変わった工夫だろう。
ステージの多くが、駆け抜けるように突破できる短い道中+ボス戦という構成になっていて、ボスの耐久力もそんなに高くないため、そこもテンポの良さに繋がっている。
全15ステージの全てにボスが配置されており、何体かは再戦があるもののそれでもけっこうなボリューム(中ボスも含めれば複数のボスがいるステージもある)。終盤のボスはややグロ系に寄っているが、そこも含めてビジュアル面も力が入っている。
難点は、ストーリーが非常に複雑で難解であること。ボイス付きで展開し演出もかなり気合いが入っていて、とにかく壮大な話が展開していることは分かるので、雰囲気だけ味わう分には問題ないのだが。
「2D アクション フリーゲーム おすすめ」などで検索しても、オールタイムの良作を網羅的にまとめたようなページはあんまりなかったので、自分用のメモがてらここに残しておく。
「現在、合法的に無料でダウンロード・プレイできるWindows用のゲーム」という基準で、一定以上おもしろかったものは手当たり次第に並べていく。ほぼクローンみたいなもの以外の二次創作・パロディ・オマージュその他は一律で合法扱いとする(この縛りがなければガンヴァルケンなんかも入れたい)
順番は適当だが、今さら内容紹介するまでもない超有名作品などは後ろにまとめておく。
似た系統の良さそうなフリゲが他にもあれば、トラバやブクマで教えてもらいたい。特に海外フリゲは日本語検索だけでは探しにくいので、詳しい人が積極的に情報提供してくれると助かる。
・『ナイトメアスフィア』(暁音)
ttp://mickmanx.blog71.fc2.com/
難易度:★★
ダークファンタジー正統派リョナメトロイドヴァニア。
・『ミックマンX2』(暁音)
ttp://mickmanx.blog71.fc2.com/
難易度:★★★★★
ボーカロイド主人公ロックマンXパロディ。
・『疾風戦記フォースギア2』(Master.typeX)
ttps://www.freem.ne.jp/win/game/21774
難易度:★★★
Clickteam Fusion製
美少女ロックマン風。
・『ティルキッス ~Princess Shade~』(MIR)
ttps://www.freem.ne.jp/win/game/16574
難易度:★★★★
見下ろし型弾幕アクションRPG。
・『ザコリオン』(IN)
ttps://www.freem.ne.jp/win/game/12878
難易度:★★
アクションエディター4製
スーパーシンプル&スーパーインフレアクションRPG。
・『thePrincess ひきこもり姫の奮闘記』(IN)
ttps://www.freem.ne.jp/win/game/22405
難易度:★★★
アクションエディター4製
横スクロール超強化アクション。
・『現象使い首都高無敵伝説 Firststage 氷眼の魔女』(こなわさび)
ttps://www.freem.ne.jp/win/game/21429
難易度:★★★
Shooting Game Builder製。
走り屋格闘アクション。
・『マシンナリシティAD』(Happy Head)
ttps://www.freem.ne.jp/win/game/28506
難易度:★★★
Clickteam Fusion 2.5製
ハイスピード横スクロールアクション。
・『MONOCHROBOT』(ラッキー)
ttps://www.freem.ne.jp/win/game/7877
難易度:★★★
モノクロ短編メトロイドヴァニア。
・『嘆きの楽園』(ナール)
ttps://www.freem.ne.jp/win/game/9605
難易度:★★★
アクションエディター4製。
横スクロール探索ホラーアクション。
・『群青禍刻ノ魔人(ブルーアワーインカネーション)』(afefE_TAKUmi)
ttps://www.freem.ne.jp/win/game/23085
難易度:★★★★
GameMakerStudio2製
持ち上げ&投げつけ横スクロール。
・『メイド イン ヘル!』(404)
ttps://www.freem.ne.jp/win/game/3232
難易度:★★★★
東方二次創作横スクロール。
・『Floral Eurobeat』(リラ・アイシクル)
ttps://www.freem.ne.jp/win/game/24712
難易度:★★★★
アクションエディター4製
全方位射撃横スクロール。
・『Vivid Twinkler -氷と炎の檻-』(ヌバビゾン)
ttps://www.freem.ne.jp/win/game/16653
難易度:★★★★★
アクションエディター4製
横スクロール。
・『VampunishX』(バラルバレル)
ttps://www.freem.ne.jp/win/game/9092
難易度:★★★★★
アクションエディター+製
ドラキュラ風アクション。
・『VampireBlaze3』(とみする)
ttps://www.freem.ne.jp/win/game/8487
難易度:★★★★★
ZGE製。
ドラキュラ2+月風魔伝なアクションRPG。
・『God Of Killer X』(りぅ)
ttps://www.freem.ne.jp/win/game/10517
難易度:★★
横スクロール。
・『Iji』(Remar Games)
ttp://www.remar.se/daniel/iji.php
難易度:★★★
海外製サイドビュー探索アクション。
・『Hero Core』(Remar Games)
ttp://www.remar.se/daniel/herocore.php
難易度:★★★
シンプルモノクロメトロイドヴァニア。
・『Hyper Princess Pitch』(Remar Games)
ttp://www.remar.se/daniel/pitch.php
難易度:★★
全方位無双系シューティングアクション。
・『Princess Remedy In a World of Hurt』(Remar Games)
ttp://www.remar.se/daniel/remedy.php
難易度:★★
癒し系シンプルRPG風アクション。
・『Legend of Princess』(Joakim Sandberg (konjak))
ttp://www.konjak.org/
難易度:★★★
海外製横スクロールゼルダパロディ。
・『SATAN LOVES CAKE.』(baku)
ttps://baku.itch.io/satan-loves-cake
難易度:★★★
海外製短編メトロイドヴァニア。
・『Momodora II』(rdein)
ttps://rdein.itch.io/momodora-ii
難易度:★★★★
海外製短編メトロイドヴァニア。
・『ジャンクエデン』(耕)
ttps://www.freem.ne.jp/win/game/6339
難易度★★★★
WOLF RPGエディター製
横スクロール2Dアーマードコア。
・『崩壊村』(PEPOSOFT)
ttp://www.peposoft.com/old/index_game.html
難易度:★★★
魔界村オマージュ。
・『ミクものがたり ~ユメとたいせつなもの~』(PEPOSOFT)
ttp://www.peposoft.com/old/index_game.html
難易度:★★★
ボカロ横スクロール。
・『アクションモグラ』(クロボン)
ttps://www.vector.co.jp/soft/winnt/game/se506187.html
難易度:★★★★
モグラ主人公横スクロール。
・『ファラオリバース』(クロボン)
ttps://www.gamemaga.jp/pharaoh/download.html
難易度:★★★★
ウサギ考古学者メトロイドヴァニア。
・『HOLOCURE』(Kay Yu)
ttps://kay-yu.itch.io/holocure
難易度:★★★
ホロライブ二次創作ヴァンサバ系。
・『FLARE NUINUI QUEST』(sulpx)
ttps://sulpx.itch.io/nuinui-quest
難易度:★★★
ホロライブ二次創作ロックマン風。
・『ASTLIBRA ~生きた証~』『ASTLIBRA ミニ外伝 ~幻霧の洞窟~』(KEIZO)
ttps://freegame-mugen.jp/action/game_9339.html
ttps://freegame-mugen.jp/action/game_4223.html
難易度:★★★
大作ファンタジー横スクロールアクションRPG&外伝。
・『洞窟物語』(開発室Pixel)
ttps://www.vector.co.jp/soft/win95/game/se352180.html
難易度:★★★
メトロイドヴァニア。
なんでだろう
これまで改良はされてきたし、最新のは知らんのだけど、
プロジェクトの設定とかとりあえず必要最低限だけ表示すればいいのにドバーッと全部表示してしまってて、
しかも結局はコマンドラインのオプションをGUIでチマチマ書くような感じになってしまってて、
これIDEの意味あんの?みたいになるわけだけど、Xcodeを使わないと基本的にMacやiOSのアプリを開発できない縛りもあるわけで、
あと、うろ覚えだけど昔たしかInteface Builderのnibファイルとかバイナリだったんじゃなかったかな
バージョン管理しづらい、差分が分からない、うっかりマウスを滑らせてどこか変更してしまっても分からない、
この間、増田でプレイしたゲームを晒してたのを見て面白かったから自分のも晒してみる。
おすすめがあったら教えてくれ。
↓
Rocket League
Sid Meier's Civilization V
RimWorld
METAL GEAR SOLID V: THE PHANTOM PAIN
Heat Signature
7 Days to Die
Assassin's Creed IV Black Flag
Sniper Elite 4
Reassembly
METAL GEAR SOLID V: GROUND ZEROES
The Witcher 3: Wild Hunt
Kerbal Space Program
Watch_Dogs 2
Tom Clancy's Ghost Recon® Wildlands
Tom Clancy's Splinter Cell Blacklist
Dungeon Warfare
Far Cry 4
Graveyard Keeper
Starbound
INSIDE
Stardew Valley
Project Zomboid
Papers, Please
BioShock Infinite
Universe Sandbox
Portal 2
Avorion
Starbound - Unstable
Superflight
DARK SOULS™ II
How to Survive
Quantum Break
Undertale
GRIS
Age of Empires® III: Complete Collection
Gunpoint
片道勇者
Garry's Mod
The Talos Principle
Return of the Obra Dinn
Rebel Galaxy
Game Builder
Valiant Hearts: The Great War™ / Soldats Inconnus : Mémoires de la Grande Guerre™
DiRT Rally
Invisible, Inc.
UNDEFEATED
Sins of a Solar Empire: Rebellion
Wallpaper Engine
The Witness
Age of Empires II (2013)
The Flood
VRChat
Grow Home
Age of Empires II (2013): The Forgotten
Assassin's Creed III Remastered
Audio Party Pack (オーディオ・パーティパック)
BioShock 2
BioShock 2 Remastered
BioShock Remastered
Borderlands 2: Headhunter 1: Bloody Harvest
Borderlands 2: Headhunter 2: Wattle Gobbler
Borderlands 2: Headhunter 3: Mercenary Day
Borderlands 2: Headhunter 4: Wedding Day Massacre
Borderlands 2: Headhunter 5: Son of Crawmerax
Borderlands: The Pre-Sequel
BROKE PROTOCOL: Online City RPG
Cities: Skylines - After Dark
Cities: Skylines - Green Cities
Cities: Skylines - Mass Transit
Civilization V - Scrambled Continents Map Pack
Crusader Kings II
Crusader Kings II: African Portraits
Crusader Kings II: South Indian Portraits 5 Year Anniversary Gift
Cuisine Royale
Dead Rising 3 DLC1
Dead Rising 3 DLC2
Dead Rising 3 DLC3
Dead Rising 3 DLC4
Door Kickers
Evolvation
For Honor
Fortified
Hacknet
Insurgency
Killing Floor Mod: Defence Alliance 2
Murderous Pursuits
PAYDAY 2
Pinball FX3
Prismata
Regions Of Ruin
Satellite Reign
Sid Meier's Civilization III: Complete
Sid Meier's Civilization V: Brave New World
Starpoint Gemini 2
Stellaris: Original Game Soundtrack
Streamline
The Escapists 2 - Dungeons and Duct Tape
The Flame in the Flood
The LEGO® NINJAGO® Movie Video Game
The Talos Principle - Bonus Content
The Talos Principle - Prototype
The Talos Principle - Soundtrack
The Talos Principle: Road To Gehenna
The Witcher 2: Assassins of Kings Enhanced Edition
The Witcher: Enhanced Edition
Viscera Cleanup Detail: Shadow Warrior
Yume Nikki
ZACH-LIKE
・出版の裏側
チャンネルの性質上ピー音や伏せ字も沢山あるがそれでも十分面白い
漫画家やライトノベル作家志望の人間からも多くの質問が寄せられるが
「まずはネットで腕試ししてから送ってこい」というのが最近の定番の返しになっている
ゲストはいつも匿名形式での参加となっているためコメント欄では推理大会が開かれる
女装に関してズブの素人だった人間が徐々にレベルアップしていく様子を楽しめる
最初はただ単にユニクロなどで買ってきたものを着るだけだったが
わずか一年の間にガチで女性にしか見えないレベルにまで到達してしまう
建築家のスキルを生かしてLEGOで家を組み立てるというチャレンジをしている
ただ単にガワだけを再現するのではなく機能性の高い本格的な住宅を建築中
”Primitive Technology”を連想するという人がコメント欄にもちらほらいる
・巷のデバッガー
街なかを歩いているときに見かけた様々なものを紹介するという動画を上げているが
見たものをあたかも”現実のバグ”であるかのように紹介するというユニークな手法をとっている
加えて豊富なゲーム知識と絡めて説明することでよりいっそうのおかしみを漂わせている
コメント欄では「これがゲーム脳か……」というような文言が定番化している
海外ファンからは映画マトリックスになぞらえてモーフィアスとあだ名されている
・ミニヨンズ
金と暇を持て余したアラサー兄弟がひたすらミニ四駆の限界に挑み続けている
回を増すごとにヤバさがインフレしているところも懐かしの少年漫画っぽくていい
http://anond.hatelabo.jp/20170220005414 の1年間隔のデータ。
前エントリの5年毎のデータじゃ思い出を振り返るには分解能が足りない気がしたので1年間隔で補足します。興味ない人にはスパムエントリ並にうざいのだろうから申し訳ないけど、その当時を見てたらただの数字の羅列には見えないのですよ。近々はてブシステムに大幅な改修が入るらしいから今やっとかないと来月も同じように見られるとは限らないしね。
2005年3月 | 2006年3月 | 2007年3月 | 2008年3月 |
---|---|---|---|
386ドメイン | 439ドメイン | 312ドメイン | 280ドメイン |
www.itmedia.co.jp(165) | d.hatena.ne.jp(175) | d.hatena.ne.jp(114) | d.hatena.ne.jp(191) |
japan.cnet.com(66) | japan.cnet.com(49) | blog.livedoor.jp(63) | blog.livedoor.jp(78) |
d.hatena.ne.jp(36) | www.itmedia.co.jp(38) | www.popxpop.com(59) | www.itmedia.co.jp(50) |
internet.watch.impress.co.jp(34) | blog.livedoor.jp(30) | www.itmedia.co.jp(50) | www.asahi.com(40) |
hotwired.goo.ne.jp(32) | internet.watch.impress.co.jp(21) | gigazine.net(43) | gigazine.net(31) |
headlines.yahoo.co.jp(28) | phpspot.org(20) | phpspot.org(29) | coliss.com(28) |
www.asahi.com(28) | plusd.itmedia.co.jp(18) | anond.hatelabo.jp(23) | anond.hatelabo.jp(26) |
itpro.nikkeibp.co.jp(26) | japanese.engadget.com(17) | www.youtube.com(19) | www.ideaxidea.com(23) |
pc.watch.impress.co.jp(21) | www.asahi.com(17) | www.atmarkit.co.jp(16) | alfalfa.livedoor.biz(18) |
pcweb.mycom.co.jp(21) | itpro.nikkeibp.co.jp(15) | www.designwalker.com(16) | japan.cnet.com(18) |
blog.livedoor.jp(20) | www.atmarkit.co.jp(15) | japan.cnet.com(15) | phpspot.org(17) |
www.watch.impress.co.jp(17) | www.ringolab.com(13) | journal.mycom.co.jp(15) | e0166.blog89.fc2.com(13) |
www.ringolab.com(15) | www.mainichi-msn.co.jp(12) | portal.nifty.com(15) | sankei.jp.msn.com(13) |
nikkeibp.jp(14) | jkondo.hatenablog.com(10) | netafull.net(13) | wiredvision.jp(13) |
www.atmarkit.co.jp(13) | www.excite.co.jp(9) | itpro.nikkeibp.co.jp(12) | itpro.nikkeibp.co.jp(12) |
www.forest.impress.co.jp(13) | www.forest.impress.co.jp(9) | blog.goo.ne.jp(10) | www.atmarkit.co.jp(11) |
shinta.tea-nifty.com(12) | www.nyasoku.com(9) | guideline.livedoor.biz(10) | blog.goo.ne.jp(10) |
www.geocities.jp(11) | q.hatena.ne.jp(8) | www.ideaxidea.com(10) | www.designwalker.com(10) |
www.hatena.ne.jp(10) | hotwired.goo.ne.jp(7) | labs.unoh.net(8) | japanese.engadget.com(9) |
slashdot.jp(9) | pcweb.mycom.co.jp(7) | q.hatena.ne.jp(8) | ascii.jp(8) |
finalvent.cocolog-nifty.com(8) | takagi-hiromitsu.jp(7) | www.100shiki.com(8) | urasoku.blog106.fc2.com(8) |
japan.internet.com(8) | www.future-planning.net(7) | www.watch.impress.co.jp(8) | www.moongift.jp(8) |
www.mainichi-msn.co.jp(8) | www.hatena.ne.jp(7) | zapanet.info(8) | www.nicovideo.jp(8) |
allabout.co.jp(7) | bb.watch.impress.co.jp(6) | 2log.blog9.fc2.com(7) | business.nikkeibp.co.jp(7) |
bb.watch.impress.co.jp(7) | caramel-tea.com(6) | business.nikkeibp.co.jp(7) | web-tan.forum.impressrd.jp(7) |
blog.bulknews.net(7) | fragments.g.hatena.ne.jp(6) | www.forest.impress.co.jp(7) | www.yomiuri.co.jp(7) |
blog.japan.cnet.com(7) | gigazine.net(6) | www.j-cast.com(7) | guideline.livedoor.biz(6) |
kiri.jblog.org(7) | headlines.yahoo.co.jp(6) | ameblo.jp(6) | jkondo.hatenablog.com(6) |
naoya.dyndns.org(7) | kengo.preston-net.com(6) | e0166.blog89.fc2.com(6) | labaq.com(6) |
www.excite.co.jp(7) | naoya.g.hatena.ne.jp(6) | internet.watch.impress.co.jp(6) | www.j-cast.com(6) |
www.future-planning.net(7) | neta.ywcafe.net(6) | web-tan.forum.impressrd.jp(6) | www.kajisoku.org(6) |
www.nikkansports.com(6) | pc.watch.impress.co.jp(6) | codezine.jp(5) | dain.cocolog-nifty.com(5) |
www.yomiuri.co.jp(6) | portal.nifty.com(6) | www.aoky.net(5) | finalvent.cocolog-nifty.com(5) |
antipop.zapto.org(5) | satoshi.blogs.com(6) | www.asahi.com(5) | news23vip.blog109.fc2.com(5) |
blog.goo.ne.jp(5) | shinta.tea-nifty.com(6) | www.simplexsimple.com(5) | plusd.itmedia.co.jp(5) |
blog.tatsuru.com(5) | www.geocities.jp(6) | blogpal.seesaa.net(4) | portal.nifty.com(5) |
k-tai.impress.co.jp(5) | www.youtube.com(6) | css-happylife.com(4) | satoshi.blogs.com(5) |
www.cnn.co.jp(5) | ameblo.jp(5) | cyblog.jp(4) | takagi-hiromitsu.jp(5) |
www.nikkei.co.jp(5) | blog.goo.ne.jp(5) | dain.cocolog-nifty.com(4) | wsoku.blog44.fc2.com(5) |
artifact-jp.com(4) | jibun.atmarkit.co.jp(5) | loconet.web2.jp(4) | www.afpbb.com(5) |
hail2u.net(4) | nikkeibp.jp(5) | plusd.itmedia.co.jp(4) | bb.watch.impress.co.jp(4) |
homepage.mac.com(4) | www.geocities.co.jp(5) | satoshi.blogs.com(4) | blog.creamu.com(4) |
kengo.preston-net.com(4) | www.yomiuri.co.jp(5) | tech.nitoyon.com(4) | builder.japan.zdnet.com(4) |
takekuma.cocolog-nifty.com(4) | beta.g.hatena.ne.jp(4) | www.geekpage.jp(4) | fujipon.hatenadiary.com(4) |
www.100shiki.com(4) | blog.japan.cnet.com(4) | www.heiwaboke.com(4) | headlines.yahoo.co.jp(4) |
www.geocities.co.jp(4) | column.chbox.jp(4) | www.kajisoku.com(4) | journal.mycom.co.jp(4) |
www.sem-research.jp(4) | dogfood.g.hatena.ne.jp(4) | www.kitami.tv(4) | lifehacking.jp(4) |
dain.cocolog-nifty.com(3) | ekken.blog1.fc2.com(4) | www.sankei.co.jp(4) | netanabe.blog78.fc2.com(4) |
homepage1.nifty.com(3) | hatena.g.hatena.ne.jp(4) | www.tatamilab.jp(4) | www.4gamer.net(4) |
japanese.chosun.com(3) | plaza.rakuten.co.jp(4) | www.tez.com(4) | ameblo.jp(3) |
kotonoha.main.jp(3) | web.archive.org(4) | coliss.com(3) | jp.techcrunch.com(3) |
my.casty.jp(3) | akihitok.typepad.jp(3) | hatena.g.hatena.ne.jp(3) | koerarenaikabe.livedoor.biz(3) |
nais.to(3) | arena.nikkeibp.co.jp(3) | headlines.yahoo.co.jp(3) | ktdisk.hatenablog.com(3) |
sagittarius.dip.jp(3) | blog.tatsuru.com(3) | jp.techcrunch.com(3) | labs.unoh.net(3) |
sasapanda.com(3) | blogpal.seesaa.net(3) | la.ma.la(3) | mainichi.jp(3) |
www.sankei.co.jp(3) | bogusnews.seesaa.net(3) | medt00lz.s59.xrea.com(3) | mereco.hatenadiary.com(3) |
www.tokyo-np.co.jp(3) | dain.cocolog-nifty.com(3) | mellowmoon.blog93.fc2.com(3) | netafull.net(3) |
www.zakzak.co.jp(3) | fujipon.hatenadiary.com(3) | tangerine.hateblo.jp(3) | pc.watch.impress.co.jp(3) |
x51.org(3) | nb.nikkeibp.co.jp(3) | www.akiyan.com(3) | waranote.blog76.fc2.com(3) |
news4vip.livedoor.biz(3) | www.future-planning.net(3) | workingnews.blog117.fc2.com(3) | |
takekuma.cocolog-nifty.com(3) | www.gizmodo.jp(3) | www.excite.co.jp(3) | |
ttchopper.blog.ocn.ne.jp(3) | www.virtual-pop.com(3) | www.forest.impress.co.jp(3) | |
ultrabigban.cocolog-nifty.com(3) | www.yomiuri.co.jp(3) | www.gizmodo.jp(3) | |
www.100shiki.com(3) | www.watch.impress.co.jp(3) | ||
www.fmmc.or.jp(3) | |||
www.h-yamaguchi.net(3) | |||
www.hyuki.com(3) | |||
www.ideaxidea.com(3) | |||
www.lucky-bag.com(3) | |||
www.sv15.com(3) | |||
yukawasa.hatenablog.com(3) | |||
zerobase.jp(3) |
(※カッコ内は回数)
毎年3月の全ホットエントリを http://b.hatena.ne.jp/hotentry/20050215 から取得。タイルレイアウトで取得したので1日49件×31日で月間合計1519件弱のデータを基にしている。重複はuniqで取り除いてある。
newしてから渡せば良いと思うよ。
いちいちクラスに分ける理由は、こういう感じで、クラス内の変数にアクセスすれば、画面事の表示とかが簡単に出来る的な?
// Javaの書き方しらん、インターフェースを実装することを定義したい
public class EventHoge : View.OnClickListener {
//画面事の名称
// Javaの書き方しらん、インターフェースのメソッドを実装することを定義したい
public void View.OnClickListener.onClick(View v) {
AlertDialog.Builder dlg;
dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("画面の名前:" + ViewName); // 画面名称が表示されるイメージ
dlg.setMessage("Hello, サンプル!");
dlg.show();
//<ーー
}
}
// Androidなにも知らんけど、元増田がボタンにイベントを書く処理が書いてあるクラスのことが言いたい
// そのメソッド
final Button button = new Button(this);
button.setText("ダイアログの表示");
View.OnClickListener ocl = new EventHoge();
ocl.ViewName = "画面その一";
button.setOnClickListener(ocl);
}
}
こんな感じにすれば、画面が二つあって、
その画面の名称を表示するようなボタンを、二つメソッドをコピペして作らなくていい的な?
サンプルは、出来るだけとっちらかさないよう、匿名クラスとか使って、サンプルで紹介したいところ「だけ」を書くんだよね。
だから、そのサンプルがどういう意味かをちゃんと読み取って、自分ならこう書くとか、こう書けるか? とかを考えてこそ勉強だと思うよ?
今回のレイだと「View.OnClickListener」っていうインターフェイスを実装したクラスを、setOnClickListenerすればいいってことさえわかれば、
匿名クラス?(っていうのかな? ちょっと用語はよくしらん、クラス定義を使い回さず、その場だけのクラス定義を書く書き方)とかを使わずに、
どういうふうに応用ができるか? とか頑張れ!
頑張れ!
頑張れ!
はああああああ。
おれはビールを飲む!
うーん?
いや、なんか、通じてないな。
もうちょいサンプル詳しく書くから、サンプルのどこがわからないか言ってくれ。
// Javaの書き方しらん、インターフェースを実装することを定義したい
public class EventHoge : View.OnClickListener {
// Javaの書き方しらん、インターフェースのメソッドを実装することを定義したい
public void View.OnClickListener.onClick(View v) {
AlertDialog.Builder dlg;
dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("サンプル");
dlg.setMessage("Hello, サンプル!");
dlg.show();
//<ーー
}
}
// Androidなにも知らんけど、元増田がボタンにイベントを書く処理が書いてあるクラスのことが言いたい
// そのメソッド
final Button button = new Button(this);
button.setText("ダイアログの表示");
button.setOnClickListener(new EventHoge());
}
}
こうやって、クラス分けて書けば、外とか中とか、全く関係なくなるじゃん。
元増田のサンプルだと、メインの中でインターフェースを実装したクラスの実装を書いてるから、中とか外とかがあるんじゃないのか?
自分でクラスとして定義して、そっちで実装すれば、メインは紐づけるだけでよくなって、仮引数?の中で実装しなくてもすむじゃん。
よくわからん。
中が嫌なら外でかきゃいいじゃん。
// Javaの書き方しらん、インターフェースを実装することを定義したい
public class Hoge : View.OnClickListener {
// Javaの書き方しらん、インターフェースのメソッドを実装することを定義したい
public void View.OnClickListener.onClick(View v) {
AlertDialog.Builder dlg;
dlg = new AlertDialog.Builder(MainActivity.this);
dlg.setTitle("サンプル");
dlg.setMessage("Hello, サンプル!");
dlg.show();
//<ーー
}
}
// メインスレッド的なところ
final Button button = new Button(this);
button.setText("ダイアログの表示");
button.setOnClickListener(new Hoge());
こう書けば、中で書かなくて良い気がするけど、駄目なの?
なんか、インターフェースだから引数の中ってのが意味わからん。
どう関係してるの?
近年、関数型プログラミングの重要性はいろんなところで叫ばれています。
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言語などではマクロを使うこともできますが、それは結局、関数型プログラミング的アプローチの意味するところと同じになります。すなわち、補助のために沢山のコードを書くことになるでしょう。
iOSのAppstoreアプリは、"無料"と書かれたボタンを押すと、それが"インストール"ボタンに変わり、それをもう一度押すと、ダウンロードの進捗を表すインジケータに変わり、それを押すとダウンロードをキャンセルできます。
このように、位置は同じなのに、ステートに依って見た目と機能が変わるボタンは複雑です。
これをオブジェクト指向で実現しようとすると、
という下らない問題にぶつかります。
一方関数型では、"機能"、"見た目"、"状態"、を独立に扱って、それらを合成してボタンを作るので、迷うことはありません。
「同じ位置にあるUIオブジェクトは、コード上で(インスタンスとして)独立して、他から干渉を受けない」
この条件が満たされているうちは、オブジェクト指向でGUIを実現することに無理はありません。
しかし、携帯端末のような小さい画面で、多くの機能を達成するためには、UI要素はコンテキスト依存的に複雑になりがちです。
近年、PCのディスプレイの大きさは、頭打ちになってきました。
画素数は増えているのですが、MacにおけるRetinaのように、複数ピクセルでひとつのドットを表すようになってきています。
これは、ひとつの画面に置かれるボタンなどのUI要素の数は、これから先の未来で増えることはない、ということを意味します。
したがって、未来のGUIのプログラミングは、注意深く機能をピックアップして制限するというデザイナーの努力を脇におけば、
関数型プログラミングの力を頼るしか無いでしょう。
つまり…
Haskell さいこうなのおおおおおおおおおおおおおおおおおお!! おしっこ漏れちゃうのおおおおおおおおおおおおおおおおおおおお(゜∀。)ワヒャヒャヒャヒャヒャヒャ
1. google:すごいHaskellたのしく学ぼう を注文する。
2. Download Haskell を自分のPCに導入する。
3. コンソールにghciと入力して、対話型コンソールを立ち上げる。
4. 次の関数をコンソールに打ち込んで、結果を見る。即値で書かれているところとかをいろいろ変更してみて、感動する。
take 4 $ map (*2) [1..]
追記:
いかがでしたか?
ちまたには、関数型プログラミングの利点は変数が無いことだ、とか、より安全だから、とか、より速いから、などという妄言が満ち溢れています。
オブジェクト指向と関数型プログラミングは、水と油ではありません。プログラマは自分のプログラムに最適なアプローチを選ぶことができます。
一般にはあまり知られていないことですが、Haskellにもオブジェクト指向へのサポートがあるんです(Lensライブラリ、これを使用したサードパーティ製ライブラリも最近増えてきています)。
この記事を読んだオブジェクト指向プログラマのあなたが、少しでも関数型プログラミングに(そしてHaskellに)興味を持ってくださって、ホームセンターの大人用オシメのコーナーが大賑わいになれば幸いです。。