はてなキーワード: ユーザーインターフェースとは
プログラマじゃないけどプログラミング完全に理解した()おばさんが理解してる基礎知識書くよ。
(追記 この文章はプログラミングの勉強をしたいけどその周辺にある基礎知識になかなか触れる機会がない人向けに書きました。これらの基礎知識があると、困ったときに調べ方すら分からないという状況は回避しやすくなるはず)
ターミナル、いわゆる黒い窓からCUI(コマンドユーザーインターフェース)でコンピュータを使う方法を覚えよう。これは大学のコンピュータリテラシーで習った。MacOSXで復習すると捗った。(追記 すごく間が抜けてたけどMacOSXはUnix系OSです)
まずはファイル操作。Macでターミナルを使って、cd Desktopって打ってからecho ohayou > aisatsu.txtって打ってみて、cat aisatsu.txtってやる。そうすると何が表示されるのか?とりあえずやってみよう。ここで>は増田の都合上大文字全角にしてるけど、ちゃんと半角にしてね。なんで増田の都合上半角がダメなのか、そのうち想像できるようになろう。(追記 ブコメ指摘感謝)
そして、実際にデスクトップを見に行ってみると、aisatsu.txtってファイルがあるはずなんで、開いてみよう。これで何が起こったのか7割くらいはわかるはず。
こういうファイル操作の基本をまず覚えよう。これこそ空気みたいなものだから。
(追記 ここも間が抜けてたけど確かにhogeって何かわからないね。直しました)
最近は何も考えなければ文字コードはとりあえずUTF-8でなんとでもなるようになってるけど、バックスラッシュとかは環境設定で出てくるように設定しないと出てこないし、その意味合い、つまりエスケープとしての使い方を頭に入れておくと後々困らないと思う。あとEOF(エンドオブファイル)とか改行コードとかもそういうものがあるよ程度には覚えておこう。これ頭の片隅にはいってないと分からん殺し的な罠にはまることがある。
これは使いたいプログラミング言語の公式サイトに行くと大抵書いてある。
でもMacだとだいぶ楽。とりあえずターミナルからgccって打ってみるとなんかCUIツールとか書いてあるものをインストールしろって言われるのでインストールする。これだけでCとかC++とかRubyとかPythonとか一通り使えるようになる。もしかしたら最近はこのインストールすらいらないかもしれないけど。
あと、シェルのコマンドとかプログラミング言語を実際に使うときはいろんなライブラリをインストールする必要があるけど、そのライブラリは管理がすごく面倒なので管理をまとめてくれるコマンドがあったりする。aptとかhomebrewとかがそういうのだから、そんなものの使い方も覚えておこう。
(追記 言語の文法を追うだけなら環境構築なんてしなくてCloud9とか使ってもいいかもだけど、プロダクトを作ろうとした時にはまだまだ手元で環境作って必要なライブラリを入れてとやった方が後々応用がきくと思うのですよ。それにそうしていくとDockerの有り難みなんかも理解できるようになっていくのではと思います)
最初に勉強するプログラミング言語は、Javaだけはやめておけ。
なんでかっていうと、Javaはオブジェクト指向言語ってやつなんだけどオブジェクト指向的にしか書けないから。古い人間だと言われそうだけど、最初は手続き型言語から始めるべきだと思ってる。少なくとも、手続き型的に書ける言語から始めるべき。
なぜそう思うのかも含めて、とりあえずおばさんが理解しているプログラミング言語の発展の経緯を軽く解説する。
最初の頃のプログラミング言語は、手続き型と呼ばれるものが多かった。
この〇〇型ってのはプログラミングをするときの考え方によって名前がついているんだけど、手続き型はまず0を作って、0に1を100回足して、最後にその結果を表示してください、みたいな、上から書いた順番通りに動くのが基本のルールである考え方。プログラムは基本的にはこうやってデータをアルゴリズムを使って変化させていって望む結果を得ている。でもこのやり方は問題も多かった。プログラム全体がひとかたまりになってしまっているので、数千行とかになるともう普通の人では手がつけられないし、人間のミスでデータを間違って扱ってしまうことがバグの温床になった。
なので、この手続き型の考えに構造化という考えが加わって、関数というものが生まれた。関数っていうのは料理のレシピに例えるとわかりやすいかも。
5:豚こまを入れて色が変わるまで炒めます。
9:火を消して8をお皿に盛り、野菜炒めの出来上がりです。
B:肉に味付けをします。
2:Bを入れて色が変わるまで炒めます。
3:Aを入れてしんなりするまで炒めます。
4:火を消して3をお皿に盛り、野菜炒めの出来上がりです。
って書ける。ここではAとBが関数。
この程度だとあまり意味を感じないかもしれないけど、これがもっと複雑なものを想像してみると、なんとなくありがたみが分かって来ないだろうか?こうすると、多人数でプログラミングをするときに、Aを書く人、Bを書く人、1〜4にまとめる人って感じで作業分担ができる。それに、バグが起きた時もAの領域でバグったのか、Bの領域でバグったのかとか、全体にまとめると上手くいかないのかとか、原因の切り分けがしやすい。
でも、プログラムがとっても複雑化すると、これでも手に負えなくなる。料理の例えを拡大すると、料理店を運営することを考えるといいかも。
料理店でたくさんの料理をさばくときに、レシピを完全に1から作ることってないと思う。Aさんが野菜の仕込み担当、Bさんがスープの仕込み担当、というように各人に仕事が割り振られているはず。AさんもBさんもそれぞれの仕込みのレシピを持っていて、最終的に出てくる仕込みがちゃんとしてればAさんBさんの仕事の詳細までいちいちシェフが細かくチェックしない体制になっていると思う。大雑把にいうとそういう考え方をプログラムで再現したのがオブジェクト指向型言語。
なので、本気で料理の初心者がいきなり厨房の仕切りを任されて上手くいくのは難しいように、構造化プログラミングのありがたみすらわからない段階でオブジェクト指向型プログラミングに手をつけても意味がわからんだろうと思うのがおばさんの立場です。
(追記 おばさんはRubyを勧めておきます。オブジェクト指向型言語ですが、手続き型的に書き下すことも出来るからです。一つの言語で手続き型構造化オブジェクト指向、全部勉強できます。メソッドも便利なのが一通りあるし、日本語を扱うのにも問題が少ないです)
次に問題を分解できるようになろう。
例えば、クイズゲームを作りたいと考えたときにクイズゲームを作りたいです、って問題は大きすぎる。
クイズゲームに必要な要素は、問題文を表示する、回答を入力してもらう、正誤判定をする、正誤判定の結果を表示する、ということだなぐらいにまず分解する。
これを実際にプログラミングしようとすると、もっと分解できてさらに問題が見えてくると思う。
コンピュータってのは創造的なことはできない代わりに、とても簡単なことをとても階層的に重ね合わせて大きな問題を解けるように作られてる。それを心するといいと思う。
これ超大事。プログラミングって本当に自分で1からものを考えなきゃいけないことってあまりない。大きな問題はあなただけの問題かもしれないけれど、それを構成する小さな問題は大抵他の誰かが解いている問題なので、調べてみれば答えが見つかると思う。
エラーメッセージが出てきたらまずググってみる。翻訳しても初心者には意味がわからないし、ググったら誰かが解説付きで紹介してくれているのでその解説を読んだりしながらエラーメッセージとの付き合い方を覚えていけばいい。
メソッドの使い方がわからなかったら言語の公式サイトに行ってみる。メソッドの使い方で大事なのは呼び出し方、返ってくる値の型とかそういうのだから、こういうところはググるよりも公式サイトに書いてあることをしっかり読んで理解する。
あと、アルゴリズムの勉強もしてみるといいと思う。アルゴリズムとデータ構造と計算量の勉強。大学の学部レベルの教科書をちゃんと読んでみると、例えばデータベースを操作するSQLというものを書くことになった時とかに効いてくる。あとは作ったプログラムが遅すぎてどうしようとかいうのを解決する時とか。
なんか深夜までいろいろ書いてしまったけど、あくまでもプログラマじゃないおばさんが書いたものなので、みんなでツッコミとか入れてくれると大変助かります。
ユーザーインターフェースが進歩してITスキル要らなくなっちゃうかもしれないよ
8月21日頃にはてなブックマークのユーザーインターフェースが大幅リニューアルされ、かなり不評でユーザー離れが懸念されていた。 http://bookmark.hatenastaff.com/entry/2017/08/21/210000
その後ユーザーが増えたか減ったかははてなにしか分からないだろうが、一般ユーザーからも観察可能なホットエントリに付くブックマーク数で推測してみたい。
2017年8月(31日除く) | 605011 |
2017年9月 | 622388 |
2.9%増加した。
カテゴリ | category | 2017年8月(31日除く) | 2017年9月 | 増減 |
---|---|---|---|---|
世の中 | social | 14624 | 14305 | 98% |
政治と経済 | economics | 14190 | 12896 | 91% |
暮らし | life | 18972 | 19460 | 103% |
学び | knowledge | 12753 | 14225 | 112% |
テクノロジー | it | 19858 | 21200 | 107% |
おもしろ | fun | 7536 | 7380 | 98% |
エンタメ | entertainment | 12020 | 12068 | 100% |
アニメとゲーム | game | 12496 | 12332 | 99% |
合計 | 32830 | 34160 | 104% |
4.1%増加した。
学びカテゴリ、テクノロジーカテゴリでユーザー数の大幅な増加があり、政治と経済カテゴリで大幅な減少が見られた。
若干の増加トレンドが今後も継続するのか、ただのゆらぎなのかは今後も見守っていかないと判断できない。ただリニューアルはユーザー数の減少には繋がらなかったようだ。
はてブは一般的に休日に数が落ち込む。日毎に細かく見ると8月はお盆があった分ブクマ数が伸び悩み、9月は敬老の日、秋分の日の週末、理由は分からないがいつもよりブクマが多かった。これが若干の増加として現れた可能性が高いように思う。
今回はMMO関連。
真面目に答えず、出来る限り嘘と虚構を織り交ぜて答えていきたい。
まあ、関心がないわけではないが。
ひとつ列挙してみよう。
1.実装したユーザーインターフェースは、よほど未完成でない限り大きく変えてはいけない。
2.バランス調整に弱体化を用いてはならない。
3.プレイヤーキャラの性能を、レベルデザインから逸脱させてはならない。
4.仕様の穴をついたプレイ方法や、外部ツールを用いさせてはならない。
5.中国人を参加させてはならない。
10.初級者が中級者に迫ることはあっても、初級者が上級者に迫ることはあってはならない、
言っておくが、元ネタのノックス当人も十戒の正当性を自負しているわけではないからな。
私としてはややガチ勢よりだが、どちらも間違ってはいないと思っている。
勝てば喜ぶし、負ければ泣く。
そして、それらは本気であればあるほど増幅する。
だが「楽しむ」ことが本質ならばこそ、それらも蔑ろにはできない。
本気になればなるほど楽しめるから、プレイや思いに労力をかけられる。
これがガチ勢だと私は考えている。
ではエンジョイ勢はそれらを忌避することで、楽しむことからも遠ざかっているのか。
答えはNOだろう。
楽しむことと拘りが密接に関係こそしていても、イコールではないので絶対条件ではない。
むしろ、楽しさを遠ざける側面があることも間違いではないのだ。
まあ、もちろん健全かどうかっていうのはあるだろうけれど、そういうのは「個」の問題だよな。
一応は答えるが、いつも以上に雑に答えるからな。
まあ、色々あるのだろう。
例えばダウンロードサイトのサーバー管理の維持に費用がかかるからとか、ダウンロード版のほうが安かったらパッケージ買う人がいなくなるだとか。
……ああ、「物理的価値がなくなっているのに、値段が同じことに納得がいかない」という主張であることに今さら気がついたよ。
まあ、企業の利己的な理由である可能性もあるだろうけれど、ここでは別の例を出して肯定的に捉えてみよう。
確かちょっと前、週刊少年ジャンプの電子版が雑誌より高いとかで話題になった。
「高い高い」という声もあったが、はてブだと「電子版のほうが安くあるべきという価値観は普遍ではない」とかいう意見が主だったと記憶している。
ゲームと漫画は違うだろうけれど、物理的価値が必ずしも個人にとってプラスではないというのは、他のものにも適用していいんじゃないだろうか。
少なくとも私はゲームソフトを入れ替える作業や、ソフトを保管するのが手間だと思っているし、むしろパッケージ版こそ安くあるべきだとすら考えている。
……そうだ、君はこう考えてみたらいいんじゃないかな。
「ダウンロード版が高い」のではなくて、「パッケージ版が安い」のだと。
ほら、なんだかお得な気持ちになってきただろう。
たぶん技術じゃなくて、リスクをどこまで許容するかの話なんだよな
※なお、初稿はエレベーターとか結構書いてた模様。全部エスカレーターに直した。指摘thx
勿論解決できることもある。
例えば、全員がみっちり並んで載っても余裕の耐荷重設計とか、点検整備体制とかな。
でもな、エスカレーター上で歩いて登っても大丈夫なようにしろよってのは、無理な話だ。
だってさ、コケたり滑ったり、落ちた時に被害が甚大ですってのが本質なんだもの
しかもよ、動くエスカレーター上で更に登っちゃう人ってのは、基本急いでる人だろ?
国会議事堂前でずっとエスカレーター載ってる人と、歩いてる人に差があるのはわかるが、
普通の駅なら、1分は違わないだろ。
1分を惜しむ人ってのは、急いでる人だ。
で、急いでる人が動くエスカレーターの上で「コケないようにしろ」ってのが、要求になるわけだ。
そりゃ無理だろ。
あと、急いでる人が動くエスカレーターの上で「他人にぶつかって迷惑をかけないようにしろ」とかな。
これは技術で解決する話じゃないのよ。
あくまでもマナーやルールや法律じゃなくて、エンジニアリングの話にするなら、
明日から日本中で一律エスカレーターの稼働を止めるしか無い。これなら単なる階段になる。
登れるようにみえるのが悪い、というのであれば登れないユーザーインターフェースにするというのもひとつの手だろう。
登りたい、それでいて登りたくない相手に迷惑をかけないようにしてほしいというのであれば、
完全に区切る、1人用のエスカレーターが2つ出来るってのも簡易な解決策だろう。
でもな、結局のところ、
「やるなと言われているし、急いでる時コケたり他人にぶつかったりするリスクも理解しているが、
急いでるし、登れるように見えるし、ルールで縛らずにエンジニアリングで解決しないメーカーが怠慢だ」
って言い方をする奴には、きっと付ける薬は無い。
一人用でも走って登りたがるだろうし、登れないのを無理に解決したりするだろう。
痛ましい事故があって、その結果施設側が全面的に使用を禁止、他の施設でも撤去に向かうパターンだ。
「メーカー側は以前から歩かないようにとの啓蒙を進めていたが、今回の将棋倒しの事故での死傷者数を鑑みると何らかの社会的な」
急いでて足を踏み外した人が怪我をするのはある程度自業自得なんだろうが、
ルールに従ってエスカレーターに止まって載っていた人が巻き込まれるのはやり切れないな。
いくら啓蒙してもベンチで寝るなら、そもそも寝られないように区切るってやりかただな。
電車のベンチシートの凹んでる座席とか、途中にある手すりとかも同じ系統だな。
エスカレーターで区切りができて、登れないようにする。
荷物持った人は不便になるだろうが、まあ世の中そういうもんかもしれない。
歩いて登ったら危ないから、片側を開けると荷重が偏って危険だから、詰めて乗ると危険だから
と言われてていうことを聞かずに歩く奴は、残念な人ってことだ。
うちの親はテレビのチャンネル設定とかビデオの録画でさえまともにできない……
急速炊飯や予約炊飯もできないし
彼らは機械の説明書やユーザーインターフェースに書かれている文字が何語だと思っているのだろう
自由ってなんじゃらホイ。好き放題できること。なんだけど、たとえば五億もっとるのは自由?そりゃ一文無しよりは自由。じゃあ個人資産100億は?ほんとに5億<100億なの?
っていう話を今日してて。セフレの数もそうで。セフレ五人もいるとか自慢してくるヤツがいる。でもそれ自由?親友もそう。10人もいるのに親友なの?ホントに親友?wぼっちよりは自由かもだけど。1人でも深い親友いれば
そっちのがいいって意見も一理ある。以上総括して、自由って量じゃないんだよ。じゃあ何。多様性、バライエティなんだよ。アタリマエ?
たとえば。深い関係のカノジョがいる。カノジョとはいろんな話ができる。なんでも気兼ねなく話せる。これバライエティ。友達もただ多いだけじゃなく、いろんな友達がいる。
JKのメル友が友達の話よくする。みんな同じ高校とかバイト仲間とかなの。狭い世界で似たような価値観の人どうし集まってるの。楽しいかもしらんけど、もっと色んな人と交流して新たな発見があったほうがもっと楽しい。
若くて時間が余りあるのに勿体ないって思う。人生というゲームのユーザーインターフェースは何だと思う?と聞くと「身体」という答えが返ってくる。俺は「意識」。意識がUIじゃん。
身体というのはバイオハザードみたいな捉え方だね。FPS。「外」から「身体」を操作する、という観点。これに対して、「意識」を介して「心」や「身体」を操作するという観点もアリ。
FPSだと「心」がない。「心」があるのがこの人生。だから「身体」と「心」の両方の上にあるもの、「意識」という観点が重要なんだよね。わかる?もっとも身体と心は見る角度の違いで明確には区別できない。
意識が自由なのが本当の自由。バライエティがダンチだから。さあご飯食べよって時に、いつも同じ食べ方しかできない。これほど悲しいことはないよ。さまざまな楽しみ方のレパートリーがあり、
楽しみ方の着眼点があり、それらを組み合わせて新たな楽しみ方を作り出す創造性もある。そんな人とは雲泥の灯火だよな。子供のおもちゃで迷路組み合わせて迷路作るやつがあって、
パッケージに「組み合わせ○○億通り!」って書いてある。同じようなパーツ組み合わせても同じようなものしかできない。これ、バライエティがないの。もっといろんなパーツを集めないといけないな?
日頃から意識していれば、違いのわかる男になる。いろんな手持ちの札があるから、組み合わせていろいろ作れる。それが楽しいんじゃないか。情操教育ってなによ!色の違いを教えてカラフルにみれるようにする。
レールに乗って生きることに慣れると忘れてしまうんだ。レールから外れるのにもう大変な努力が必要。レール、確かに便利だけど不自由をもたらすから気をつけな。確実に不自由もたらすから。
得意な領域があって自信があるのなら、
その領域の応用範囲から攻めるといいよ。
俺も、プログラミングばっかしてきたけど、デザインなんて事もするようになったし。
ルートとしては、「プログラミング」→「ユーザーインターフェースの最適化」→「インダストリアルデザイン」→「デザイン」って感じ。
資料集めまくったり、自分で絵を書いてみたり散々やったけど、一つ前のスキルの延長上だから気が楽。
あとは、気になった点は徹底的に調べるって事ぐらいかな。
月収半分ぐらい本に持ってかれたりするし。
あとは、ニュース記事を自分の領域で解釈してみるってのもやった。
これで、いろいろと底上げできる。
当レポートは、Vistaをパスして、XPから乗り換えを検討している、
ぶっちゃけRC版の時点で書ける内容です。まあせっかく発売したんで。
=====
まえおき
結論
困ったこと
ソフトの動作状況
当方環境、状況、遍歴:
Windows 7 32bit Ultimate版です。RC版の使用経験はありません。
今回はXP→7への移行です。
ここしばらくのOS遍歴
Vista 32bit(絶望)(1年)→XP 64bit(絶望)(1年)→XP 32bit(2ヶ月)→7 32bit(今)(2日)
PCのスペックは、Pen4D 820、Radeon X1950、メモリ2GBです。
CPUが未対応で、XPモードは動かず。というわけでXPmodeのレポートはありません。
(この時点でこのレポートは8割の意義を失った!)
いい感じです。
すんげえ微妙なスペックに入れましたが、パフォーマンス的には問題ありませんでした。
UI(ユーザーインターフェース)の操作感はVistaから見ても、格段に進歩していると感じました。
特にタスク切り替えは非常に優秀。
見た目KDE+操作感はUbuntuのNautilus+MacのFinderって感じでしょうか。
Winオンリーユーザよりも、そっち系ユーザへのアピールが強いかな?という印象。
新規購入の場合ははProfessional以上がいいんじゃないかと思います。
XPmodeの対応なんかもありますが、イザって時の問題解決の手段がHome版だと足りない OR 面倒な事が多いので。
(大事なこと) ソフトやドライバをインストールする前に、必ず手動で復元ポイントを作ったほうがいいです。マジで。
今このPCが動かなくなると困るなーって時はOSのアップグレードをしちゃ駄目です(7に限った事じゃないけど)
かといって、デュアルブートはあんまりホイホイやるもんじゃないです。
簡単にできるよーってレポートも多いですが、よほど慣れているならともかく
後でいろいろと面倒になるのがデュアルブートとMBRいじりってもんですので。
(昔ほど致命傷にはなりにくいですが)
アップグレード版でもXPの環境を7に持ち越すことは、ほとんどできません(Vistaは問題なくいけるとのこと)
ファイルは保持できますが、どのみちクリーンインストールすることになります。
(Cドライブにwindows.oldというフォルダが作成され、旧環境のユーザーフォルダやProgram Files等が格納されます)
しかし、その後の動作が不安定だったので、再度CDbootからクリーンインストール。
どっちでもインストーラの動作は同じはずなのですが、なぜかそれで問題は解決しました。
というわけで、不安な人はフォーマットしたCドライブにインストールした方が良いかもしれません。
ハードディスクにファイルやフォルダを残しておくと、前環境のアクセス権等も一部継承されることがあります。
(NTFSの場合のみ。SSD等の理由でFATでフォーマットしてる方は関係ないです)
そのため、ファイルやフォルダが読めなくなったり、消せなくなることがあります。
自信のない人は 絶対に Cドライブをフォーマットしてからインストールした方がいいです。
改善方法などは↓この辺を参考に
http://builder.japan.zdnet.com/sp/windows-7/story/0,3800092267,20394364,00.htm
それでも駄目な場合は
ファイルプロパティを開いて所有者やアクセス権を確認、変更したりすると直ることもあるのですが、
これってHome版でもできるのでしょうか…。報告くださる方、よろしくお願いします。
(ちなみに裏技としては、FATフォーマットのHDDなりUSBストレージなりを用意して、
1-CD LinuxからPCを起動。読めなくなったファイルを前述の外部ストレージに待避……
とかするとファイル読み出せたりすることもありますが、普通はこんなアホなことはしません。
ただまあ、パーミッションとかが分からない場合は、むしろ簡単かも)
他でこの手のパーミッション関係に引っかかってるって人の話きかないから家だけなのかなあ?
Radeonのアスペクト比固定拡大機能が使えなくなりました。
同様の現象を改善された方もいらっしゃるようですが
当方環境ではどうにもなりませんでした。
Vistaからの移行の場合は気にしなくても問題ないのですが、
XPまでサポートのパーソナルファイアーウォール系のソフトは、ほぼ全滅です。
インストールできてもシステムに悪影響を及ぼす場合もあります。
動作報告があってもインストールの際には十分注意してください。
フリーならComodoあたりをおすすめしておきますが、これがベストってわけではないです。
エクスプローラ干渉系のソフトもいろいろ問題抱えてますので注意。
ぴたすちおとかZLToolsとかGmoteとか諸々のフリーソフトとか…
一部機能を切ったり設定変えたりすれば動くこともありますが、問題が起きたときに
どのソフトのせいなのか分かりにくくなるので、古いソフトとは決別する覚悟も必要です。
Aero切ってまで古い常駐ソフトを使いたい場合はXPに帰ることをお勧めします。
動作を確認したソフト等
Sandboxie 3.40(3.38で支障がでました、3.40でもフルスクリーン化に問題が残ってます)
MagicDisc(Daemon Tools、Alcoholは未対応だそうです)
StExbar(無いと不便なんで助かりました)
FullScreenWin(7でも動きました)
Avast
http://d.hatena.ne.jp/mamoruk/20090327/p1
「いちばん」かどうかはわかりませんが、うちの会社の製品ではpythonを主力に使った自然言語処理を含む製品を販売しているので、実際の感想を。
うちでは、pythonを元データの整備のための運用バッチ処理から、客が最終的に手にする情報の生成、実際に客が使うWEBインターフェースまで、pythonを主力にしています。
別のチームが作った別の製品ではS2Struts(JAVAね。)でWEBを作っている部分もありますが。
mecabが使えて、Unicodeが使えて、正規表現が使えれば、まあ、どの言語を使ってもそんなに大差はないのではないでしょうか。
あとはsennaのような日本語用の全文検索エンジンなども使いますが、そこらへんに近い部分は基本的にC++で書きます。
pythonとは言っても、速度を重視する部分はやはり迷わずC++です。
C++で書いたものはswigを使うか、又はC言語で手書きのbindingを使ってpythonに接続します。
でもこないだswigでつないで製品をリリースしたら、WEBからの並列アクセスにswigがうまく対応できず、リリースした日に急いで手書きbindingを書いた経験があります。swigの使い方はきちんと理解していないので非常に難しい。
nltkとか、wordnetの話はたしかに使えそうかもと思ったことはありますが、nltkはうちでは使っていません。
うちの会社では自然言語処理の研究段階から自社で行っているので、nltkにあるようなできあいのルーチンを実戦投入する事はなく、基本的に地味に自分達でpythonで書いています。
自然言語処理と言っても、核心の処理はやはり泥臭い個別事例への対処が多いです。不要語処理とか。
自然言語処理のアルゴリズムは8割程度の精度を出すのは簡単で、すぐに思いつきで書けるものですが、残り2割の精度をいかに埋めて行くかが、頭のいい人とそうでない人の差が現れる部分だと思います。
どうしてもいいアルゴリズムを思いつかない場合は、泥臭い個別事例処理がうねうねと並んだプログラムになります。学術的なものではなく商売になればいいので、うちはとりあえずそれで十分。(これは自然言語処理に使う機械学習のアルゴリズムたちも同様。というか自然言語処理と機械学習て、区分けがあいまいな部分が多いですよね。)
そういう感じなので、pythonの可読性の高さは非常に有効。
また、変数名や関数名などをexplicitに書く文化も業務で使うのに適していると思います。(他の言語でもexplicitに書けばいいだけですが、それを言語開発者自身が推奨するほど強調はしていないですよね。)
英文の処理で、wordnetの辞書データの一部を研究に使った記憶はある。
しかし、あそこまで精緻な辞書データを使う程高度な処理は今の所必要ない。
うちで自作した不要英単語辞書と、特別扱いする英単語辞書で間に合わせていたと思います。(その辺記憶があいまい。)
djangoは非常に明快で、快適。
画面の機能を追加するのに、例えばS2Strutsのアクションの定義の煩雑さに比較すると、天と地との差ほどにdjangoは簡単。
あと、pythonを使える開発者は日本には少ないとの事ですが、うちでもそれは同様です。
しかし、自分の隣の席の同僚はperlに非常に熟達していて、彼はすぐにpythonの達人に変わりました。
優秀な方にとっては言語なんて何をつかってもあまり変わらないみたい。
プログラムを書けるということはプログラムを設計できるという意味じゃない。ルールを知っているのと囲碁を打てるのが違うように。
ルールを覚えたら、次は定石を覚えないといけない。覚えなくても打てるが、とても傍から見ていられない囲碁になる。同じように、プログラム言語を覚えたら、プログラミングの定石を覚えなければならない。プログラミングの定石は、まず次の二つが大事。
これは武道で言えば型、球技で言えば素振りに相当する。つまり、「こう来たら、こう対応する」ということを考えずにできるようにしないといけない。「並べ替えろ」といわれたらクイックソート、表引きといわれたらハッシュが出てくるように勉強する。で、きちんと抑えれば碁やスポーツと同じでそのアプローチの弱点も分かるから、頓珍漢な場所で使うことも無くなる。
アルゴリズムとデータ構造は、きちんとした教科書一冊で基本をたっぷりと勉強できるから、あまり苦労しなくて済む。
で、次なんだけど分割統治(モジュール化)と情報遮蔽って考え方を徹底的に自分の意識に刷り込む。これはモットーみたいなものなので必ずしもみんなが意識しているわけじゃない。だけど、ある程度大きなプログラムを書くときには決して避けて通れない。だから、この意識は徹底しておくほうがいい。分割統治のコツは合理的な分割。たとえば囲碁プログラムをどうやって組めばいいのか分からなければ、全体を
と言う風に分割して、それぞれについて独立して考える。それでも大きすぎるなら盤面描画を
のようにさらに分割する。合理的な分割であれば、分割するほど分かりやすくなるはず。
分割統治を行うと、それぞれのモジュール間のデータのやり取りが出てくるのでモジュール間インターフェースが必要になってくる。このとき、情報遮蔽の考え方を使う。情報遮蔽は「見せなくてもいいデータは見せない。見せなくてもいいアルゴリズムは見せない」と言うもの。銀行の細かい仕組みを知らなくても、ATMの使い方を知っていればお金を下ろせるように、モジュールの実装方法を知らなくてもインターフェースを知っていれば使えるようにするためのモットーが情報遮蔽。
情報遮蔽をきっちりやって薄くて小さいインターフェースのモジュールを開発するすると、モジュールの交換が簡単になる。たとえば木目生成のもっといいアルゴリズムを思いついたとき、モジュールのインターフェースが薄くて軽いなら、同じインターフェースを持つ別の木目生成モジュールを作って差し替えることができる。インターフェースが込み入っていると、差し替え自体もうまくいかない。
分割統治と情報遮蔽にも今では定石があって、デザインパターンと呼ばれる。これはクラス分割と役割分担の定石集みたいなもの。
ここまで抑えるのに、学生なら半年くらいでいいはず。あとはこれを意識しながら、組みたいプログラムの分野の文献を読み漁り、自分でも書いちゃ壊し、書いちゃ壊しを続ければいい。目を肥やして経験をつめば、規模を克服する力も付いてくる。
これは
http://pc11.2ch.net/test/read.cgi/notepc/1201337407/
のスレで640(ID:QDXck5iVとID:nujV4pbz)の中の人が偉そうに語った割りに
用語の使い方とか間違えてて知ったか発揮しちゃったので、
もう一度出直してなるべく多くの人に正確に伝えようと努力してるだけのエントリーだから
あんまり気にしないでね(^^)ゞ
基本的には、
よっぽどXPに思い入れがあるとか、XPじゃなきゃ動かんソフト若しくは周辺機器を使ってるとか、
一時的にベンチスコアを上げたいから徹底的にチューニングしたいだとか、自分の技術的興味でOSを載せ変えたいだとか、
つまりはそういう特殊な目的以外ではこのマシンは実はXPに向いてなかったりする。
という主張。
ノートPCという、汎用性の高い機械を使って、日常生活の様々な場面で使い倒したいUMPCという使命を帯びたパソコンなので、「快適性」という言葉一つとっても十人十色なわけで、要はOSひとつ選ぶにしても人それぞれなので十把一絡げにXPを反対はしないんだけど、俺の提案するこういう用途ではもしかしたらデフォルトOSのVistaをチューンしたほうが良いのではない?っていうお話。
特に「Vista 高速化」とキーワード検索したら未だに「Aeroオフで快適に」としか書かれていないノウハウがトップに上がるくらい、VistaというOSは勘違いされてる部分も多いので、
これくらいハード構成や使う用途、それこそ個人の好みや印象による評価が分かれるOSも珍しいので、
もしかしたらVistaというOSを理解してないまま、ただ速度が向上するという目的のみでXP化してるSH、SRユーザーも多いかもしれない。
XP化の恩恵は、苦労したぶんだけ大きいかもしれないが、本当にあなたの使い方でVistaを切るのは良い選択肢ですか?
ここであえて今一度再考を促してみたい。
「基本的にPCというのは何かを目的として操作するものであって、その操作をする前段階であるOSでいろいろ工夫をするべきではない」という考え方に全面的に賛成してるので、
「慣れ」の問題もあってXPが慣れているのならば、その体感的な操作性はXPのほうが上だと思う。ここに異論は無い。
ただし、この貧弱安物ノートにこそVistaの恩恵を受けるハード構成が隠されていて、ある特定の目的で使うとかXPのほうが慣れてるからXP化するとか単純にVistaを切り捨てられないほどの「日常的な安定した使い心地」を提供できるこのマシンにおいてVistaを安易に切るのは少々勿体無い。
あなたがもしVistaとXPの特性の違いを理解したうえで、XPを選択するぶんにはそれも非常にいい選択肢だと認めるが、よくわからず何となくVistaが重くてXPは軽いからと思ってVistaを切るのであれば(つなたい不勉強もので用語の使い方などは異論の残すところですが)この記事を読んで再考する価値はあると思う。
と、ここまでが長すぎる前置きなんだが、長くなったのはご勘弁。
基本的なスタンスとしてはXP化のほうが良好なベンチスコアをたたき出したり、慣れなどの点で体感的に便利かつ有利に働く事に異論は無いが、一般に一元的に語られるほどこのマシンがVistaに向いてないことも無いよ、って事。
VistaのOS特性まで触れるわけではないが、このマシン(当方SH8)ではCPUの処理能力の低さに足を引っ張られることが多い。
デフォルトで入っているIE7なんて、一回一回のHTMLレンダリングの描画にCPUはMAX振り切るし、ここにGoogleツールバーでもインストールしていようものなら、新しくウインドウが開くたびにいちいち引っかかる。
ブラウザのHTMLレンダリングと、普段のデスクトップのウインドウのレンダリングを一緒にしてる時点で、この話しは実は間違いなんだけど、要はこのマシンが遅いと感じられる原因は、ほぼCPUの貧弱さによるものだと思ってまず間違いが無い。
ではこのマシンを体感的に快適に使おうと様々な工夫をするわけだが、その方向でXP化するのはもしかしたら間違いなのではないかとも思うという提案なのだ。
いちいちHTMLをレンダリングする程度でCPUがMAX振り切るなら、それ以外の描画処理はできるだけCPUに仕事させないほうが、結果的に良い。
極論を言わせて貰えば、このマシンはCPUが貧弱なので、CPUに処理させないと仕方ないところは置いといて、それ以外は出来るだけ他の機械に処理を分散させたほうが良い。
かといって他の機械も処理能力が高いかと言えばそうでもないのだが、全体的に処理能力の低い安物貧弱ノートの代表格ともいえるこのマシンだけに、矢張り低い処理能力なら低い処理能力なりに、処理をそれぞれの専門ハードで分散させたほうが有利ではある。
そしてこのマシンは、いちおうではあるとはいえ、画面の描画はブラフィックボードという専門の機械に任せられるだけの性能はある(にはある)ので、ウインドウなどのPCつかってて基本的に必要な画面の描写はいちいちCPUで計算させて書くよりは描画専門の機械に任せたほうがCPUの仕事は楽になる、という理屈はご理解いただけるだろうか。
そこでOSの違いになるのだが、実はXPはこの「描画は描画専門機械に任せられるのであれば任せる」っていう機能に対応していなくて、XPではウインドウの描画までCPUが計算するほか無い。
ウインドウの中身を描画するのにCPUがついていってないのに、ウインドウそのものまで描画しているのがXPなのだ。
そこらへんが、このマシンでVistaを使うにあたっては、それぞれ処理は良い様に分散されている。
「グラボにまで負荷がかかっている」という言葉も間違いではないが、それと同時に「ただでさえ遅いCPUだけに負荷をかけている(多少は他の機械にも負荷をかけてCPUの処理だけは減らしているVistaとは正反対で処理を行っている)」というのも間違いではない。
つまりは設定によってはVistaはこのマシンではいろんな機械に負荷をかけつつも一つの機械(CPU)だけに頼る処理はしない、ということになる。
これを善しとするかしないかは、結局は使う人の好みでしかない。
これには色々な要素が絡むので(今まで話してきたことでさえ複雑なのに)一概には言えないが、
あえて極論で区切るとすれば
基本設計の違いに他ならない。
その他にも、広く誤解されているVistaのWDDM機能をあえて切ってしまってシンプルなユーザーインターフェースにしたつもりが、貧弱なCPUに引っ張られてかえって遅くなっているとか、逆にVistaのWDDMを過信しすぎてただでさえ貧弱な描画専用機械のリソ??スに手に負えない視覚効果もオンにしてしまっているとか、XPへの操作性やチューニングの慣れだとか、そのXPの慣れをそのままVistaに適用してしまってて間違ったチューニングをVistaに施してしまってるだとか、理由を挙げればきりが無いが、とにかく考え方の違いに他ならない。
確かにXPは(発売当時では)このUMPCでもハイスペックだと感じるほどに快適である。
この程度のマシン構成でもハイスペックだと思えるほど、軽いOSではある。そこに異論は全く無い。
逆に言うとそれくらい古いOSである事は否めないので、せっかくVistaが走るマシン構成でもあるという恩恵は
「ただXPのほうが速い」だけで捨てるのは勿体無くもある。
例えば一般的なウイルススキャンソフトがバックグラウンドでスキャンしつつ、(動画エンコードなど)よっぽどこのマシンの身の丈に余りある処理をこなしてない限り、普段のアプリの立ち上げや切り替えの操作においてはVistaのほうが軍配が上がる。
また、シャットダウンからの立ち上げにはXPのほうが速い気もするが、そのかわりXPではスリープや休止状態からの復帰に失敗することがVistaよりも多い(Vistaも完全と言うわけではない)。
このへんも好みに分かれるところではあるが、XPもVistaもスタンバイから何ヶ月も再起動なしでも運用に耐えるOSである以上、スタンバイや休止状態に多少なりとも信頼性のあるOSのほうが、サスペンドからの復帰をとってもVistaのほうが(多少だが)有利であることもなくはない。
蛇足すぎではあるが、ウイルススキャンが勝手に実行した環境下での
この貧弱ノートでVistaで毎度立ち上げてて鍛えられたSuperFetch環境下でのVistaで
PhotoShopCS3を立ち上げた時、起動時間や操作性、その他体感的な快適さはVistaのほうがよかったという個人的感想も添えておく。
具体的な数値が出せてなくて申し訳ない。
せっかくなのでこのマシンの理想的Vista設定方法などは是非機会があればお披露目してみたい。
せっかく買ったこのスーパー貧弱でも何だか頼もしく感じるアホノートで、
Linuxの場合はGNOMEのユーザーインターフェースのガイドラインに合わせてたはず
たぶん基本的にOSの作法に合わせて変えているのでしょう
結局、機械には空気が複雑過ぎて読めないから、その空気を入力してもらう手間や、理解できない空気を表現するために費やされる機械の能力、流用できなくて死んでしまう情報などなど、機械にとってはあまりに非効率すぎて使い物にならないんだよ。
つまり、コンピュータは純粋理系。それを効率良く利用するには理系に傾かざるおえない。もしくは効率を無視できるほど潤沢な環境を作るか。
そうかなー。OS Xとかあるやん。機械にはあまりに非効率すぎて使い物にならないが人間様には大層受けの良いユーザーインターフェースが。
あくまでも回線に乗せた時の問題だと思う。
そうそう、Webの事なんだけど、Webは今、デザイナの方を向いてはいないよ。プログラマの方を向いてる。目指すはアプリケーションフレームワークのスタンダード。