give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

システム開発

シンプルでわかりやすいコードを書くためにあなたがすべきこと

はじめに 先日、とある知りあいのRubyプログラマからこんな相談を受けました。(内容はちょっとボカしてます) 社内のコードレビューでもっときれいなコードを書けるようになった方がいい、と言われました。「きれいなコードを書けるようになれ」と言われて…

Basecampに学ぶ、10倍の生産性を生み出す考え方とソフトウェアビジネスのアイデア

はじめに 先日、こちらのページでRuby on Rails作者のDavid Heinemeier Hansson (DHH) 氏と、Basecamp (旧37signals) 創業者のJason Fried氏の対談記事を読みました。「10倍プログラマ」の神話、Ruby on Railsの生みの親が語った高い生産性のカギとは!? 「10…

「動的型付言語は使い物にならない」か?

はじめに Ruby対Scala, 動的型付言語は使い物にならないという興味深いWeb記事を読みました。 はじめに断っておきますが、おいらは別にRubyが嫌いなわけではないですし、「動的型付言語は使い物にならない」と思っているわけではありません。 そもそもRubyや…

体系的な開発プロセスや開発方法論を身につけるための参考書籍

はじめに システム開発って、免許がなくてもできちゃうので誰もが「自称プロ」です。 だから豊富な経験と専門知識を持った人が担当することもあれば、勘と度胸と限られた経験しかない人が担当することもあるわけです。 規模の小さいシステムであれば後者のよ…

おかしなおかしな目標管理

組織のゴール うまく書けるかどうか分からないけど、前々からちょっと気になっていた話です。 うちの会社では半期ごとにゴールを設定します。 ゴールは通常、組織全体で定量化(数値化)できるものが設定されます。 ゴールを達成したかどうかで、特別ボーナス…

自動化テストで気をつけること

先日、会社のメンバーからテストの自動化に苦労しているという話を聞きました。 そういえば、一言で「テストの自動化」といっても結構奥が深いので、自動化テスト初心者が注意すべき点や重要なポイントをちょっと考えてみました。 自動化テストの注意点 どの…

新卒者に何か言葉を贈るなら

はじめに こちらのブログをはじめ、季節柄最近ちょくちょく新卒者向けのメッセージを書いたブログを目にするようになってきました。 これまで新卒者に贈るメッセージなんてわざわざ考えたこともなかったのですが、もし自分なら何て言うんだろうなあと考えて…

開発時間短縮のためのプラクティス10選

このエントリを書いた背景 先日会社で「開発時間を短縮するためのアイデアやノウハウをみんなでシェアしよう」という課題が出されました。 「カウボーイコーディングとコピペプログラミングで技術的負債たっぷりのシステムを作りましょう。そうすれば開発時…

When Database Source Control Goes Bad 翻訳 Part9

The End… ? 最後に…? And in the end, it is all about productivity. Much like every other aspect of development, your approach should not be dictated by what you enjoy, or your religious language preferences, or office politics, or any of th…

When Database Source Control Goes Bad 翻訳 Part8

Running with a Local development database. ローカル開発環境のデータベースで実行する Hopefully I’ve convinced you that you should have your own copy of the database for your local development. No matter how hard you try, if you have a whole…

When Database Source Control Goes Bad 翻訳 Part7

前回からかなり間が空いてしまいましたが、海外サイトのWeb記事の翻訳を再開してみたいと思います。 ちなみに前回までのあらすじははこちらです。↓When Database Source Control Goes Bad 翻訳 Part1 - give IT a try When Database Source Control Goes Bad…

数値で測るコード品質

プロフィールのところにも書いてあるのですが、おいらの目標は「美しく無駄のないシステムアーキテクチャを設計、構築すること」です。 なぜならシステムの保守性や拡張性って、アーキテクチャやコードの品質によって雲泥の差が出ることを、幾度となく痛感し…

「ポータブルなスキル」や「エンジニアとしての基礎体力」の重要性

先日、チーム内ミーティングでメンバー全員が今期の自己啓発目標を発表していました。 その中で多く目立ったのが「C#を習得する」とか「Perlを習得する」というような新しい開発言語を習得する目標でした。 最初は「新しい言語にチャレンジするのはいいこと…

モデルを中心としたソフトウェアアーキテクチャを採用する意義

今とある新規社内システムの設計と開発を担当しています。 ソフトウェアアーキテクチャはおいらが考えました。 簡単に言うとこんな感じです。 UI層/サービス層/データアクセス層の3レイヤーに分ける 開発言語はC#、UIはASP.NET、データアクセスはADO.NETを採…

When Database Source Control Goes Bad 翻訳 Part6

Isolating your development database 開発用データベースを隔離する Imagine that you working on a project that involves several layers of DLLs communicating with each other. Because you are in active development, you and your team are constan…

When Database Source Control Goes Bad 翻訳 Part5

Developing Application code Locally ローカル環境でアプリケーションコードを開発する These days, most every application programmer develops their code locally. That’s just what you do. Many developers have learned the hard way that this is i…

When Database Source Control Goes Bad 翻訳 Part4

「The Catch」の後半部分です。記事全体からするとそろそろ折り返し地点?いやあ長いですね〜。 Anyhow, during the next deployment to QA, someone needs to remember that these specific changes need to get deployed. Since there is no defined strat…

When Database Source Control Goes Bad 翻訳 Part3

翻訳第3回です。このセクションは長いので今回は途中まで。 週末はちょいと旅行に出かけるので、次の更新はおそらく来週になります。 The Catch 難題 Let’s imagine that all database changes need to be checked into an isolated directory in source-co…

When Database Source Control Goes Bad 翻訳 Part2

The Impedance Mismatch インピーダンス・ミスマッチ(開発者とDBAの違い) Why aren’t Database DML and DDL subject to the same level of source-control as the application? Why don’t developers think about databases the same way that they think ab…

When Database Source Control Goes Bad 翻訳 Part1

2010.03.07追記 結局全9回になりました。 かなり長いですけど、何回かに分けて読んでみてください。 When Database Source Control Goes Bad 翻訳 Part2 - give IT a try When Database Source Control Goes Bad 翻訳 Part3 - give IT a try When Database …

犬小屋と高層ビルの違い

ちょっと興味深いエントリを見つけました。 IDE教育に不安を覚えること - みねこあ なるほど、Smart UIと呼ばれる作り方が、システムの品質を下げるという点は同意です。 ただ、その原因がIDEにあるのかというと、必ずしもそれだけではない気がします。 おい…

はやく、やすく、うまい情報システム部の作り方

はやく、やすく、うまく(品質よく)システムを開発し、維持管理する情報システム部の作り方を紹介します。 情報システム部のバジェットを決める。 既存の情報システム部を解散する。*1 バジェットの範囲内で最高のマネージャーと最高のエンジニアを最高の待遇…

ダメエンジニアの使い道

ダックタイピングは間違い? - give IT a try ↑のエントリで書いたダックタインピングとダメエンジニアの関係や考え方について、Matz先生の非常に興味深いコメントを読ませてもらいました。 以下にちょっと引用してみます。(またまた無断転載ですみません・…

失敗は成功の元

なんか微妙なコラムが載っていました。 第11回 新しいシステム開発技法への挑戦 〜オブジェクト指向の失敗経験より〜 http://gihyo.jp/lifestyle/serial/01/dilemma/0011 始めての挑戦で失敗に終わったら即、否定的ですか?? 初心者ばかりを集めたチームで…

効率化システムと戦略的システムの違い

Martin Fowler先生のブログに新しい記事が載っていました。 UtilityVsStrategicDichotomy http://martinfowler.com/bliki/UtilityVsStrategicDichotomy.html 仕事を効率化するだけのシステムと戦略的なシステムの違いを述べているようです。 戦略的なシステ…

オープンソースから美しい設計を学ぶ

最近社内でWindows Formを使った開発案件が出てきました。 「そういえばWindows Formってあまり開発経験がないし、設計のベストプラクティスみたいな本も見たことないなあ」と思い、インターネットでWindows Formのアーキテクチャ設計が学べるサイトがないか…

論理的には可能でも物理的に無理なこともある

ひさびさに共感出来るコラムを見つけました。 その「やりましょう!」は大丈夫なの? http://el.jibun.atmarkit.co.jp/regtan/2010/07/post-c84b.html ユーザーの声から新たな要件を抽出し実装するという「やりましょう!」は、ユーザーのサービスに対する満…

継続的インテグレーション(CI)のお勉強

また一冊本を読み終わりました。 Amazonに感想を載せてます。 継続的インテグレーション入門 開発プロセスを自動化する47の作法作者: ポール・M・デュバル,スティーブ・M・マティアス,アンドリュー・グローバー,大塚庸史,丸山大輔,岡本裕二,亀村圭助出版社/…

質が悪けりゃコストがかかる

↓なんか自分の現状とかなり一致するな〜と思ったコラムです。 現場担当者の悩み http://el.jibun.atmarkit.co.jp/esmconsul/2010/06/post-65bd.html 保守に時間がかかる。 ほんまに。 作るのにも時間がかかりますが、運用や保守はその数倍時間がかかることも…

安定しているシステム ≠ エラーやトラブルのないシステム

昨日は社内で開発されたとあるシステムの引き継ぎを受けていました。 「このシステムは比較的安定しています。ユーザーから不具合やトラブルの報告はほとんどありません」 ということだそうです。 説明が一通り終わった後、実際にユーザーのオペレーションを…

How to improve performance?

おいらが読んでいるメルマガに以下のような記事がありました。 画面表示が想定外の遅さ 処理見直し「1秒の闘い」に勝利 http://itpro.nikkeibp.co.jp/article/COLUMN/20100308/345466/ 冒頭には 1. 新営業店システムの開発中,画面の表示が予想以上に遅いと…

効率の良いInfo Pathフォーム開発

これから着手する開発案件にInfo PathとShare Pointを使った報告書システムがあります(これまでにも何度か書いてますが)。 ところがこの報告書は入力項目が多く、ワークフロー機能も持たせなきゃいけません。 Info Pathは基本的に便利なのですが、普通に作る…

Microsoftの功罪?

例の残念なコラムの筆者さんのコメントから。 私はデータベースを活用してます。コメントをいただいた何名のかたはC#を使っているそうですが、DataSet DataTable テーブルオブジェクトとかDataTableからGridView(表)へのバインドなどのテクニックを使って…

44のアンチパターンに学ぶDBシステム

先日購入した本のうち一冊を読み終わりました。 44のアンチパターンに学ぶDBシステム (DB Magazine SELECTION)作者: 小田圭二出版社/メーカー: 翔泳社発売日: 2009/11/28メディア: 単行本(ソフトカバー)購入: 12人 クリック: 113回この商品を含むブログ (1…

人間は機械じゃない

昨日は次に担当するシステムの仕様打ち合わせをやっていました。 やっぱり人間界のルールをシステムに落とし込むのって難しいですね・・・。 主にワークフロー絡みの話だったんですが、ある程度枠組みはあっても「こういう場合に限りこうなる」とか「たまに…

Info Pathのお勉強

次の開発案件に向けてInfo PathとShare Pointのお勉強をしてました。 他のOffice製品にも言えることですが、「ある程度のことをやるにはとっても便利。でもその"ある程度"を超えてしまうとちょっと大変」という印象があります。 今回の案件もかなり入力項目…

「おいしい」ところを最大限に活かす!

プログラミングにおいてはひとつのやり方をいつでもどこでも使おうとするより、それに固執せず言語の特性にあわせて一番「おいしい」ところを活用するプログラミングにすべきだとおいらは考えます。 たとえばこんな感じです。 例外 例外はエラー処理を非常に…

.NETの例外処理

外部ベンダーさんに開発してもらったASP.NETの社内システムがあって、昨日はそのソースを眺めてました。 いろいろツッコミどころはありますが、一番気になったのは例外処理のまずさ。 やっぱり、こういう感じなんですね〜。 bool GetDataSet(string id, out …

プログラムと同期が取れていないストアド

しょっちゅうエラーログが飛ばされてくるシステムがあるので、エラーの原因を調査していました。 その中の理由のひとつに「プログラムと同期が取れていないストアド」がありました。 具体的にはこんな感じです。。。 ストアドの実行結果から特定のカラムの値…

Design Horror!

このブログでも何回か登場している「ヤヴァイシステム」で、またまた驚きの大発見をしてしまいました。。。 なかなか一覧表示のレスポンスが上がらないので、あの手この手でSQLをチューニングしていました。 そうするとどうもボトルネックと思われるストアド…

結局ウォーターフォール?

開発プロセスはウォーターフォールよりもアジャイル開発やUP/RUPのような反復型開発の方がいい!とずっと信じているおいらですが、これからやろうとしている案件の計画を立てたら・・・「あれ?これって完全にウォーターフォール?」みたいな計画になってし…

Nasty design can blast your brain!

ひどい設計は頭をおかしくします。 ヘタなプログラム(たとえばブロックが長過ぎるとか、重複が多いとか)もデバッグに苦労しますが、ほとんどメリットが感じられないのに開発者の自己満足としか思えないくらい、技巧的な設計の上に構築されたシステムもまた超…

人の気持ちがわかるコンパイラ

「あるWebシステムの一覧画面にカラムを一つ追加してほしい」という改造依頼を受けました。 話を聞く限り、楽勝そうなのですが・・・蓋を開けたらガーン!! 数百行あるようなメソッドがわんさか存在するコードの固まりでした。 一通りソースを眺めましたが…

ASP.NET + Info Path + SQL Server

次の開発案件の技術調査をやってました。 「ASP.NET + Info Path(XML File) + SQL Server」で出来るだけ楽して報告書管理システムを作るというもの。 「楽しよう」というコンセプトながら、Info Pathのあたりが初挑戦の分野なのでハマりまくり・・・。 週末…

製造装置制御プログラム開発トレーニング

最近は連日製造装置制御プログラム開発トレーニング(通称Automationトレーニング)を受けているのであまり書く内容がありません。。。(1月中はほぼ毎日午後の時間がつぶれます) しかし、うちの会社は製造業なので現場や装置の仕組みが分かっているのと分かっ…

ユーザーとのコミュニケーション

ASP.NET案件の仕様打ち合わせに参加しました。 小規模システムなので仕様もすぐ決まるだろうと思っていましたが、思いのほか難航。 実はこちらがユーザーの意図をきちんと汲み取れないまま仕様を考えていたり、こちらは頭の中でデータベーステーブルを思い描…

.NET Applicationのエラー処理

エラー処理(例外処理)の設計はシステム設計の重要課題の一つです。 設計が悪いと以下のような症状が出ます。 ソースコードがエラー処理の分岐だらけになる。 エラーに関する情報が不足し、原因調査に時間がかかる。 エラー発生時のシステムの振る舞いに一貫…

脳に優しいC#のメソッド設計

Code Complete, Code Craft, 危険なプログラムの処方箋といった書籍にも書いてあるベストプラクティスやアンチパターンをまとめて、「脳に優しいC#のメソッド設計」を定義するとすればこんな感じかも。 単一の責務を持つ(1つのメソッドであれもこれもしない)…

要求開発スキル

先日書いた小規模ASP.NET案件のお手伝いで、仕様決めのミーティングに参加しました。 納期が短い(来年3月から本番稼動希望)ので、できるだけあっさりした仕様にしないと間に合わないんですが、どうも若干凝った方向へ流れがちに・・・。 ただお客さん自身は…

またまたお手伝い

別件でASP.NETを使った比較的小規模なWebシステムを開発するみたいなので、その設計や実装をお手伝いすることになりそうです。 今の会社に入社してから3年になりますが、ずっと保守保守保守・・・ばかりでした。 なんかここ最近になって突然新規開発モノが増…