kazuk は null に触れてしまった

C# / .NET 系技術ネタ縛りでお送りしております

月別アーカイブ: 7月 2011

ボランティア活動終了と退職とか


近況ブログでありまする。

個人的には今月末でボランティア活動を終了して仕事するかなと言う所。

また、ボランティアに没頭したいのもあり、株式会社クロスワープを退職致しました。

 

という訳で、現状としては個人事業主な形で仕事再開しようと思っております。

まぁ、個人事業主としてやってく上で、仕事を探すのは当然に営業活動をするわけで、宣伝ブログでもあったりします。

という訳で以下箇条書き的にこんな仕事あればお問い合わせ下さい的に

  • Visual Studio 2010 、 C#での開発(Web/それ以外どちらも可)
  • 及び上記環境での開発環境の自動化を含む効率化に関する事柄
    • たとえば繰り返しパターンになる部分のT4テンプレート化
    • ビルド等の処理で必要な msbuild タスクの開発等
  • 及び上記環境での開発に関する講習/講義の実施
    • Pex & Code-Contracts 使ってコードカバレッジを取って等々の高信頼ソフトウェアを開発する為のプロジェクト設定手順等をチームに展開したいなどの講習
  • 及び上記環境での開発でのアプリケーションアーキテクチャの構築支援
    • プロトタイピング→フレームワーク収穫→展開用プロジェクトテンプレート化
    • モデル化およびモデルに基づくデザイン環境の整備(DSL Tools利用)

汎用性の高い物については私個人の製品資産にして頂き利用権を提供する形にしていただければ割安に提供できます。(実装済みの物が即座に出てくる場合もあります)

個別要件の強い物についてはコンサル的に月間数時間の作業時間を予約頂いて提供という形でやれればと思います。

という訳で、問合せはメールにて kazuk.dll@gmail.com です。

kazuk の開発環境晒し


最近ではもっぱら開発環境はノートPC、どこでも開発できるのは魅力&やってる事の関係からUSBを頻繁に差し替えるので、キーボードのすぐ脇に出てるケーブル差し替えが出来るのは便利ですねーと。

とりあえず現状使ってるノートPCは hp の ProBook 4420s 本体購入価格は4万円を切っているというアウトレット品。中身は殆ど総とっかえで HDD を SSD換装、メモリはデフォルトの2GBを外して4GBボードx2で8GBへ、本体ディスプレイだけだと情報表示量が貧弱すぎるので外部ディスプレイに UXGA 1600×1200 を接続しています。

SSDにしてあるので、メモリは8GBでもまぁまぁ快適、Core i3 なので Azure のエミュレータで多数ノード上げるとコアが足りなくなる不便さはあるけど一応2コアあるので処理競合をさせようとすればしないでもないぐらいな。

Windows 系メインの開発環境は Visual Studio 2010 Premium 、実はほかの開発環境使う場合の援護系を色々こっちから(後述)

そのほかに入ってる開発環境としてはこんな感じ。

MPLAB IDE v6.40 – Microchip の PIC 用開発環境ですな。

EAGLE プリント基板のパターン起こしとかが出来るCADソフトです

LTSPICE アナログ回路のシミュレーションのできる電子回路設計ツールです。

遊びでしか使ってないけど Arduino

上はクラウドから下はマイクロコントローラまで、我ながら幅が広すぎる開発環境でございます。

基本的に使ってる言語は C# か PIC クラスに対してはアセンブラ。C は Aruduino のアレコレいじる時にたまに書く程度。

ローカルマシン内で CruiseControl.NET のCIサーバを上げてある他に SubVersion のリポジトリもあったりして、このリポジトリイメージはWindows Live Mesh でオンラインと同期取ることでバックアップ。

Visual Studio と SubVersion の連携はあえてせず、亀Svn でExplorer からローカルSvnは操作、SubVersion内は主にドキュメント類のバージョン管理とローカル CIサーバに見せる為のリポジトリという位置づけ。

Visual Studio は Codeplex のTFS や会社であれば会社のTFSとつながってるはずなので、それをそのまま運用しながら、TFS で最新ソースを取得したらローカル SVNへコミットしてローカルCIサーバが勝手にビルド、うまくいかないとしたら取ってきたソースに毒が含まれているって事でローカルCIサーバ上で通る様にするためにローカルSvn上でちまちま作業。通ったらTFSへチェックイン。その後アレコレしている最中も SubVersion と ローカルCIサーバが基本としてお友達で手元VSでビルド通ったらSubVersionへコミットしてみてローカルCIサーバでビルドとテストをしてもらう的、CCTray のExec 設定でビルド失敗するとプロジェクトダッシュボードがブラウザに勝手に開くよ設定してるのでブラウザに何も出なければ基本うまく行ってます的な。

PIC用のコードの類とかは VS上で編集して(T4を編集するとT4からPICアセンブラソースが出る的な)、デバッグ用のPICシミュレータ上げる時とかだけ MPLAB 起動。

Visual Studio で開発してるのは基本として VSSDK でサポートされるプロジェクトテンプレートとかの類やT4でのコード生成回りと生成されるコードが使うインフラ実装みたいな感じで、もっぱら開いてるソースの拡張子は csproj と vsproject、tt 的な。

準備は整ったーでエイや!とばかりに作りこんだプロジェクトテンプレートでプロジェクト起こしてアイテムテンプレートからファイルゴンゴン起こして設定的なことチコチコ書き込むとアプリケーションは出来上がりが理想という感じ。プロでも一部の人しか理解できない&やらない世界が自分的にはお好きな所。

デバッグはもっぱらPex で、落ちたコードで行きつく状態の列挙をさくっとやってくれてテストを作ってくれるので、想定通りになってないルートにたどり着くテストをPexに起こしてもらってそれが上手く通る様になるまでコードいじり。Pexがお手上げになるようなコードになってたらリファクタリング。大半は Code Contracts でRequire一行書いて呼び手が悪いと主張すると Code Contracts の静的解析で悪い呼び手を見つけてもらってチコチコ直すとバグは取れている事が大半。Pexが作ったテストとかはそのまま一緒にコミットすればいつでもローカルCIサーバがテストしてくれるのでなんか間違っても安心という。

それと、「テストで結果確認しようとしてる内容ってCode ContractsのEnsureに書いた方がいいんじゃないの?」は常に自分に問う事、これをしてると null チェック忘れてるコードを書くと静的解析が教えてくれるし、その null チェック要らんですよ、null 帰りませんからとかも教えてもらえるのでサクサクやりたい事に集中してコード書いて「このコードで不都合はございませんか?」とCode Contractsに聞いてみると、「ここでnull帰るかもよー」とか教えてくれるので、「さようですか、ではこうします」のループが奇麗に回る。

バグったコードは基本として書けません、仕組み的に。これをちゃんとすると結構色々楽ですよって感じです。