「DSL」を含む日記 RSS

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

2025-06-28

LLMはエンジニア仕事を奪うのか?否、仕事抽象度を「Why」の次元

序文コード蒸発する時代と、それでも残る「Why」という名の問い

2025年私たちソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たち仕事は、いずれAIに奪われるのではないか」と。

この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマ仕事本質が、歴史上かつてないレベル抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考要求されることになる。

本稿では、プログラミング歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわちWhy(なぜ作るのか)」を定義し、記述する能力重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略提示である

第1章:プログラミング歴史的変遷 ― HowからWhatへの長い道のり

LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。

1-1. 手続き時代:Howを記述することに終始した黎明期

コンピュータ黎明期プログラミングとは、計算機理解できる命令(How)を、一行一行、丹念に記述する作業のものであった。アセンブリ言語や初期のFORTRANCOBOLといった言語は、ハードウェアの制約を強く受けており、プログラマメモリ管理プロセッサ動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。

この時代テストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジック実装の詳細が密結合し、コード特定の処理手順を記述した、硬直的な塊となっていた。

1-2. テスト駆動した振る舞いへの注目:Whatへの小さな一歩

風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミングXP)の中で、テスト駆動開発(TDD)という考え方が登場する。

TDD本質は、単なるテスト手法改善ではない。それは、プログラミングパラダイム根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマ意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。

テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーログインボタンクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。

この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式ソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャービジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである

1-3. 宣言プログラミングの台頭とフレームワーク役割

TDD/BDDによってプログラマ意識が「What」に向かい始めると、コードのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンフレームワーク存在だ。

Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQuery代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。

しかし、Reactは「UIとは、ある状態state)に対する純粋写像である」という宣言的なモデル提示した。プログラマがやるべきことは、UI状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的更新するかという面倒な「How」の部分は、Reactの仮想DOM差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。

この「WhatからHowへの変換」は、様々な領域で見られる。

これらのフレームワークツールは、いわば特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。

現状は、この歴史的変遷の延長線上にある。プログラマ仕事は、手続き記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。

第2章:LLMがもたらす究極のパラダイムシフト ― 汎用変換器の誕生

フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定領域に特化した変換器」であったのに対し、LLMは「あらゆる領域対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。

2-1. フレームワークの制約を超えて

前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たち特定の「制約」を課してきた。Reactを使うならコンポーネントベース思考し、状態管理作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。

しかし、LLMはこの前提を覆す。LLMは、特定フレームワーク言語知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由形式で「What」を伝えることができる。

例えば、こうだ。

ユーザー認証機能付きのシンプルブログアプリを作ってほしい。フロントエンドはReactとTypeScriptUIコンポーネントはMUIを使う。バックエンドNode.jsExpressで、データベースPostgreSQLユーザーGoogleアカウントログインでき、新しい記事作成編集、削除できる。記事にはマークダウン記法が使えて、画像アップロードできるようにしてほしい。

この要求(What)は、特定フレームワーク流儀に則ったものではない。複数技術スタックを横断し、機能要求自然言語で並べただけのものであるしかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベル要求からディレクトリ構造設定ファイルAPIエンドポイントフロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。

これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定フレームワーク存在しなかったニッチ領域や、複数技術を組み合わせる複雑なシステム構築においても、AIによる宣言プログラミング恩恵を受けられる時代が始まろうとしているのだ。

2-2. 「What」の解像度がすべてを決める世界

LLMという汎用変換器の登場により、プログラマ生産性は、いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである

質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である

これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーデザイナーとの対話を通じて、日常的に行ってきた思考プロセスのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力プロンプト)という形で、明示的に言語化されることを要求するのだ。

やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDテストコードという形式で「What」を記述したように、私たち自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コード蒸発していく未来である

第3章:それでもAIには決められない ― 「Why」の不在という致命的な欠陥

「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。

答えは、明確にNoである

ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ずWhy(なぜそう作るのか)」という、背景、文脈、そしてトレードオフ考慮必要不可欠となる。

3-1. トレードオフの海に溺れるLLM

簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。

これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。

LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報必要からだ。

これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネス目標組織文化ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。

3-2. エンジニアが暗黙的に行ってきた「Why」に基づく意思決定

ここで重要なのはこれまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。

私たち技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single Page Application)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「 Permalink | 記事への反応(0) | 17:09

LLMはエンジニア仕事を奪うのか?否、仕事抽象度を「Why」の次元

序文コード蒸発する時代と、それでも残る「Why」という名の問い

2025年私たちソフトウェア開発の歴史的な転換点に立っている。大規模言語モデル(LLM)の進化は、GitHub Copilotのようなコード補完ツールに始まり、今や「何を作りたいか」を自然言語で伝えるだけで、アプリケーションの雛形が数分で生成される時代現実のものとしつつある。この光景を目の当たりにした多くのプログラマが、漠然とした、しかし確かな不安を抱いているだろう。「私たち仕事は、いずれAIに奪われるのではないか」と。

この問いに対する私の答えは、半分はYesであり、もう半分はNoだ。より正確に言えば、プログラマ仕事本質が、歴史上かつてないレベル抽象化され、その役割が再定義されるのだ。私たちは、コードを「書く」作業から解放される一方で、これまで以上に高度な思考要求されることになる。

本稿では、プログラミング歴史を「How(いかに作るか)」から「What(何を作るか)」への移行として捉え直し、LLMがこの流れをいかに加速させるかを論じる。そして、その先にある、AIには決して代替できない、人間ならではの競争優位性、すなわちWhy(なぜ作るのか)」を定義し、記述する能力重要性について深く考察していく。これは、単なる未来予測ではない。今を生きるすべてのソフトウェアエンジニアにとっての、生存戦略提示である

第1章:プログラミング歴史的変遷 ― HowからWhatへの長い道のり

LLMの登場を特異点として捉える前に、我々が立っている場所を正確に知る必要がある。ソフトウェア開発の歴史は、常に「抽象化」との戦いであった。そしてその歴史は、プログラマの関心が「How」から「What」へと徐々に移り変わっていくプロセスとして描くことができる。

1-1. 手続き時代:Howを記述することに終始した黎明期

コンピュータ黎明期プログラミングとは、計算機理解できる命令(How)を、一行一行、丹念に記述する作業のものであった。アセンブリ言語や初期のFORTRANCOBOLといった言語は、ハードウェアの制約を強く受けており、プログラマメモリ管理プロセッサ動作といった、極めて物理層に近いレベルでの「How」を意識する必要があった。

この時代テストもまた、「How」に強く束縛されていた。書かれた手続きが、意図した通りに順番に実行されるか、特定入力に対して期待された計算結果を返すか。テストの関心事は、あくまで「手続きの正しさ」の検証にあった。ビジネスロジック実装の詳細が密結合し、コード特定の処理手順を記述した、硬直的な塊となっていた。

1-2. テスト駆動した振る舞いへの注目:Whatへの小さな一歩

風向きが変わり始めたのは、ソフトウェアの規模が拡大し、その複雑性が人間認知能力を超え始めた頃だ。1990年代後半から2000年代にかけて提唱されたエクストリーム・プログラミングXP)の中で、テスト駆動開発(TDD)という考え方が登場する。

TDD本質は、単なるテスト手法改善ではない。それは、プログラミングパラダイム根底から覆す思想だった。TDDは、「まずテストを書く」ことを強制することで、プログラマ意識を「これから実装するコード(How)」から「そのコードが満たすべき振る舞い(What)」へと強制的に転換させたのだ。

テストはもはや、書かれたコードの後追いで正しさを検証する作業ではない。それは、これから作られるべきソフトウェアの「仕様書」であり、「振る舞いの宣言」となった。例えば、「ユーザーログインボタンクリックしたら、ダッシュボード画面に遷移する」というテストコードは、具体的な実装方法(`onClick`イベントハンドラの中で`window.location.href`を書き換える、など)には一切言及しない。それはただ、達成されるべき「What」を記述しているだけだ。

この思想は、ビヘイビア駆動開発(BDD)へと発展し、`Given-When-Then`といった、より自然言語に近い形式ソフトウェアの振る舞いを記述するスタイルを生み出した。プログラマだけでなく、プロダクトマネージャービジネスアナリストといった非技術者をも巻き込み、「What」を共通言語として定義する試みが本格化したのである

1-3. 宣言プログラミングの台頭とフレームワーク役割

TDD/BDDによってプログラマ意識が「What」に向かい始めると、コードのものもまた、宣言的なスタイルへと進化していく。この変化を劇的に加速させたのが、モダンフレームワーク存在だ。

Reactを例に考えてみよう。Reactが登場する前、フロントエンド開発はjQuery代表されるように、DOMを直接操作する命令的なコード(How)の連続だった。「このボタンクリックされたら、この要素のテキストを書き換え、あちらの要素を非表示にする」といった具合だ。

しかし、Reactは「UIとは、ある状態state)に対する純粋写像である」という宣言的なモデル提示した。プログラマがやるべきことは、UI状態(`state`)と、その状態がどのように見えるか(JSXによるコンポーネント)を宣言することだけだ。状態が変更された際に、DOMをどのように効率的更新するかという面倒な「How」の部分は、Reactの仮想DOM差分検出アルゴリズムがすべて隠蔽してくれる。プログラマは「What(UIのあるべき姿)」を記述するだけでよくなったのだ。

この「WhatからHowへの変換」は、様々な領域で見られる。

これらのフレームワークツールは、いわば特定の制約下における、WhatからHowへの高性能な変換器」として機能してきた。プログラマは、フレームワークが課す「お作法」や「制約」を受け入れることで、退屈で間違いの多い「How」の記述から解放され、より本質的な「What」の定義に集中できるようになった。我々が「生産性が高い」と感じる開発体験は、この優れた変換器の恩恵に他ならない。

現状は、この歴史的変遷の延長線上にある。プログラマ仕事は、手続き記述する職人から、振る舞いを定義し、それを実現するための最適な「変換器(フレームワーク)」を選択・設定するアーキテクトへと、その重心を移してきたのだ。

第2章:LLMがもたらす究極のパラダイムシフト ― 汎用変換器の誕生

フレームワークがもたらした「WhatからHowへ」の潮流は、LLMの登場によって、未曾有のスケールで加速されようとしている。フレームワークが「特定領域に特化した変換器」であったのに対し、LLMは「あらゆる領域対応可能な、究極の汎用変換器」としてのポテンシャルを秘めているからだ。

2-1. フレームワークの制約を超えて

前章で述べたように、ReactやTerraformといったフレームワークは、その恩恵と引き換えに、私たち特定の「制約」を課してきた。Reactを使うならコンポーネントベース思考し、状態管理作法に従う必要がある。Terraformを使うなら、そのエコシステムとHCLの流儀を受け入れなければならない。これらの制約は、WhatからHowへの変換を自動化するための「レール」であり、私たちはそのレールの上を走ることで効率を得てきた。

しかし、LLMはこの前提を覆す。LLMは、特定フレームワーク言語知識を事前に学習しているが、その利用において絶対的な制約を課すわけではない。私たちは、より自由形式で「What」を伝えることができる。

例えば、こうだ。

ユーザー認証機能付きのシンプルブログアプリを作ってほしい。フロントエンドはReactとTypeScriptUIコンポーネントはMUIを使う。バックエンドNode.jsExpressで、データベースPostgreSQLユーザーGoogleアカウントログインでき、新しい記事作成編集、削除できる。記事にはマークダウン記法が使えて、画像アップロードできるようにしてほしい。

この要求(What)は、特定フレームワーク流儀に則ったものではない。複数技術スタックを横断し、機能要求自然言語で並べただけのものであるしかし、現在のLLM、特にGPT-4oやそれに類するモデルは、このレベル要求からディレクトリ構造設定ファイルAPIエンドポイントフロントエンドコンポーネントに至るまで、驚くほど具体的なコード(How)を生成することができる。

これは、フレームワークが担ってきた「WhatからHowへの変換」が、特定のレールから解き放たれ、より広範で柔軟な領域へと拡張されたことを意味する。これまで自動化が難しかった、あるいは特定フレームワーク存在しなかったニッチ領域や、複数技術を組み合わせる複雑なシステム構築においても、AIによる宣言プログラミング恩恵を受けられる時代が始まろうとしているのだ。

2-2. 「What」の解像度がすべてを決める世界

LLMという汎用変換器の登場により、プログラマ生産性は、いかに質の高いWhatをLLMに伝えられるか」に直結するようになる。これは、俗に「プロンプトエンジニアリング」と呼ばれるスキルだが、その本質は、ソフトウェア開発における「要求定義」そのものである

質の高い「What」とは何か。それは、曖昧性がなく、網羅的で、矛盾のない要求である

これらは、優秀なソフトウェアエンジニアが、プロダクトマネージャーデザイナーとの対話を通じて、日常的に行ってきた思考プロセスのものではないだろうか。LLMの登場は、この思考プロセスを、より明確に、よりテキストベースで「記述」する能力を求める。私たちの頭の中にあった暗黙的な仕様が、LLMへの入力プロンプト)という形で、明示的に言語化されることを要求するのだ。

やがて、ほとんどのプログラミング作業は、この「Whatの記述」に収束していくだろう。TDDテストコードという形式で「What」を記述したように、私たち自然言語や、より構造化された要求記述言語を用いて、AIに対して「What」を宣言することになる。コード(How)は、その宣言から自動生成される中間生成物に過ぎなくなる。まさに、コード蒸発していく未来である

第3章:それでもAIには決められない ― 「Why」の不在という致命的な欠陥

「What」を伝えれば「How」が手に入る。この魔法のような世界の到来を前に、私たちは一つの重大な問いに直面する。それは、「そのWhatからHowへの変換は、本当に一意に決まるのか?」という問いだ。

答えは、明確にNoである

ある「What(要求)」を実現するための「How(実装)」は、無数に存在する。そして、どの「How」を選択すべきかを決定するためには、単純な機能要求(What)だけでは情報が全く足りない。そこには、必ずWhy(なぜそう作るのか)」という、背景、文脈、そしてトレードオフ考慮必要不可欠となる。

3-1. トレードオフの海に溺れるLLM

簡単な例を考えてみよう。「1億件のユーザーデータを格納し、ユーザーIDで高速に検索できるシステム」という「What」をLLMに与えたとする。LLMは、どのような「How」を提案するだろうか。

これらの選択肢は、どれも「What」を満たしている。しかし、その特性は全く異なる。案Aは多くのエンジニアにとって馴染み深く開発が容易だが、10億、100億件へのスケールは難しいかもしれない。案Bはスケール性に優れるが、厳密なトランザクション管理は苦手だ。案Cは高速だが、運用コストシステムの複雑性が増す。案Dは安価だが、検索速度は他に劣る。

LLMは、これらの選択肢をリストアップすることはできるだろう。しかし、このプロジェクトにとって最適な選択肢はどれかを、自信を持って決定することはできない。なぜなら、その決定には、LLMが与えられていない「Why」の情報必要からだ。

これらの「Why」こそが、無数に存在する「How」の中から、ただ一つの「正解」を選び出すための羅針盤なのである。そしてこの「Why」は、ビジネス目標組織文化ユーザーの期待、技術的な制約といった、極めて人間的で、文脈依存的な情報の中にしか存在しない。

3-2. エンジニアが暗黙的に行ってきた「Why」に基づく意思決定

ここで重要なのはこれまでもエンジニアは、この「Why」に基づく意思決定を、意識的あるいは無意識的に行ってきたという事実だ。

私たち技術選定を行うとき、単に「流行っているから」という理由だけでReactを選ぶわけではない。「SPA(Single Page Application)にすることでユーザー体験を向上させたい(Why)」、「コンポーネント指向の開発によって長期的な保守性を確保したい(Why)」、「Reactエンジニア採用市場が活発だからWhy)」といった、様々な「 Permalink | 記事への反応(0) | 17:09

2025-06-17

巨大化複雑化するWebサービスの構築で

認知負荷を考慮に入れているエンジニアの少ないこと少ないこと。

少なくともおいらは会ったことがない。

しろドキュメントを増やし、設定ファイルを増やし、スクリプトを増やし、手順を増やし、密接な関係にあるソースを切り刻んであちこちファイルにぶちまけて、その増やした量に比例してエンジニアの腕が評価されるとか考えてる節が見受けられる。

んなわけねーだろ!

SIerみたいに、納品したら終わりじゃねぇんだ。

日に日に巨大化、複雑化するサービス相手に、そういう「フジツボ」を増殖させんなよ、と。

「将来的には全部設定ファイル化して……」

お前、設定より規約って言葉、知らんのか?

同じ口で「オリジナルDSLを作るのは……」とか言う、お前の頭の構造を疑う。

脳みそフジツボでも湧いてんのか?

巨大化複雑化するWebサービスの構築は、シンプルに。常にシンプルに、だ。

変なフレームワークガンガン追加すんな!

2025-03-05

なんか一時期は気軽に新しいDSL作るんじゃねえ

みたいな風潮があった気がする


だけどよくよく振り返ってみると彼らの言わんとしてることは俺様独自言語を作るなであって

汎用的な言語独自スキーマ設計することは拒絶してなかったか

処理が重複してるな、めんどくせぇ、まとめて抽象化だ!

とやったらDSLっぽいものが出来上がった

2025-01-22

anond:20250122131551

マイクロサービスだのNodeだの言っても表面的でしかねぇから

そのぐらいの表面的なことなら俺でも言える

俺が「どんなコンテンツをどんなクエリを投げて検索するサービスを開発してるか」ってことを言ったら、会社名バレるだろ

まあ言える範囲で言ってやるよ

まずクラウドAWSを使ってるが、俺はアルゴリズム担当者なのでクラウドには詳しくない

検索はElasticsearchを使ってるが、当該コンテンツ検索に特化したDSLを作るためにFlaskでREST APIを公開してる

表示に関するデータはGraphQLが使われているらしいが、担当ではないので詳しくはない

あとはユーザーに通知を送る機能を作っているが、これはpythonバッチ処理してる

php担当開発者もいるが、俺の担当ではないので詳しくはない、ただlaravelが使われているらしい

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

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