「クロージャ」を含む日記 RSS

はてなキーワード: クロージャとは

2021-06-15

お腹調子名前が分からない増田住まい楢川がえ真ナノしうょ値の金尾(回文

ゲーリーゲーリーホームラン

ゲーリーゲーリーホームラン

ゲーリーゲーリーホームランここで一発ホームラン

おはようございます

あのさ

痛んだものを食べたとき人間の体内のメカニズムでそれを排出するメカニズムってあるじゃない。

具体的に言うとお腹が痛くなるとか、

用を済ましたら痛いの治っちゃうあの即完!ってときあるでしょ?

それこそ人体の強力な酸である胃酸で

そういう悪い要素も溶かし切っちゃってそこで処理できちゃいそうなんだけど。

そこが人体の不思議というか

お腹痛いというか

トイレ行きたいというか

まあそんなところかしら。

そういうメカニズムって不思議だわー。

そもそもとして、

ギリギリ行けっかなーって思って食べたトマトトマトだったのかも知れないし

ちゃんと煮込んで火を通したんだけどねぇー。

夏場なので夏にしろあらず

気を付けたいと思うわ。

この時期すぐものが痛んじゃうから要注意ね。

うそうあと思い出したんだけど、

ドラマ寺内貫太郎一家って私マツコデラックスさんバージョンしかたことないんだけど

もともとは小林亜星さんだったのねって今知ったし、

今朝はそんなニュースたくさん流れているとともに、

いままでキキとララって名前かと思っていたサンリオキャラクター

リトルツインスターズってコンビ名だったってことに今それこそ知ったし、

キキとララじゃないのね?ってビックリ

ウッチャンナンチャンコンビ名がウッチャンナンチャンだって言うことも

それと近しく似ているわねって思ったわ。

サンリオ投票リトルツインスターズってあったからキキとララ芸名変えたのかよ!って思ってたけど、

正式コンビ名で呼ばれていただけのことだったのね。

世の中正式に知らなくても過ごせていけるいか適当物事が執り行われていると思うと

ふーんて感じだし、

よく目にするけど実は名前知らない物だってたくさんあると思うし

よく聞くのだと

世界は救えないけど金魚は救えるあの金魚すくいの「ポイ」

ラーメン屋さんで大将しか出せない麺を湯ギル技を繰り出すあのザルの「てぼ」

食パン袋を留めると見せかけてあれを四等分にパキパキ折り曲げて切る感触気持ちいい水色のあの「バッククロージャー」ってな感じかしら。

でもあのバッククロージャーって絶対流通浸透してきてから

急にかっこいい名前を名乗りだした感じがして

ファイナルファンタジー主人公達がオープンカーに乗って楽しそうなんだけど

全員真顔って感じがして

それ後出しジャンケンでしょ?

バッククロージャーってって思わざるを得ないわよね。

あと何かよく見るけど名前を知らない物ってたくさんあるとおもうから

きっとこの夏の自由研究アイデアとしてこれあげるから

名前の知らない物一覧表を作って

フリップこしらえて

フリップ芸みたいに仕立てたら私夏休み自由研究も楽しくなると思うなー。

最初3つぐらいは真面目にしていてあとの残りはもうボケ倒す例のあのやつよ。

でもまた私最近知ったのが世界レヴェルでみんな知ってるのかしら?って思う

ベゼル」っての

枠っていいなさいよ枠!って思うけど、

すていちゅーんいんとうきょーぱーりなぁーい!

うそんな世界レヴェルで見付からない

どこを探しても見付からないと思ったら、

それ「ベゼルレス」って

それなら「枠なし」っていいなさい「枠なし」って!

橋本環奈ちゃんも「摩擦レス」って言ってる場合じゃないわよ。

あとフランスパンの焼き上がったときに出来る斜めの切れ込みの名前とかも正式名称があって

ほらここここをこうこうここ!

って名前が分からないわ。

あの切れ込みの名前

あと石油タンカーが積み荷の油を荷下ろしたあとに重さを調節するためにまた再びタンカー内に汲み入れる水。

あの名前なんだっけーって

もう本当にあの名前だけ集の

絵で見る!あの名前なんだっけ辞典ってあったら私欲しいわ。

海老エビデンス海老天丼っすってぐらい

それはあくまで結果であり目的でないことは確かよね。

うふふ。


今日朝ご飯

ハムタマサンドしました。

サンドイッチマトリックス表で

軽さ重さがあるなら、

ハムタマサンド

軽くてパクパク食べれるから

軽パクってところかしら?

軽くもなく重たくもなく中間ぐらいね

デトックスウォーター

困ったときレモン頼み。

忙しいとき炭酸レモン果汁搾りウォーラーよ。

炭酸もいいけど弱炭酸のもあってもよくない?


すいすいすいようび~

今日も頑張りましょう!

2021-04-19

https://b.hatena.ne.jp/entry/s/qiita.com/Yametaro/items/621bfd8c894f8fd36539

このクッソキモイネタいつまでやってんだよ腐れチー牛油豚ども

https://www.google.com/search?q=site%3Aqiita.com+%E3%83%91%E3%83%91

5歳娘「パパのReact、めっちゃいね!」

5歳娘「パパ、余分なpropsいっぱい書くんだね!」

4歳娘「パパ、具体的な名前をつけないで?」

5歳娘「パパ、レンタルサーバ契約しないで?」

5歳娘「パパ、変なAPIを作らないで?」

5歳娘「パパ、型はドキュメントだよ?」

5歳娘「パパ、依存性を注入して?」

6歳娘「パパ、プロジェクトフォルダを見つけるのに何時間

4歳娘「パパ、懐かしいJavaScript書いてるね!」

4歳娘「パパ、constしか使わないで?」

5歳娘「パパ、型ガードって何?」

0歳娘「パパ、型を作る関数はないの?」

4歳娘「パパ、Promiseやasync/awaitって何?」

4歳娘「パパ、実行時エラーの出ないフロントエンド言語って

4歳娘「パパ、そんなときクロージャが役に立つんじゃない

4歳娘「パパ、具体的な名前をつけないで?」

3歳娘「パパ、関数カリー化して?」

0~6歳なのはテメェの頭脳だろカス

2020-12-06

パートナーとしての土木技術者ICBM施設建設

1940 年代後半から 1950 年代前半、土木技術者は、今日技術者と同様の問題経験していた。しかし、1950 年代と 1960 年代の一時期、これは変化した。大陸間弾道ミサイル(ICBM)計画運用計画が始まったことで、ミサイルの地上環境の設計者は、ミサイル設計者と一体となって仕事をしなければならないことが明らかになりました。

第二次世界大戦後、空軍ドイツ科学者採用し、ドイツのV-2ロケット備蓄品を捕獲してミサイル開発に着手した。1953年8月ソ連が熱核爆弾実験成功したと発表するまでは、資金不足がその努力を妨げていた。突然、ドワイト・D・アイゼンハワー大統領は、ソビエトに追い抜かれないようにICBMの開発に向けた大規模な努力を求めた。空軍の Bernard Adolph Schriever 少将は、ミサイルとその地上支援を開発するための努力の先頭に立った。

ICBMs

1.5段のアトラスと多くのサブシステムを交換可能な2段のタイタンの2つのICBMの開発がほぼ同時に開始され、知識ベースを広げ、最短時間兵器を完成させるための競争活性化させました。ICBMの開発と開発へのプレッシャーは強烈でした。推定 13 年かかっていた作業が、5 年以内に達成された。このことは、空軍土木技術者にとって大きな意味を持っていた。時間的な制約よりも重要なのは兵器システムの開発において、地上環境が後回しにされていないという事実であった。"飛行機は最低限の地上支援があれば飛行できるが、弾道ミサイルは適切な発射設備がなければ意味がない」というのが、このプロジェクトを主導した民間技術者の一人である空軍研究開発司令部弾道ミサイル部(BMD)民間技術部司令官ウィリアムレオンハード大将見解である

用地選定

ミサイル特殊要件圧縮されたスケジュールは、建設作業のあらゆる面に影響 を与え、まず候補地の選定プロセスに着手しました。空軍エンジニア工兵隊の代表者建築家エンジニアファームメンバー、BMDの職員構成される数十人の調査チームが、アトラス計画だけでも250以上の候補地を調査するために、全国に散らばっていました。チームはネブラスカ州からジョージア州まで、ニューメキシコ州からニューヨーク州までを調査しました。候補地の適合性を判断する際に使用された厳格な基準には目を見張るものがありました。深さ174フィート、直径52フィートミサイルサイロ、幅40フィート、深さ40フィートの発射管制センターサイロ、2つのサイロをつなぐ人員トンネルケーブルウェイを建設するためには、厳しい土壌と地質条件が必要でした。さらに、距離要件は、サイロがその支援基地から少なくとも18マイル人口25,000人以上の町から18マイル以上離れていなければならないことを意味していました。また、互いの距離は7マイル、人が住んでいる住居から1,875フィート公道から1,200フィートでなければなりませんでした。サイトへの公共アクセス道路は、大型のミサイル運搬車収容しなければならなかった。技術基準評価された後、最終的なサイト選択は、サイト経済的実現可能性に依存した。サイト選択され、承認されると、作業を開始することができた。

地上設備設計建設担当した技術者が直面した困難の一つは、ミサイルとその支援構造物作業が同時進行で急ピッチで進められていたこであるミサイルの準備ができたときには、発射設備を準備しなければならない。ミサイル自体必要設計変更が設備の変更に反映されてしまうため、ほぼ戦時中の緊急性の高い状況下での工事余儀なくされていた。

サイロ建設

ミサイルの保管モード、発射モードミサイル分散度の多様性技術者作業に影響を与えました。例えば、アトラスDの一部のモデルは、サービスタワーで露出した垂直方向に保管されていましたが、他のモデルは水平方向に保管され、風雨から守られていました。アトラスEは半硬化構造の中で水平に保管されていました。アトラスF、タイタンI、IIはすべて、硬化サイロに垂直に格納されていました。

サイロ建設は膨大なエンジニアリング作業でした。例えば、カンザス州シリング空軍基地では、エンジニアアトラスFミサイル収容するために12個のサイロ建設しました。作業は深さ40フィートの掘削からまりました。これが管制センターの基礎となり、トンネルサイロの上部を接続しました。その後、サイロの下部の残りの部分は、開 発部からさらに1.5m下で採掘されました。サイロ自体を構築するために、作業員はスリップフォームプロセス使用しました。フレームサイロの壁から約140フィート上に上がったところで、1時間に約14~16インチの速度でコンクリート連続的に打たれました。作業員は昼夜を問わず、1つのサイロにつき、わずか6日間で500トンの鋼材と5,000立方ヤードコンクリートを打設しました。完成時には、アトラスの1つのサイロには、15階建ての構造用鋼製ビル1棟の重量約1,500トンに相当する複合質量が含まれていました。

電力供給

打ち上げ施設に電源を供給するために、エンジニアディーゼルエンジン原子力燃料電池電池ガスタービン、商用電源との様々な組み合わせなど、いくつかの代替案を評価しました。電源は、信頼性が高く、無停電で、打上げ施設内で自己完結するものでなければなりませんでした。また、核爆発による地上衝撃によって引き起こされる非常に高い加速度を吸収できるか、ショックマウントに取り付けられていなければなりませんでした。システムイニシャルコスト運用保守コストの両方が評価されました。サイトへの動力供給には、信頼性の高い旧型ディーゼルエンジン選択しました。システム設計では,水や流入空気の加熱など,装置から発生する熱を可能な限り利用しました.典型的アトラスサイトでは,各プラントに1,000kWのユニットが4基ずつ設置され,ミサイルクラスターを支えていました.

サイロ上部ドア

サイロオーバーヘッドドア設計は、エンジニアリングのジレンマを生み出しました。300平方フィートの開口部を覆うドアは、極端な天候、核放射線、過圧、構造的な反発からミサイル保護し、ミサイルの発射と誘導に影響を与えないこと、発射合図後30秒以内に完全に開くこと、ミサイルカウントダウン手順の中で連続した項目として動作すること、などが求められました。また、クロージャの構築、完全な組み立て、設置、フィールドでのチェックアウトを可能にするように設計されていなければなりませんでした。シングルリーフ設計やロールアウェイ設計のようなそれぞれの潜在的設計には、それを考慮から排除する独自特定欠点のセットがありました。最終的に、ダブルヒンジ、ダブルリーフフラットドアのデザイン採用されました。2つの半分の間の中央の亀裂の問題は、ドアの特別なくさび設計と、さらシール性を向上させるためにネオプレンガスケットとステップメッシュ使用することによって解決されました。

サイトアクティベーション

様々なミサイルサイト建設アクティベーションに関与する多様な要素をすべてまとめることが、サイトアクティベーションタスクフォース司令官仕事であった。彼は、親コマンド関係なく、与えられた基地弾道ミサイルサイトアクティベーションプログラムに参加しているすべての空軍の要素に対する作戦上のコントロールを与えられました。主に土木工学諜報機関キャリア分野から来た司令官は、現場支援施設住宅建設を指示し、建設監視提供し、サイトの設置、チェックアウト、戦略航空司令部への転換を管理しました。土木機械電気技術者、低温工学、熱応力、衝撃実装専門家資金管理者、広報担当者、議会調査官への説明役などが求められた。要するに、彼らは空軍のためにそれを実現させた人物だったのです。1961 年までに、彼らはアトラスミサイル 120 発のアトラスミサイル11 基地に、タイタンミサイル 54 発のタイタンミサイルを 5 基地配備していた。

おわりに

この記事では、この大規模な取り組みに関わった人々が直面した様々な工学課題について簡単に触れただけです。その規模の大きさは今でも注目に値するものであり、土砂、岩石、泥の総量は3,755万立方ヤードに及びました。これは、ロサンゼルスからピッツバーグまでの深さ10フィート、幅10フィートの灌漑用水路に相当します。現場使用された鋼材は、サンフランシスコからワシントンD.C.までの鉄道線路建設することができました。当時、全国ニュース誌は「ミサイル基地建設計画ピラミッドティンカー・トイの演習のように見せている」と述べていますアメリカ土木学会は、ICBM施設建設プログラム1962年の "Outstanding Civil Engineering Achievement of the Year "に選出した。同様に重要なのは、この取り組み全体が、空軍土木技術者に対する見方の転換点となったことです。空軍技術者自分たちプロフェッショナリズムに対する尊敬認知度の向上を求めていた時期に、ICBMプロジェクトでの彼らの仕事が道を切り開いたのです。

2020-05-19

anond:20200519210149

クロージャといったら通信工事で使うのがもともとの意味なんだけど勝手ITのものするのやめてくださる

anond:20200519205630

横だけど、素人にイチからクロージャ教えるとか面倒くさくならない?

せめて基礎は知ってて欲しいけど。

2019-01-29

Land of Lisp読み終わった

一周目は軽く読み流し、二周目にコードを書きながらしっかり読んだ。2週間かかった。

これに手を付ける前のLisp歴は1週間。ネットLisp入門読んだ程度。

オライリーの本にあるまじきファンキーな表紙なだけでなく、中身もジワる漫画イラストがちょくちょくある。

にもかかわらず内容は恐ろしく難しかった。

読んでいて素晴らしい技術書だと絶賛されているのがわかったし私もそう思うが

Lispを学ぶのに一冊目の本としては適さないと思った。

一冊目の本は機能解説に特化すべきだ。

ソケット通信ゲーム木、ミニマックス法によるAI実装など出てきて

それを今学習中の未知のプログラミング言語解説されるので二重の複雑さ・苦しみになっていた。

とは言っても他にLispの本なんてないし、これをやるしかないのだろう。

2016-05-24

http://anond.hatelabo.jp/20160524140005

グローバルというより、単にスコープの外の値にアクセスしているだけ。

それが関数型じゃない、というのなら、クロージャはどうなるの?知ってたら教えてほしいが。

2015-05-02

clojureのjはjavaのj

閉包を意味するほうのクロージャ綴りはclosureなのだが、

時々、クロージャ(clojure)という表記を見かける。

それ、JavaScriptに変換されても.NETに行ってもjavaのjが消えないあのLisp方言だ…。

そんな間違いするなんてご苦労じゃー。

http://anond.hatelabo.jp/20150502000045

まぁ、関数型として専門的に作られているような奴は、大体デフォカリー化ついてるけど、そいつらも要は裏ではクロージャ的なものを使ってる。

で、それこそJavascriptとかLispみたいな「関数型として、本当に最低限必要ものだけ揃えている」系列の奴等は、プログラマ側がクロージャ駆使して書いてあげる必要がある。

まぁ、関数型ばりばりの奴等ほど、色々至れり尽くせりの構文になっててベースを見せないので、あんまり意識してクロージャ使ってる、って感じにはならないけど、ベースにある所よくよく見ると、クロージャが出てくるって感じか。

2015-05-01

http://anond.hatelabo.jp/20150501220738

その「関数の部分適用」を実現するために(専用の機能を持っていない限りは)クロージャ必要なんだよ!!

(部分適用するために、まずカリー化 ⇒ そのカリー化にそもそもクロージャ必要

専用の機能があったとしても、大体裏でクロージャに似たような機能使って実装しているわけだし。

毛の壁のアレは、多少気持ちは分からないではない。

http://kenokabe-techwriting.blogspot.jp/2015/04/amazon102-93.html

これのやつなぁ……。

確かに自分最初関数勉強しだしたときに、混乱したポイントではあったんだよ。

なんでかというと、クロージャぐぐると、まっさきにjavascriptクロージャの説明が出てきて、その中で実用例として「呼び出すたびに出てくる数値がインクリメントされる」的な例が真っ先に出てくるから

「えっ、クロージャって、これやるための機能なの? 副作用バリバリじゃね?」って思っちゃうんだよね。

これはかなりのけっ躓きやすポイントになってしまっていると思う。

実際はJavascriptの例でよく出てくる使われ方は、かなり特殊例なんだけど、これが代表、みたいな扱いに見えるんだよね、今の検索結果だと……。

クロージャ」という言葉について

http://b.hatena.ne.jp/entry/kenokabe-techwriting.blogspot.com/2015/04/blog-post_30.html

http://kenokabe-techwriting.blogspot.jp/2015/04/amazon102-93.html

この記事自体はどうでも良いのだけど、以前「クロージャ」という言葉の初期の使用例を探したことがあったのを思い出したので、参考までに。

Landin "A λ-Calculus Approach" (1966)

We represent the value of a λ-expression by a bundle of information called a "clusure", comprising the λ-expression and the environment relative towhich it was evaluated.

我々は、ラムダ式の値を「クロージャ」と呼ばれる情報の束で表す。「クロージャ」はラムダ式とそのラムダ式評価に関する環境から成る


Moses "The Function of FUNCTION in LISP,or Why the FUNARG Problem Should be Called the Environment Problem" (1970)

A useful metaphor for the difference between FUNCTION and QUOTE in LISP is to think of QUOTE as a porpous or an open covering of the function since free variables escape to the current environment. FUNCTION acts as a closed or nonporous covering(hence the term "closure" used by Landin).

LISPでのFUNCTIONとQUOTEの違いについては、次のように考えるのが有用比喩になる。QUOTEは多孔的または開放的関数をおおっていて、自由変数現在環境へと脱出できる。FUNCTIONは閉鎖的(closed)または非多孔的に関数をおおっている(このことからLandinはクロージャ(閉包)という用語を使っている)。

(訳はhttp://kreisel.fam.cx/webmaster/clog/img/www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/p/funarg/funarg.html から)


Sussman and Steele "SCHEME: An Interpreter for Extended Lambda Calculus" (1975)

In order to solve this problem we introduce the notion of a closure which is a data structure containing a lambda expression, and an environment to be used when that lambda expression is applied to arguments.

この問題を解決するためにクロージャという概念を導入する。クロージャラムダ式とそのラムダ式引数適用されるときに使われる環境から成るデータ構造である


Steele and Sussman "The Art of the Interpreter" (1978)

We say that the procedure is closed in the current environment, and the &PROCEDURE-object is therefore called a closure of the procedure, or a closed procedure.

この手続き現在環境に閉じられている(closed)と言い、それゆえ&PROCEDUREオブジェクトはその手続きの「クロージャ」あるいは「閉手続き」と呼ばれる。

2014-07-17

関数型入門以前

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ケースバイケース。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2014-04-10

プログラム中級者が感じる関数型の違和感

なんだか話題になってるから書く。

やっと初心者を脱して中級者になりかけてるプログラミング学習者が関数型言語に何を感じているかを書こうと思う。

1 圏論かいらないんじゃないの?

Haskellが短いコードプログラムを書けるというのは分かる。

forループmapやfoldで抽象化する利点も分かる。

それでやりたい処理のほぼ全てがまかなえるということも実感している。

副作用のない小さな関数を合成して大きな関数を作る利点も分かる。

再利用性も上がるし、どこからどう影響を受けているかが簡単に分かるからバグも出にくい。

ただ、Haskellの基礎になってる圏論が何の役に立つのかは、まったく分からない。

むしろ邪魔なんじゃないかと思う。

ファンクターやモナド概念圏論で扱われているのは分かるけど、圏論なんて名前だけ知ってればコードを書くのに不都合はないだろう。

圏論必要なのはHaskell設計する人であって、使う人ではないと思う。

なのに、やれクライスリ圏だ自己関手の圏だのと、うるさいったらありゃしない。

Linux上で開発環境整えるのにカーネルコードを読めって言うぐらい的外れだと思う。

いや、知識として持っとくのはいいだろうけど、役に立たんだろ。

2 言うほど新しい機能ないような?

Rubyが羊の皮をかぶったLispとはよく言われることだけど、関数型言語オブジェクト指向言語とそこまで違いがあるような気がしない。

純粋言語ではできないけど、クロージャに内部状態を保持してもらって無名オブジェクトみたいな使い方をすることはあると思う。

その無名オブジェクトもっとあれこれデータ関数詰め込めば、いつの間にか普通にJavaC#で使うようなクラスのできあがり。

その間はなめらかにつながっていて、不連続に切れるようなもんじゃない。

関数プログラミングと言いつつ、オブジェクト指向の考え方は利用できる。

上級者はデザインパターンdisるのが好きかもしれないけど、逆の考え方をするべきだと思う。

デザインパターンオブジェクト指向言語欠点を補うための苦肉の策じゃないよ。

関数プログラミングの基礎的なパーツだと思う。

からちょっと見た目がすっきりするだけで、結局やることはオブジェクトプログラミングと変わりはないと思う。

3 なんか選民思想にとらわれて無い?

関数プログラミングコミュニティの人って、業務でクソコードメンテさせられて、その現実逃避に美しいコードに擦り寄っているように見える。

もちろん、美しいコードを書けるなら書いた方がいいし、現代的な言語を使えるなら使ったほうがいいと思う。

けど、適材適所というか、オブジェクト指向言語でも、やってやれないことはないわけで。

役に立たない圏論をありがたがる所とか、どうもイキがってるように見える。

せいぜい生産性が倍になる程度で、他の要素が悪ければ帳消しになるような利点でしかないに違いないのに。

開発プロセスとかを見直す方が仕事を楽にしてくれるんじゃないのかな?

2013-05-14

プログラミング大好き男に「どの言語が好き?」と訊ねられたとき、女はどう答えたらいいの?

あ、まず前提として、

貴女プログラミング大好き男を夢中にさせることが、

はたして貴女幸福にするかどうか、それはまた別問題だけれど。

はいえ、プログラミング大好き男たちは玉石混交ながら、

IT系の超かしこい男なども多く、

多くっつーかIT系でないのにプログラミング大好き男っていうのは超かしこ学生まぁこれは有望株)か研究者系なんか、

あとはまったくかしこくもないクセに頭いいつもりして「Lispやってます(キリッ ハローワールドくらいですが」とか言っちゃうアホしかいないわけで、

したがって、釣り師たる女たちにとっては、

なかなかあなどれない釣り場です。

では、プログラミング大好き男に「どの言語が好き?」と訊ねられたとき

貴女は、どう答えれば理想的でしょう?

まず最初に、その男COBOLのようなタイプレガシーコード

あとはC/C++、そして(TechEdに参加するほどではないけれど)VisualBasicが大好きな、

そんなタイプ場合は、

貴女はかれの目を見て、微笑みとともに質問など無視して、こう言いましょう、

「わたしが、仕様書を作ってあげる♪」

これこそまさに必殺の答えです。

そこでプログラミング大好き男が、えへへ、とやにさがったならば、

貴女は、ひそかに、「コピペ量産しやすい技術的ポイントを抑えた仕様書」あたりを

ひそかに練習しておきましょう。これで成功まちがいなしです。

しかし、ここでは、もう少しハイブロウな(?)いわゆるプログラミング好きの男の

落とし方をお伝えしましょう。

この場合貴女は、こう答えましょう、

「わたしは、JVM上のScalaが好き。

型推論もあるしラムダ式クロージャスクリプト言語みたいに書けるの、豊富組み込みのコレクションメソッドはいつも便利だし、

XMLリテラルCaseクラスによるパターンマッチもTraitベースMixi-inも、大好き♪」

もしも貴女がそう答えたならば、

その瞬間、プログラミング大好き男の目はきらりと輝き、

かれの貴女への恋心は、

20%増量になるでしょう。

なぜって、Scalaは、

ちょっぴりお洒落Ruby風味に記述できて、

Maybeモナド差し込んで、

コンパイルは遅いながらも、そこがまた

ちょっぴりメモリを多く積めばいい富豪プログラミングみたいなふんいきをかもしだしていて。

しか関数型言語としての不変変数・不変Listを実装して

質高くふるまっていて、なおかつ、

JVM上で動くくせにJavaが「やるやる」と言ったまま実装してなかったラムダ式と仮想拡張メソッド型推論を実装した功績もあって。

したがってScalaこそは、

本来なんの接点もないまったく縁もゆかりもない別々の世界に生きている、

インタプリタ言語大好きな綺麗系OLと、玉もあれば石も混じっている、そんなプログラミング大好き男たちが、

この世界で唯一(いいえ、JVM系列のJRubyClojure と並んで唯三)遭遇しうる場所です。


では、参考までに、危険な回答を挙げておきましょう。

プログラミング大好き男に「どの言語が好き?」と訊ねられたとき

貴女がこう答えたとしましょう、

MicrosoftVisual Basic for Applicationが好き♪ 週3回は Excelコーディングするの。」

その瞬間、プログラミング大好き男の貴女への恋心は消えます、

なるほどMicrosoftは、世界最大のOS供給メーカー

特にOfficeは平凡ながら、ま、無難にまとめてあるものの、

しかし、「新UIのリボンUI!」「メトロUI対応!」とかなんとか無意味な自慢を吹聴し、

VBAはさらプログラミングについての謬見を撒き散らした罪がありますからプログラミング大好き男にとっては天敵なんです。

ティーガー戦車乗りのオットー・カリウスは「ティーガー乗りなら誰でも片側の履帯がはずれ僚車に牽引されて帰ってきた経験を持つはずだ」 って言ったけど

社内SESIerなら誰でもクソみたいな前任者が書いたクソみたいなExcel-VBAコードを直した経験があるはずなんです。

また、もしも貴女が「PHPが大好き♪ あたしが書いたPHPのWebサイトが、さくらサーバに7件あるよ♪」

と答えたとしても、同様の効果をもたらすでしょう、

なぜって、PHPは、1990年代にはWeb系を目指す人にとっては簡単で要件を満たすWebサイトが簡単に作れる輝きの道だったものの、

しかし2000年代うそうからセキュリティ関係の問題で転落し、

いまや、あの貧弱な言語能力では、Rubyの魅力に遥かに及びません。

(注1)

またもしもたとえあなたプログラミング言語が大好きで、

「わたし、.NET FrameworkのC#が好き、フォームアプリでも書くけど、

最高に好きなのはASP.net♪ SQLServer連携も、ajax control toolkitもすっごくおいしいの。」

と、答えたとしたらどうでしょう

なるほど、貴女の趣味は高く、

しか.NET Frameworkは、C# が cool であるのみならず、

.NET Framework上で動く F# や IronPythonIronRubyマネーJScriptも最高においしいんですけれど、

しかし、貴女の答えを聞いて、プログラミング大好き男はきっとおもうでしょう、

(なんだよ、MS信者な女だな、カネかかりそう)って。

(注2)

貴女が、プログラミングが大好きで、言語の名を挙げるにしても、

たとえば、JavaScript(node.js)ならば安心でしょう、

なぜならば、JavaScriptは、かけだしのプログラミング初心者にもマニアにもともに愛されるめずらしい言語で、

貴女がその名前を挙げても必ずしも、(jQueryがやっとの初心者と思われることはあっても)あなたプログラミング言語おた宣言をしているとは受け取られないでしょう。

しろへぇ。ちゃんとprototypeは使ってる?」と聞かれたら「当たり前じゃない。むしろnode.jsでいいMVCフレームワークが分からないんだけど…」と話を振ってみましょう。

男は嬉々として、30個くらいのnode.jsフレームワークを教えてくれることでしょう。(まぁどれもどれで帯に短し襷に長しなんですが)

あるいはRighno上で動かしたコードをnodeへ移植する話とか、CoffeeScript、甚だしきはClojureScriptを振ってみてもいいかもしれません。

しかし、たとえば、世界が(つーか竹内先生ポール・グレアムが)誇る超絶関数型言語の名作、Common Lispにせよ、

selfと書きまくることと海外で使われてることに定評のあるPythonにせよ、

バージョンアップごとに言語仕様が変わり、かなり素敵なものではあるもののobsolatedな罠にはまりやすRubyにせよ、

まったく読めない$_だらけで頭悪い仕様リセットしてPerl6にする(そしてまた全く読めない)Perlにせよ、

気さくなクジラ飛行机さんがふるまう素敵においしい日本語プログラミング言語ひまわりなでしこにせよ、

基地外トリッキー言語の代表BrainFxck・Glass・Missa・WhiteSpaceにせよ、

そういう言語名前をいきなり挙げるのは、ちょっぴり微妙。

ましてや貴女が、「Haskellが大好き♪ わたし、プロジェクトオイラーの問題もうほとんどHaskellで、解いちゃった♪」

と答えたならば、どうでしょう

これはかなり博打な答え方で、

なるほど、Haskellは、純粋関数型でありつつも副作用のある操作が行える超絶名言語ゆえ、

あなたがそう答えた瞬間、プログラミング大好き男がいきなり超笑顔になって、

へぇ、やっぱりHaskellなら大抵の問題は4行以内くらいで解いちゃった?」とか言いながら

鼻の下がだら~んと伸びちゃう可能性もあるにはありますが、

しかし、逆に、(なんだよ、この女、プログラミングおたくかよ)とおもわれて、どん引きされる可能性もまた大です、

なぜって、必ずしもプログラミング大好き男がプログラミング大好き女を好きになるとは、限らないですから

しかも、この答えには、もうひとつ問題があって、

男たちは、女を導き高みへ引き上げてあげることが大好きゆえ、

もしも貴女が、「Haskellが大好き♪」なんて言ってしまうと、

そこにはもはや、男が貴女圏論モナド教育する余地がまったく残されていません、

したがって貴女のその答えは、

プログラミング大好き男の貴女への夢を潰してしまうことに他なりません。

ま、ざっとそんな感じです、貴女の目にはプログラマーたちはバカでスケベで鈍感に見えるでしょうが

しかし、ああ見せて、プログラマープログラマーで繊細で、おざなりに扱われると傷つきやすく、ローカル変数名前一つにも気を使い、女と自分の将来に夢を持っています、

貴女の答え方ひとつで、プログラマー貴女への夢は大きくふくらみもすれば、

一瞬で、しぼんでしまいもするでしょう。


では、スキットを繰り返しましょう。

「わたしは、JVM上のScalaが好き。

型推論もあるしラムダ式クロージャスクリプト言語みたいに書けるの、豊富組み込みのコレクションメソッドはいつも便利だし、

XMLリテラルCaseクラスによるパターンマッチもTraitベースMixi-inも、大好き♪」

そして、その瞬間、プログラミング大好き男の目がらんらんと輝いたなら、

貴女はこう重ねましょう、

それからね、いま、わたしが使ってみたいWebアーキテクチャは、

Play Framework、素敵なリアルタイム嗜好のアーキテクチャって噂を聞いたから。

あなたのお暇なときがあったら、わたしをPlayへ連れてって♪」

これでもう完璧です。

PlayFrameworkと、Play(遊ぶ・じゃれる)のダブルミーニングでかれの股間も刺激しちゃえます。

そうなったらこっちのもの

デートの日には、ペアプロ用に Happy Hacking Keyboard をばっちり決めて、かわいい下着をつけて(注3)、

github.comの通販で売ってるoctcatのTシャツか、facebookの「いいね!ボタンがムネのところにあるTシャツ、 あるいは初音ミク(ないし彼のお気に入りアニメキャラ。北米ならMyLittlePonyで鉄板なんだけど)のコスプレを着てゆきましょう。

その日からプログラミング大好き男は貴女の虜になるでしょう。

では、釣り師としての貴女の、愛の幸運幸福をお祈りします!

注1:

(と、書いたもののPHPの現状をよく知りません。グローバル変数だらけになるのとか旧ASPみたいなもんなのかなぁ。count($array); とか書くのアホと思うがpythonも同じだった)

(あと、マジで機能とかTwitter連携とか診断メーカー的なのでもPHPで7つも作ってる女子居たら付き合いたい)

注2:

もっとも。objective-Cなんていう言語をやることに比べれば個人で行う程度なら金のかからない手法もなくはないのですが。

注3:

プログラマーにとっての「かわいい下着」と、女性にとっての「かわいい下着」の定義にずれがあるので注意。

半数くらいのプログラマーしましまぱんつが可愛いと思ってる気がするので、妙齢の女性が着用するには抵抗あると思うが、ボーダー柄のコットンショーツ(ただしキャラ絵のは除く)とか、

過度でないていどにフリルがついたものオススメ。また、色は、レッドだとプログラミング大好き男は引いてしまう(だってそれはコンパイルエラーときの色だ)ので、薄ピンクホワイト、薄ブルー、せめて黒(に差し色でピンクとか)あたりに留めたい。

補記:

 元ネタhttp://tabelog.com/tokyo/A1301/A130101/13002457/dtlrvwlst/3464106/

補記2:

  「プログラマー」か「プログラマ」かの問題については、特に意味は無いが前者を採用した。

補記3:

 言うまでも無いけど、ネタです。 

 また、COBOLとVB、C++ではまったくもって難易度が違うことも分かっています。後者になるほど圧倒的に難しい。

2012-09-20

http://anond.hatelabo.jp/20120920164222

こういうのを望んでいるなら、不可能。

var i = 10;

[1,2,3, ... ,99,100].each(function(i) {
	// 何かの処理
});

console.log(i); // 10と出て欲しい

jashkenasはこう主張している

if they do clash, shadowing the variable is the wrong answer. It completely prevents you from making use of the original value for the remainder of the current scope. Shadowing doesn't fit well in languages with closures-by-default ... if you've closed over that variable, then you should always be able to refer to it.

衝突が起こるとしても、変数隠蔽(shadowing)は間違った解決法だ。スコープ内のその他のすべての変数に関して、オリジナルの値の利用を完全に塞いでしまう。隠蔽は、クロージャが標準(closures-by-default)な言語にはうまくマッチしない。その変数を閉じ込めているならば、常に参照出来るべきだ。

ソースhttp://www.sixapart.jp/techtalk/2012/01/coffeescript.html

2012-09-04

"Hello world!"

このお話はたぶんフィクションです。実在の個人や企業とはあんまり関係ありません。そういうことにしろください。


10年前、20代になったばかりの頃の僕は、今思えば本当に最低な生活を送っていた。高校を中退し、実家とは疎遠で、友達もなく、金もなく、夢も希望もなく、ただバイト先と自宅を行き来するだけの毎日。いつも視界には霞がかかったようで、底の見えない空虚さだけが僕の心を支配していた。

それでも趣味らしいものはあった。オンボロマシンRedHatを入れ、ダイヤルアップの細い回線自宅サーバを立て、Perlでガラクタのようなプログラムを動かす。そんな子供じみた遊びだけど、プログラムを組んでいるときだけは空虚さを忘れ、画面の中に没頭できた。

ただ、そのときの僕はもうすでにいろんなものに打ちのめされていて、若者にありがちな全能感などというもの霧散していた。自分プログラミングで何かを成すだとか、それを仕事にしようなんてことは一切頭になかった。このまま夢も希望もなく人生を終えるのだと、そう思っていた。

それでも転機は訪れる。

勤めていた工場で派遣切りにあった僕は、「働きたくないでござる! 絶対に働きたくないでござる!」とか言いながらニート生活をしていた。そろそろ翌月の家賃も払えなくなってきたころ、派遣会社から電話がかかってきた。「プログラム開発の仕事があるんですがやりませんか?」と。そういや履歴書だかスキルシートだかに、Perlがどうたらとか書いたっけ。実務経験もない中卒に仕事まわすとかwww ……とは思ったものの、このままでは本気でホームレス一直線だったので引き受けた。

はじまりはそんなもの。たいした覚悟があったわけでもない。

派遣された先は従業員数10人くらい、パートさん含めても50人くらいの小さな会社だった。現在手書きの伝票でやっている処理をWeb化したいのだという。システム担当者はおらず、事務員さんがExcelAccessを使える程度。すべて僕一人でやらなければならない。マジか。

ともあれ、まずはサーバである。後々の運用を考えるとLinux系は使えない。事務所の片隅に放置されていたWindows 2000マシンApacheを入れてそれでよしとした。

次はデータベース。でもこの頃の僕は「正規化ってなんれすか?」というレベルだったので基礎から勉強した。なんかMySQLってのがいいらしい→社長に申請→「今Access使ってるからそれでいけ」→「はい」→パフォーマンスの面で問題出るだろうなとは思ったがしょうがない。

次は言語最初はPerlで書こうと思ってたけど、PHPってのが流行ってるらしいのでこっちにした。ウホッ! いい言語……。

そして業務内容を把握するため、現場あっちこっち駆けずり回りながらヒアリングする。ときには部長から愚痴を聞かされ、ときにはパートのおばちゃんから誘惑され、そんなこんなを繰り返し、仕様をつめていく。

そして数ヶ月かけて開発したシステムの稼働である。そのときのことは今でも忘れない。

現場の人がラインからデータ入力する。サーバデータが送られてくる。別の事業所からも送信されてきてる。問題ない。事務員さんが伝票処理を行う。問題ない。すげえ、ちゃんと動いてる。お遊びで作ったプログラムではなく、本当に本気の業務用プログラムである。それを僕が1人で作ったのだ。このプログラムで業務がまわり、利益を生み出すのだ。社会に対して、何らかの作用を及ぼすのだ。僕みたいなクズにでも、そんなことが可能だったのだ。

そのことに気付いたときの感動を、僕は今でも忘れない。


それからちょっといろいろあって、ホームレスになった。うん、急展開なのはわかってる。でもこの間のことは語ってもあまり面白くないし、公序良俗に反する話もあるのでざっくりはしょる。どうせフィションなんだから細かいことを気にしてはいけない。

話を戻そう。

ホームレスになってからの数日はひどい精神状態だった。足元から世界が崩れていく感覚。視界がぐにゃりと歪む。帰りたい。でも帰る家がない。だからホームレスというのか……というトートロジーを何度繰り返しただろうか。

もうあまり覚えていないけど、このときの僕は本当にもう何もかもどうでもよくなってたと思う。ただ、自分の全財産がバッグ1つしかないということに対する心地よさ、開放感があったのはよく覚えてる。そんな状況で地べたに座り込んで見る風景。きっと、今はもう見えない。あの頃の僕にしか見えない風景が、そこにはあった。

いろんな人と出会い、流れ流れて、最終的に西成のあいりん地区にたどり着いた。関西圏の人には説明不要かもしれないけど、よく言えば日雇い労働者の街、ぶっちゃけて言えばホームレスメッカである。今はもう綺麗になってしまったし、治安もそこそこよくなったけど、僕がいた頃はまさに「カオス」としか表現のしようがない状況だった。

どこから持ってきたんだといいたくなるようなガラクタばかりを並べた泥棒市。簡素な骨組みにビニールシートをかぶせただけの飲み屋。「ないかーないかー」と声が聞こえてきたので見てみると、警察署の近くなのに道端で堂々と丁半博打をやっている。コンビニトイレ張り紙には「トイレが詰まる原因になるので注射器を捨てないでください」とある。いやトイレが詰まるとかの前に気にすることがあるだろ。ケンカなんて日常茶飯事。頭から血を流したおっさん普通に歩いてる。数百人規模で並ぶ三角公園炊き出しは圧巻。四角公園の炊き出しでは誰もいない場所にワンカップの瓶とかがたくさん並んでる。何かと思って聞いてみたら「あれで並んどることになってん」と返ってくる。学食の席取りルールみたいだ。ああもう全然書ききれない。

でも一番印象に残っているのは、南海線の高架下、うず高く積まれたゴミ山の前でガラクタ解体していたおっちゃんのこと。奇声を発しながらハンマーを振り下ろしていたおっちゃん。その両目は、これ以上ないほどにキラキラと輝いていた。その鉄屑を売った金でビールが何本買えるか皮算用でもしているのか、あるいは幸せになる魔法の薬でもキメているのか、そのときの僕にはわからなかったけど。

そして、人生を投げ出していた僕に付き合ってくれたおっちゃん、あなたのことも忘れません。モーニングをおごってくれて、いろんな話をしてくれて、聞いてくれて、役所の福祉課まで連れて行ってくれたおっちゃん。あなたがいなければ、僕は今でも西成でぬるま湯の日々を送っていたかもしれない。

いろんな人に助けられて、ホームレスの施設に入ることになった。舞洲という人工島にあるのだけど、これがまた周囲に何もないのだ。スポーツ関連施設、ゴミ処理場、物流センターが点在するくらい。コンビニ1件ありゃしない。だけど施設での生活は意外にも楽しかった。2段ベッドが6つ並んだ12人部屋。むさくるしいけど、みんなバラエティに富んでいた。刑務所上がりのいかついおっちゃん、虚言癖のひどいおっちゃん、ほとんど一日中寝てるじいちゃん、薬のフラッシュバックがひどい兄ちゃん。そんな人達の中で過ごせば、自分がどれほどクズであっても気にならない。やはり僕はこちら側の人間だと再認識した。

市街地にある施設へ移ってからはいろんな仕事をした。生駒の山奥にドブさらいに行ったり、事務所移転バイトで腰をやってしまいそうになったり、なんやかんやあったけど、長くなるのではしょろう。結局のところ、またプログラマをすることになるのである

そろそろ身バレしそうな領域に入ってきたのでここでもう一度強調する。このお話はたぶんフィクションです! たぶんフィクションです! 大事なことなので2回言いました。


そう、またプログラマとして働くことになった。今度は従業員数300人くらいの大きな会社である日本人なら誰でも知ってるであろう大企業の子会社ということもあり、本社からの出向社員東大京大卒当たり前みたいな状況。そんな人達の前で中卒の僕が前に座ってプレゼンやら仕様検討会やらをするのだ。何の罰ゲームだよ……。

最初に思ったのは、「ここにいる人達は育ちがいい」ということだった。みんな礼儀正しい。喋り方や立ち居振る舞いまで、今まで僕がいた世界とは何もかもが違っていた。まるでドラマに出てくるような「ちゃんとした人生を送っている人達」だ。そんな人達に囲まれていると、「生きていてごめんなさい」と言いたくなる。本当に。

他に驚いたこと。社内で連絡を取り合うのにメール使ってる。やばい。社内メーリングリストとかもある。やばい。定期的にミーティングとか勉強会とかもする。なにそれ怖い。自分がいっぱしの社会人になったかのような錯覚に陥る。ちょっと前まで西成でゴミ拾いのバイトしてたのに。「勘違いするんじゃない! 西成の日々を思い出せ!」と何度も自分に言い聞かせ、自我を保った。

とはいえ、萎縮してばかりもいられない。気付いたことはどんどん提案した。あちこちに散らばっている共通の処理をライブラリ化したり、サーバで負荷がかかっている部分を改善したり。却下されたものも多かったけど、採用されたものもそれなりにあった。業務の改善案を考えるのは楽しい。誰かがプログラマの三大美徳に「無精」を上げていたっけ。極度のめんどくさがりで、楽をするための苦労は惜しまない僕には、こういう仕事天職なのかもしれない。

システム開発の方も順調に進んでいた。この頃はMicrosoftですらWeb版のOfficeを出すような状況で、デスクトップアプリに比べても遜色ないレベルのWebアプリがどんどん出てきていた。この会社で開発しているのも、そんなAjax技術を多用したWebアプリだ。JavaScriptを用いた本格的な開発に最初はとまどったけど、書けば書くほど言語自分の手に馴染んだ。クロージャprototypeといった基礎をちゃんと学ぶと、書けるコードレベルが段違いに上がっていくのが楽しかった。

仕様にもこだわった。実際に使う人がどんなふうに操作するのか、何度も何度も脳内でシミュレートし、どんなUIが最適なのか、データ構造はどうするべきか考え、実行速度とメンテナンス性の板挟みに苦しみ、何度も何度もリファクタリングを繰り返す。

そのとき開発していたシステムは、メイン画面でほとんどの処理を行うタイプのものだったのだけど、そのメイン画面のJavaScriptコードは最終的に1万行を超えた。もうこの頃にはJavaScriptでのオブジェクト指向的な開発手法というもの自分なりに構築されつつあった。そしてこのカチャカチャとした手触りの、安物のオモチャのような言語は、僕の一番好きな言語になったのだった。

そんなある日、僕が作ったシステムのメインユーザーである他部署の偉い人が来て、開口一番こう言った。

「あのシステムいいね!

この機能が素晴らしい、とか、あの発想はなかったわ、とか、とにかくべた褒めして、そして去っていった。機能追加要望の前口上だと思って身構えていた僕は拍子抜けした。「あの人が他人を褒めることなんてめったにないよ、すごいね」と近くの席の人が言う。

そのとき僕は「カチリ」という音を聞いた。

どこにもはまることのない歪な歯車。その僕が、社会という大きな機械の中に組み込まれる音だったのだと思う。まあすぐに外れてしまうのだけど。その一瞬だけは、僕は確かに社会の一部になれたのだ。


そして契約期間満了となり、再び僕は人生の岐路に立たされる。

これからどうするか? 今の技術力ならそれなりのところに就職できるかもしれない。でも僕にはやってみたいことがあった。半年かけて海外を旅するのだ。

今、僕の手元にはまとまったお金がある。こんなのは人生で初めてのことだ。そして僕は今、どこにも所属していない。どんなところに行ったっていいし、何をしたっていい。この先、そんな状況がどれだけあるだろうか? 人生長いのだ、そりゃあ何度だってあるかもしれない。でも今回やりたいことをやらなかったのなら、僕はきっと何度だってやらずにいるままだろう。

もちろん怖くなかったわけじゃない。なにせ海外なんて行ったことがなかったのだ。ずっと極貧の生活をしてきた僕は、国内旅行だって満足にしたことがない。

いろいろと考えた。ない頭を使って考えた。自分の英語は通じる? 病気になったときは? 荷物をなくしたら? あれこれ考えると心配事ばかりが頭をめぐって、わけがわからなくなる。

最終的に決定打になったのは、自分が何も持っていないという、この状況だった。

そう、僕は何も持っていない。家族友達も、夢も希望も。だけど、そんな人間だからこそできることがあるんじゃないかと思ったのだ。何も持たないからこそ、どこにだって行けるし、何にだってなれる。それはタロットカードの「愚者」みたいなものだ。愚かな者は恐れも何も知らぬからこそ、無限の可能性を秘めている。

心を決めたら後は早かった。

パスポートを取得した。航空券を手配した。住民票を海外転出した。トランクルームを借りた。住んでいた部屋を引き払った。

空港へ向かう電車の中で、懐かしい感覚に襲われた。あの日、ホームレスになったばかりのころの感覚世界が足元から崩れていく感覚。でもあのときとは決定的に違うことがあった。それは、今回は自分が望んでこうなったのだということ。流されるまま生きてきた僕が、初めて自分人生に対して主導権を得た。それだけが決定的に違っていた。それだけで十分だった。足の震えは、これからの旅路への、期待に対する震えなのだった。


初めて踏みしめる異国の地。最初はいろんなものに圧倒された。

自分とは異なる人種、異なる言語。街の看板すらまともに読めない。レストランの注文すらおぼつかない。ちょっと電車に乗るのも大仕事だ。それでも時間をかけてひとつひとつなんとかしていった。

見知らぬ街の匂い、喧騒、バケツをひっくり返したようなスコール、旅の中で出会う怪しい人、優しい人。僕の前でたくさんの風景が流れていく。

川辺のレストランで昼ご飯を食べた後ボケーッとしていると、猫が膝の上に乗ってくる。動くのもめんどくさくてボケーッとしてたら日が暮れてた。そのまま猫と一緒に晩ご飯を食べた。そんな日もあった。

長距離列車に乗っていたとき、車内食にピーナッツバターのようなものが付いていたので、普通にパンに塗って食べた。でも梅干的なものだったらしく、めちゃくちゃ酸っぱかった。「すっぱ! すっぱ!」とかやってたら向かいの席の女の子爆笑していた。僕も笑った。そんな日もあった。

最初は少し移動するのにも大変な思いをした。でもいつの間にか、ローカルバスに乗って気ままに旅するようになっていた。

たどたどしかった英語も、日常会話程度なら普通に喋れるようになっていた。

いろんな国のバックパッカーにもたくさん出会った。お互いつたない英語でやりとりするのも楽しかった。今度は彼らの国にも行ってみよう。だからいつか世界一周に出ようと、僕は心に決めた。

こんな旅に出たところで自分は何一つ変わらないと思ってた。でも、何かが変わってきている。それが何なのかはわからない。たとえば図太さだったり、適当さだったり、そういうのもあるのだけど、何か違う。それよりもっとプリミティブなもの。感情になる前の感情、行動になる前の行動。マグマのような熱量を持ったドロドロとしたものが、自分の中に渦巻いているのを感じる。それがいつ形を成すのかはわからない、今はまだ。だけどいつかどこかで、忘れた頃にひょっこり出てくるんじゃないかと思う。そのときを楽しみにしていよう。

そして夢のような日々は終わる。


日本に帰ってきたとき、手持ちの金は10万以下だった。部屋は解約していたので住むところもなかった。普通にホームレスだった。僕は焦らず慌てず、西成へ向かった。

しばらくはドヤ(安宿)に泊まった。一番安いところなら500円から泊まれる。西成はいいところだ。

宿に住民票を移し、ハロワ失業保険を申請した。

前の会社から戻ってこないかと誘われたけど、「働きたくないでござる! 絶対に働きたくないでござる!」と言って断った。

いや働きたくなかったのは本当だけど、もう1つ理由があった。職業訓練組み込み系を学ぼうと思っていたのだ。

スマートフォン含むタブレット端末の市場がこれからも拡大していくのは間違いない。そうすると必要になってくるのは組み込み系の知識。いやアプリ作るだけなら必要いかもしれないが、そういった知識があれば、自分ができることの幅がぐんと広がると思う。

それに、今の僕には基礎的な力が圧倒的に足りない。すべてを独学で、我流でやってきたけど、やはり限界を感じる場面が多々あった。だから今回ちゃんと体系的に学んで、足元を固めようと思ったのだ。

結果的には正解だったと思う。本当に基礎の基礎から学べた。

ブレッドボードを用いて回路を組むところから始まって、アセンブラC言語組み込みLinuxでのデバイスドライバ開発、アプリ開発。これまで高級言語の十分に進化しきった部分にしか触れてこなかった僕にとっては、どれも難しかったけど、どれも面白かった。これからどういう道に進むかまだわからないけど、ここで学んだことは絶対に無駄にならないと思う。

そうして職訓で勉強するかたわら、悶々と考えていたことがある。世界一周についてだ。

今はまだ金もないし、そんな金を稼げるあてもないのだけど、いつか(たぶん10年後くらいには)行こうと本気で思っている。

ルートだけでも今から考えておこうと思って、いろいろと旅程検討アプリを試してみたのだけど、どれもいまいち使い勝手が悪い。海外のものも含めて探しまくったけど、自分が思うようなものは見つからなかった。

だったらもう自分で作るしかない。せっかくだから就活ときポートフォリオとして使えるよう、ちゃんとしたWebアプリを作ることにした。

最初の1ヶ月は地図APIの選定と、検証コードを書き捨てるだけで終わった。

2ヶ月目は基礎部分の構築だけで終わった。

3ヶ月目に本気を出し、ほぼできあがった。

4ヶ月目でサーバドメインを用意し、最後の仕上げをした。

そしてベータ版リリースした。 http://planetter.com/

それが先週の話。

そして今、こうして増田投稿する文章を書いている。

だからこのお話はここで終わりだ。正確に言うなら、ここから先の展開はまだわからない。


10年間を振り返ってみて思う。あの頃と比べて、何か変わっただろうか?

家族や親類とは縁が切れたままだし、いまだに人付き合いは苦手だし、金はないし、夢も希望もない。それは今でも変わらない。ただ、あの頃あれほど感じていた空虚さは、跡形もなく消えている。

西成の高架下で見た光景を思い出す。ガラクタ解体していたおっちゃん。あのキラキラした目。たぶんあの瞬間に僕は、自分にとって一番大切なものは何なのか、心の深い部分で理解したんだと思う。

世界一周だなんだというのも本当はどうでもいい。僕はただ、いつだってドキドキしていたいのだ。

初めて人を好きになったときの気持ち。知らない街で暮らし始めたときの気持ち。そして、プログラムが思い通りに動いたときの気持ち。

それを持ち続けていたいのだ。いつだって新しい世界にワクワクしていたいのだ。

だから僕は、今日ガラクタのようなコードを書き続けている。

ふと目を閉じれば、まぶたの裏に映る、あの日のメッセージ

"Hello world!"


このお話はたぶんフィクションです。実在の個人や企業とはあんまり関係ありません。でも、ここに綴った僕の想いは、ノンフィクションです。

2012-01-24

http://anond.hatelabo.jp/20120123003316

でもより良いコードを書こうとしてクロージャデフォルト引数、動的スコープといったものを気にしだすと弱点に気づく。

具体的にどんなの?

2012-01-23

http://anond.hatelabo.jp/20120122234606

言語仕様そのものはそんなに酷くない。

でもより良いコードを書こうとしてクロージャデフォルト引数、動的スコープといったものを気にしだすと弱点に気づく。

弱点に気づいた後で、それを直そうとしたり埋め合わせる機能を考えるのが他の言語

これは弱点じゃなくてPython様が与えた試練だから文句を言うなと押し付けるのがPython

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