はてなキーワード: checkstyleとは
そこそこの企業の特にWeb系で渡り歩いた経験から、真実を書こう。
はっきり言う、ほとんどのプログラマと自称する人間の 9 割はコーダーである。
言われたものを作る事はできるが、それ以外何も出来ないと言って過言ではなく、何もしない。
そんな驚きの生体をここに晒していく。
標準化と呼ばれるプロセスで、プログラマが環境の設計、組み合わせ、開発プラットフォームのセットアップ、開発環境の構築手順作成、開発手順の作成、必要な技術の考察を行う。
なぜそうなったのかは知らないが、一般的にそうなっている。
その環境に浸っているせいか、彼らはゼロベースでものを作ることが出来ない。
彼らにできるのは HelloWorld をコマンドプロンプトで表示するプログラム程度の事しか出来ない。
複数ソースの連結、ライブラリの読み込み、サーバへのデプロイ、どれも手動で出来ないのだ。
逆にそれ以外のこと、コードの読みやすさや、クローン率の低減、メソッドコメントの記載などの保守に関わることをしない。
それは彼らにとって「必要ない無駄な作業」としか考えないのだ。
早く仕上げるためなら、似たような動いてる箇所から、よく読みもせずにコピペを行う。
そして彼らは、作るより運用する期間の方が遥かに長くて、その間に修正で地獄を見るという簡単な論理に気づかない。
…何度味わっても気づかない。
たとえするとしても、業務時間中に業務で使ってる技術をピンポイントで学習するだけだ。
だが、プログラマと呼ばれる人間の母数に比べれば微々たるものだ。
彼らは言う「土日にまで仕事してられるか」「勉強会行ってるの?馬鹿か?」
あえて言おう、馬鹿は彼らだ。
Web で仕事をするならIDE(統合開発環境、エディタやコンパイル、テストやデバッグ実行などを画面から行えるツール)はほとんど必須(エディタで済ませる事も出来なくはない)が、彼らは状況に応じたセットアップができない。
たとえば「Maven(プロジェクト管理ツール)、checkstyle(コーディング規約チェック)、editorconfig(改行、インデント、文字コード設定)」が入っていたとする。
するとEclipseなどを使うとして
マニュアルやチュートリアルを用意しないと、道具の使用もままならない。
テストをなるべく機械にやらせようということの利点が理解できない。
そのために、何十回もコンパイル、デプロイ、アクセス、ログインの手順を何度も繰り返す。
関連する他の修正を行うたびに繰り返す…。
そしてやっと動くとひと仕事終えたと満足感に浸る。
ラリー・ウォールというとある有名な人物(Perl開発者にしてC言語ハッカー)がいる。
これは、自分の作るものは完璧なのだ、だから完璧であるように出来る限りのことをするという美徳である。
彼らは金のために嫌々動くだけのものを作るのだ、動きさえすれば報酬は変わらない、よって当然完璧かどうかなどどうでもいい。
同じ金でより良いものを作るのではない、要件だけ満たせばよいのだ。
変なプライドを持つコーダーは、それで運良く成功すると、自分の知識は正しい、自分の技術は十分なのだと考えている。
こういう人間は、プライドの無いコーダーよりたちが悪く、うまくいかないと他人か環境のせいにする。
そして調べず周囲を苛立たせるのだ。
土日に自ら勉強会に行くプログラマや、それこそ 50 人以下などという会社であればこうした事はあまりない(んじゃないかと思う。)彼らは自分でなんでもやらないといけないからだ。
だが、大企業に飼われる子飼いの企業、派遣(そもそも人手のみを求められる企業)、100人以上の企業では、役割分担に伴いこうした状況が多々発生する。
だが役10年、エンジニアを見てきた結果は変わらない。現実問題こうなのだ、こんな人間が大多数なのだ。
人の多い企業ほど考えたほうがいい、それでより良いものが生まれるのかと。
必要とされる技術だけを叩き込んで金にしたいと言うのは分からなくないが、基本姿勢や思想はどうなんだと。
経営者よマネージャーよ、あなた方の言う「最適化」とは現場が日々考え行っている最適化か?人員最適化だけを行って、生産性が伸び悩んでいないか?
そのあたりは考えた方がいい。
Eclipseがemacsやvimより優れている点を挙げてみよう。
・CVSリポジトリの構成を直接覗ける →redmineとかを使ったほうがいいんじゃないのか
・設定できる警告メッセージの種類が豊富。→警告そんなにいるのか
・復元機能が非常に充実している。 →バージョン管理ソフトがあれば普通だし
CVSのように以前の状態に復元すること、以前の状態の →diffじゃダメか、というかなんでいまどきCVSなの
ソースコードとの比較も容易。CVS(Eclipse標準装備)/Subversionプラグインにもこの機能は存在する。
・プラグインの数が豊富、膨大。 → 数があってもつかえるのは少ない
・プラグイン開発環境もEclipse自体に用意されている。 →開発環境を使って作る程のものでもなく、バッチファイルとかスクリプトでよくね
・ライセンス形態がCPLであり商用利用もしやすい。 →eclipse組み込んで出荷するの?
・上位版にWSADが存在する。 →WSDADってなに、WebSpereの残骸?
・Smalltalkで有名なVisualworksの影響を受けているため、
JUnitプラグイン(Eclipse標準装備)によるテストファースト、リファクタリングの他、eXtreme Programming環境が充実している。→Jenkinsのほうがよくね
・SubclipseプラグインによりSubversionにも対応できる。これはCVSよりも強力!→コマンドラインから実行するsvnコマンドを覚えておくとはターゲットでも動いて便利だよ
・Call Hierarchyプラグイン(Eclipse3.0から標準装備)によりメソッドの呼び出し階層を調べることができる。この機能は強力だ!→スタック見るだけのことじゃないの
・プラグインによってはURLを指定するだけでプラグインの自動ダウンロード、自動インストール、
自動アップデートができるためプラグインのインストールが非常に容易。→勝手に変わったら怖くない
・Eclipse上から直接Tomcat, JBossなどを再起動できるSysdeoプラグイン、JBoss-IDEプラグイン
という強力なプラグインが充実している。→えー、今頃Tomcat
・EclipseUML Omondoプラグインによりクラス図などを書いたり、
UMLによるModel Driven Architecture, リバースエンジニアリング
・RSSリーダープラグイン、MP3プラグイン、All The Newsプラグイン、
など様々なプラグインが充実している。→それ開発ツールじゃなくて携帯でやったほうがよくね
・PHP開発が可能なTruStudioプラグイン、Perl開発が可能なPerl E.P.I.C. プラグイン、
C/C++開発が可能なCDTプラグイン、AspectJ開発が可能なAJDTプラグインなど
他言語プラグインが充実している。→Java以外は所詮おまけだけどね
・そのほかにD言語プラグイン、C#プラグイン、Pythonプラグイン、JavaScriptEditorプラグイン、
CSSプラグイン, HTMLプラグイン, XMLプラグイン、(Jakarta)Velocity UIプラグイン、
Apache Antプラグイン(Eclipse標準装備)、非常に強力なApache Mavenを使うことができるプラグイン、
ゲームができるプラグイン、メーラとしてつかえるプラグイン、Wikiプラグイン、Hibernateプラグイン、
FindBugsプラグイン、CheckStyleプラグイン、Jalopyプラグイン、Sobalipseプラグイン、ソロプログラマープラグイン、
など様々なプラグインが充実している。→それぞれ単機能のソフトのほうが充実してるんじゃないの
どうしてもeclipseというなら止めないけど
Eclipseがemacsやvimより優れている点を挙げてみよう。
ソースコードとの比較も容易。CVS(Eclipse標準装備)/Subversionプラグインにもこの機能は存在する。
・上位版にWSADが存在する。
・Smalltalkで有名なVisualworksの影響を受けているため、
JUnitプラグイン(Eclipse標準装備)によるテストファースト、リファクタリングの他、eXtreme Programming環境が充実している。
・SubclipseプラグインによりSubversionにも対応できる。これはCVSよりも強力!
・Call Hierarchyプラグイン(Eclipse3.0から標準装備)によりメソッドの呼び出し階層を調べることができる。この機能は強力だ!
・プラグインによってはURLを指定するだけでプラグインの自動ダウンロード、自動インストール、
自動アップデートができるためプラグインのインストールが非常に容易。
・Eclipse上から直接Tomcat, JBossなどを再起動できるSysdeoプラグイン、JBoss-IDEプラグイン
という強力なプラグインが充実している。
・EclipseUML Omondoプラグインによりクラス図などを書いたり、
UMLによるModel Driven Architecture, リバースエンジニアリング
などを即座に実現できる。
・RSSリーダープラグイン、MP3プラグイン、All The Newsプラグイン、
など様々なプラグインが充実している。
・PHP開発が可能なTruStudioプラグイン、Perl開発が可能なPerl E.P.I.C. プラグイン、
C/C++開発が可能なCDTプラグイン、AspectJ開発が可能なAJDTプラグインなど
・そのほかにD言語プラグイン、C#プラグイン、Pythonプラグイン、JavaScriptEditorプラグイン、
CSSプラグイン, HTMLプラグイン, XMLプラグイン、(Jakarta)Velocity UIプラグイン、
Apache Antプラグイン(Eclipse標準装備)、非常に強力なApache Mavenを使うことができるプラグイン、
ゲームができるプラグイン、メーラとしてつかえるプラグイン、Wikiプラグイン、Hibernateプラグイン、
FindBugsプラグイン、CheckStyleプラグイン、Jalopyプラグイン、Sobalipseプラグイン、ソロプログラマープラグイン、
など様々なプラグインが充実している。