「アーキテクチャ」を含む日記 RSS

はてなキーワード: アーキテクチャとは

2016-10-23

Nintendo Switchハイスペックかもしれない。

パスカルアーキテクチャ、DirectX3D 12・Vulkan世代プロセッサTegra X2カスタムCPUがDenverクアッドコアメモリ4G~8Gの携帯できる据え置きゲーム機でもありかなとは思う。

おそらく携帯ゲーム機としては、発熱バッテリー問題から今は出せないハイスペックマシンを持ち運びも可能な据え置きとして出すのだろう。

据え置き機のハイスペックモードでは電源供給・高速駆動させファン冷却で発熱を処理、携帯モードでは省エネモード駆動させたりするかもしれない。

おそらく携帯ゲーム機としては発熱があるだろうから本体から手が遠い位置にできる分離型リモコン一石二鳥アイデアでもあったのだろう。

おそらく二年毎程度サイクルで半導体の微細化省エネ、低発熱、低コスト化が進み新たなゲーム機が出てくるのかもしれない。

例えば、まず持ち運び出来る据え置きとしてNintendo Switch、2年後程度でSwitchの持ち運びモードで動く携帯ゲーム機さらに2年後にはSwitchハイスペックモードで動く携帯ゲーム機として。

そうすることで据え置き機のソフト携帯ゲーム機スタートダッシュに必要ソフトラインナップとして安心して技術開発できる。 さらに背後にいるこれからさらハイスペックになっていく未来スマホ市場という巨大な虎の威を前倒しで今借りられる。

それと共に、携帯ゲーム機ソフトをそのまま、互換上位グラフィックソフトとして据え置きのNintendo Switchラインナップに並べられる利点がある。

携帯ゲーム機と据え置きゲーム機が同じソフトを挿して遊べる互換可能性が、ソフト相互供給としての可能性が考えられるのだ。

パスカルアーキテクチャを使ったのであれば、逆に携帯ゲーム機が発買されるまではもしかしたらあと2年ぐらい待つのかもしれないとも言える。

2016-10-17

http://anond.hatelabo.jp/20161017164515

ビジネスロジックModelに、とかサービス層に、とか言われて、困る感じか

1画面1機能ならViewとControllerで十分なんだよね

同じ機能複数画面で提供しようとすると、Controllerに処理書くスタイルだとコードが重複だらけになるんだよね

それを共通化しようってしたときに、ソフトウェアアーキテクチャとかが出てくるんだよね

教科書としては「エンタープライズ アプリケーションアーキテクチャパターン」とかあるけど、難しいし、理解してない人のほうが多いし、人によって言ってること変わるんだよね

2016-09-09

http://anond.hatelabo.jp/20160909101558

そして「PS4までのゲームPS Nowで遊べるぞ!」ってか?

何のためにx86アーキテクチャに移行したかからなくなるなw


でも、基盤技術だって今のままってわけはないんだからDirectXが移り変わってきたのと同じように

ゲーム専用機だってその基盤技術が変わっていくことは避けられない。

そうなったときはやっぱり互換性切るんだろうか。

それともDirectXみたいに過去技術そのままで新しい技術を積み上げていくんだろうか。

2016-08-23

戦う相手と戦い方を間違えているIT業界に憧れたガキに向けて

もう夏休みも終盤だ。インターネットには様々なガキが溢れている。その昔は夏厨だとかそういった呼称が振られていたがそれも今は昔だ。時代が過ぎゆくのは早い。


私は情報社会の端くれで働いているエンジニアってやつだ。一応それなりに楽しく仕事ができているし、いわゆるWeb系と呼ばれるキラキラした業界背伸びせずに働いている。所得は美味い。

私が子供だった頃と比べると社会は大きく変わった。素晴らしい変革だ。

コンピューター安価に手に入るし、プログラミングだってすぐできる。ChromeさえあればリッチWebサービスだってすぐ作れてしまう。本当に良い時代だ。



あの時代から比べるとプログラミングは身近になったのではないだろうか。なにせ近頃はプログラミングを教える塾もあると聞く。



そんな社会を見渡すとプログラマに憧れるガキがそれなりに居る。

やれLife is TechだのTech Kids CAMPだのキラキラした世界キラキラ刺激を受けて意識高い系に若くして成り上がっている。

そんな君らに向けて言いたいことというか、老婆心からくる小言を書き残しておきたいと思い筆を執った。

まず最初に、強い言葉意図して使っている事をお詫びしたい。だが許して欲しい。こういう言葉遣いの方が目立つ。一種炎上商法だ。増田醍醐味だと思って欲しい。


あなた達はとても若い若い故に敏感だ。社会にすぐ影響されてしまう。

もちろんここもそういった影響を与えようとするインターネットの一つだ。悪い大人妄言だ。

影響を受けることは悪いことではない。まずはたくさんの意見を知り自分なりの考えを見つけて欲しい。


最近のガキはマセているからすぐ大人の真似事をする。

自己発信」という名のマウンティングをして、作ってもいないのに「○○の取り組みをしています」だの「仲間で集まって起業!」だの。「生産しろコード書け!」と説教したくもなるが今回はやめておこう。

大人な私から見れば君らの猿真似ヌルい。ヌルすぎる。そんな君らに社会の戦い方を伝授しよう。




IT業界の戦い方はシンプルだ。全てがマウンティングで出来ている。

知能で殴るかセンスで殴るかの二択だ。


前者は簡単だ。コードで殴れ。数学で殴れ。アーキテクチャで殴れ。

本当に君がそれを得意とするのならどこまででも目指せるだろう。

しかしながら本当に強い奴はだいたいアスペだ。どこかの頭のネジがぶっ飛んでいる最高の連中だ。

自分が素質があると思うならこの方法で戦え。どこまでも走っていけ。



後者はいわゆるキラキラしたエンジニアだ。センスで殴れ。コミュ力で殴れ。プレゼンで殴れ。シンギュラリティーとイノベーションで殴れ。

日本起業する奴は大体こちら側の人間だ。

プレゼンが上手くて、人に取り入るのが上手い。頭が回る。

しかしそれは全て単純なマウンティングだ。自分がなるべくかっこ良く見えるように演出演出を重ねているだけだ。騙されるな。見抜け。

上手く発信して、力を持った奴にすり寄れ。そしてなるべく話を聞け。連絡はマメしろ

君がインスタを使いこなせていると思うならきっと素質がある。戦え。



そして覚えておいて欲しい。

勝てないと思ったら戦う相手と戦う方法を変えろ。





と、ここまでが日本IT業界の縮図だ。

だが覚えておいて欲しい。どいつもこいつもこんな戦い方をしているか抜け道がある。

真に強い奴は上手く目立たず上手く有名になる。上手く立ちまわる。上手いコードを書く。

若いうちはマウンティングしておけば立ち回れる。しかしこの社会若者だけでは構成されていない。金を動かせる奴は大抵油ののった連中だ。



自分にあった戦い方を見つけて欲しい。そしてIT社会IT業界もっと面白くして欲しい。








君らが私達おっさんの脅威になることを願ってやまない。

2016-08-09

golang半年近く使ってみて

後なんかweb系の企業golang採用多いので、ある程度詳しくなっておけば就職困らなそうという予防線

今のところが成功しなかったらeurekaとかmercariとか雇ってくれませんか!

どっちもユーザーです!(ペアーズでは3名ぐらい逢った、メルカリではバイクMacbook Air売ったなー。)

ポケモンGoとかやんねーし、地味に自分がよく使っているアプリサービスから成功パターンを得るのがいいのかなぁ

なんか、人との接点がうまくできているCtoCサービスがうまくいっているような感じが(CtoCなんだから当たり前か、何いってんだ)

人とコンバージョンしたいです。

2016-07-10

memo

書籍より

Web + DB vol.92

データ分析の基本アーキテクチャ
フレームワーク比較評価

10年戦えるデータ分析入門

SQL中心アーキテクチャの3つの
SQL中心アーキテクチャの3つの条件
tips
  • DWH層を標準ライブラリのように考えて構築するとよい.
    • 「購入の可能性があるユーザ一覧を表すビュー」をDWH層に持たせるなど.

2016-07-08

サービス愛とか本当に必要なの?

別に大手企業の上っ面だけのサービス愛の話をするわけじゃない。

サービス愛ってなんなのかずっと気になってる。

うちの会社の話なんだけど、結構優秀なエンジニアがきた。

けどうちの会社サービス全然触ってなくて、サービス愛がない、それじゃサービス指向の考え方ができないだろとか、そんな基準で落とされた。

アーキテクチャというか技術面では凄くマッチングしてて、本人もしっかり把握して応募してくれてた。

そんなにサービスへの愛とかって重要なもんかね。

サービスの表側の機能への愛じゃなくて、裏側の技術への愛も含めてサービス愛だと僕はずっと思ってる。

あとサービス指向ができるとか言って採用されたのが尽くコンピュータアーキテクチャのコの字も知らない奴ばかりでうんざりしてるのもある。

表側だけ見てサービス愛してますとか言われても、現状に満足して新しいものなんて生み出せないでしょ。

しろ足手まとい。

そうやって失敗してる企業が山程あるというのに、何故みんな学ばないんだろうか。

2016-07-07

http://novtan.hatenablog.com/entry/2016/07/06/134448

読んでもらえるかどうかわからないが,一応IDコールしてみる。> id:NOV1975

この記事

  • どうやって育てるか
  • 育てるコストをどうするか
  • 育たない人をどうするか

という点において,「ウォーターフォールアジャイルはどう違うのか」という問題が混然一体となって語られてて,ちょっとわかりにくい気がした。

そこで,この3つの論点について,自分なりの理解アジャイルウォーターフォールの違い(あるいは違わないこと)を書いてみる。

どうやって育てるか

まず,OJTとOffJT(研修勉強会等)の組み合わせで育てる,というレベルの話では,ウォーターフォールアジャイルもあまり違いはない。

また,スキルの広げ方についても,ウォーターフォールアジャイルであまり違いはないと思う。NOV1975氏は,

プログラミングって世界はわりと想像できるんですよね。もうちょっと大きいアーキテクチャの話とか、業務要件の落としこみの部分とかをどういうプロセスで身につけて成長していくんだろうか。

と書いているが,アジャイルでも,最初既存のものの改修から始めてもらって,新機能の追加(ここで要件落としこみが入る),新プロダクトの設計(ここでアーキテクチャの話が入る),みたいに,徐々に範囲を広げていく感じだと思う。

ただアジャイルのチームでは,最初の「既存のものの改修」の段階から運用の稼働を減らすことを意識し,テストデプロイ自動化をしてもらうことになるはず。運用意識する,という点では,運用系の機能追加(例:監視機能の強化)もやってもらうことになる。これをどこに入れるかは悩ましいけど,比較的初期段階で経験することが多いのでは。

手法レベルでは,アジャイルで特徴的なのはOJT手法としてwonodas氏の言うところのレビューやペア・プログラミングを重視している点ではないかと思う。このへんはwwolf氏のあげた「アプレティスシップ・パターン」にもあるのではないかと思うが,職人弟子関係で,日頃の行動の中である種「背中を見せる」感じで(教えるというより)学ばせる感じになると思う。

育てるコストをどうするか

これは(NOV1975自身が書いている通り)ウォーターフォールアジャイルも変わらないと思う。顧客提示する価格の中に教育も含まれることになる。

ここで重要なのはアジャイル場合教育顧客にとっても価値が大きい点だと思う。なぜならアジャイルのチームは,システムを開発するだけでなく,運用も行うのが基本。運用の中で継続的に改造や機能追加を行うことで,顧客にとってのシステム価値を高めていくのがアジャイルの真の意義。そういう活動を続けるために,教育投資することは顧客にとっても価値があるはず。

話はそれるが,ここで少し面白いなと思ったのは,「属人性」の話。アジャイルのチームでは「属人性」を避ける文化があると思う。だがそれはチーム内の話であって,外から見ると同じチームに開発と運用を依頼することは,チームとしては「替え」がききにくくなる気がする。そのあたりを現状どう解決しているのかはちょっと興味がある。

育たない人をどうするか

これはもう,向いてない人はチームから出て行ってもらうのがお互いのため,というのがアジャイルのやり方だと思う。というかそもそもそういう人をできるだけ入れない。なぜならチームの文化が壊れるから

正直,そういう人でもウォーターフォールだと活きる道がある,というNOV1975氏の考えには納得できないが,なんとか活かしたいという心情は理解できる。なので少し考えてみたけど,人手の作業最後まで残りそうな QA (Quality Assurance) やマニュアル作成あたりに行ってもらうしかないのではないだろうか。個人的には,向いてない人が向いてない業界にいるのは本人のためにもならないとは思うけれど。

2016-06-17

1.0から学ぶJava

タイトルを見て釣られクマーな皆さんこんにちは

ホッテントリメーカーで作るような煽りタイトルって、みなさんもう見飽きてると思うんですよね。

今調べたらホッテントリメーカー2008年だそうで。どうりでねー。古臭いなーと思いましたよー。

「一から学ぶJava」ってのをね、1.0にするだけでこんなに素敵なタイトルになるんだから面白いですねー。

タイトルを思いついただけだったんですけど、思いついたらやっぱりちゃんと中身も書かないと行けないじゃないですか。やだー

面倒くさいんですけどね。ちょっと1.0から学んでみましょうか。

Java 1.0 1996年1月23日

Javaの1.0がリリースされたのは1996年1月23日ですね。発表されたのが1995年5月23日でJavaの誕生日といった場合にどちらを取るかで揉めることがあります。

かれこれ20年前なわけで、当時のパソコンというとハードウェアはCPU が Pentium 133MHz メモリ16M とかそんな感じだったかなあ。今どきの携帯電話の例としてiPhone 6sを挙げるとCPUが1.85GHz メモリ 2G ってんだから凄いですね。OSは1995年11月23日リリースされたWindows95とかそんな時代背景です。インターネットがようやく一般に普及し始めたところでしょうか。

今から思うと相当弱いハードウェアですけども、そろそろVM方式を採用しても良さそうな、そんな時代でした。インタープリタだと流石に遅い、でもC言語のようなコンパイル言語だと"Write once, run anywhere"とはいかない、という判断もあったのだろうと思います。Javaが純粋なオブジェクト指向言語ではなくintなどのプリミティブ型を持つというのは、当時のマシンスペックを考えた場合、ある程度妥当な判断だったと言えるでしょう。これが後々苦しくなってくるわけなのですが。

Javaを作った会社はSun Microsystems(サン・マイクロシステムズ)というアメリカの会社で、2010年1月27日オラクルにより吸収合併され今はありません。SolarisというOSとSPARCプロセッサでUNIXサーバーの販売で90年代後半までは一人勝ちのような状況だったと聞きます。当時にすでに「ネットワークこそがコンピュータ」(The Network is the Computer)というモットーを掲げてたんだからおかしい。1996年リリースのJavaが標準でネットワーク機能を備えていたのもこのあたりの思想から来ているのかもしれませんね。

当時のプログラミング言語としてC++が挙げられますが、C++でのプログラマへの負担といいますか、ヒューマンエラーの起きやすさといいますか、その辺を改善する目的で開発されたのがJavaだったわけです。

1996年の時点にこんな言語が登場したのですから革新的でした。

いろんな企業がJavaに賛同します。その中にはMicrosoftもありました。この時期、Microsoftは次期のWindows開発用のプラットフォームにJavaを据えようと考えていました。その後、袂を分かつことになるのですが……。

プログラム言語として構文などを見ると、C++を強く意識した構文なのは間違いなく、しかしポインタ演算を廃してポインタを機能を限定した「参照」に置き換えるなど簡素化が多く見られます。C++からはいろんな機能が削られています。関数ポインタ、構造体、演算子オーバーロードテンプレート((テンプレートについては実装が間に合わなかったという話を聞きます))などなど。そのためC++の劣化であるように揶揄する人もいますが、こうしたものを捨てて言語仕様を比較的小さくシンプルに抑えた点は評価に値すると思います。しかし、今でもこうした削減された機能を愛する人からはJavaを腐す要素として挙げられてしまうのでした。

Java 1.1 1997年2月19日

Wikipediaからピックアップすると1.1での大きな機能追加は

といったところです。当初よりJavaの内部文字コードUnicodeで文字を表すchar型は16bitで設計されていました。Unicodeは当時それほど普及しておらず、Unicode対応のテキストエディタさえ少なかったと記憶しています。時代を先取りしていると言えますが、大きな誤算はUnicodeが当初16bitのコードポイントに世界のあらゆる文字を格納しようとしていたことで、漢字圏の我々からすると16bit=65,536程度の空間に文字が全部入るわけないだろ!というものだったが故に早々に破綻し、Unicodeは21bitのコードポイントに拡張されることになるのです。これはまた後の話。

なんにせよ、日本語が対応されたのは1.1からで、日本でのJavaの採用が始まったのはこの頃からと言えましょう。

当時のJavaのGUIはAWTというものでしたが、これを用いたGUIの開発は当時は結構行われていたイメージですね。Visual BASIC でGUIを作るプロダクトも結構あったと思います。GUIのためのオブジェクト指向言語としてJavaが使われていたイメージがありますね。JavaBeansもそのための仕様でした。件のsetter/getterの話題に繋がっていくのですが。

JDBCはJavaとデータベースをつなぐインターフェースです。RMIではあるJava VMから別のJava VMにオブジェクトを送って実行する、といったことができます。こうした機能が用意されたことで、ソフトウェアフロントとしてのGUI、裏方の実装のためのネットワーク機能、データベース機能、さらにはソフトウェアを配布するためのJava Appletという布陣でJavaでのソフトウェア開発が加速していた時代といえます。

Microsoft Visual J++ もこの時代ですよ。

Java 1.1以降のバージョンのものは互換性確認のためにOracle Java Archiveからダウンロードすることができ、今でも入手することができます。もちろん、Java7ですら2015年4月にEOL(End of Life,サポート終了)となっているので、通常利用するのはJava8としてください(本稿執筆時点)。

当時のドキュメントを見るのも一興です。現在と比べると標準APIがかなり小さい。なお、当時のjavadocは今とはデザインが大きく異なります。

  • java.applet
  • java.awt
  • java.awt.datatransfer
  • java.awt.event
  • java.awt.image
  • java.beans
  • java.io
  • java.lang
  • java.lang.reflect
  • java.math
  • java.net
  • java.rmi
  • java.rmi.dgc
  • java.rmi.registry
  • java.rmi.server
  • java.security
  • java.security.acl
  • java.security.interfaces
  • java.sql
  • java.text
  • java.util
  • java.util.zip

この時代であれば、全パッケージを舐めて標準APIを学ぶこともそう難しくはありませんでした。この時代から触っている人間は新バージョンが出るたびに増えるAPIを順に学んでいけたのです。しかし、現代にJavaを学ぶ場合、どのバージョンでは何があって……というのをいちいち学ぶ必要はほぼありません。Java5以前は一緒くたでいいと思いますし、一部のAPIで歴史的経緯があってねーというのを知っていればおそらく十分ではないでしょうか。

Java 1.2 1998年12月8日

strictfpキーワード浮動小数点演算をやる人は覚えておきましょう。JavaはパフォーマンスのためにCPUの浮動小数点演算を扱うことが許されており、そのため実行するCPUによって精度が異なることがあるんですね。まあ今時のCPUだと大丈夫だとは思うんですが。

リフレクション機能ではJavaのクラスを抽象的に扱うことができます。設定ファイルに書かれたクラス名のclassロードして実行する……みたいなことができるんですね。フレームワーク的なものを作る場合には多用することになります。

1.2からは新しいGUIのSwingが採用されました。AWTがOSごとのGUIパーツを用いていたためデザインに違いがあったのに対し、Swingでは統一的なルック・アンド・フィールが用いられるようになりました。まぁ今ならJavaFXを使うのが良いと思います。

初期のJavaはやはりVM方式の実行速度の遅さが指摘されていました。実行時の構文解析を伴わないだけインタープリタよりは早いものの、実行バイナリを作るC/C++よりは遅い、そうした評価です。ここではサン・マイクロシステムズのVMにJIT(ジャストインタイムコンパイラ)が乗ったことが挙げられていますが、JIT自体は別の会社が先駆けて開発していたことは記しておきたいと思います。

JITコンパイラは実行時にJavaのバイトコードを環境のネイティブコードコンパイルして動かす技術です。この後、JITコンパイラ、動的再コンパイル技術、世代別ガベージコレクションを備えたHotspotといった様にJavaVMは進化していきます。現代では実行時の最適化が進み、大きなスケールで見た場合、Javaの実行速度はC/C++での実装と比べてそれほど遅れるものではありません。遅くても倍の時間は掛からない程度といったところでしょうか。

あとは特記すべきはコレクションフレームワークです。皆が多用しているであろうjava.util.Listやjava.util.Mapといったライブラリが整備されたのがこの時なのです。それ以前はjava.util.Vectorやjava.util.Hachtableというクラスが可変長配列の機能を一手に担っていました。今ではVectorやHashtableは使うべきではありません。

Microsoft 離反

Java の開発はSun Microsystems が主導していたけども、すべてがSunのものだったというわけでもなく。Javaには多くの会社が出資していてその中のひとつMicrosoftだったわけですね。

Microsoft の Visual J++ では delegate とか独自機能拡張もありましたけど、裁判で問題になったのは J++ でコンパイルしたclassファイルMicrosoftのVMでしか動かないという部分ですね(他社製のVMで動くclassファイルを作ることもできる)。classファイルがどこのVMでも動くの大事だろ、"Write once, run anywhere"だろ、お前何してくれてんの!と喧嘩になったわけです。当時のMicrosoftブラウザまわりでも独自拡張がやりたい放題、標準規格?なにそれ美味しいの?みたいなスタンスをあちこちで見せていたものです。

結局、この事件でMicrosoftのJavaはバージョン1.1相当でストップ。好き勝手にやれないなら独自に言語作るわーとばかりに.NET フレームワークと C# といった方向に舵を取ります。

JavaがPC上でのUI開発の主力になろうとした勢いはここで潰えます。

Java EE

Java SE とは別にこの時代に Java EEリリースされていることは特記しておきたいですね。これ以後、それまでのCGIに取って代わって、JavaはWebサービスの開発のプラットフォームとして多用されるようになります。

2000年あたりからはJavaはGUI開発というよりは、Webサービスの開発が主流という流れになっていきます。インターネットサービスが非常に発達していった時代、背後ではとてつもない量のJavaのプログラムが支えていたわけです。ただまあ、こうした産業利用は一般的ユーザーの目にはあまり入らないわけです。一般人からすればJavaといえばJava Appletみたいなイメージはずっと残っていたでしょうが、実体としてはJavaといえばServletという時代になっていたわけです。

企業で用いられる社内システムにもServletは多く採用されました。

理由はいろいろ挙げれると思うのですが

というのが大きな理由だろうと思います。JSPというテンプレートエンジンを用いてHTMLを整形してWebページを作り出す、というアーキテクチャある意味では便利で簡単でした。

もっともHTMLの表現力に足を引きずられるため、GUIの機能性という点では後退したわけなのですが。それでもメリットが大きいと判断されたのでしょう。というか、まともにGUIを組めるプログラマがほとんどいないから、GUIのシステム開発がなかなか成功しないってのもあったんでしょうけどね。

iアプリ Javaアプリ EZアプリ

2000年あたりというと携帯電話の普及も取り上げなければなりません。現代のスマホガラケーに比べれば非常に機能は貧弱で、まさに携帯「電話」でした。要するに電話とメールぐらいしかできなかったんですね。

そこにdocomoiアプリJフォン(ボーダフォンを経て現ソフトバンク)のJavaアプリ、auのEZアプリという携帯電話上でちょっとしたアプリが動くよ!というのが乗るようになってきたんです。これがJavaを組込み用途にコンパクトにしたJava MEというものが土台となっていて(正確にはiアプリちょっと違う)Servletと並ぶJava言語の大きなもうひとつの領域となっていました。

iアプリは当初は容量が10k byteまでといった制約があり、容量制限が非常に厳しかったのですが、新機種が出るたびに容量は緩和されていきました。

docomoiアプリ含めiモードによって一世を風靡します。こうした土台を作ると、その上で商売をしたい人がたくさんやってきて、勝手にコンテンツを作ってくれる。docomoはそれらから手数料を取るので労せずして大金を稼げるというわけです。賭場の胴元というわけです。

この賭場が、将来にAppleiPhone, GoogleAndroidに荒らされることになります。docomoがなかなかiPhoneを出さなかったのもiモードという自前の賭場を失うことを良しとしなかったためです。金づるを失ったdocomoSamsungと組んで独自の携帯向けOSであるTizenの開発に乗り出します。そんなTizenですが鳴かず飛ばず。噂ではインドあたりではリリースされたとか、なんとか。

RIA時代

話を2001年に戻しましょう。

Microsoft離反でGUIのプラットフォームとしてのJavaというものは存在感を弱めていました。この分野の復権に寄与したのはJava 1.4 (2002年2月6日)で導入されたJava Web Startです。

Java Appletブラウザ埋め込みで動作したのに対し、Java Web Startではブラウザから起動しつつも独立したアプリとして起動するのです。

Webシステムが企業の社内システムに採用された話は先に述べたとおりですが、やはりWebシステムのGUIというのはHTMLに引きずられて貧弱だったんですね。

端的に言えば入力値が数字かどうか?みたいなチェックがなかなか難しい。HTML上でJavaScriptでやるわけなんですが、なかなか気持よく入力できるような感じにはならなかったんですね。

また、Ajaxによるブラウザのページ遷移を伴わない通信というのが出てきたのも2005年ぐらいなので、入力値に対してサーバ問い合わせするようなことはできなかった。当時だと一旦画面遷移させないとできなかったわけです。

こうした事情から、クライアントサイド、要するにPC側でもっとリッチなUIが使いたい!という要望があったわけです。Webシステム使いにくい!という不満の噴出と言ってもいい。そこで出てきたのがRIA (Rich Internet Applications)というわけです。

Javaは1.0時代のAppletからそうですが、ネットワークを介して別のPCにプログラムを送り込み、そこで動作させるという能力を持っていました。それこそまさにRIAに求められる機能性だったわけですね。

RIAの代表とされるのは

あたりです。三つ巴の戦い、どこに軍配が上がるのか!?と注目されましたが、勝利したのはHTML / JavaScriptでした。

Google MAP で注目を浴びたAjax技術、それまでブラウザでは不可能と思われていた高級なGUIをHTML / JavaScriptで実現させました。もうやめて欲しいですよね。せっかく脱ブラウザの流れが来たと思ったのにまたWebシステムに逆戻りですよ。

RIAが失速した理由として考慮して置かなければいけないのはスマートフォンの台頭です。RIAでは端末を選ばずどこでも同じアプリが動かせる点がポイントひとつでしたが、スマートフォンではそうは行かない。"Write once, run anywhere"を破壊したのはスマートフォンだったというわけです。

しかし、先日インストールなしでアプリを実行するAndroid Instant Appsが発表されたりしまして、結局RIAの思想といいますか、要求というのは今でも息づいているのだなと思った次第です。

Java 5 (2004年9月30日)

1.3 / 1.4 では機能追加はあっても言語構文が大きく変わることはありませんでした。大きく変わったのはJava 5です。この時からバージョニングが変わって1.5ではなく5と表記されるようになりました。

Java5の特徴はなんといってもジェネリクス。それまでjava.util.Listにデータを出し入れするのにはキャストが必須だったわけですが、ようやくキャストから開放され型の安全度がぐっと高まりました。その他に以下のような変更があります。

言語としては随分変わっったわけですが、もうかれこれ10年以上前のことですからこれらの機能が「Java5から導入された」という知識は今となってはあまり必要とされません。これらの機能が使えないJava 1.4で開発をする事案が殆ど無いからです。0ではないのが悲しいところではありますが。

その後

Java 6 (2006年12月11日)がリリースされた後、Java 7 (2011年7月28日) が出るまでJavaは停滞してしまいます。その間にSun Microsystemsという会社がなくなってしまったためです。

Sun Microsystems の経営状況が悪化しており、ついに身売りをすることになりました。身売り先はIBMともGoogleとも噂されましたが結局2010年1月27日オラクル吸収合併されました。

Javaの停滞中にはJava VM上で動く非Java言語も台頭してきました。Scalaなどですね。

やや戻って2007年Androidが発表されます。Androidの開発言語にはJavaが採用されていますが、実行環境はJava VMではなく、ライセンス的な事情でJava(TM)は名乗らない微妙な位置関係にあります。

Java 5 以降で大きく言語仕様に手が入るのは Java 8 (2014年3月18日)です。並列処理を行うためのStream APIと、そのために簡易に関数を定義するためのラムダ式が導入された点が大きいですね。日付APIも刷新されました。

このように、Javaは1.1の黄金時代から今に至るまで利用ジャンルを転戦しながら産業の土台となって支えてきた歴史があります。ジャンルの趨勢により浮き沈みもあります。今後についても決して楽観視はできないでしょう。Javaを学ぶことはプログラミングを学ぶステップとしては意義はあると思いますが、Javaを学べばゴールというわけではありません。プログラム言語次世代へと移りつつあります。業界動向には注視していきましょう。

2016-05-26

ポエム

言語フレームワークを先に考えるんじゃなくて、実現したいコト/解決したいコトが先でそれをとことん突き詰めて考えるコトが大事

それがちょっとだけ良くなる程度のものだったら、そもそもそれはあまり問題では無いのかもしれないし、単純に当事者意識情熱がなくてただ普段と違うコトがしたいだけなのかもしれない。

例えば、車輪のようなもの一見するとちょっとだけ良くなる程度のもののように思えるけれど、突き詰めて考えるとちょっとだけ良くなる類のものではなくて、シンプルだけれどすごく応用範囲の広い要となるものだったりするよね。

その応用範囲までもよく考えたものを、最初の段階から応用範囲に至るまでを効率よく実現するために、何を選択するかをよく考えよう。

海外の有名な会社が作ってるようなもの簡単に作れるからとかあの会社も使ってるから、ありとあらゆる部品が揃ってるや既に知ってるものから効率が良いなんてものは、参考にはしても選択理由にするべきものであってはいけない。

そんなコトを理由にしたら、私は自分の頭で考える力も何かを生み出す能力も持ち合わせていません。なんて宣言してるようなものなんだよ。

問題が起きたらまた一から作り直せば良いなんてのは大抵失敗するし、そのコストが支払えない場合は継接ぎだらけで局所的な問題が頻発するものになるコトが多い。そして、最初に感じた効率の良さなんてものはいつの間にか消え去ってしまってる。

必要部品は何なのかをきちんと洗い出して、それらの部品を柔軟に組み合わせられて効率的に動かせるもの選択するコトなんだ。もしもそれらが存在しないなら、それらも含めて作り出すコトも視野に入れておこう。

こんなコトを言うとオレオレかよなんて声が聞こえてくるコトもあるけれど、初めからそうじゃないもの存在しないんだよ。誰かが作り出したか存在してるんだ。だからやると決めたらきちんとアピールしてディスカッションして継続的改善しよう。

そんな風に世の中に数多くいる、言語フレームワークアルゴリズムUIUXシステムアーキテクチャ設計開発研究をしている優秀な人たちの思考を真似てみよう。

流行り廃りに振り回されて後追いばかりに終始して、大きな声でその時々の借り物の言葉しか話せなくならないように。

2016-04-26

anond:20160426145507 の続き

anond:20160426124418anond:20160426145507 の続きだゾ。てか長えよ

(略: トークンが定期的に期限切れになるので可用性が下がる。たとえばビデオカメラから複数動画アップロードしている途中で切れたらムキーってなる。再認証して途中からできるのもそれはそれで CSRF の温床。AFCP のような場合は期限切れがあってはならないので、パスワード等を預かる認証プロキシSaaS アプリを筆者は作った。好評だったが、これはもちろん本来あるべきでない欠陥のexploitのはず。)

(略: 個人ユーザ向けのAPI設計ばかりで、雇用者上司アカウント管理するという観点がない。SAMLでは普通にできるのに、OAuthとなるとセキュリティ的に云々と言って拒むサービスばかり。別のUIで既にできてることをAPIにしても意味がない。これまでできなかったことをAPIで可能にするのではなく、単なるシングルサインオンでよければ他にある。実際Googleは個人向けにはOAuth活用しているが、Google Apps for BusinessはOAuth以外のシステムを使っている。)

(略: 主要な設計ミスは、外部サービスすべてを同等に疑うところ。管理者が各サービスの信用性を判断して権限を調節できるようにしないところ。これまでどれほど多くの製品OAuthの面倒さのために失敗してきたことか。)

普通実装における」OAuth代替

適切な OAuth ベース設計とはどのようなもの

ここまでで「普通実装における」OAuth がまったくおかしいということはわかりましたが、OAuth が実際うまくいくのはどういうときでしょうか。

初期の OAuth 規格および概念におおよそ付き従っているシステム一般的に言って、新しい規格ベースのよりもセキュアで、マシです。OAuth 1.0 の実装がすべてセキュアだというのではありませんが、たいてい問題は少ないです。こうしたシステムは通常、次のふたつのアプローチのどちらかに従っています:

はいえ、このように設計されている OAuth ベースシステムはごくごく希少で、しか一般的にこうしたシステムは、他のところで使われている OAuth とは似ても似つかぬものです。OAuth 1.0 規格の方に寄って頑張っていますが、公式には 1.0 は非推奨ですから、こうしたアプローチを使っているシステムはそのうち「アップデート」されて OAuth 2.0概念や追加機能すべてを加えて再構築され、セキュリティユーザビリティをだめにしてしまうことになります。これこそ筆者があらゆる OAuth ベースのものを見逃したくない理由です。もっと古く、もっと機能的な形式OAuth を使っていても、システムに「改善」が必要だという素敵な考えを管理者のだれかが閃いて台無しにしてしまうからです。ご迷惑をおかけしてすみませんと言うぐらいなら、まったく別のものを使うほうが良いですよね。

他の選択肢

他に手はないかと探すとき、人々はよく他の「フレームワーク」にはどんなものがあるかを知ろうとします。しかし、考え抜かれたセキュアな設計を実現するためには必ずしもフレームワーク必要というわけではありません。現状、OAuth とはどのようなものかについての意見サービスごとに異なっていますので、承認の具体的な動作の仕組みもまったく一定ではありません。そんな中でフレームワークを探しまわるのは、簡単にできることをいたずらに複雑化しているだけのことが多いです。唯一ほんとうに難しい要素、しっかりした規格の必要な要素は、使用する鍵パラメータ改竄を防ぐため変数署名する方法だけであり、この点に関して、ほとんどの OAuth ベース実装は一切何もしてくれません。

ウェブサービスの最大手である Amazon は、世界中企業サービス提供する一流プロバイダで、合計 30% 以上という途方もない市場シェア他者を圧倒していますAmazonアプローチは、自分アプリ認証情報を生成できるコントロールパネルへのアクセスを、すべてのアカウントおよびアカウント管理者提供することです。この認証情報で、どの Amazon サービス作業できるか、そのサービスでどの操作を実行できるか、どの権限作業しなければいけないかを指定できます。この認証情報必要に応じて「アカウントホルダ」の人が破棄することもできます

AmazonAPI における認証承認技術には、本質的制限が多く潜在的危険性のあるリダイレクトを一切必要しません。Amazonプロトコル認証情報は、直接送ることは一切なく、データ署名に使うのであって、これでブラウザを通してパラメータを送る必要のあるときにも改竄不可能にすることができるのです。

Amazon設計アカウントの利用状況を API の利用まで適切に把握できますし、API認証承認もすべて Amazonからスタートし、その際のアプリ認証情報も「Amazon の」コントロールパネルから生成されます。この認証情報はその後、いかなるトークン交換システムも使わず直接 API プロセスで使われます。この設計なら「普通実装における」OAuth が達成している真のセキュリティ目標をすべて達成し、かつ前述したセキュリティ上およびユーザビリティ上の問題をすべて回避しています

ひとつ言及せざるをえない短所は、Amazon権限システムが幾分わかりにくく、あまりユーザに優しくないということです。ただし、このことは何故かほとんどのコントロールパネルにも言えることで、いずれにせよ UI 設計問題であって、承認プロセス自体の失点ではありません。さらに、Amazonコントロールパネルはかなりキビキビ使えて、それ自体API でも使えます。この点たとえば Google場合のように、筆者の知る限りメタ API もなく、何をするにも何十もの手順が必要なのとは大違いです。

Amazon認証および承認メソッドは他のサービスプロバイダにも幾つかコピーされていますGoogle 自身企業向け製品の一部でこれを利用できるようにしていますGoogle 自身純粋OAuth 設計企業サービスに向いていないことを認めており、企業サービスには JSON Web Tokens (JWT) の利用を推奨しています

JWT はサービス間の SSOAPI 利用を可能にする規格です。多くの点で JWT は SAML に似ていますが、SAML はややこしくて、XML Security (名前と違って、まったくセキュアではない) の上に構築され、API 利用に向いていないのに比べ、JWT は SAML の主要な目標を、単純かつ使いやす方法で一切の面倒なく達成しています。HMAC 実装ひとつ用意し、JSON の構築と解析の方法を知っておけば JWT は使えます既製品をお求めでしたら、膨大な JWT ライブラリが既に存在していますよ。

ただ Google場合典型的な JWT 利用法よりも高度で、HMAC のかわりに、もっと高度ですがこの分野では人気の低い RSA デジタル署名を利用するよう要求していますGoogleコントロールパネルではアカウント管理者自分企業サービス用に新しい鍵ペアを生成でき、API ログイン署名するために使う秘密鍵ダウンロードできます。こちらのほうが HMAC よりセキュリティは高いですが、Googleプロセス全体を本当に無駄に複雑化していますコントロールパネルしょっちゅう完全に再設計して、前と同じことをしたいのに使い方が違っていて混乱する点は言うまでもありません。JWT 利用の実例必要なら他をあたるようお勧めします。

他に使われている技術は、サードパーティがどんな権限必要としているかをある種の XMLJSON ファイル定義してウェブサイト送信できるようにするサービスのものです。ユーザがあるページを自分アカウント訪問し、ファイルURL (あるいは中身) をそこに貼り付けると、その外部サービスあるいはアプリが求めている権限の一覧やそこに含まれ説明などが表示されるようになっています。それを見て認可したいと思うユーザは、認証情報を生成してそのサードパーティアプリあるいはサービスに貼り付けますユーザは後で無効にしたくなったら認証情報を破棄することができます。これも、開発者おかし負担を強いることなく、すべてのアカウントAPI サービスがあり、権限管理を備え、サービス自体からフローが始まる、実にセキュアな設計です。

承認管理のためにサービスから提供してもらう必要が本当にあるのは、適切な役職 (管理者アカウント所有者など) を持つユーザ自分に割り当てられた権限や (望むなら) 期限を持つ認証情報API 利用のために生成できる何らかのパネルだけです。こうした認証情報はその後、お好みのセキュアな認証システムを通して利用することができます。たとえば HTTP Basic Authentication over HTTPS のような単純なもの、これは事実上どの HTTP ライブラリにも入っていますし、HTTP Digest Authentication、これはもっとセキュアでありながらほとんどの良質なライブラリサポートされていますし、その他 HMAC, RSA, 楕円関数など認証情報ネットに通す必要のない暗号学的テクノロジー活用した認証プログラムに基づくものなら何でも使えます特に HMAC は、承認認証実装するほとんどすべての人 (Amazon や、一部の OAuth 実装も含む) によって既に使われています

こういった種々の実績あるテクニックは、セキュアなプラットフォームを作るために CSRF 対策など複数フレームワーク同士の相性を勉強する必要があるという重荷を軽くしてくれますし、一般的に、既存アーキテクチャワンタッチで装着できるようなモジュール化の実装が可能です。ユーザアプリ認証情報が盗まれる可能性をなくしてくれます。ややこしい CSPRNG を常に使用する必要もありません。このようなシステムOAuth の生まれるずっと前から存在しており、現在でも一般的です。OAuth は、ユーザ認証情報要求したり他に弱点があったりするような一部の劣悪な設計システムよりはセキュリティが良いかもしれませんが、既にある真の設計を置き換えるものではありません。OAuth が解決すると主張する問題点は実のところ、既存の良く設計されたシステムには存在していませんし、「普通実装における」OAuth は実のところ、解決すると主張する問題の多くを招き入れるばかりか、最初存在していなかった問題まで生じさせています宣伝文句と違って、OAuth にすれば自然と驚くほどセキュアになるというわけではなく、むしろ数々の短所実装の困難さを考えれば、他の考え抜かれた選択肢のほうがはるかに優れています

これからサービス設計をして API アクセス提供することになっている方はどうか、ご自分が実現しようとなさっているのが何なのかを本当に考えてください。他の人がやっていることをコピーするだけで済ませたり宣伝を丸呑みしたりしないでください。どうしてもコピーしなければいけないなら、Amazon (これが最善です) や Rackspace, IBM SoftLayer, Linode, VULTR, Zoho, Zoom ほか、API の素直で健全認証システムを構築する方法について現時点で多少なりとも理解のあるところをコピーするようにしてください。

2016 年 4月 Insane Coder

http://no-oauth.insanecoding.org/

OAuthのことを1ミリも知らない俺が

OAuth ディスの記事を酒の勢いで訳してみたゾ。前半はつまらないから、「章のまとめ」か、それ以降だけ読むといいゾ。なぜか後半が切れてた。こっちだけでいいゾ anond:20160426145507 anond:20160426150324

http://insanecoding.blogspot.com/2016/04/oauth-why-it-doesnt-work-and-how-to-zero-day-attack.html

OAuth がうまくいかない理由と、既存サービスゼロデイ攻撃方法

OAuth とは

認証 (authentication: 本人確認) と承認 (authorization: 権限付与) のシステムを設計し、API を規定し、複数の異なるシステムを統合するために用いられる提案をまとめたものです。

OAuth には色々な種類があり、version 1.1a や 2、その各部の上に他の規格を乗せたものなどが存在します。世の中に出回っている数々の実装によって、具体的な利用状況は大きく異なります。

おことわり

前にも OAuth について書いたことがあり、たくさんの反響をいただきました。前回の記事に対する批判の一部を避けるため、今回の記事について先に断っておきたいのですが、この記事は OAuth の使われる典型的な場面に焦点を当てており、論じられる点のほとんどは、何らかの方法OAuth を利用する大手サービスのほとんどすべてに当てはまるということです。

言いかえると、OAuth を用いているあらゆるプラットフォームが壊れているとは限りません。OAuth にはバリエーションが多いうえに、2.0 だけに限っても 76 ページに渡るパターンがありますので、OAuth に基づいた何かに適合していながらもセキュアであり、使っても問題ないものは存在しうると言えます。ですから、あなたお気に入りOAuth 実装や設計が、ここで論じられる問題の一部または全部を免れていることもありえます。確率は低いですが。

また、OAuth を使っているものの中には規格を誤用しているものがあるとか、OAuth はその使い方を強制しているわけではないとか言う人もいるかもしれません。どちらにせよ、ここでは特定の OAuth ベースの規格について述べるのではなく、現状で大手が OAuth をどう利用しているかについてを、それが規格に適っているかどうかに関わりなく論じるつもりです。こうすることで、多くの読者に影響を与えることになるでしょう。危険な方法OAuth を使っているサービス利用者であっても、また自ら OAuth ベースサービスを管理していて、他のみんなが作っているのを真似てプラットフォームを作ろうと思っている人だとしても関係があるのです。

記事の構成

この記事は長くなりますし、言ってみればほとんどの章はそれ自体でひとつの記事として十分なほどの話題を扱いますので、大まかな流れをご説明しておきましょう。

この記事は、現在 OAuth 業界でおこなわれていることを調査した結果のまとめです。OAuth を使う製品のすべてにこの記事のあらゆる点が当てはまるというのではなく、危険だったり無価値だったりするサービスの背後に見つかった慣例や根本原因を紹介する記事です。

この前書きのあとは、まず OAuthセキュリティ欠陥を分析することから始めるつもりです。こうした欠陥の中には、セキュリティコミュニティでよく知られていて、書籍などですでに分析されている一般原則が当てはまるものもあります。しかしこの記事では書籍化されていないケースも扱いますし、有名な欠陥についても、平均的な開発者および責任者に理解しやすく、対策の必要性がはっきりするように工夫するつもりです。

その後は、OAuth の主要素が一般的に言ってどのように実装されており、そうした普通の実装がどのようにサービスを使いものにならなくするのか、すなわちそのサービスで達成できることを極度に、不適切に、かつ意図に反して低下させてしまうのかを分析します。ごく一部のケースでは回避策の足がかりになるかもしれないテクニックについて論じますが、そういうのを実装する馬鹿らしさにも注目します。こうした記述の中では繰り返し何度も、OAuth を使う人たちがどれほど自分と自分のビジネスにとって損なことをしているのかが説明されます。

最後に、OAuth が適切に使われうる数少ない場面と、すでに利用されている OAuth の代替品を簡単に取り上げます。代替技術に関する調査の結果を提供するつもりですが、その中には Amazon のような大企業がセキュアで使いやすく信頼性の高い API を実現するために何をしているかの報告も含まれるでしょう。

責任ある情報公開

いま普通に使われているかたちにおける OAuth の欠陥の幾つかを悪用すれば、大手サービスに対して強力な攻撃を仕掛けることができます。OAuth に対する攻撃は何も新しいものではありません。IBM や Oracle を含め、懸念した IETF メンバーOAuth ベースサービスに対する攻撃を 50 クラスも記述した 71 ページもの文書を 3 年以上前に出したように、また筆者も前回の記事でこうした点のいくつかを議論したようにです。それにも関わらず、OAuth ベースシステムの主要なセキュリティ欠陥は非常に蔓延しています。

筆者は、いくつかの大手企業の役員や開発者に、そこの OAuth ベースシステムが抱えるセキュリティ欠陥を指摘したことがあります (そのうちのひとつは 4 年前のことです) が、全員、自社システムを修正するために一切何もしませんでした。まるで、OAuth の人気度からして、他の現実的な解決策をひとつも聞いたことがなく、それゆえに OAuth が最もセキュアな選択肢に違いないと決めてかかっているようです。どうも、OAuth のコア原則に対する攻撃のデモを文書化した情報も、聞いたことがないか、肩をすくめて無視するかしているようです。そこで、この情報をもっと広く拡散することによって、影響のある人たちの尻を蹴りとばしてあげたい、そしてサービスを設計あるいは管理している人たちにモーニングコールの役割を果たしてあげたいと願っています。

というわけで、OAuth ベースの何かを提供あるいは利用するご自分のサービスを調べて、こうした欠陥の一部あるいは全部が存在することに気づいたなら、どうぞ責任をもってこの情報を取り扱ってください。ご自分のサービスを適切にアップデートしたり、関係する問題に対応するようビジネスパートナーに適切な圧力をかけたりしてください。

ここで言及されている情報やリンクされている情報は今のところ既存のサービス悪用できるかもしれませんが、どうぞ責任ある行動をとり、他人のもの破壊するのではなく改善することを目指してください。この記事は、自社サービス不適切に実装している人たちへのモーニングコールのつもりで、その改善を促すために書いているのであり、悪用したがっているハッカーたちのハウツーもののつもりではないのです。

想定する利用形態

この記事では、ふたつのシナリオに注目して、その場面でどのように OAuth が組み合わされているのか、そしてなぜうまくいかないのかを検討します。記事を通して何度もこれらのシナリオに戻ってきますので、頭に入れておくことは大事です。

まず、Exciting Video Service (略して EVS) というサービスを思い描いてみましょう。ユーザが動画をアップロードしたり友人と共有したりできて、完全公開にしたりアクセス制限を設定したりできるようになっています。また EVS は動画のアップロードや削除、およびだれが視聴できるかの権限管理に OAuth ベースの API を提供しています。

ただ、例としてこの想像上のサービスに焦点をあてますが、論じられる問題はあらゆるサービスにも当てはまります。ファイルであろうと文書ストレージであろうと、カレンダー管理やオンライン会議、ディスカッショングループ、はたまたリソース管理であろうと OAuth ベース API を提供する他のいかなるものであろうとです。また、筆者は本当にどの特定の動画サービスのことも言っていないということを覚えておいてください。問題点の一部あるいは全部は、OAuth を使っている既存の動画サービスに当てはまるかもしれませんが、EVS がそのサービスのことを指すわけではありません。どれが当てはまるかは読者への練習問題ということにしてもいいですね。

ひとつめのシナリオとして、ビデオカメラの製造会社を想定しましょう。そのビデオカメラには、録画した内容を EVS にアップロードする機能のあるソフトウェアを付属させたいと思っています。つまり、ユーザビデオカメラを自分のコンピュータに接続して、その独自ソフトウェアを開き、ビデオカメラからアップロードしたい動画を選んでしばらくすると、それが EVS にアップロードされているというものです。

ふたつめのシナリオとしては、ある中小企業が職員用に EVS で 50 アカウントを購入し、全職員が動画をアップロードして同じ部門の職員と共有できるようにする、ということにしましょう。この会社は A Friendly Custom Platform (AFCP) というソフトウェアで職員と所属部門の管理をしており、この AFCP サービスを EVS に統合したいと考えています。望んでいるのは、管理者が AFCP を使ってだれかを営業部門に配置したら、その職員が自動的営業部門メンバー所有の動画すべてに対するアクセス権を取得するということです。営業部門からいなくなった人には逆のことが起こるようにもしてほしいと思うはずです。

問題点

セキュリティ関連
認証情報の盗難 / アクセス権の詐称

トークンベースの認証システム (OAuth のコア) が現在よく利用されている最大の理由のひとつには、「適切に実装されれば」サードパーティアプリサービスに各ユーザの認証情報 (パスワード等) を提供しなくて済むという点があります。サードパーティに個人ユーザの認証情報を渡すのは、以下の理由から望ましくありません:

上記の問題点は、OAuth だけでなくあらゆるトークンベースの認証システムでも回避できます。よく OAuth の強みとして挙げられていますが、独自というわけでは全然なくて、他にも同じ強みを実現しつつ OAuth の弱点のない選択肢はあるのです。

さて、確固とした土台に基づいてはいるものの、「普通の実装における」OAuth は、上記の問題を回避しようとして以下のような手順に沿ってシステムに情報を提供します:

  1. ユーザサードパーティアプリ/サービス (たとえば AFCP) を訪ねて、特定のサービスと統合したいことを知らせる。
  2. AFCP は、EVS でホスティングされた特別なログインページを出してユーザに EVS の認証情報を入力させる。
  3. EVS は、その指定したアクセスレベルユーザが本当にサードパーティ (AFCP) へ与えたいのか確認する。
  4. EVS は AFCP に一種のトークン (複数の場合もある) を提供し、各種 API コールに使えるようにする。

このトークンユーザの認証情報ではありませんから、そしてひとりのユーザひとつアプリの組み合わせだけに有効で、指定された権限しか持たず、あとから破棄されるようになっていますから、きちんと前述の問題点を回避しているように思えます。しかし実際には、ちゃんとした土台を核として持っているにも関わらず、OAuth の普通の実装で使われているこのフローは、上に挙げた問題すべてに対処しているとは言えません。

この設計はそもそも危険なスタート地点から始まっています。セキュアなプラットフォーム設計の第一原則は、危険な地点から始まったものは既にダメ、逆転不可能、ということです。手順 1 のせいで、EVS 自体ではなく EVS を利用するサービスから始まっているので、ユーザは最初の一歩からして中間者攻撃を受けたような状態にあります。これは、かかってきた電話に個人情報や口座番号などを教えるようなもので、自分の使っているサービスの者だと名乗っていますが、番号が本物かどうか分からなかったり非通知だったり、という場面のコンピュータ版だと言えます。最近はこういう詐欺がたくさんありますから具体例を挙げる必要はありませんね。要点は、接続を開始する相手が信用できなければ、その接続は一切信用できないということです。EVS 自体の側から手順を始めるのでない限り、上に挙げた目標をすべて実現する API 利用のためのセキュアな認証システムは設計不可能です。

(略: 手順 2 で、それっぽいページに誘導すれば認証情報を盗める)

(略: そうした詐欺を企業自体が後押ししているような風潮もある)

(略: スタンドアロンアプリなら、ログインを詐称する必要すらない)

この種の攻撃は前述のセキュリティ文書で「4.1.4. 脆弱性を突かれたブラウザ組み込みブラウザを使ったエンドユーザ認証情報のフィッシング脅威」として分類されています。提案されている解決策は?

クライアントアプリユーザに直接認証情報を求めることは避けるべきだ。加えて、エンドユーザフィッシングや良い習慣について教育を受けることもできる。良い習慣は、たとえば信用できるクライアントにしかアクセスしないことだ。OAuth は悪意あるアプリに対していかなる防御策も提供していないので、エンドユーザインストールするネイティブアプリすべての信頼性に自分で責任を負う。

さらに

クライアント開発者は、ユーザから直接に認証情報を集めるようなクライアントアプリを書くべきではなく、システムブラウザのような信用できるシステムコンポーネントにこの役目を移譲すべきだ。

基本的に言って、OAuthセキュリティガイドラインは、OAuth を利用する開発者ユーザを攻撃しようとすべきではないとか、悪いことをしてはならないと言っています。外部の開発者が悪いことをしないことに頼るというのは、正気のサービス設計者が依拠するセキュリティモデルではありません。

私の知る主要な OAuth ベースサービスはほぼすべて、ここに概説した手法で攻撃可能です。

OAuth こそセキュリティの新たな金字塔だとお考えの皆さん、目を覚ましてください! 「普通の実装における」OAuth は、始まる前から負けていますよ。OAuth が存在するよりずっと前に実装された数多くのシステムはセキュアで、この問題を効率的に回避しています。残念なことに、あまりに多くのサービスが、せっかくセキュアだったのにインセキュアな OAuth モデルに移行してきました。だれかが開発者管理者に「OAuthもっとセキュア」「先取り思考」「将来への投資」とか何とか素敵な (しかし具体性の皆無な) バズワードを並べたてたからでしょう。ほとんどの場合、こうした変更は本当に既存の問題に対応しているのか、あるいは以前のシステムより幾らかでも良くしてくれるのかどうかをレビューすることさえなく実装されています。

OAuth サービスに偽装

OAuth ベースサービス設計でよく見かける間違いは、ブラウザ用に、パラメータひとつとして client_secret (あるいは同様のもの) を受け取るエンドポイントを提供することです。OAuth の client_id と client_secret パラメータは、基本的に言ってサードパーティプラットフォーム固有の API ユーザ名とパスワードと等価ですから、EVS の API を利用する開発者だけにしか知られるべきではありません。パスワード同然のものなのですから、client_secret パラメータは「絶対に」ユーザブラウザを通して送信すべきではありません (ヒント: パラメータ名の中に secret という言葉が入っているよ)。アプリサービスユーザがその client_id と client_secret を見つけることができる場合、そのユーザはそのサービスのふりをすることができ、潜在的には何かイケナイことができてしまうということになります。さらに注意すべき点として、client_secret パラメータを別の名前にするサービスもありますから、ご自分の関係するサービスをよくチェックして、他のパラメータも秘密にする必要があるのかどうかを調べてください。残念ながら、重要な変数が自分の素性をいつも表に出しているとは限らないため、この問題は意外と多く存在しています。加えて、client_id だけ使う認証フローOAuth の上に乗せるサービスも出てくるでしょう。これには用心してください。特定の状況では、そういう client_id はまさしく client_secret 同然の働きをするのですから。

「普通の実装における」OAuth は、ウェブブラウザを使ってユーザを複数のウェブサイトに移動させるわけで、ひとつサイトから別のサイトに client_id と client_secret (あるいは同様のもの) を送ってもらう必要があります。そうやって、たとえば AFCP と EVS の間でこれらをやりとりするわけですから、ユーザブラウザの HTTP ログをモニタリングすれば、本当に見えてしまいます。これはアプリに組み込まれた独自ブラウザ各種でも、単に右クリックすれば何らかのネットワーク・ログ機能を持つ何らかの inspector にアクセスできてしまう場合などには可能です。

EVS と連携した AFCP にこの欠陥があると、AFCP に少しでもアクセス権限のある職員に本来の権限より多い権限を取得させてしまい、本来アクセスできないはずのところに許可が下りてしまう危険があります。別の例では、仮に FacebookGMail 用の OAuth エンドポイントを利用しているとして、client_id と client_secret の両方がブラウザを通して送信される場合、Facebookユーザは全員 GMail に対して Facebookのもののふりをすることができてしまうということです。

この問題は、OAuth エンドポイントユーザウェブブラウザから平文で client_secret を送ってくることを期待するときにはいつも存在します。あるいはそうする必要があると誤解した API 利用者が、埋め込むべきでないところに secret を埋め込むときもです。この脆弱性が存在している可能性が高いのは、エンドポイントが client_secret (または同等品) と redirect_uri の両方を期待する (あるいはオプションとしてでも受け付ける) 場合です。redirect_uri パラメータは、今回のケースで言うと EVS がユーザログインさせたあとでそのブラウザをどこに送るべきか指示するために使うよう設計されています。そうやって redirect_uri がエンドポイントへの転送に使われている場合、その処理はユーザブラウザで実行されることが期待されているわけです。主要な OAuth 文書はどちらも、client_secret と redirect_uri の両方をこうした用途に使うようなケースを指示したり求めたりはしていません。

ざっと検索してみたところ、残念なことに、潜在的に違反の可能性があるそういった OAuth ベース API がたくさん見つかります。GoogleOAuth の色々な利用方法を提案していますが、その中に、両方を一緒に使うことを広めるフローひとつあります:

client_secret: 開発者コンソールで取得したクライアントパスワード (Android, iOS, Chrome アプリとして登録した場合のオプション)

Citrix もこんな間違いをしています:

(略: 以下、実際に脆弱だと確認したわけではないが、secret と redirect を併記しているサイトが列挙されている。)

Google で 2 分検索しただけでこのリストができました。皆様がもうちょっと労力をかければ、ずっと多く見つかることでしょう。ただし、上記リストは、こうしたサービスのどれかが脆弱だとか、誤用しやすすぎるということを直接に示すものではありません。色々な要素があり、たとえば Zendesk は特にこのケースでは redirect_uri パラメータリダイレクトに使わないと明言していますし、アプリからエンドポイントを呼ぶときはフル機能版ブラウザではなく curl を使うべきだとさえ書いて、開発者が危険なことをするような誤解を極力避けようとしています。それでも、経験の浅い開発者はこうしたエンドポイントを独自ブラウザで読もうとするかもしれません。さらに、この組み合わせが世に出回っているというだけで開発者の警戒心が下がっていき、経験を積んだ OAuth ベースサービス開発者でさえも似たような状況で潜在的ヤバイ誤用を気にせず適用するようになってきています。特に client_secret が別の名前になって、「秘密を守る」という概念が失われている場合はそうです。

サービスがこの点に関して壊れている指標となるのは、人気のある複数の OAuth ライブラリがこのサービスでうまく動かないときです。そういうサービス一般的にいって独自の「SDK」を提供しており、サードパーティ開発者が選んだライブラリではこのフランケンシュタイン的な OAuth が使えないと苦情が来たときにはその SDK を使うよう指示します。こうしたカスタマイズは気付かれないまま進行することも多くあります。開発者の大多数は、SDK が提供されているなら、わざわざ手元のソフトで頑張らずに済ませたいと思うものですから。

この種の攻撃は前述のセキュリティ文書で「4.1.1. クライアント機密情報を取得する脅威」に分類されています。しかしサーバウェブブラウザを使用を要求し client_id と client_secret (または似た用途のもの) を同時に渡させるという具体的な攻撃パターンには一言も言及がありません。おそらく、その文書の執筆陣の予想では、こんな馬鹿げたサービスはだれも設計しないだろうし、その API を使う開発者もそれを独自のウェブブラウザや SDK で使ったりはしないだろうと思っていたのでしょう。こうした開発者OAuth の規格からバラバラに取り出した要素をグチャグチャに混ぜて接着しておいて、自分のプラットフォームOAuth 本来のセキュリティを保持していると思っています。そのツギハギのせいでどんな新しい問題が入り込むかもしれないのに、そこは一顧だにしません。残念ながら、これが近年の OAuth 業界によくあるやり方で、この既に猛威をふるっている問題は、パレード参加者がどんどん増えて、人が使っている手法や、使っている「と思う」手法をコピーしていくことで、とどまるところを知らない連鎖になっています。

おそらく、上記のサービスを使っているシステムのうち、この問題のせいで悪用可能なものは多数あることと思います。特にデスクトップアプリでは、コンパイルされたアプリバイナリから秘密情報がそのまま取り出せることは、サービス側で何も危険なことを要求していなくてもよくあります。GoogleOAuth の使い方を多数提供しているうちで、client_secret と redirect_uri を両方受け取るエンドポイントのことが書いてあるのはたったひとつだけだというのは重要な点です。少なくとも Google の場合、redirect_uri があっても、このエンドポイントウェブブラウザベースアプリには推奨していません。しかし、だからといって実際に独自ブラウザでそれを使う人や、このフロー標準的ブラウザ用のエンドポイントコピーする人が一切いなくなるはずがありません。それに加え、Google は例外なのであって、世の中にはセキュアな OAuth フローを受け入れず client_secret (や同等品) を常に渡すよう要求する愚かなサービスが今も満ちあふれており、そのフローウェブブラウザを通るときでさえも要求しているのです。さらに悪いことに、こうしたサービスの多くはユーザウェブブラウザを通して「しか」利用できないのですが、これは後ほど詳述します。

前掲のセキュリティ文書は、 Permalink | 記事への反応(3) | 12:44

2016-03-27

http://anond.hatelabo.jp/20160327184457

要件満たせるなら誰でも良くない?

ビジネス的には別にアーキテクチャおかしくても見せられれば問題ないんやで?

そんなん怖がっててもしゃーない。リファクタリングはなんのためにあるんや。

2016-03-02

プログラムができないと人でなしという風潮がつらい

アマゾン通販クックパッドはお料理投稿サイトじゃないの? アーキテクチャって建物って意味だよね?

でも、そんなこと興味が無いや

ハッカソンって何?お菓子なの、おいしいの?

Linuxは聞いたことがある、ペンギンだよね、でもそれ以上は知らない

C、Perl、PHP、Python、Ruby、Java、これだけで6種類、こんなにいるの?

プログラム知っていないと死ぬの? ウイルス怖い

2016-01-28

女の与える幸せってリア充ノリすぎる

女が恋愛結婚だで与えてくれるらしい幸せとかって、リア充ノリすぎねーか?

昔の小説とか読むと、もっと文学的で地味な感じじゃねーかな。

短歌の返答とかは昔すぎるとしても、宗教的なノリとか、連理の枝とか、ある程度ノリとしては文学的だったように思う。

  

でさ。現在女が与えるらしい恋愛幸せとかって、ノリがリア充すぎる。

そういうリア充ノリ的な幸せを楽しめる男ってどれくらいいるんだろう。

男の感じる楽しさとかって、どっちかっつーと、アーキテクチャー的な。キモオタ電車撮ったり、ゲーム攻略したりみたいなノリじゃん。8割がたの男の楽しみってそうじゃねーかな。

だけど、ドキュンみたいな頭足りない奴はそういう楽しみできないからリアル充ノリでOKなのは分かる。

イケメンスクールカーストとかイケメン枠として女が流れてくるからリア充ノリ楽しめなくても女抱けるから別にリア充ノリは女が勝手脳内補完するんだろう。

でも、8割方の普通の男は、リア充ノリクッソつまらないと思うんだけど。

  

草食系ってそういうリア充ノリの恋愛に魅力感じない感じじゃねーのか?

2016-01-23

SIはやめておけ

20代の数年間SIで働いた。1年以上前退職して今は別業界にいる。

今日、Evernoteを整理していたら「退職理由、SIの嫌な点」というメモが発掘された。退職直前のかなりストレスがたまっていた時期に書き殴った文章だった。学生の頃の私は絵を書いたりしていて、ものづくり暮らしたいな〜などと思って始めたプログラミングが楽しかったので安易に受託開発業を選んでしまったが、その後悔が如実に表れていた。

一部自分でも覚えていない話もあったがコンテンツとしては面白かったし、今でもシステムインテグレーター業界で消耗する若者を減らしたいとは思うので公開してみる。

以下、同メモに加筆・修正したものなのでファンタジーだと思って読んでくれ。

工数至上主義

受注した時点で売上がおよそ確定するので、後はその予定工数に収めて納品できれば御の字という考え方。よくある話だが、見積おかしくても顧客と対等な関係が築けていないから追加請求もできない。時間(工数)をかければ良い成果物ができるかもしれないがそれを説明して顧客に嫌な顔をされたくないから、限られた工数の中での最善を尽くす。最善を尽くす、聞こえは良いが要は手を抜く。

まり、どう頑張っても売上は同じなのだから、良いもの価値を生むものを作ろうと考えない人が多い。社内で開発者と呼ばれる人間もそうだし、マネジメント層はそういうものづくり志向を持った人をリスク扱いすることもある。

これが諸問題の根源で、いかに述べるような組織プロジェクトが出来上がっていく。

作業効率化しない

マニュアル作業の正確さをかたくなに信じてる人だらけで、ITとは何なんだと考えさせられる。

私は定型作業効率化しようとjsやrubyスクリプトを書いたりしていた。テストデータを開発用DBに突っ込んだり、テキスト処理して整形したり、Excelからコード生成したりするよくあるやつ。

あるとき上司に肩越しに自分作業を覗かれて「何やってるの?」と聞かれ、そういうスクリプトを作ってると答えたら、工数とリスクの話をされた。曰く「そのスクリプト作るのに何日かかるの?工数に乗ってないよね?」「スクリプトテストもちゃんとしないと結果が正しいって保証できなくない?」と。この時はイラッとして「30分でできる数十行のスクリプトだし自分作業工数内で完結する。むしろ工程や別の人でも同じことを再現性できて楽になる」とか真面目に説明してプログラムも見せたが、読もうとはせず(読めないので)1時間無駄にした。

技術力いらない

前述したようなビジネスモデルから営業力と、予定工数で無難プロジェクトを終えるマネジメント力が大事。IT企業だが開発者は自社で持たない。不況の時に待機コストが発生するリスクがあるし、自社で抱えるより単価の安い開発者人材派遣系の企業や下請けにいっぱいいるから。

社長があるとき社内広報で「技術は買うものだ」と言っていた。文脈で明らかに技術=技術者のことだったので、使い捨ての人売り業と揶揄されていることへの自覚が無いと思う。

そういう人が集まっているor残っている組織なので開発者ほとんどいない。20〜30人ぐらいの課に1人ぐらいの割合でstaticおじさんがちらほらいるぐらい。大体20代からプロジェクトリーダーという立場をやり始め、だんだん大型の案件を扱えるようになっていき、後は出世ゲーム部長お気に入り課長になり、部門長のお気に入り部長になる。その繰り返し。

開発案件でのBP(ビジネスパートナー委託先、派遣下請け比率自分の周りだと1:5ぐらいが多い。プロパー社員一人が5人の開発を仕切る、みたいな形。案件規模によりだいぶ差があると思う。この比率が高い=マネジメント力のある組織と考える会社はこの数字を上げようと必死で、比率の低い組織は評価が下がる。

私は開発が好きだったのでエンジニアとして生きていきたい、というようなことを評価面談の度に伝えているが、その度に会社の目指す方向を説かれてモチベーションが下がる。

意識の低い開発者メンバー

上述の通り、案件で接する開発者基本的に社外の人間なのだが、彼らの技術力と意識の高さにはものすごいばらつきがある。言われたものはなんでもこなせる人、何でこの歳まで技術者やれてるんだと疑う人、このプロジェクトおかしいと良い意味で騒ぐ人、何も意見を言わない人、CっぽくJavaを書く人、人当たりは良いが技術力がいまいちな人、すぐ休む人、バグやミスを隠す人…etc。

まぁ色んな人がいるのはどの業界のどの職種も同じだが問題は質だ。私の主観になるが本当にエンジニアとして尊敬できるレベルの人は1%いるかいないか。というのも、ほとんどの技術者は長年SIやその周辺企業と付き合ってきているので同じ体質に染まっているのだ。顧客が良いといえば良いという態度(この場合顧客は私が所属する企業)、請負場合は工数を超えない範囲で手を抜く姿勢、その他諸々。技術力だけをひたすら磨き続けてきたという人はごく一部だけだったし、そんな人でもGitHubアカウント持ってない・ブログやってない・OSSに貢献したことない、といった具合でクローズド世界で生きている。

そうした技術者とやっていく中で最も厄介なのが教育コストだ。案件のあるなしで人が都度入れ替わり、新しい人が来るたびに同じシステム・技術要素の説明をして何とかやる気が出るようモチベートして、というのを繰り返すのに疲れた。私の会社固有の変なルール説明はてきとうにしておいて、私は技術が好きな仲間が欲しかったので今のシステム課題と技術面での改善や展望をよく話す。が、あまり食いつかれることはない。これは私の問題だが、そうした期待と落胆のループ疲弊の一因だ。

static BP

ある時、一つの課に6年近くいるというBPと一緒に仕事をする機会があった。その課にはプロパー技術者が長いことおらず、彼がその課の技術的中心を担っているという話だった。抜けられると途端に色んなものが崩壊するからという理由で、その人の派遣元にはかなり高額の単価を支払っていたと聞いた。課員が口をそろえて「あの人はすごい」「何でもできる」というので初めはかなり期待していた。

だが、拍子抜けした。あまりにも仕事が雑なのだコミットされたコードはTODOコメントだらけだし、バグがあまりにも多かった。一度も実行されずにコミットされ、他の人がチェックアウトした時点で判明したバグなんかもあった。それでも声が大きく、プロパーが技術を知らないのをいいことに自分ブランディングに完全に成功していた。客先にも顔を出し、信頼を得ているらしかった。「自分は設計が得意でテスト以降の工程には興味が無い」と言っていた。確かに彼が関わった各システムには独特の概念が埋め込まれた設計があったが、その複雑な設計は保守性が低く、他の開発者が触ると容易にバグを引き起こしていた。

また、彼はJavaの有名なフレームワークであるStruts拡張したいわゆるオレオレフレームワークを開発しており、それの出来は悪くなかったと思う。そのフレームワークに欠けているものをうまく補うような形になっていた。だがフレームワークバージョンを上げると壊れるというのが残念な点で負債になりかけていた。

私は異動したが、彼は今でもそこにいると聞いた。

技術の話

テストコード書けない

(最低限のものしか作らないから)安くて早い!という触れ込みで売っているので、テストの工数が異常に少ないことも多い。特にテストコードを書くなんてもってのほか。そういう世界でやってきた人ばかりなので、30や40超えたマネジメント側は「テストコードって何?」状態だ。大型の改修案件が来た時にはコア機能だけでもテストを書いていこうと見積段階から社内で提案したが「顧客に『そんなメリットあるなら何で今までのプロジェクトではやってないの?』って問われるから絶対言うなよ」と拒否された。

保守案件をやっていた頃、時間を捻出してコソコソとテストコードを書いたりしていた。その案件を離れてしばらく後、ある時リポジトリを覗いたら私が書いたテストコードがばっさり消えていて驚いた。コミットログから課内のstaticおじさん的な人が消したとわかったが、そのコミットコメントが「現在使用していないコードを削除」だった。これはもう問う気も失せて何も言えなかった。

リファクタできない

先述したようにテストがそもそもないプロジェクトが基本なのでリファクタできないのだが、たとえテストがあったとしても勝手なリファクタは許されない。ソースコード顧客の持ち物なので同意なしに改変することはいわば契約違反なのだ。たとえ内的品質が向上してコスト削減に繋がるとしても、そのためにお金を支払う顧客はまずいない。

レビューない

私がいたどの案件にもコードレビューがなかった。リーダー開発者数人という構成場合、まず開発者は全員下請けリーダーは技術の心得がない場合が多い。そうなると彼らの成果物の良し悪しを図るのは目に見えるシステム挙動実施されたテスト結果のExcel報告書だけになる。これが非常に非効率で、少しコードを読めばわかる明らかなバグや仕様理解齟齬が頻発していた。特に入試験と呼ばれるリリース直前の顧客側での最終確認や本番稼働中におけるhotfixは全機能をきちんとテストせずにデプロイされることが多く、そのhotfixがさらなるバグを引き起こしたりもしていた。

そもそもテストを書けという話だがテストが無いプロジェクトに足すのはかなり大変なので、レビューサイクルをきちんと回すだけでもかなり変わる。実際、私が入った案件ではすべてのコミットに目を通すようにし、明らかな問題は都度指摘することで品質の向上に繋がった。欲を言えば他の開発者にもレビューしてもらいたいが、下請けの彼らの工数を増やすことは嫌がられる。

新規技術試せない

無難プロジェクトをこなすことと新しい技術を試すことの両立こそ技術者の腕の見せどころだと思っているが、ほとんどの場合それは許されなかった。新規にせよ継続にせよ案件を受注する段階で営業マネジメント層と顧客間で「今回は過去に実績のあるこの技術でやります」という契約が結ばれているからだ。その技術(言語フレームワーク)がいかに古く、保守性も将来性もないものだとしても受注できればよいし、その技術のサポート切れか何かの拍子で再度リプレイス案件でも受注できればさらラッキーぐらいの考えでいる。

常に横に倣えのアーキテクチャは私にとって面白くはなかった。

横に倣え

また横に倣えが加速してさらに悪い事に、同じアーキテクチャネットワーク再利用するために既存のサーバに新システム相乗りすればよいという発想も珍しくない。「資産再利用によりコスト削減」という触れ込みだったが、ただでさえスケールしない低スペックオンプレミスサーバ上で複数アプリケーションサーバ運用した結果、予想通り耐障害性が下がった。

また、Oracleライセンスが高いという理由で一つのDBインスタンス上に10数個のシステムが同時稼働しているなんてこともあった。1つのシステムが高負荷なクエリを投げたせいで関連する全システム共倒れになったこともあったがOracleのバグとして報告していた。

static Perlおじさん

新人の頃にOJTでstaticおじさんの下に付いたことがあった。そのとき担当したのはPerlデータ連携用のバッチを書くという開発業務だったのだが、最悪の思い出だ。

まずプログラム構造仕様書というのを書かされた。メソッド単位でのモジュールを全てExcel上に記述し、処理の順番と内容を説明するという謎資料だった。あまりに意味がわからなかったので「UMLのクラス図を書けばよいのですか?」と聞いたら「Perlクラスなんて必要ない。構造プログラミング研修でならってないのか」と返ってきた。「俺が前に書いたPerlバッチがあるから参考にしろ」と言われ、あるリポジトリをチェックアウトして見てみると1ファイル4,000行の.plがいくつか並んでいた。その時の私は何もわかっていなかったのでそういうものかと思ってしまったが後で調べて明らかにおかしいと気づいた。

また、そのプロジェクトのメイン言語Javaで、Eclipseを使っていたのでPerlプラグインを入れてコーディングデバッグをしていたらやめろと言われた。理由は「Eclipse上で動くPerlが信用できない。サクラエディタで書いてプリントデバッグすれば充分だ」と言われた。その時の私は何もわかっていなかったので、プラグイン品質が悪いとかそういう話かと思い「じゃあvimで書きます」と言ったら「サクラエディタしろと言っただろ!」と一喝され、vim vs サクラエディタという史上類を見ないエディタ論争が起きた。

待遇・制度

給与

SI業界の中では高いのかもしれないが決してよくはない。4年目(たぶん25歳)ぐらいで残業込みで年収400万にやっと届いたがそこからほとんど変わっていない。30歳の先輩に聞いたところ「500万前後残業してない場合の月の手取りは未だに20万切ることがある。残業抜きでは新婚生活が厳しい」と言っていた。いわゆる年功序列がきっちりしていてこのまま続けてもしばらくは給与が伸びないということがわかった。

個人での貢献で差がつくのは±10万程度。その程度ならいっそ無くてもいいのでは、と思う。というかそもそも生産性をきちんと評価する制度存在しない。これはどの組織でも難しい問題だと思うが、形骸化した評価制度上司の気に入った人間にS評価を付けているだけならいっそ止めたほうが時間の無駄にならなくてよい。

マシン

会社から貸与されるノートPCは低スペックすぎて開発には使い物にならない。なので開発者基本的デスクトップ使用せざるを得ないのだがこれもメモリ4G、1.2GHz程度で大したマシンでもない。本当に開発する気がない。

組織問題

とにかくクローズド組織

つの間にかどこかで意思決定がされていて、関与する機会がほとんどない。だがほとんどの社員がそれで良いと思ってる。失敗しても自分が決めたことじゃないから上層の責任だ、そう言えるので楽だから

情報共有をしない、というか意図的にしないようにしているとまで感じる。連絡はメール添付ファイルベースで行っているし、共有のファイルサーバなんてのもあったが一部のフォルダ権限を持った人間しか見られない。何で他の部や課が行った過去の見積提案資料自由に見られないんだよ。

ソースコードリポジトリも同様。外部に公開しないのはまだわかるが、プロジェクト外にすら基本は公開していない。別に奪われて困る大した技術もない。

会社が用意した提案資料共有サイトみたいなのもあったが、それに至ってはもっとひどい。課長以上もしくは部長から承認を与えられた者のみ閲覧可能。共有とは。

意思決定の遅さ

どうでもいいことを決めるにも承認や根回しや説得が必要になる。それがプロジェクト利害関係者ならまだわかるものの、まったく関わっていない上長(課長部長、時には部門長)を通さないと進まないという異常さ。

コスト削減

利益率向上のためにコスト削減ということがしきりに言われており、過剰なコスト削減対応生産性の低下を招いている。たとえば顧客に見せる資料以外は白黒で印刷しろ、みたいなルール。色がないために情報が伝わりにくい。というかそもそも印刷せずに各自ノートPCで見ろという話だが、先述したようにノートPCは低スペックすぎるので多くの社員デスクトップを使っている。ITとは。

本当に無駄しか思えない承認・申請フローの煩雑さに加え、使っているシステムの使い勝手も悪く、ひどい日は一日がそうした事務作業で終わる。しかもそのシステムは自社で以前開発したものだというから泣けてくる。こんな作業が定常的に発生するのでいっそ事務員派遣で雇うべきという提案が何度もされたが、課の予算オーバーするから無理だという回答しか返ってこない。

残業削減

表向きは社員健康促進という触れ込みで残業時間削減を全社的に取り組んでいる。残業減らせと声をかけただけでは誰も帰らないので、勤怠システムと入退館管理システム監視し、削減できていない組織や人間評価を下げるようになった。

その結果、サービス残業が復活した。30時間を超えると部長説明しないといけない、50時間を超えるとその上へ…みたいなループ。表向きの残業時間削減・コスト削減としては成功したかもしれないが、社員残業時間を管理するとかい無駄な仕事を増やしたし、管理される社員ストレスサービス残業に繋がったので下策だと思う。

他人残業時間をExcelにまとめる仕事があって、そこに給与が発生してると思うと泣きたい。

そもそも無駄作業や工数至上主義作業効率が悪いから残業しているので、残業が少ない奴が偉いと一斉に舵取りしただけでは生産性をちゃんと評価できていないことに変わりはない。一昔前の残業多い奴は頑張ってて偉い、というのと本質レベルで何も変わっていない。

辞め方

2015-12-29

はてなブログランキングコメントが多かった順ソート

手持ちのプログラムちょっと手を加えれば作れそうだったので作ってみた(総工数0.5MH)。最下位2つが404になってたおかげでちょっと変なことになってるけど、だいたいこんなもんかな。いわゆるホッテントリーに上がる記事を大雑把に分けると、

  • オピニオン系
  • インフォメーション系

に分かれる(勿論ミックスもあるけど)。諸君が『くだらねー』と思っている、エクセルだの英語だの簿記だのは後者だな。ただ、はてブはSNSとして機能している側面もあるけど、SBMが本来の目的である以上、インフォメーション系の記事も当然上位に上がってくる。まあ、ブコメが盛り上がっている何か?を表示出来るようにしたいんだったら、日曜プログラミングでちょろっと書けば?と思う今日このごろ。

ブログに書くほどの話じゃないので、スペースお借りしますm(_ _)m

コメント順位ブクマ順位URLBOOKMARKCOMMENT
193居酒屋や焼き鳥屋でドリンクを頼まずにご飯だけを食べていく客が増えているらしい - 無職透明な日々はナニイロに染まるか1033673
24ドワンゴは大量退職に関する印象操作をやめろ - hiroki-uemuraのブログ2281631
330はてなTシャツ2015販売スタート!プレゼントキャンペーンも実施します! - はてな広報ブログ1396617
422UQWiMAXに対して3日で1000人以上が詐欺だと訴える現状、消費者の意思はどうすれば伝わるのか。株主である京セラ等。国の機関である経済産業省等。その他全てに連絡して得られたもの - モバイル健全化への一歩1476474
5122ルミネの働く女性たちを応援するCMが酷い内容だった - 田舎で底辺暮らし968472
6128ブレンディのCMマジで気が狂ってる。作った人頭大丈夫? - タコの卵951465
72まずはおめでとう。7億は人生を買えるお金で、あなたは賢く立ち回れば一生..2344463
8176はてな、国内初ソーシャルブックマークサービス「はてなブックマーク」開始 - プレスリリース - 株式会社はてな848462
917なぜドレスの色の錯覚はおきたか?-色の恒常性- - Sideswipe1528453
1034「童貞を殺す服」のブランドを集めてみた - あめ姫は友達が少ない1367451
1133某R社を5日でクビになった話 - Code.io1371449
1235佐野氏のこと1359448
1381本当に悲惨な独り身の最期1061438
1426消滅会社 AppBankGAMESを終えて・ゲーム作りで大事なこと - hotmiyacchiの日記1453429
1563元車掌が語る指定席問題1137417
1695追)無課金で数年続けていたソシャゲをやめて分かった、ただ1つの事実1030413
1757子猫を殺す仕事 - orangestarの雑記1188389
1871健康になろうと自転車通勤を始めたら、逆に不健康になった話 - 今日学んだこと1114383
1968大手飲食チェーンのクレカ導入に絡んだ事ある者だけど1123379
2088炎上したブレンディのCMを冷静に分析する - MistiRoom1044365
2139Yahoo!チャットって場所があったんだよ1304355
22152そんなにプライベートを犠牲にして大丈夫? - kurainの壺892351
2397なぜラノベ原作ヒロインは3分以内に脱ぐのか - 本しゃぶり1022347
24170「文庫女子」フェアが色々ひどすぎた - 田舎で底辺暮らし859347
2560父が子育て身代金を減額した話 - wHite_caKe1153332
265二次元画像を拡大したいと思ったことはありませんか? - デー2136323
2748「ドラゴンボールはフリーザ編で終わってたら名作だった」とかのたまう輩に鉄槌を下しブウ編がいかに最終章として素晴らしいかを力説するための覚え書き - 銀河孤児亭1253323
28134ライブによく行く人(特に女性)は耳栓を買ったほうがいい~ライブ難聴で耳が聞こえなくなりました~ - 二度漬け禁止940323
29169スーパーマリオメーカーとかいうゲームはヤバイ860322
3075「ラッスンゴレライ」はどこが面白かったのか - 日々の音色とことば1090318
317とにかく"デカい肉"を買え! 元肉屋が教える「肉のハナマサ」徹底攻略法 - みんなのごはん1948316
32187大人になるのが怖い、またはマジメ系クズについて - orangestarの雑記839315
33171http://anond.hatelabo.jp/20150305021937 はあああああああ!!!????? 貴方のこ..854313
3415新卒で就職する以外の選択肢 - shi3zの長文日記1553311
35148はてなブックマークは「RSSリーダー」の開発に取り組んでいきます - はてなブックマーク開発ブログ897311
3672長年医者に見落とされ続けた体調不良が難病だと判明した - Soyのブログ1108301
37118いま失敗すれば、日本終了。 - デマこい!973299
38150仕事ができず、技能もない俺が会社で生き残っているやり方892298
3980俺が小学2年生のとき書いた『おこるとどれだけそんするか?』がヤバい。 - 日々、とんは語る。1072288
40108ユーザーを馬鹿にし続けた「UQ WiMAX」に対する集団訴訟を起こしませんか?※追記あり - モバイル健全化への一歩997284
4138「銀行から1万4000件の情報流出」を当事者目線で解説したい1305277
42131オッケー、キリスト。ところで、あたしの誕生日の話も聞いとく? - 私の時代は終わった。943273
4383凄すぎて意味不明の最強超人OS Windows10が爆誕!!! - shi3zの長文日記1054266
44471261262
45133澤なんて大したことない。 - Yukibou's Hideout on Hatena939260
4685IT業界でありがちな説明下手について - 文系プログラマによるTIPSブログ1053256
47160バグをドラゴンと呼ぶ運用を始めて1ヶ月くらいたった - Konifar's WIP876255
4845君は批判する権利があるか? 批判のマナーを教えてくれた教授の一言が人生でめちゃくちゃ教訓になっている - 人生かっぽ —佐藤大地ブログ1268254
49117第三次ブラウザ戦争がそろそろ閉幕します - latest log975250
50144ゲーム内チャットが諜報機関にとって悪夢である理由904246
5196資生堂ショック報道への反応のズレ1026245
5258列管理の難しさとコツ1181240
53641137237
54151個人店に大切にされる1人飲み食いの仕方について - ベンチャー役員三界に家なし893235
55195娘が生まれて思ったこと820233
56129ITエンジニアの私が漁師の嫁になって離島に引っ越した結果... - hayashi_77のブログ958230
5728起業支援者なんだけど、普段は言わないことを書く。酔ってるから。1442229
58186開発途中で退職したエンジニアの責任 東京地判平27.3.26(平26ワ12971) - IT・システム判例メモ839222
5942小学校高学年に読んでほしい50冊。いや、「子どもと一緒に読みたい本」。 - いわせんの仕事部屋1279219
6021( ・3・) クラシック好きの上司がジャズを聴きたいと言いだして1483218
61180若い君へ845215
6276 日本年金機構の情報漏えいについてまとめてみた - piyolog1085209
6353勉強ができる人とできない人の、ノートの取り方における決定的な違いについて - さようなら、憂鬱な木曜日1205208
6456一人暮らしを始めた新入学生・新入社員へ、服が雑巾臭くならない方法1195205
65137写真はモテるよ933205
6674 Superfish/eDellRootが危険な理由 - めもおきば1094202
6716年150万は食費に突っ込む女が本気で薦める、20代で通っていたお店 - 外資系OLのぐだぐだ1535197
68158たかがレシピサイトに何故こんな技術力が必要なのか - クックパッド開発者ブログ881196
69109一歩踏み出してよかった990195
7069あるシステム屋さんが平均残業時間一桁を実現した方法 - ゆとりずむ1119193
7189やりたいことだけやって生きていきたいなら、人の言うことは、一切、聞くな【ロボット工学者 石黒浩さんの仕事論】 - リクナビNEXTジャーナル1038193
7214「持ち家」がいいか、「賃貸」がいいか。 - それ、僕が図解します。1591190
7325【永久保存版】地元・大阪人が選ぶ「大阪で絶対に食べたい厳選たこ焼き8店」 - みんなのごはん1459190
74164一人暮らしだワッショイ868190
7537年働いた時点での私の仕事の極意 - Kengo's blog2365189
7636アメリカの大学で受けたソフトウェア工学の授業が実践的ですごかった話 - すてにゃんのガチ勢日記1349184
7765 AWS で不正アクセスされて凄い額の請求が来ていた件 - yoyaのメモ1133184
78182リーマンショックの時にFXで大きな損失出した俺がどうやって立ち直ったか書く842179
79174「フジロックの行方」と「すべてのジャンルはマニアが潰す」という話 - 日々の音色とことば850177
80189OLの事務vim日記 - 藻ログ834174
818安定寄りの零細IT会社を作って1年ちょいで得た知見 - terurouメモ1856172
8220SEの僕が業務でバリバリ使うExcel術14選+おまけ - 技術を磨くだいぱんまん1482171
83200僕がアクセンチュアを辞めた理由 - 元外資系コンサルタントがなぜ鎌倉で自給的生活をはじめたか?817169
8459「30過ぎたら利息で暮らせ」を意識しないと人生が詰んでいく - 太陽がまぶしかったから1171163
851753万円以上する靴を大切にする費用対効果の話 - ベンチャー役員三界に家なし851163
867730代で部長になった私が泣かされた「年上の部下」の実在サンプル7人衆とその上司としての接し方 - ひかる人財プロジェクト1082161
8751英語で「宜しくお願いします」をどう書けば?"ニュアンス語"を簡単に伝える英文メールの書き方 - 外資系OLのぐだぐだ1223160
88197人気ライターのヨッピーさんにオウンドメディアやPR記事について聞きました「大事なのは目先のお金より面白さ」 - はてなビジネスブログ820158
89103科学的調理法で作ったお手軽一人鍋がやばかった1010153
90166大企業で働くために必要なこと863152
9162これが大規模SIerな弊社のデファクトスタンダードな開発スタイルだ!! - そこに仁義はあるのか(仮)1143151
929826年間童貞だったぼくが彼女をつくるために学んだ4つの教え - 人生いつも三日ボーズ1023151
93198ディープラーニングでおそ松さんの六つ子は見分けられるのか 〜実施編〜 - bohemia日記822151
9410簿記の基礎と基本について10分くらいで分かるようにまとめてみる - ゆとりずむ1796148
95172何故、余っていたはずの会計士が足りないのか。854148
9623詳細PDF入門 ー 実装して学ぼう!PDFファイルの構造とその書き方読み方 - プログラムモグモグ1479145
97142プログラミング上達するためにだいじだなぁとおもったこと一覧907144
98105IT屋必見! 『コマンドプロンプト』のストレスが少し減る小技集 - ゆとりずむ1009143
9991無線LANは、素人は手を出さない方がいい - 中小事業所のオフィスインフラを考える - なからなLife1040140
10073修繕費を追加で払わなくて済んだ話1102136
101191「、」の打ち方ご存知ですか? だれも教えてくれない作文の技術 - モノよさらば832134
102132 「自分の考えがない」という人は考えたことを言語化していないだけかもしれない - 発声練習941133
103119[リスト]日常のいろんな現象972132
10466将棋の初心者がたった10ヶ月でアマチュア1級を取る方法 - コスパ最強!!一人暮らしの簡単節約料理レシピ1133130
1051【無料】最強のオンライン英会話学習サイトVerblingをなぜ誰もオススメしないのか - きりんの自由研究2614127
106199gumiという錬金術に群がった人々と、日本のスタートアップ業界の暗部【1】820127
10711もう全部パワポで良いや!PowerPoint魔改造アドイン7+1選 - リクナビNEXTジャーナル1695126
10841 プログラマ向けに書かれた「Soft Skills」という本がすごいという話 - サンフランシスコではたらくソフトウェアエンジニア - Higepon’s blog1290121
10961ジャズは古臭いと思ってるあなたに捧げる10曲1146121
110126行きつけのバーにあるウイスキーを全種飲んだ僕が初心者にオススメのスコッチを20本選んでみた。 - 道しかひかない堀江くらはのブログ961119
111141帰宅10分システマチック晩ごはんのススメ - glasstruct log912118
112372015年Webサーバアーキテクチャ序論 - ゆううきブログ1334117
113163そろそろ「プログラマー35歳定年説」を徹底論破しとくか - 書架とラフレンツェ869117
11484若者の保険の入り方を教える1052116
11554ジャズで食ってる俺がジャズ聴き始めたい人にオススメするTOP 101201115
11646意外と知られていない、はてブの神機能 - 誰も知らない世界がある。1265114
11749仕事が丁寧で遅い人に共通する、たった1つの問題点とその対策。 - プロジェクトマネジメントの話とか1241114
118183家庭にプロジェクト管理ツールを導入してみた - Mana Blog Next840114
11982子どもに「相対性理論って何?」と聞かれたときのために概要を分かりやすく簡単に解説してみた - Yukihy Life1060113
12090まるでモッツァレラ!? 塩と豆腐だけで作る「自家製塩豆腐レシピ」を絶対に試すべき - みんなのごはん1038110
121188リーダーをやって見えたこと、メモ836110
122168コレより主婦に優しいレシピを私は知らない…白菜と豚肉の味噌鍋 - 今日、なに食べよう?〜有機野菜の畑から~862109
1236799%減資とは何か? - ゆとりずむ1133105
12440WEB系各社で使われている監視ツールまとめ - mikedaの日記1295103
125127「仕事ができる」「仕事ができない」って要するにどういうことなん? - ひかる人財プロジェクト958102
126123エンジニアが左うちわでホクホクする。AmazonEC2を使い月額1000円程度で24時間FX自動売買環境を整える方法 - 電脳ミツバチのコンピュータ広報室96599
127155暇だったからValveの新入社員用マニュアルを2万字ぐらいで翻訳してみたよ - ゲーマー日日新聞88799
12812高速で論文がバリバリ読める落合先生のフォーマットがいい感じだったのでメモ - 書架とラフレンツェ166298
129185今更だが公認会計士がシャープの99%減資をざっくりと解説する。83998
130107夏の技術職インターンシップ講義資料公開 - クックパッド開発者ブログ100097
13178鶏胸肉のパサパサがやわらかくジューシーに?魔法の水を使った我が家の人気メニューとは。 - 家計とお買いモノと。108295
13218ご飯2合ぐらいならすぐに食べてしまう美味しさ「ネギ塩チキンライス」 - オレシピ - 俺のレシピはお前のレシピ-153194
133178【中毒性注意】えのきの旨味を爆発的に引き出すやみつき廃人飯レシピ - みんなのごはん84594
134181私はコレのおかげで結婚できたのではないか?…と思っているレシピ - 今日、なに食べよう?〜有機野菜の畑から~84393
135114新卒ソフトウェアエンジニアのための技術書100冊 - クックパッド開発者ブログ98192
136177日本語Webフォントの革命 - 3846masa's memo84792
13750ブログ収益が月10万円を越えたので、SEO対策とアフィリエイトについてまとめてみる - Literally123690
1381254か月分のエリ袖汚れが本当にきれいになった - AR LOG96289
1399Excelの本気!作業効率をアップする衝撃のアドインとツールまとめ - リクナビNEXTジャーナル181787
140106副業としてウェブショップを経営して1年100785
1416ある程度パソコンが使える人が「Excelが使いこなせるようになりたいぞー」と思ったときに独学できるサイト4個。 - おしい県でWebに携わって働く人のブログ203184
142120はてなブログでの収入が10万円を超えたので色々とまとめてみるよ - ゆとりずむ97383
143124プログラミングが捗りすぎる!コーディングに最適なフォント12選 - paiza開発日誌96282
14432誰にでも物語を作れる方法をアドバイスする番組がもの凄く良かったのでメモ!! - 強火で進め138081
145101本当に洒落にならない99%治る腰痛の治し方 - ドラねこ読書日記101381
146146Webシステムにおけるデータベース接続アーキテクチャ概論 - ゆううきブログ89977
14752「世界文学ベスト100冊」は、どの1冊から読み始めればいいか - キリキリソテーにうってつけの日120976
148190ビル・ゲイツ絶賛!Microsoft澤円氏の「結果を出すビジネス会話」6つの極意 - リクナビNEXTジャーナル83376
149100みんなで行くと間違いなく盛り上がる“インパクト肉”の名店7選 - リクナビNEXTジャーナル101574
150140世界で1番美味しいトマトソースの作り方 - コスパ最強!!一人暮らしの簡単節約料理レシピ91474
151196無印良品を愛するMUJIラーが選ぶ、本当に買ってよかったモノと活用事例を紹介します。 - 家計とお買いモノと。82174
152145Mac の開発環境構築を自動化する (2015 年初旬編) - t-wadaのブログ89973
153149ブログを始めて1年で毎月9万円稼げるようになった超具体的な方法 - やぎろぐ89273
154153俺の知ってるアイロンと違うんだが・・・洗濯王子の魔法のアイロン術 - BLUE PLANET89173
15555英語初心者がたった3ヶ月でTOEICで800点取る方法 - コスパ最強!!一人暮らしの簡単節約料理レシピ119772
156159絶対に喜ばれる!一流出版社の編集者が実践する差し入れ術と接待の鉄板店【中川淳一郎の「今も飲んでいます」第八回】 - みんなのごはん88272
157173はてなで大規模サービスのインフラを学んだ - ゆううきブログ85271
15843データサイエンティストというかデータ分析職に就くための最低限のスキル要件とは - 東京で働くデータサイエンティストのブログ127470
159112「もう少し面白い文章を書きたい人」に、読んでみてほしい7冊 - いつか電池がきれるまで98668
1601301/2個ぐらいならペロリと食べられる。白菜大量消費におすすめ「白菜のナムル」 - オレシピ - 俺のレシピはお前のレシピ-94767
161147Backbone.JSからAngular2まで、全9大JavaScriptフレームワークを書き比べた! - paiza開発日誌89764
162121満足できる物件を探すために僕がした事 - 文字っぽいの。96963
163167営業出身の30代おっさんがプログラミングで人生を変えた話86363
164193【瞑想】一流企業が続々導入!脳の究極メンテナンス術を分析・実践しよう。 - プロジェクトマネジメントの話とか82862
16513催促・お詫び・お断り…送りにくいメールをスマートに送る プロの具体文例集 - リクナビNEXTジャーナル163260
16631株式投資をやるなら絶対読んでおきたい本 - クソログ138560
16724メールで使える英語のつなぎの言葉147559
16844資料作成スピード3倍?本当に使えるパワポ&ワードの厳選高速化テクまとめ - リクナビNEXTジャーナル126858
16919【永久保存】人生を最高に楽しくするTEDおすすめ10選 - コスパ最強!!一人暮らしの簡単節約料理レシピ150857
17029「わかりやすい説明をする人」と評価されるプレゼン術。作り方と話し方。 - 僭越ながら【1テーマの本を30冊読んで勉強するブログ】141156
17170LCC格安航空券セール情報を見逃さないための3サイト - きりんの自由研究111556
172136アフィリエイトで月100万円稼ぐための考え方と手法 - 冒険の書93556
173102英語を辞書なしですらすら読めるリーディングスキルは、こう勉強して身に付けた - こんにゃくマガジン101355
17479ITエンジニアなら知っておきたい、今更聞けないアルゴリズムの種類一覧 - paiza開発日誌107454
17527英語勉強中なら絶対読んでおくべき、2014年話題の記事ベスト50 - enticle144451
176165ネットで簡単にプログラミングが勉強できるProgateが凄すぎる件について - タコの卵86551
177156アフィリエイトサイトを制作する時に見本にしたいサイト11選+αとサイトをチェックする際の注意点 - 冒険の書88450
17894勉強で最も重要な「反復訓練」の手順。これ無しに熟練者になることはあり得ない。 - 僭越ながら【1テーマの本を30冊読んで勉強するブログ】103548
179110「考えが浅い」「発想が平凡」なのは、"考えるステップ"を実践していないから - 僭越ながら【1テーマの本を30冊読んで勉強するブログ】98945
180143Bootstrapよりキレイ!Googleのマテリアルデザインキット - ku-sukeのブログ90845
181161このクオリティで全部無料!?語学学習Youtubeチャンネル55選! - ただの妄想87442
18286たった4ヶ月でTOEIC350点から日常英会話が出来るようになった英語勉強方法 - TAKULOG 3104940
18399英語を学ぶのに最適! おすすめのYoutubeコメディ番組チャンネル5選 - 大阪でベンチャーやってます102040
184138集中力と記憶の定着率が高まり、体系的な知識が身に付くアウトプット勉強法 - 僭越ながら【1テーマの本を30冊読んで勉強するブログ】93240
185162はじめてでも爆速でCentOS6.6(さくらのVPS)をセキュアにセットアップする方法まとめ - 憂鬱な世界にネコパンチ!87340
186154読みやすくて分かりやすい会計入門書三選(簿記・財務会計・管理会計) - ゆとりずむ89139
18792独学に最適!初心者が短期間でプログラミングを学べるサービス11選 - paiza開発日誌103637
188104もっとお金について詳しくなれる記事まとめ(2015年版)!住宅や税金などの家計に関するお金から、経済、金融、投資まで幅広く紹介。 - クレジットカードの読みもの101133
189135データサイエンティストを目指すというかデータ分析を生業にするなら読んでおきたい初級者向け5冊&中級者向け12冊(2015年冬版) - 東京で働くデータサイエンティストのブログ94333
190179【常備菜】作り置きできるおかずのレシピ15選 - やぎろぐ84632
191192英語の勉強に超役立つ!絶対におさえたいおすすめの良記事・良書・良アプリ51選 - Appism83032
192111提案書や企画書づくりが驚くほど捗る!無料で入手出来る統計データ総まとめ。 - 髪の毛がフニャフニャすぎて泣きたい。98931
193157初心者でもほぼ無料で楽しくRubyを学べるコンテンツ12選 - paiza開発日誌88231
194184勉強に役立ちそうなエントリの一覧 - 大人になってからの再学習84331
195115初心者でもほぼ無料でJavaScriptを勉強できるコンテンツ17選 - paiza開発日誌97729
196194TOEICは教えてくれない、日常英会話のざっくり学習法 - やじーのブログ82729
197116株式投資の初心者向けまとめ(入門者用の自薦記事) - 株式、FXのまとめ解説ブログ97725
198113WEB界隈で働く人が重宝しそうな「WEBマーケティング」と「SEO」のチートシート6+2個まとめ。 - おしい県でWebに携わって働く人のブログ98222
199139はてなブックマーク - 【悲報】NHK の『おかあさんといっしょ』が残酷な格差社会の現実を描写! - この世の果てブログ54
20087はてなブックマーク - だいたいひとりで、あんまりお金をかけずに株式会社を作る方法。あと必要な費用とか。 - Pythonでも金融工学でもない。30

2015-12-27

http://anond.hatelabo.jp/20151227000612

アーキテクチャ的にも美しくないんだよ。

アスキーコードに、ノーマルのAと、ボールドのAと、イタリックのAに別々のコードが割り当てられていて、状況によって同一の文字とみなしたり、違う文字とみなしたりしなきゃならないようなことになってるのが日本文字コード

何言ってるの?アスキーコードにはボールドイタリックも無いし、全角半角を同一にするのはプログラム側の問題文字コード問題ではないでしょ。

http://anond.hatelabo.jp/20151226235016

アーキテクチャ的にも美しくないんだよ。

アスキーコードに、ノーマルのAと、ボールドのAと、イタリックのAに別々のコードが割り当てられていて、状況によって同一の文字とみなしたり、違う文字とみなしたりしなきゃならないようなことになってるのが日本文字コード

2015-11-18

ゲームチャット諜報機関にとって悪夢である理由

テロリストゲーム機(PS4)のゲームチャット機能を使ってるかも、っていう報道が出ている。

この件でPS4を叩いても仕方が無い。というのはPS4に限らずゲーム内のチャットテロリストが会話を行うのに適した理由がこんなにも多いから

① 膨大なチャネル

会話経路がゲームの数だけ、星の数ほどある。NW的にはPSNを利用していても、プロトコル暗号方法ゲーム毎に異なるのでPSNの根っこで監視をしても結局各ゲーム毎に解析方法を作らなければならない。『釣天使』とかかわり合いたいと思うほど諜報機関は暇では無いだろう。

そして、ゲームの数はアーキテクチャの数であり、それぞれ異なる方式情報が伝達されている。あるゲームではメッセージサーバ集中管理でも、また別のゲームではP2P通信だったりする。それらを複合的に扱っている場合もあるだろう。テロリストとは無関係第三者ゲーム機ホストとして会話が行われ、運営者側では会話ログを一切持っていない、こんなケースはいくらでもあるだろう。

サイバー犯罪対策法はログ保存を事業者義務づけているが、P2Pアーキテクチャではそもそも事業者との通信自体が行われていない。

チーターとの戦いで洗練された暗号

オンラインゲーム運営は常にチーターとの戦いだ。ゲーム運営者はゲーム機サーバの間の通信が解読されないように暗号化を当然のように行っているし、鍵割れ対策として鍵交換も頻繁に行われている。また、暗号アルゴリズム自体カスタマイズしていることが多い。

平文でへろへろとメッセージが飛んで行くEmailとは根本的に設計運用レベルが異なる。

豊富ゲームコミュニケーション手段

ゲーム世界コミュニケーションに使える手段豊富だ。プレイヤー同士でコミュニケーションが取りやすいようにチャット機能の他にも各種のアクションメッセージ伝達手段豊富に用意されているし、符号化の方法さえ決めておけばあらゆるゲーム内のオブジェクト通信に使える。

ポケモンを繰り出す順番でメッセージを伝えることもできるだろうし、ゲーム内のインクで床に書いても良い。そこから第三者意味を感知するのはほぼ不可能だ。これらはもちろんログにも残らない。ゲーム内の全行動・全会話(音声含む)を保存しておけるようなリソースはどこの会社も持っていないし、そんなことに浪費しようとすれば株主が黙っては居ないだろう。

④ 木を隠すための森の存在

ゲーマー攻略のために「強い目的意識」を持った「物騒な会話」を日常的に行っている。

何時に集合してなんとかを殺す、とか爆弾を仕掛けてXXが通ったら起爆するとか、普通の会話の中ではあんまり出てこないがゲーム内ではごく普通の会話だ。仮に傍受/平文に解読を出来たとしても、どれが善良な市民の会話でどれがテロリストの会話か識別するのは辛いことだろう。

追記:

大多数のITエンジニア通信暗号化の基盤として信頼していたOpenSSLに巨大な脆弱性"HeartBleed"が昨年発見され、その脆弱性NSAが事前に把握していた、という昨年の事件オープン暗号化基盤さえも国家レベル諜報機関に対しては大穴が空いている可能性を示唆するものだった。

このような背景の元では、テロリストが「通信の内容」よりも「通信存在」の秘匿、そして事後の捜査のしづらさを重視したとしても不思議ではない。

ブコメトラバでも指摘されているが、事後的に平文の会話ログや行動ログ運営会社に提出させることそれ自体は可能だろう。

しかし巨大IT企業通信会社比較して捜査慣れ(証拠提出慣れ)していない、しか英語が十全に通じるか怪しい国にある運営会社からログを入手し、ゲーム仕様依存するログを読み取る時間と手間を考えたとき、この夢と虚構暴力世界秘密の謀りごとを埋める森として十分な広さがあるように思えるのだ。

2015-11-15

正義Google世界征服を行う方法

Google親会社である「Alphabet」の社訓は"Do the right thing"(正しいことをしなさい)らしい。

1.Googleの人たちが情報収集を行うのは、悪いことではない。むしろ企業サービスを充実させ、ユーザーをより便利にさせるから良いことだ。(right thing)

2.IMEで.ユーザー入力情報収集するのだってユーザーを便利にする。(right thing)

3.検索情報をかき集め、ユーザーの興味、思想と言った動向を調べるのだって、なんか……いろいろ役に立ちそうじゃん?(right thing)

4.Javascriptとか、そういった独自フレームワーク定義して、それらでシェアを獲得するのだって、より開発者を便利にすることじゃん?(right thing)

5.くまのプーさんだかパンさんだか知らないけどそれを使って、SEOだっけCEOだっけ?に基いて、検索結果をGoogle定義したものの順に表示するのはいいことじゃん?(right thing)

6.容量無制限最近話題になったGoogleフォトを人工知能の餌にするのだってユーザーを便利にするじゃん?(right thing)

7.ありとあらゆる情報を獲得して、Googleの決めたこと以外に逆らえなくなっても、Googleはありとあらゆる情報Googleが決めた法則や決まり事によってユーザー提供されるんだ。

それはきっと、ユーザーを便利にしていくことだから素晴らしく、正しい事なんだよ。

皆がGoogleに付き従うことは、国家に付き従うことと違って革命テロ犯罪すら起こせない。

なぜなら、我々が付き従うGoogleの作ったアーキテクチャは、Googleの作ったプログラムという絶対法則世界のうえで成り立つのから

素晴らしいことじゃないか。

みんなもGoogleに従おう。Googleは"Right thing"を行うんだ。Googleは"Only right thing"を行うわけじゃない。

2015-11-12

参考訳:拡散したJavaシリアル化の脆弱性についてApache Commons声明

原文:https://blogs.apache.org/foundation/entry/apache_commons_statement_to_widespread

原題Apache Commons statement to widespread Java object de-serialisation vulnerability

翻訳日:2015年11月12日(午後にタイトル日本語しました)

----

2015年11月1日 火曜日

Apache CommonsJavaオブジェクトのデシリアライゼーション脆弱性に関するステートメント

著者:Bernd Eckenfels(コミッター), Gary Gregory(Apache Commons副責任者)

AppSecCali2015 でGabriel Lawrence (@gebl) と Chris Frohoff (@frohoff) によって発表された "Marshalling Pickles - how deserializing objects will ruin your day" は、信頼されないソースからシリアル化されたオブジェクトを受け取るときセキュリティ問題をいくつか明らかにしました。主な発見は、Java オブジェクトシリアライゼーション(訳注:seriarization/シリアル化/直列化=ネットワークで送受信できるようにメモリ上のオブジェクトデータバイト列で吐き出すこと。シリアル化されたJava オブジェクトRMIなどのリモート通信プロトコル使用される。)を使用する際に任意Java関数の実行や操作されたバイトコードの挿入さえもを行う方法説明です。

Frohoff氏のツールである ysoserial を使って、Foxglove Security社のStephen Breen (@breenmachine) 氏はWebSphereJBossJenkinsWebLogic、OpenNMSといった様々な製品調査し、(http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/) に各々の様々な攻撃シナリオ記述しています

両者の調査活動は、開発者Javaオブジェクトシリアライゼーションに信頼を置きすぎていることを示しています認証前のシリアル化されていないオブジェクトにも。

Javaにおけるオブジェクトのデシリアライゼーション(訳注:de-serialization/非直列化=ソフトウェアで扱うことができるように、送受信されたデータを元に戻すこと)が行われるとき、大抵は想定された型にキャストされ、それによって、Javaの厳しい型のシステムが、得られた有効オブジェクトツリーだけを保証しています

不幸にも、型のチェックが起こるまでの間に既にプラットホームコードが生成されて、重要ロジックは実行されてしまっています。そのため、最終的な型がチェックされる前に、開発者コントロールを離れた多くのコードが様々なオブジェクトの readObject() メソッドを通じて実行されてしまます脆弱性のあるアプリケーションクラスパスから得られるクラスの readObject() メソッドを組み合わせることで、攻撃者は(ローカルOSコマンドを実行するRuntime.exec()の呼び出しを含めて)機能を実行することができます

これに対する最も良い防御は、信頼されていないピア通信相手)とは複雑なシリアルプロトコルを使うことを避けることです。ホワイトリストアプローチ http://www.ibm.com/developerworks/library/se-lookahead/実装するように resolveClass をオーバーライドするカスタム版の ObjectInputStream を使うと、影響を制限することができますしかしながら、これは常にできることではなく、フレームワークアプリケーションサーバがエンドポイント提供しているような時にはできません。簡単な修正方法がなく、アプリケーションクライアントサーバプロトコルアーキテクチャを再検討する必要があるため、これはかなり悪いニュースです。

これらのかなり不幸な状況において、エクスプロイトのサンプルが見つかっています。Frohoff氏は、 Groovy ランタイムSpringフレームワークApache Commons コレクションからクラスを組み合わせるサンプルのペイロードに gadget chains (ガジェット・チェーン)を見つけています(訳注:provided)。これはこの脆弱性エクスプロイトのためにより多くのクラスを組み合わせられることは完全に確実なことで、しかし、これらは今日攻撃者が簡単に得られるチェーンです。

(Twitter画像)https://blogs.apache.org/foundation/mediaresource/ce15e57e-94a4-4d7b-914c-8eb8f026659c

この脆弱性のために利用される(訳注:blamed)ことができない確かな機能実装するクラスができ、安全性が信用できないコンテキストにおけるシリアル化を利用されないようにするような既知のケースの修正ができたとしても、少なくとも分かったケースだけでも継続的修正していくことが要求されますモグラ叩きゲームを始めるだけであるかも知れませんが。実際にはこれは、オリジナルチームが Apache Commons チームに警告が必要だと考えていない理由で、それゆえに比較的、活動開始が遅れました。

Apache Commons チームは InvokerTransformer クラスのでデシリアライゼーションを無効化することによって commons-collection の 3.2 と 4.0 のブランチにおける問題対処するために、チケット COLLECTION-580(http://svn.apache.org/viewvc/commons/proper/collections/branches/COLLECTIONS_3_2_X/src/java/org/apache/commons/collections/functors/InvokerTransformer.java?r1=1713136&r2=1713307&pathrev=1713307&diff_format=h) を使っています議論されているやるべきことのアイテムは、変化させる仕組み毎(per-transformer basis)に、プログラマティックに有効にするような機能提供するかどうかです。

これには前例がありますOracle と OpenJDK JRE の一部であったり、バイトコードを挿入して実行することを許したりする com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl クラスで、セキュリティマネージャー定義されているとデシリアライゼーションを拒否します。

これはシステムプロパティ jdk.xml.enableTemplatesImplDeserialization=true とすることで無効にできますApache Commons Collection は、本来よりもこの実行モデルは一般化していないため、セキュリティマネージャー存在独立したこの機能無効化することを計画しています

しかしながら、明確化のために述べておくと、この便利な"ガジェット"は、唯一知られている方法でもなければ、特に未知のものでもありません。そのため、インストールされたものを強化されたバージョンApache Commons Collection に置き換えることが、アプリケーションをこの脆弱性に対抗できるようにするわけではありません。

このブログポストレビューのために Gabriel Lawrence に感謝したいと思います

Apache Commons Collection は、Java コレクションフレームワークに加えて追加のコレクションクラス提供する Java ライブラリです。InvokerTransformerコレクションにあるオブジェクトを(特にリフレクション呼び出しを通じてメソッドを呼び出すことで)変換するために使うことができる Transformer ファンクションインターフェース実装の一つです。

一般のSallyによる2015年11月10日午前10字15分にポスト | コメント[1]

コメント

OracleWeblogicセキュリティアラートを発行しています

http://www.oracle.com/technetwork/topics/security/alert-cve-2015-4852-2763333.html?evite=WWSU12091612MPP001

提供されている回避策は、T3プロトコルへのアクセス(とリバースプロキシーにおけるT3メソッドフィルタリング)です。

2015-11-11

100年したら流石にコンピュータアーキテクチャ変わってるんじゃないか

2015-06-09

佐野  千遥 さの ちはる

セント・クレメンツ大学教授

ロシア科学アカデミースミルノフ物理学派論文審査員

東大基礎科学科卒。過去250~340年間世界の大数学者達が解こうとして解けなかった、世界史数学難問4つを解き、現在ロシア科学アカデミー数学の部で審査中。マスターした11ヶ国語を駆使したプロ通訳翻訳家矛盾だらけの現代物理学を初め、全科学自然社会人文科学)の主だった物を体系的に批判し各々に別体系を提起。各種受験生(医学部難関大学入試数学オリンピック社会人大学院入試、IT関連資格)支援

■経 歴

2002年 (至現在セント・クレメンツ国際大学 物理学教授

2001年 英国セント・クレメンツ大学で数理物理学博士号取得

2002年 ロシア科学アカデミー・スミルンフ物理学派論文審査員となる

1999年 英国ウィットフィールド大学コンピュータ科学人工知能博士号取得

1991年 (~1993年)University of California、 Irvine人工知能研究所確率論批判・学習システムの研究

1988年 (~1991年世界認知科学権威ロージャー・シャンクのCognitive Systemsのデータベース研究所IBSで自然言語処理研究

1986年 (~1988年)欧州先端科学研究プロジェクトESPRITにESPRITディレクターとして仏Telemecanique研究所より参加(生産ラインへの人工知能導入の研究)

1985年 西独ジーメンスミュンヘン研究所生産ラインへの人工知能導入の研究

1982年 (~1985年)[仏国]世界一速い列車TGVのメーカーAlsthom社の知能ロボット研究所

1981年 (~1982年)[仏国]グルノーブル大学院、ソルボンヌ大学院通訳国家免状取得

1980年 (~1981年)[スペイン]マドリード大学院言語学履修 西国政府給費留学生

1971年 東京大学基礎科学卒業数学物理学専攻)

■専門分野

数理物理学Ph.D.コンピュータ科学人工知能Ph.D.マスターした11カ国語を駆使したプロ通訳翻訳家

■講演テーマ

ビジネスマン文系社員理工系技術技術発明評価できる眼を」

近年世界大学ビジネス志向学生向けに、理系技術的な事がある程度分かるためのカリキュラム改変が始まっている。しかし申し訳程度であり、また理系の拠って立つ数学物理学科学理論自体に欠陥が有る事が最近明らかとなっているため、正しい数学物理学の粋を伝授し、文系でも本物の理系技術評価が出来るように支援する。

英語完璧に&現地語(非英語)を或る程度使えるマネジャー急遽創出と、社員の中から国語通訳ネーティブに肉薄する敏捷性と正確さで急遽育成を支援

海外プロジェクト企業と折衝するとき英語ネーティブ並みであったり、現地語を自社のディレクター自身がある程度こなせるか、英語、現地語につきネーティブ並みの社員通訳出来ると先方との話が大きく好転する場合が少なくない。それを本当に実現する教育訓練を私は提供できる。平明に説明し、実体験をしてみたい方がいらっしゃるなら講演会場で手解きをしてみたい。

発見された言語学理論外国語訓練方法論を基に、文科省英会話学校英語教育訓練方法論の根本的誤りの中枢を詳説」

統語法意味論、文脈意味論、実世界意味論の3レベルで進展するネーティブ母国語習得過程の中、言語能力の真の中枢は解説も無しに親の喋るのを聴いているだけで分かるようになる統語法的意味把握能力で、これは文法用語を全く使っていなくても徹底した文法訓練となっている。ネーティブが敏捷性、精度の点で万全であり、先ず文法的間違いをすることはない理由はここにある。全文法分野について書き換え問題の「即聞即答訓練」を一気に中学生以上の年齢の人に施し、全文法のビビッドな一覧性を習得させるとネーティブに肉薄する敏捷性と精度で外国語を使いこなせるようになることが発見された。

「<証明された欠陥数学> 確率統計と微積分学のビジネス金融工学保険業界での使用に対する警告と、それに取って代る新数学体系」

我々物理世界は離散値の世界であることが原因で、物理世界に住む人間頭脳が考え出した数学の中で連続実数値に基づく確率統計学微積分学だけが欠陥数学として発現していることが証明された。決して建設的な予測をすることができず、崩壊していく事象に後ろ向きにしか適用できず、せいぜいリスク管理にしか使い道の無い確率統計学ビジネス学の分野では金科玉条の如く信用し積極的やり方で利用しているが、ここに「理論」と現実との間に大きな食い違いが生じている点に警告を発したい。そのためそれに取って代る新数学体系を提起する。全てを分かり易く解説します。

「新エネルギーエコ向けの発想を大転回した技術的な重要な発明を提起」

20世紀初頭に数理物理学者Henri Poincareは二体問題までは解けるが三体問題(三つの星が互いに重力で引き合いながら運動している時の時々刻々の位置を計算で求める事)以上は微積分学を使って解く事が出来ない事を証明した。これは無限小差分を使う微積分は計算式中で交差する項をほぼ同等とみなして相殺してしまうため、作用反作用法則(F1*v1=-F2*v2)の取り違い(F1=-F2が作用反作用法則である圧倒的多数が信じている)と相俟って、交互に対称な運動しか記述できないため、対称性の有る二体までは記述できても対称性のない三体以上は記述できないためである。この欠陥数学微積分を基に二体までは「エネルギー保存則」を証明したものの三体以上の「エネルギー保存則」は本来的に証明不可能であることが明らかと成った。現に永久磁石エネルギー保存則を大きく超えることが実証され始めている。それらの実験につき具体的に物理学の素人の方々にも分かりやすく報告したい。

世界史的体系的誤りに迷い込んだ現代物理学とその使用者への警告とそれに取って代る新物理学

現代物理学の二本柱、量子力学相対論の中、量子力学水素原子原子核と軌道電子関係説明を辛うじて試みただけで、水素原子より複雑な原子分子の構造の説明に実は悉く失敗し、繰り込み・摂動理論はその失敗を隠すため後に持込まれた。軌道電子光速に比べ無視できぬ速度でクーロン力原子核に引かれて急カーブしながら等速加速度運動、大量のエネルギーを消費するが、半永久的に軌道を回る。しかしシュレーディンガー波動方程式(その波動関数とその共役関数の積は確率)はエネルギー消費に一切言及せず、エネルギーレベル一定に保たれるという明らかに矛盾した論を展開する。また確率を持ち込んだからには、エントロピー単調増大法則がここに適用され、水素原子は瞬時に粉々に飛び散らなければならぬ現実に反する二つ目の重大矛盾に遭遇するが、これもシュレーディンガーは見てみぬ振りをする。つまり水素原子の構造の説明にすら量子力学は完全に失敗した。量子力学とは動力学でなく各エネルギーレベルについての静力学でしかなく、「量子力学」の「力学」なる名前とは裏腹に力を論じられない。論じればエネルギー消費が起こりエネルギーレベル一定論が崩れる。

現代フォン・ノイマンコンピュータアーキテクチャーの誤りと、創るべき新コンピュータアーキテクチャー」

現代フォン・ノイマンコンピュータ計算機モデルが取りも直さずチューリングマシンのものであるチューリングマシンは決ったパラメータ数の状態間の遷移を静的モデル化したものであるのに対し、歴史的にその直前に発表されたアロンソチャーチ計算モデルラムダ・キャルキュラス(人工知能プラグラミング言語LISP言語理論でもある)は関数の中に関数が次々に入れ子のように代入されて行き擬パラメータが増えていくダイナミックな仕組みを持つ。この後者人間が作ったコンピュータを遥かに凌ぎ、宇宙の始原から発生した環境データから関数をf1(t),f2(t),.,fn(t)と次々に学習し入れ子のように代入進化し、次の一ステップ計算には宇宙の始原からの全ての関数f1,f2,...,fnを思い起こし、そのそれぞれの差分を取って掛け合わせる事をしているコンピュータとも言える物理世界とその時間学習進化時系列順に模写するのに持って来いの仕組である関数と言っても多項式で充分である事を世界の7大数学難問の一つPolynomial=Non-Polynomialの私の証明も交えて平明に解説する。これは日本の国と世界先進諸国コンピュータ科学の今後の研究方向を左右する発言となる。

■実 績

【講演実績】

大学大学院2002年以来常時講義

Trinity International University

コンピュータ科学」 学士号コースの学生卒業まで全コースを講義

St.-Clements University

金融工学必要数学物理学」の博士号コースの学生3年間に渡って講義、研究テーマと研究内容、博士論文アドバイス

St.-Clements University

研究テーマ「コルモゴロフ複雑系の二進ビットストリングの下限=Lower bound for binary bitstring in Kolmogorov complexity」の博士号コースの学生Dr. Bradley Ticeに英語アドバイス

St.-Clements University

外国語学部ポルトガル語伊語通訳翻訳学士号コースの学生教養学部レベルから社会科学経済学法律学社会学経営学)、人文科学哲学言語学心理学歴史学)、自然科学数学物理学化学生物学、医学、計算機数学)、エンジニヤリングInformation Technologyソフトウエア工学電気工学電子工学)の各々の学科の全講義を行う。

Госдарственный Университет Санктпетербургской Гражданской Авиации (サンクトペテルブルグ国立航空大学)

物理学学会の論文発表会で幾多の論文の露語によるプリゼンテーション。

メディア出演】

ロシアで3度物理学権威スミルノフ氏とTV出演、ロシア

【執筆】

学会物理学論文多数発表

ti-probabilistic Learning by Manifold Algebraic Geometry, SPIE Proceeding, 1992 Orlando 等 人工知能学会論文

日本国内では著書「人工生命人工知能」「超勉強法超批判」

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