Codingの最近のブログ記事

 Pythonで開発している最中なので、この話題は現場でもありましたが3000ページ超ってラクダ本以上じゃないですか1ライブラリだけで1800ページとか鬼!これのEPUB版をiPod touchにいれてiBooksで再生しようとしたらほぼ固まってるし、PDFにしても辛かった。。。いつかは読むぞw

http://sourceforge.jp/projects/pythonjp/releases/
TOIBE Softwareの発表ということで、今まで知らなかったのですがこれまでの殿堂入りした言語みると納得。これからはRubyかPythonって感じかな?PHPとはユーザ層が少し違うのでライバルはJavaだと思ってみたり。
 まさかPythonで開発することになるとは、去年は全く想像もしてなかった。そういう意味で、今年の抱負は予想外にしておいたのだが・・・。また素のPythonだけでなくDjango付き、とは言え仕事なのでしばらくはフレームワークバカ(とりあえずその場凌ぎで使い方だけ覚えて応用が利かないレベル)を続けて余裕がある時に深追いすることになります。

 ちなみにPythonは蛇の事だと思っていましたがモンティ・パイソンが由来だったのですか、いやぁ知らなかった。Djangoはジャズギタリストのジャンゴ・ラインハルトからだそうです。

Python - Wikipedia

Django - Wikipedia
 情報集めが足りないせいだけど、ネットで見よう見まねで作ろうとしつつもネット上の開発環境とバージョンが違うためかUIの呼び出し方が変わってたりして思ったより苦戦してます。

 それに加え解像度も低い液晶でブラウザを開いて見ながらというのはさらに辛い。。。う〜ん参考サイトの閲覧はiPod touch側にするかな。
 こういうのはいきなり本買うよりまずはネットで検索してやりやすそうなのから始めるのが吉。最初はツール系アプリを作るつもりなのでここがいいかなっと。

目指せ!iPhoneアプリ開発エキスパート:第2回 iPhone SDKの入手と設定|gihyo.jp … 技術評論社

相変わらず時間が取れない。。。年末だから?
本棚を本以外に使おうと整理してたら、結構ゲーム開発関連書籍が多い事に驚いた。一冊が分厚いというのとサーバー関連書籍は結構サイクルしてて溜まらないというのも有りますが・・・。これ殆ど積読なんです。。。

ざっと思い当たるだけでこんな感じ

ゲームプログラマになる前に覚えておきたい技術
ゲーム開発者のためのAI入門
3DRPGプログラミング
DirectX 9 シェーダプログラミングブック
DirectX ゲームグラフィックス プログラミング
オンラインゲームプログラミング
ゲームエンジンプログラミング
MMORPGゲームサーバープログラミング
Windowsゲームプログラミング
ゲーム開発のための数学・物理学入門

で、今後プライベートでも組むのかというと微妙だったり・・・。UDKの方が楽とかiPhoneアプリの方が個人開発に向いてるとかいろいろあってw

今年中に処分するかどうか決めようと思います。特にDirectX 9はね。
 こういうの昔はメガデモっていってたけど今も同じかな?でも年々凄くなっているのに容量が4KBのままって、さすがに今回のは想像を絶する!実行したときにメモリ展開してさらに実行プログラムを構築しているんだろうけどこんなものまで数式でいけるのかなー?この天才達が集まればいつか宇宙の方程式でも見つけられるんじゃないかと思う。

ドイツのプログラミング大会優勝作品、わずか4キロバイトで作られた映像がやばい(動画) : ギズモード・ジャパン
http://www.gizmodo.jp/2010/09/4_20.html

動画はこちら

あれ?ちょっとまって凄くデジャヴなんだけど?2009年かー。もしかしたら以前紹介したかもです。
iPhoneアプリの開発で調べたところmacが必要以外にも実機に乗せる為の開発者登録だとか審査ガイドラインを見る限り、習作お断り、ハードがクオリティ高いからソフトもハイクオリティじゃないとダメ。といった感じがプンプンするので言語や環境が異なっても最初はAndroidから慣らしてみようかなっと思う。

問題はAndroidの方は実機が無いという事、Wi-Fi版で主流になりそうなのをピックアップしないとね。


三週間後の悩みですね。当然メインは第四世代なのでそっちに移行しますが、価格的にも第三世代は半額ぐらいにしないと中古で買ってくれないかもしれない。であれば開発検証機にするのはどうだろう?って考えています。これでも昔は仕事でPocketPCのアプリ作ってたんだから!今年の春はちょこちょことケータイJavaでサンプルとか弄ってたけど今更始めるのは遅すぎですよね。始めるならAndroidかiPhone用。も

で、どうやってiPhone用アプリを開発するのか調べたらmacが必要だとか、登録手続きがいろいろ面倒だとか。。。そうとう気合入れてやらないとアプリリリースは無理だなー。あとOpenGLとか必須かもね。
 これは驚き・・・。将来プログラミング言語を使わない技術者がアプリを作る時代になるのかな?今でも半自動化されているし一部ツールまさにプログラミング不要だったりしますが、その方が総合的な生産は増えそうですね。

Google、コードを書かずにAndroidアプリが作れる App Inventorを公開
http://japanese.engadget.com/2010/07/12/google-android-app-inventor/
テストの話題ってコーディング全体でみるとまだまだ浅いもの多いなーと思ってる中で、これは驚愕でした。。。

SQLiteのテストコードは4567万8000行! 本体のコードは6万7000行 - Publickey
http://www.publickey1.jp/blog/10/sqlite45678000_67000.html

実際、製品コードの649倍って想像もつかない倍率です。しかもそれを公開できるということはテストコードの品質も管理できているということですよね。。。

主にユニットテストの機会が多いので、全てのケースを自動化してテストするためのテストコードを書いたりしてますが、よく考えると毎回使い捨て・再生産というソフトウェアの性格に合わない事をやり続けてました。。。納品しないからって理由で捨てられているんですよね。半導体設計やっている頃はテストコードこそ財産だったのになんてお粗末な事をしてしまっているのだろう。

さらに、現在の仕事ではPHP言語は殆どですが、バージョンが変わるたびに言語仕様や組み込み関数の挙動がブレるというメインで使うコンピュータ言語としてどうかと問いたくなるようなスクリプト言語なので特にユニットテストのコードは残す必要がありました。今まで問題が無かったコードが言語のバージョンが変わる事でエラーを出したりするかもしれないからですね。

今後はユニットテストのコードもレポジトリに含めるようにして、テストの品質を上げていかないといけないですね。

続きは脱線w


オライリーの『Ruby Best Practices』の全文がPDFで無料配布中! - IDEA*IDEA ~ 百式管理人のライフハックブログ
http://www.ideaxidea.com/archives/2010/04/ruby_best_practices.html

まだRubyはやっていないけど何れ役に立つからDL!DL!
プログラマーの力量を見極める--面接官になったら尋ねるべき質問実例集 - IT業界を生き抜く秘密10箇条 - ZDNet Japan
http://japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20409456,00.htm

プログラマーの力量を見るというのは確かに難しくて、多少なりともハッタリが含まれるのも良くあること。だからといってペーパーテストやったり、何かをその場で作らせる時間も無いので新卒であれば専攻やスキルに繋がっている趣味を聞いたり、中途なら業務経歴から業務経験を聞くのに留まり、スキルの範囲は見えてもその水準を量るのは難しい事です。

そのプログラマーの力量を見極める為の良質問集のようなページを見つけましたが、初っ端の第一問で躓きました。。。等値と等価の違いって説明できない、というか等価と聞いて「等価交換?ハガレン?」とか思った自分はかなり終わってる。。。

それ以外については、

値渡し・参照渡しは入門レベルでも必須。これが分からないとスクリプト言語のプログラマーでもヤバイかな。
ポリモーフィズムって何?ググったら多態性のことか。。。用語知らないといろんなところで話についていけなくなるかな。ただ日本語が用意されているのに態々カタカナ英語を使おうとするのもどうかと思いますがね。カタカナの方がカッコイイかもしれないけど同じ意味の単語増やして誰得?って思うときはあります。(特にビジネス用語)
悲観的ロックと楽観的ロック・・・DBのトランザクション処理あたりで聴いたことありますが具体的に説明できないなぁ・・・。

定期的に再勉強しないとダメだな。。。と思いました。


 経験は時間と密度で蓄積され、長く生きてれば偉いってわけじゃないけどそうそう減るもんじゃないと思う。でも技能は常に訓練してないと落ちてしまうんだなぁと再認識。

 ここ4年くらいケータイサイト制作ばかりなのでJavaScriptやFLASHは触らなくなって時代について行ってないなぁというのは分かっていましたが、余りにも遅いPHP/MySQLのバッチに痺れを切らしてバッチをC++で組みだしたらいろいろ忘れていてコンパイル通らなくなりさらに落ち込みました。どうせ納品するコードじゃないしアルゴリズムを検討しなおしてC言語で書いたらPHP/MySQLで3日掛かってたバッチが1分以内で終了・・・。多分プログラム以外の部分で無駄な処理をしていたのかな?結局C++で作ろうとしたものはそのまま投げ出してしまいました・・・。(一応自分ルールとしてC++で組むときはC言語のライブラリを使わないように努力してます・・・今回は無理でしたが)

 さらに30歳過ぎるとコーディングしている時間が減る一方、ミーティングが増え何故か同じ事を何度も説明するハメになってストレスが溜まる。35歳定年説って体力の問題じゃなくて年功序列による役割変更の弊害じゃない?と思ったりもする。このまま行くと本当に35歳になったときコーディングに関して無能になってそうで不安だなぁ、知識だけが増えて技能が無くなるなんて・・・何とかしないと。

 それにコンピュータと向き合って仕事したくてプログラマーになったつもりが気が付いたらコーディングしてなくて人と向き合って仕様会議。さらにコミュニケーションの手間でイライラ。

 やりたいのにやれてないことがここ7年分どっさり溜まっている・・・そろそろ諦めと絞込みしないと身が持たないんじゃないかな。(DTMまで入れると約20年分くらいか?)

 スキルは貯めて仕事で消費するものだなというのは前から思ってましたが、まさか自分自身に現象として出るとは思わなかった。全ての時間を仕事につぎ込むと新しい情報は入ってこないし現業以外の事は忘れてしまう。少しだけ余裕が欲しい。みんな不景気が悪(ry

 このご時世はまたブラック企業が増えて将来の有る若者を消費して国力が削がれるんだろうな・・・氷河期ニートの再生産が起きないようにしっかり支援してほしいな。

 でもベーシックインカムがあるなら一生ニートプログラマーとして過ごしたいwww
 
「緊急人材育成支援事業」が29日から開始、生活給付金受給も - 不景気.com | ハローワーク, 給付金, 失業, 就職, 政策,
 こちらはJavaアプリの開発環境だと思いますが、そろそろいれてみようかなっと。そしてC++の環境もね。

Google Android用携帯アプリ作成のための基礎知識 (1/5) - @IT
http://www.atmarkit.co.jp/fjava/column/koyama/koyama09_1.html
 10日発表のリリースですがnineのFLASH対応版が公開されたようです。開発環境がFLASH CS4と書かれているのはCS4だとそれだけ高機能なライブラリがあるのかな?今持ってるFLASH8だとXMLパーサが無くて酷く面倒だったしC言語版クライアントと通信しようとすると通信仕様をFLASH側に合わせないといけなかったり・・・どれも独自で作った場合ですが。FLASHの対戦ゲーはゲームポータル以外では見かけなくなってしまいましたが需要は大きいと思います。2DゲーならFLASHで作ったほうが楽な部分も多いというもありますからね。

プレスリリース | フェニックスソフト
http://www.fenixsoft.jp/news/press_release_nine_for_flash.html
 これは興味深いです。C言語は単純なので分かりやすいですが、PHPでは微妙に独自ルールがあるなぁ~と思っていたのでこういう表があるとわかりやすいですね。この結果から言えることは「真偽の判定式は面倒でも明示的にtrue/falseに収束するように書くように」ってところかな。今までもPHP等でif($obj)みたいなコードがバグの原因となっていたケースをよく発見していたので、変数が定義済かどうか真偽の二値に収束しているかしっかり書くように勧めたいと思います。

 特にPHPは変数宣言を用意してない癖に値の型はC言語以上に細かいので条件に利用するときは面倒なこともあります。0(数値)とfalse(偽)とNULLとEMPTY(空文字列)とUndefined(未定義)のどれがやってくるかわからない場合の判別とか。

各言語におけるtrue/falseまとめ - 床のトルストイ、ゲイとするとのこと
http://d.hatena.ne.jp/mirakui/20090604/truefalse
Perlでシステムを組まなくなってそろそろ3年以上になるかな、その間に結構定番のコーディングが変わってきていますね。比較してみるとへぇ~と思うのばかり。明らかに私はoldtype...最初はoldtypeのものさえ使ってなかったかなPerl4だったし。

Perl 5 今昔 - Perl-users.jp
http://perl-users.jp/nowpast.html
 とても考えさせられ反省。。。私の場合確かにコーディングより考えている時間の方が長いが、その考えているという時間を設計とハマっている時間とで分けて考えてなかった。。。後先考えずコードをいいかげんに書いてその場しのぎするのは論外として、だからといって腕組んで考えてばかりだと生産性低いって言われるのも仕方ないですよね。後のパフォーマンスなんてその時が来ないと評価されないし。そこで凄いひとはこのハマる時間そのものが少ない。ある程度は経験で短くできますしね。単純に労働時間とかデータ入力の成果とかテストの実行作業なら余り差が出ませんが、設計自体のスピードやハマリの回避がアウトプットに大きく影響しますね。進捗が遅れるので開発側の原因としてはハマりで予定外の時間を消費したというのがありますしね。

小野和俊のブログ:プログラマーの開発速度は「はまる」時間の長さで決まる
http://blog.livedoor.jp/lalha/archives/50261226.html

しかし考える時間を減らすにはどうしたらいいかな・・・。常に手を動かしているくらいに進むのなら生産性倍増なんだけど。

今までどのくらいプログラミング言語を触ってきたか(3秒で飽きたものも含む) - スラッシュドット・ジャパン
http://slashdot.jp/askslashdot/article.pl?sid=09/05/11/037234

3秒で飽きたとか見ただけの言語は特定できないので、ソースを書いたことがある言語で何とか思い出してみました。無駄にコンピュータ歴が長いので同じ言語の実装違いもあったりします。

小学生時代
1. NS-Hu BASIC (ファミリーベーシック)
2. N88-BASIC (PC-8801mkII ROM-BASIC)

僕)小二の誕生日にパソコン買ってとおねだりしたら
父)パソコンは高いからモデルガンにしなさい。
僕)おもちゃが欲しいんじゃない!勉強に使うの!

※この時PCを欲しがった動機はキテレツ大百科の影響だと思ってWikiで調べたらまだアニメ放送始まってない。。。女神転生の中島朱美もこの1年後だし。。。周りにPC持っている人も詳しい人もいないのに。。。う~ん、何の影響だったんだろう。。。不思議な7歳。この頃は「PCは質問に何でも答えてくれる凄いもの」というイメージがあって今でいうインターネットにつながったPCに近いですね。

その結果の誕生日
僕)ファミリーコンピュータ?パソコンキター!!!
僕)・・・何これ?ゲーム機じゃん。全然違う!

※当時の小学生だとありえない反応かも。。。当時MSX2はまだ世に出ていなかったようです。

ファミコンの箱の中にファミリーベーシックのチラシを発見。

僕)コレだ!!!コレ買って!!!

※1年後の誕生日にファミリーベーシックを買ってもらってプログラミング人生スタート。
PC-8801mkIIは父からのお下がり、小六のときです。
この頃はまだMSXの存在も知らなかったしプログラミング言語もマイコンレベルではBASICしか選択肢が無かった。

中学生時代
3. CASL (机上のみ)←PC上で実装したことない唯一の言語。ソースも紙の上。

情報処理試験にBASIC言語は無いということで始めた。

高校生時代
4. MSX-BASIC (MSX2)
5. N88-DISK BASIC(86) (PC-9801用)
6. MML (Music Macro Language)
7. DOSバッチファイル (FD刺して電源ONでソフト使うのが日常だったので起動バッチとして書いていた)
8. i386機械語、ニーモニック(NEC 386用マクロアセンブラ)

入学早々同級生からMSX2を買い取り。主にデジ絵書きに使用してました(汗)
中古のPC-9801UX21は昼飯ケチって貯めたお小遣い(約1年分)で高二の時に購入。
N88-DISK BASIC(86)は中古PCに付属していて超ラッキーでした。
マクロアセンブラは高三の時、情報処理試験に必要などと理由つけて父におねだり。
どう見てもオーバースペックでした。父さんごめんなさい。

BASICの表現力の無さに飽きマシン語に手を出したのもこの頃です。

機械語を極めればどんなソフトも作れる!
そんな風に考えていた時期が俺にもありました。


学生時代
9. HTML (はじめてインターネットに触れて直ぐに)
10. JavaScript (HTML書いている内に自然に)
11. VBScript (IE使い始めて直ぐに)
12. JScript (何故書いたかわからない)
13. Java (アプレット作りたくて、あと無料だったから)
14. CSS (自然な流れ)
15. HSP (無料だから)
16. ひまわり (日本語と聞いて)
17. MIDIメッセージ(シーケンサーもってない頃はメモ帳で書いていた)
18. Z80機械語、ニーモニック(授業で)
19. C(授業で)
20. C++(自宅で勉強の為にVC++4 AC購入)
21. XML (カッコよさそうと思ったから)
22. xslt (XMLでページ書いていたため)
23. VRML (3D空間に興味)
24. Prolog(授業で)
25. Matlab(授業で)
26. Latex(卒論で)
27. Perl(CでCGI書くより簡単と聞いて)
28. M4(SendMailのconfig作りの為)

学生になって学校でインターネットが使えるようになり、今まで知らなかったものがどっと入ってきました。
学生には無料でダイアルアップ接続も提供されていたので早速テレホです。親には学校の決まりなどと言って説得してごめんなさい。
本格的に学習したのはこの頃からかな。学校で習うもの以外は無料で手に入るもの中心になりました。
バイト収入もあったのですがどちらかというとハードウェア購入に走ってましたね。この頃からモバイラーです。

ウェブ系言語に会って、その簡単さに虜になり、C言語習ってこんな凄い言語あったんだと感動してました。

社会人以降
29. VBA(Excel)
30. VHDL(半導体設計で)
31. Verilog-HDL(半導体設計で)
32. sh
33. VB6
34. C#(PDA用でMSに通って講習受けた)
35. ActionScript(FLASHサイト作成時に利用)
36. Lingo(動画付きデモ作成時に利用)
37. PHP
38. JSP
39. SQL
40. XHTML

社会人になってからは数多く新しい言語に触れてないかな。
転職でもしないとずっと同じ言語で開発しているし。
awkやsedも触りましたがsh内でコマンドラインとしての利用なのでノーカウント。
makeは独立した言語としてカウントしていいの?よく分からないのでノーカウント。

上記で現在も継続的に使っている言語と言えばこちら。

仕事で利用
HTML
JavaScript
CSS
sh
PHP
SQL
XHTML

上記に加えプライベートで利用
Perl(サイトやバッチで)
C(C++で行き詰まった時)
C++(Windowsゲームはコレ)
XML(通信やコンフィグに)
Java(携帯アプリに)

自称10言語使いですが、マクロ言語だけを省いても8言語ですか。。。
しかもCとC++は区別すべきかどうかに悩む使い方だし。FLASH/AS(AIR/Flex環境含む)はほんと最近使ってないなー。ノートにFLASH入れてないせいかな。
これでも現在メジャーなプログラミング言語が結構欠落しているような気がする。ruby,python,LISPなどないですね。

アーカイブ