mieki256's diary



2007/01/15(月) [n年前の日記]

#1 [iappli][java] 「1週間で作れ」という指令が届いた

…無茶だ。

クライアント会社が以前と同じならまだしも初めてのクライアント会社で、それは無茶だ。参考ソースは送ってもらったけれど、中でどんな流れになってるか、どんな処理をしてるか、追うだけでも時間がかかるですよ。時給・日給を半分、いや、1/3にしてもいいから、時間を2倍にしてください。いや、2週間でも無理っぽいけど。

少ない経験からの予想ではあるけれど。初めてお付き合いするクライアントさん、つまりは、初めて対応する配布用・通信用サーバでは、アプリの中身の充実に専念できる環境が整うまでに、なんだかんだで時間がかかってしまう。そのサーバ特有のデータファイルの置き方、通信の仕方、通信内容、そのクライアントの案件特有の各画面の流れ、実装しておかなければならない必須事項の把握等々、アプリの「外枠」を作るところで予想以上の時間を消費する。一度把握してしまえば、後は作業は早いのだけど。そうなるまでが山。その、山の部分も込みで、1週間ってのは無茶だ。

同人アプリや趣味アプリならまだしも…。どこぞのblogで、「1週間で○○○が作れるか」なんて記事を目にしたことがあるけど。そうして記事になっちゃうぐらいに、アレな話なわけで。

と言っても、「その企画、面白そうですね。やってみたいです」って言っちゃったのは自分だしなぁ…。ということでまずは環境構築中。

電話連絡があった。 :

期間的にとてもできそうにないことを、上のほうに伝えてもらえたらしい。上のほうが、他に打診して引き受けるところがあれば、今回の話はなかったことになりそうとのことで。あるいは、どこも引き受けなかったら、さらにもっと上に相談して、期間を延長した状態でまた話がくるかもしれないとのこと。

正直言って、ホッとした。いや、断ったことで、話を持ってきてくれた方の立場が悪くなるんじゃないかという不安もあるのだけど。なんだか申し訳ない。自分が迂闊なことを言わなければこんなことにはならなかったのに…。とは言え、引き受けたところで実際にできるわけでもないし。かえってマズイ状態になるのは間違いなく。

少しでもできそうにない予感があるときは、「できません」と言わないとダメだな…。>自分。未だに、気を抜くと、「俺は比較的デキる人間のはずだ」「この課題をクリアできるはずだ」的、何ら根拠のない自信過剰ぶりが顔を見せ、周囲に被害を与える結果を招いてしまう。アレだけ問題を起こしながら、まだ自分は懲りてないのか。イヤになる。

それはともかく。参考ソースを元に雛形だけでも作っておこう。 :

またこういう話が来たときに困らないようにしておかないと。

プリプロセッサを使うことが前提のソースなので、眺めていて、悩む。コンパイルが通るソースにすると、#define が数値に置き換えられてしまい、可読性がよろしくない。

どうもJavaを使う人の間には2つの流派がありそうな。1つは、Javaが思想的理由でプリプロセッサを排除したのだからそれに従うべきだ派。もう1つは、プリプロセッサが無ければ不便でやってられねえよ派。

例えば eclipse などは前者のようで。プリプロセッサのプの字も見当たらない・似たようなものがあるとしてもそれはeclipseの流儀に沿った独自記法等を要求するもので、Cの文化圏のプリプロセッサとは感覚が異なる。…eclipseの各種補完機能に慣れてしまった自分なので、今更フツーのエディタでガシガシ打つなんてやってられえよ的感覚なわけで。何か上手い手はないものか。

_Java Solution 会議室 > JAVAコンパイル :

私はいつも以下のようにしています。

class test{
private static final boolean DEBUG = true;



if(DEBUG)System.out.println("デバッグメッセージ");

DEBUGという定数を作って、trueのときはメッセージ出力がclassに埋め込まれますが、falseのときはコンパイラの最適化で class にメッセージ出力のコードは入りません。

JAVAコンパイル - Java Solution より

Java では C 言語でやるようにプリプロセッサでバイナリに出力されるコードを制御するようなことはあまりしません。むしろ状況に応じてコンパイルさせる必要がないよう実行時に与えるパラメータを残しておくのが習慣のようです。Class ファイルレベルでコードが残っていても実行時には最適化されますので、JVM を信じてみてはいかがでしょうか?

例えば、Log4J のドキュメントでは JDK1.3.1 を AMD Duron 800Mhz で実行した場合にログを出力するかしないかの判別に 5 ナノ秒しかかからないとの記述があります。
http://jakarta.apache.org/log4j/docs/index.html

1ログメッセージ当たり 5ナノ秒(ログ出力しない場合)のために努力するよりは、再コンパイルなしでデバッグメッセージを出力できる柔軟性を選んだ方が良い、と判断されることが多いみたいです。

JAVAコンパイル - Java Solution より

_Eclipseを初心者に使わせたらまずいの? :

コンピュータができることはコンピュータにやらせてしまって、人間にしかできないところにもっと力を注げるようにしようぜ、というのがプログラマーのあるべき姿だと思うので、eclipse を使えるなら使ったほうがいいような気がする自分なのでした。

が。eclipseの操作方法を習得する時間が別途必要になる・そっちに時間を取られちゃうという問題もあって。Javaの勉強じゃなくて、eclipseの使い方の勉強をしてるという本末転倒な状態になったり。特に初心者は、どこからどこまでが自分に必要になりそうな知識なのかの見極めができず、また、目の前にある全ての操作を本来は記憶せねばならないという脅迫観念に取り付かれてしまう場合もあって。

つーか後者については自分もなんだか思い当たる。オリジナル版のソースを前に、「中身を把握しないと移植できない」と思い込んでしまい、数ヶ月、ただ眺めてしまって、何も進まなかった自分と。「Cで書かれてるんだから、まずはコンパイルが通るようにしよう」で、2週間で画面を表示させた大先輩プログラマーさんと…。

さておき、コンパイルが通るところまで、参考ソースを編集した。 :

が。どうも眺めてるうちに、触るべきではないソースを編集してたような気がしてきた。…もう一つのソースのほうを編集しなおしてみやう。

以上、1 日分です。

過去ログ表示

Prev - 2007/01 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project