はてなキーワード: SubVersionとは
この記事は「フリーランス残酷物語 Advent Calendar 2016」15日目のポエムです。えっ、まだ12月15日じゃない?あぁ、そんな事もあるかもしれないですねぇー。でも気のせいじゃないですかたぶん。
まず前置きですが、mesaka さんの書いた記事が萌えましたねぇ。じゃなくて燃えましたねぇ。まぁ、会社にバカにされたっていいじゃないですか。社員プログラマーにバカにされたってしったこっちゃありませんよ。Qiita ユーザーにもバカにされ、はてブに晒され、社会からゴミ扱いされたかどうか分かりませんが、フリーランサーはそれでも生きている限り契約を繰り返し日々前進していかねばならないのです。愚痴ることで生きていけるのなら問題ないのです!というわけで、mesaka さんには最終日の日記でも燃料を投下してほしいと思うわけです。よろしくお願い致しますm(_ _)m
前置き終わり。さてさて、僕がフリーランスだった2004年頃に体験した、奇妙で残酷な作業依頼のことを書きたいと思います。
フリーランスになる前はゲーム会社で社員プログラマーをしていました。コンシューマやアーケードゲームを何本か開発したのですが、ゲームの発売が近づくと月400時間以上の長時間労働を行います。そんなことを何回もやっていると人間は壊れます。裁量労働制の裁量ってどんな意味だろう、、、と考えながら3年働き、もうダメだなと思った時に同期の10人は誰も残っておらず、一番最後の退職者となりました。その後1年は携帯ゲーム会社でゆるふわな開発を行い、元気がでてきたところでフリーランスとして働き始めました。
初めての契約は 3DRPG を開発している会社と結びました。準委任契約なので会社に出向し決まった時間働き、毎月決まったお金をいただく形です。業務内容はプログラミングとそれに関連する作業となります。関連する作業は曖昧ですが、まぁ雑用含めてお仕事するうえでの作業全てなので、社員プログラマーと働き方はそんなに変わってない思います。
一般的なプログラム作業であれば、例えば MMORPG の開発ではマップ表示を担当しましたが、これはマップ担当の3Dデザイナーさんとデータの仕様などを決めていって、あとはプログラミングするだけのお仕事です。この開発ではプログラム全体の設計とプログラマーのまとめ役もやっていたので、メンバーへの指示出しやタスク管理もプログラミングに関連したお仕事です。
少し変わった作業だと PS2 で発売した 3DRPG のコードを渡され、「VisualStudio で動くようにして。大丈夫、描画エンジンだけ DirectX で動くものを別で用意したから」という依頼だったりします。幸いにして同じような依頼を前職の社員のときに受けていました。その時は PS 用に発売した 3D 格闘ゲームのプログラムを渡され「ナムコのSystem12基板で動かせるようにしてよ。大丈夫、PSと System12 の違いは CPU のクロックが違うだけだから」というものでした。どちらの依頼もプログラムと向き合うだけの作業なのでとても単純なです。CodeWarrior で書かれたコードを VisualStudio でコンパイルすると2万くらいコンパイルエラーを吐き出すのですが、それをもくもくと修正するだけです。
新人プログラマーの教育係もプログラミングに関連したお仕事です。ペアプロで一緒にゲームを開発していくのはとても楽しかった!あと成長していく新人かわいいぺろぺろ。
当時その会社ではまだバージョン管理ソフトを使っていませんでした。社員毎に Samba のディレクトリがあり、そこにプログラムファイルを配置して共有を行っていました。さすがにこれは不味いと思いバージョン管理ソフトの提案も行いました。前職では CVS と Microsoft Visual SourceSafe を使用していましたが、CVS には悪夢(マスターアップ1週間前にデータが壊れる)しか思い出がない事と、Visual SourceSafe は無料ではなかったため、当時流行りだしていた Subversion を検証したレポートを作成し、それをもってシステム管理部門を説得するということもプログラミングに関連したお仕事でした。システム管理部門は企業のガーディアンですので、そうそう実績のないソフトウェアを会社内の PC にインストールさせるわけにはいきません。2004年頃の Subversion は Ruby など新しい技術を使う Web 業界ではそれなりに認知度があったかもしれませんが、C++ も使わず C のみで開発を行っているゲーム業界での認知度はとても低いものでした。時間をかけじっくりとシステム管理部門を説得していく必要がありますが、これはプログラミングに関連したとてもとても大切なお仕事です。
なお、会社から社員にならないかとの提案を頂いたのですが、当時はフリーランスという契約のみで結ばれた、ときには人情のかけらもない綱渡り状態にスリルと興奮を感じていたため断りました。24歳という若さのためか、それとも前職で壊れた頭がまだ治っていなかったのかはわかりません。
そのようなプログラミングとプログラミングに関連する作業を行っていたところ、プログラマー全体を統括するマネージャーから奇妙な作業依頼を受けました。それはとある社員プログラマーのスキルチェックをして欲しいというものです。
新人教育でもなく、サポートしながら一緒にゲームのプログラミングを行っていくのではなく、スキルチェックです。スキルを見るならペアプロでもしてゲームの実装を行っていくのが良いと思ったのですが、製品にそのプログラムを入れたくという事で却下されました。また、スキルチェックに僕の時間をあまり使ってほしくないそうです。まぁそりゃそうだよねゲーム開発に時間使わないと。そこで、既存の開発とはまったく関係ないプログラムの課題を出して実装してもらいました。
しかし、まず課題を説明するところから問題が出ます。こちらの説明を全部紙にメモっているのですが、話が先に進むとメモれないとのことでメモり待ちが発生しました。口頭で2分くらいで伝わる仕様が10分くらいかかります。全部話しを聞いてから後でメモるのではダメなのかなと思ったのですが、どうもこのやり方でしか話が聞けないようです。
翌日に進捗を確認したかったのですが帰ってしまっていたので、次の日の朝に進捗を確認するとまだ実装中とのことでした。分からないところがあれば聞いて欲しいと伝え、作業を続けてもらいます。毎日こちらから進捗を確認するのですが、もう少しでできるという返事を貰う以外に特にアクションを起こしてきません。そんな状態で1週間が経ちました。ちなみに課題は1日くらいで実装できるものと想定していました。そして、この状況をマネージャーに説明し、チームメンバーに入れれるかという質問には難しいと答え、作業は終了となりました。
フリーランスの解雇は簡単です。しかし、社員の解雇というのはとても難しいものです。金の横領など分かりやすい行動をとった場合は別ですが、プログラミングスキルが低い事で一方的に解雇しようものなら逆に訴えれて終わりです。僕の今まで関わった会社さんでも、解雇した社員が訴えを起こさない代わりに和解金を要求し成立したケースもありました。スキル不足の社員を解雇するなら、社員にその事を納得してもらい円満に退職してもらうのが良いと思います。納得してもらうには情報が必要です。「○○を依頼しましたが、あなたは達成できませんでした」という情報をいくつも集めて納得してもらいます。退職していかれた社員プログラマーがフリーランスの僕のところに来る前、2人の社員プログラマーのもとでスキルチェックを受けていたそうです。僕で3人目だったわけですね。それら3人分の評価を伝え、納得してもらい退職してもらったのだと思います。
なんにせよ、一連の流れの中で僕は社員に印籠引導を渡すという残酷な作業をしていたわけです。正直楽しい作業ではありません。このような不幸なフリーランスを増やさないためにも、社員の方々には採用時のスキルチェックをしっかりと行って頂きたいと思う次第です。というかそいう首切り作業は社員でやって。。。あ、でも外部委託した方が会社としてメリットが大きいか。
こちらの会社さんがある意味消滅と言ってしまえるような状態になったので別の会社で社員として働いたものの、また頭がおかしくなってたのかフリーになり、受託用の個人会社まで設立し、その会社も今年で閉じ、今はサンフランシスコで英語の勉強と趣味のプログラミングをしています。あまり普通ではないので最初の会社でアホになってからそれが治ることはなかったようです。長時間労働マジ怖い。
自己紹介が遅れましたが akiraak といいます。Qiita に糞ポエムを晒すのは公衆衛生上よくないと思い増田に排泄した次第です。Qiita ではこんなのを書いています。
https://moneyforward.com/engineers_blog/2016/07/07/ruby-core-201606/
[#11741] Migrate Ruby to Git from Subversion
またこれか。
いつも「なぜRubyはGitに移行しないんですか」とかいうスレッドが立つんですけど、結論としては簡単で、移行するモチベーションがある人がいない。外野でガヤガヤ言うだけの人がどんなにたくさんいても無意味で、きちんと結果にコミットしていく係になるだけの気概のある人が必要で、そういう人が出てこない限りは何も変わらないと思います。
ひとしきりゲラゲラ笑ったあとゾッとするよね。生産性の低い方法をとりつづけることを変えようとしない、コミッタ陣のその老害っぷりに。
「SVNからGitに移行する」というのはそれ自体は開発手法の変化において本質的とは思わない。重要なのは、パッチをGitHubのpull-requestやGitLabのmerge-requestのような、差分を見ながら細かく議論できるウェブインターフェイスを使って適用していくことだと思ってる。だからGitに移行したいというリクエストを「またこれか」「移行するモチベーションがある人がいない」で済ませるのは、そういうpull-requestベースの開発手法をよしととしていないってことでしょ。それでいいの?
別におれはRubyコミッタじゃないしパッチ送ったこともないし、Git移行の作業を手伝うつもりもないよ。だって関係ないもん。ただ、いちRailsユーザとしてこのRuby開発陣の老害化にはちょっと背筋が寒くなる。自分たちが老害化していることについて、もっと危機感をおぼえたほうがいいんじゃないのかな。
プログラム書くようになってあるプロジェクトで実践でも投入されるようになってから数年。当時の上司にプログラマって名乗っていいんじゃない?とか言われてプログラマという自認もできた。
もともとはSE的な立場として仕様書を書いたりしてた。ゲーム業界だからSEとはいわずに企画とかプランナーとか呼ばれる職種。書類仕事がメインで、自分でツール作るかスクリプター的な役目でないかぎりコードみたいなものを書いたりはしなかった。コード書くの楽しい。VBなんかに戻れないし、もう書く事もできないだろうな。
だからってわけでもないけれど、できる企画とダメな企画ってのがわかるのよね。プログラマ側からみての意見になるから、ディレクターからみて、とかデザイナーから見て、とかはまたちょっと違うのだと思うのだけど。
自分、ちょっとコードの読み書きできるのでわかってます、な体で仕様書書いてくるのだけど、全然穴だらけ。要件が不明なままフローだけ書いてくる。実際にやりたいことは何なの?そこを説明して実装はプログラマに任せようよ、と。
ゲーム作るのにはバージョン管理システムを導入するのが常。subversionとかgitとかあるでしょ。すごく便利なんだけど基本的にテキスト形式のファイルを管理するためのものなので、エクセルみたいなバイナリ突っ込まれると差分じゃなくて全部のバージョンが入るから容量を圧迫するの。
画像データはまだいいよ。githubがpsdの差分さえ教えてくれるからね。
文字情報メインなのに差分を見る事もできない。検索もできない。
ただ、データ管理としてのエクセルは優秀なのよ。ちょっとしたツールもつくれちゃうし。仕様書をエクセル方眼で書いてくるやつはカスだ。
俺も若い頃はよく使ってたけどMarkdownを知ってからは断然こっちの方が書きやすい。そしてなにより読みやすい。検索もできるし成型もできる。強調表示や画像も貼れる。文法も簡単だし覚えやすい。
Markdownは文字列情報だ。文章だ。文章は一次元的に表現される。つまり書く側が完全に整理した思考でないと書ききれない。読む側に理解させるにはどういった順番で説明をすればいいか考えてからでないと表現できない。おのずと書類の内容、精度が上がる。ただの文章だからこそだ。
エクセルはタブやらなんやらで並列なまま多次元情報としたまま表現できる。思考が整理されてなくても表現できてしまうし、表現した気になる。書いてる側の思考がまとまってないまま表現できてしまうあたりはエクセルの自由度の高さでもあるのだけど、通して読む事ができない形式でもあるので、読む側のことを考えていないクソみたいな仕様書も提出されてきてしまうのが難点。
企画「XXファイルのYYタブに書いてありますよ。ちゃんと読んでるんですか?」
殺意が沸くわ。
Photoshopなり何なりで書いた絵図をGyazoにでもあげてリンクだけMDに貼れよ。エクセルでシェイプ駆使して作るより早いだろ。
パワポの方がマシですわ。あれはページにスペースの制限があるから1ページ内にまとめよう、伝えようっていう意思と能力がないとまとめられないから。
要件を伝えるのもいいけどバランス調整するための調整項目だしなよ。調整できるようにするし、こっちも使う変数を見出すきっかけになるから助かるんだよね。
3Dアーティストのあげてくるデータも仕様書書くでしょ?あれの要件とかもまとめられないでしょ。ノードとか意味わかる?揺れもの数とか制限あるのわかる?
なんでもいいからゲームエンジン触れよ。Unityとか簡単じゃん。プログラム書かなくてもいいじゃん。
俺があれだけMarkdown簡単だから覚えろって言ってもエクセルで上げてくるし、古い知識のままアップデートされない人って存在が迷惑ですわ。
プランナーで説明が下手って終わってるよね。俺も下手だわ。よく怒られてた。ごめんなさい。これは別にプランナーに限った話ではないけれど、プランナーて人に伝えてなんぼなので職能としてこれがないのは致命的だよなぁ。
書いてすっきりしたので寝る。星くれ星くれ
Subversionで十分
途中参加したプロジェクトのsubversionの斬新な使い方。
/trunk
file_ver_1.0.0.zip
file_ver_1.0.1.zip
file_ver_1.0.2.zip
file_ver_1.0.3.zip
file_ver_1.0.4.zip
file_ver_1.0.5.zip
file_ver_1.0.6.zip
file_ver_1.0.7.zip
file_ver_1.0.8.zip
text_ver_1.1.0.gz
text_ver_1.1.1.gz
text_ver_1.1.2.gz
text_ver_1.1.3.gz
text_ver_1.1.4.gz
text_ver_1.1.5.gz
したがって最新バージョンはtext_ver_1.1.5.gz
今週もやってまいりました。
日本中の兵どもが、プロジェクトを破壊するために死闘を尽くします。
「いやー面接じゃなにもわかりませんからねぇ。どんな荒業が飛び出すか想像もできません」
では、注目してみてまいりましょう。
でたーーーー!!開幕早々の大技だ!
「これはすごいですね。難しそうな作業は全部拒否するATフィールドを展開して、リーダを牽制しています」
おっと、リーダ、食い下がる。
「面接でみせた、一見、口が上手くてコミュニケーションが得意そうにみえるという罠にはまりましたね。現場を離れた人が面接官だとよくひっかかりますよ」
おっと、リーダあきらめた。ある意味凄い交渉力だ。
実装を始めているようですが、どうですか?ギコさん。
「いえ、よく見てください」
おおっ!実装しているふりしてYahooニュースを見ているぞ!
人が後ろを通るたびに切り替える!!まさに変幻自在のフットワークだ!!!
さぁ、さすがに仕事をはじめたようです。
ここまで、始まったばかりですが、序盤戦をみていかがでしょうか?
「一応ありますが、見ていないようです。まぁ、命名程度じゃプロジェクトを倒すまでにはいきませんねぇ・・・ああ、これはあぶないですよ!」
「みてください。全部グローバルです。変数も関数も全部グローバルスコープです!」
かって古のプログラマーを苦しめ、プロジェクトを地獄においやった伝説の必殺技グローバル変数の乱用が21世紀の現代によみがえったああああ!!!
鬼の目にも涙。せめてもの慈悲がウンコーダ選手にも残っていたようです。
「いえ甘いです!コメントが日本語として意味が通じない文章になっています!」
まさか、英語のスペルミスならともかく、母国語で意味の通じない文章を記述するとは、嫌らしい責めをします。
さて、アルゴリズムとかはどうですか?
「いけませんね、この処理はライブラリでサポートされているのですが、車輪の再開発をしてますね」
「メモリと処理時間に順調にダメージを与えていますね。100倍程度の差はあるんじゃないですか?」
赤い仮面の男を遥かに超えた100倍の速度差がきた!!
おおお!!!
まさに分身の術!
ああ!?subversionを操作しているぞ・・・ま、まさか、まさかあああああ!!!
プロジェクトにダメージを与える必殺の一撃がはいったああああああ!!!!!!!
「いえ、定期ビルドでエラーが発生しました。この程度でプロジェクトは倒せませんよ」
リーダがつめよります。
すごい!蝶のように責任を回避しつづけるその姿はまさにモハメドアリです!
でたあああああ!必殺技!『私の環境では動いていたので別の人のせいじゃないっすか?』
テストしてないのにすごい自信だあああああ!
「人によって動いたっていう定義が違いますからねぇ。テストが合格したら動いたという人もいますし、コンパイル通ったら動いたっていう人もいますからね」
<かんかんかんかーーーん!>
http://anond.hatelabo.jp/20140405215537
http://anond.hatelabo.jp/20140405214722
もしかして、まともなツールないのかよ。
開発にはMacがいいって大嘘じゃん。Subversionもまともに使えないとかふざけるな。
とりあえず、バージョン管理システム(GitとかSubversion)と、自動テストは導入したほうがよい。
35歳以上 は Subversion を 使っていて 35歳未満 は Git を 使っている
えーと、30代なら一番成長する20代半ばころはsvnだったと思いますし、仕事場でGitを使い始めたのなんて
早い企業で2,3年前だと思いますが、どういうことでしょう??
FWって何か、って話だよね?ちょっとしたスクリプトを組む事自体FWとか言ってそうだし、
ワンラインで出来るような物を大層なプログラムとして公開して、バカどもがそれを有難がってるようなのがありふれてるけど、
元増田はそういった何も自分で考えないでオープンソースを使う、ってのをよしとしたいのかな?
効率が何か、って話だけど、35歳以上になってくると、最初開発やってる頃はマシンスペックがまだ十分じゃないからパフォーマンス重視、ってなるか。
そして今となっては馬鹿が描いたコードでもなんでも動くからなんでもいいから手が速いほうが良い、それは確かだな。
これは上のオープンソースのFWを若者が使う、ってのと矛盾してるよな?
これなんかはそもそもそれぞれの使い道が違うものなんで。。。それすら分かってない辺り。。。
45歳以上 は 息 を していない
35歳以上、でも言えることだが、まともな人間は30代にもなれば現場で働く事はしない。
かっこ良くぷろぐらまー、なんてずっと現役でやってるのは、まともに管理仕事できないからそのまま現場に残ってるだけなのに。。
カッとなって書いた。増田って便利ね
ーーーーーーーーーーーーーーーーーーーーーーーーー
技術者の話は難しい。込み入り過ぎ。専門的過ぎ。客とか社長とか金を払う人からすれば全く理解できない世界。この状況でエンジニアが何か説明をしようとしてもなかなか伝わらない。
そんなエンジニアが自信を持てるわけがない。別に「能力がない」と思い込んだりしなくても、技術者でなくても、だれでも一緒。そもそも話が通じないのだ。無理解は一番の拒絶。拒絶されるのに慣れてる人が自信を持てと?
それでもシステムが作られて動かないとアイデアとかやりたいことの実現ができないから、客は意味不明な人種であってもエンジニアを雇おうとするのだ。でも客は「どうやって作られるかなんてどうでもいい、思い通りに動けば中身は知らん。むしろ技術者と話をしていると難しい話ばかりされていつのまにかセキュリティ事故の責任を取らされるから絶対イヤだ。だいたいこんな若者ガー。でもシステムは欲しい(キリッ)」って考えてる。エンジニアは中身をどうやって作ろうかと色々な選択肢を常に吟味しているというのに。
gooleにせよfacebookにせよエンジニア自身でサービスを立てて成功してる人は本当にえらいと思う。中身の話は無理。理屈抜きで万人が好んで使うサービスを作りたいもんだ。
ーーーーーーー
なんでみんな勉強するのかといえば、勉強せずに過ごして自分の技術や知識が陳腐化すると周りからバカにされるからだ。キモーイいまどきsubversionが許されるのは小学生までだよねーキャハハハとか言われるのだ。
同僚からは当然笑われる。客も上司も流行りのキーワードの中身は知らなくても耳にはするから笑われる。後輩からも笑われる。彼らは世代が若いので自然に最新のものを勉強して来ているのだ。
周り全員から馬鹿にされる。以前(今でも?)WebについてこれないVBerとかコボラーがバカにされていたのと一緒だ。
勉強したい。勉強できるならどこでも良い。自学自習には限界がある。けれど、社内にそんなに技術に詳しい人はいない。外に出てくる人はそういう理由で出てくるのだ。能力を向上させたいのではなく、陳腐化を避けたいから勉強するのだ。
同じ事がGITにも言える。実際現場で見るのはSubversionばかり。ステマだったのね。
弊社はバージョン管理でトラブルも多発してるのでsubversionからgit&githubに変えたいと主張してたんだけど
ずっとCTOに拒否されてたんだよね。
その割には最高の技術力があります!とか炎上案件はありません!とかインタビューで答えてるんで
とはいえ、subversionでも適切な運用されていれば問題ないんだけど、基本とされているtrunk/branch/tag運用もされていないし
本番リリースも手でファイルをコピーとかありえない状況だったりする。
で、この前コピー忘れでエラーおきたときにsvn logを見ていてふと気がついた。
エンジニアN人アサインしますという人月契約なのに、実働してるのがN-1とかN-2人しかいないんだよね。
アカウントは共用だから実はだれがcommitしたかわからないという状況。
ところが、gitとかgithubに移行すると1人1アカウントが基本だから
ちなみに人数足りない現場ブラックな運用で回すことでカバーしてる。
当然離職率も偉い高い。○ニク○も目じゃないくら高い。
その割にはCTOのビックマウスのお陰で人はくるんだけど最近は化けの皮がはがれたのか、スカトロ女優みたいのばっかり採用している。
さて、そろそろ職務経歴書の手直しでもはじめようかな。
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というなら止めないけど
http://anond.hatelabo.jp/20120407162253 に便乗して。
それなりに大きなとある会社のプログラマだけど、うちの会社のビルドシステムがおかしい気がする
あまりにも原始的なので違和感を感じるんだけど、自分にビルドシステムに対する知識が圧倒的に不足しているので、今やってる作業に本当に意味があるのかよく分からない。詳しい人に教えてもらいたい。
手動でコピーするからよく事故が発生するし、同じファイルが複数箇所にあるので全然履歴が追えない。
あと、中間ファイルや実行ファイル(.o とか .so とか) も含めてごちゃまぜにチェックインされているので、もっと訳がわからなくなってる。
「ビルドは成功しないのが当たり前」とかいう人ばかりで、正直発狂しそうになる
フォルダツリーがわかりづらいと思うので図を書くと
/ Main/ -- 共通ファイルディレクトリ foo/ bar.c driver/ common.c ProductA/ foo/ bar.c -- ProductA 用の変更が入ってる baz.c -- ProductA 専用ファイル driver/ common.c ProductA_Orig/ -- ProductA/ 内の ProductA用ファイルが丸々入ってる foo/ bar.c baz.c ProductB/ foo/ bar.c -- Main と全く同じ driver/ common.c ProductC/ foo/ bar.c driver/hoge.c ProductC_Orig/ driver/hoge.c
こんな感じになっていて、共通部分は Main/ の中とそれぞれの ProductA, ProductB, ... ディレクトリの中にすべてコピーされている。
チェックインするときはすべてのファイル、例えば bar.c を更新したら Main, ProductA, ProductB, ProductC の bar.c を手動で更新する必要がある。
ビルドするときは Main/ のファイルを ProductA/ にコピーして、 ProductA_Orig/ の中の機種依存ファイルをさらに ProductA/ にコピーする。これは、同名のファイルが Main にもあって、 ProductA のファイルが上書きされるかららしい。
ビルドできないので、最後の最後まで結合テストが出来ずに、みんなローカルPCで開発してる。誰かのPCが吹っ飛ぶとその人が開発していた差分が消失する。
「ツリーを共通部分と依存部分きちんと分けて、ビルド自動化しましょうよ」って上長に提案したら「この会社はこれでやってる。むしろバイナリが入っているのでビルドできなくてもテストできる」という感じであまり真面目に取り合ってもらえなかった。
Eclipseはその豊富な機能を覚えるのもプラグインをインストールするのも非常に面倒(Subversionのプラグインさえ入れたのに使い方がわからなくて使ってない、調べたけど動かねーし)。あとアホみたいに重い。起動も重いし検索も遅いしでかいファイルを開くとカーソルの移動さえ重い、最新のPCなのに。あとバグが多いのはいわずもがな。しょっちゅう落ちるか、謎のエラー(無害ぽいが)が出る。
しかしそれでも、今時タダのレガシーエディタでコード書きたくないわ。設定次第で何でもできるようだが、俺はコードを書いて仕事を進めたいのであってエディタの設定に何時間も使うのは一度でも嫌だ。あとIDEはやっぱり必要。
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プラグイン、ソロプログラマープラグイン、
など様々なプラグインが充実している。
とりあえず、aptanaでsubbersionをやってみる。
SubVersionとか微妙に信頼感がない。
サーバーの調子が悪くなったりすると同期がとれなくなったりとか。
大人数が同時に開発するときは必須だけど
バージョン管理していないと、ディスク死んだ時とかに最新ファイルがわからず復旧に時間がかかって恥ずかしいww
下向いちゃうしww
男にはせめてSubversion使って欲しい……
.bakとか.oldとかつけてファイル保存とかされたら……もう最悪ww
常識的に考えて欲しいだけなんです!
「ファイル名に日付付けてバージョン管理してます!」なんて自信たっぷりに言われた時の恥ずかしさとか分かる?
あのね? たとえば週末10~20人ぐらいで勉強会とかするでしょ?
それぞれ作ったwebアプリをリポジトリにアップして公開するわけじゃない?