2020年のお話

2020年はクソ案件の年

昨年はCOVID-19という新型コロナウイルスに世界中が振り回されて、何もかもが遅れる事態になりましたね。

そんな中でも比較的安定した案件や仕事が舞い込んできたのは、ありがたいことでしたが……

2020年年初、2019年のクソ案件と同レベルのクソ案件が舞い込んでくるとは誰が予想できたでしょうか。

結論から言って、この案件は第2フェーズ最終盤でリタイヤしました。

精神的にやってられなくなりました。

クソ案件の概要

2020年に請け負ったクソ案件の概要を掲示しましょう。

  • クライアントはあるレジャー施設を運営している企業です。
  • 案件の概要は、施設の予約状況を把握出来る施設内向けシステム
  • ウォーターフォール型の開発。
  • 開発言語等は問わず。
  • スタートは当初予定より3ヶ月遅れてスタート
  • クライアント→中間会社→請負会社→うちら
  • 納期は2020年5月末
  • この話が来たのが2020年2月中旬
  • つまり、開発期間が元々半年だったものが3ヶ月に短縮

お分かりいただけるだろうか。

スタートダッシュ、3ヶ月遅れ。つまり、スケジュール半分スギテーラ。

スタートダッシュが何一つ出来ておらず、上流工程にカチコミしたくなるくらい酷い状況。

さて、これどうなるんでしょうか(棒)

今回の主犯

今回の主犯は、クライアントと仕様を策定・折衝する中間会社です。

クライアントは途中からアレコレ仕様変更を要求してくる。そのくせ納期変わらない。→アホかとアボガドかと。
ちなみにお金も変わらない。

特に中間会社、イエスマンすぎて全然使えません。
最初の3ヶ月、何してたんだと。

で、その中間会社が寄越してきたドキュメントがもう読みにくくて仕方ない。
吐きそうになりました。

  • 要件定義書と称した設計書もどき
    →全体像が把握出来ない。
    →要件定義書を勉強してから書いてくれ。
    →要件定義って辞書で調べてきてくれ。
    →クライアントの要望を全載っけで書いたドキュメントは「要件定義」っていわない。
  • 設計書としても見てられないドキュメント
    →ドキュメントの主目的が完全に失われて、ドキュメントとして半分以上機能してない。
    →そもそも設計書もどきならパワポで書くな。
    →最低でもワードで書け。

まあ、長年炎上案件の火消しをしていたりすると、大体の共通項が見えてきます。

炎上案件は往々にしてドキュメントが読みにくく、主点が右往左往していて日本語としてまとまっていません。

日本語として読めないドキュメントが出てきたら炎上案件と思ってください。
そして、日本語として読めるドキュメントを書く努力をしていきましょう。
依頼する側に立ったとき、自分たちもそうならないようにするためです。
日本語でまともな文章書けるようになること、本当に大切です。

まあ、第1フェーズは、苦ソースならぬ苦ドキュメントにめげず、何とかこなしましたよ。

GW潰して40連勤。平均12時間労働で。

9月以降に第2フェーズ入りましたが、状況としては次の段階に入ったって形だけで苦行っていうことは何も変わらず。

そうすれば分かりますよね。
メンタルやられて終わりです。

結局今年の1月以降は、ほぼ仕事できなくなりました。
自分の身体がヤバくなりますもん。

2月以降のお話は、次回へと続きます。

ご無沙汰しております。

ご無沙汰しております。
なんか、前回の投稿から1年6ヶ月以上投稿していなかったようです。

すみません。
存在忘れてました。相当真面目に(苦笑)

1年6ヶ月の間、色々ありましたのでご報告したいと思います。
技術系のブログからもう遠く離れてしまいましたが、まだ見てくれる方がいらっしゃるようですので、お付き合いいただけましたら幸いです。

今回は、2019年末に請け負ってた例の案件の結末です。

2019年末にやってた例の案件のお話

さて、話は2020年初旬にさかのぼります。

最後に投稿したあの案件ですが、結局こちらで一通り要望の機能を全部ぶっ込みまして、ソースコードも一通り管理してあげてたものをすべて丸投げして終了しました。

あとは勝手にやってください。

という形です。リモート接続も出来なくなったし、先方からも連絡がないようなので、今は勝手にやっていらっしゃるんじゃないかなと思います。もう、どうでもいいけど。

ビジネスロジックの分からない海外の新人ちゃんが組み込んだクソEntity FrameworkのER図で地獄を見ていれば良いと思います。あれくらい強烈に絡み合ったリレーション貼ってると、時限爆弾の解除をする緊張感を味わえるはずです。

あと相手はVisual Studio 2015あたりで開発していたと思うんですけど、こっちは途中からVisual Studio 2019で開発していたかなと思います。ビルド自体は問題ないです。バッチで行っていたので。
後半は、結局構築する時間ないから一部PHPで組んでいた気がします。元々PHPだった案件ですしね。親和性は高いです。

2019年年末~2020年初頭は、クソ案件の後始末で終始しました。

だけどねぇ、まさかこの後に控えていた案件が更なる苦行になるとは誰が想像しただろうか……。

最近の炎上案件

お久しぶりです。
更新頻度も数年前から1~2回/年になってて酷いですね(苦笑

今回はここ最近の自身の開発傾向を振り返ってみようかと思います。

スーパー炎上案件

かれこれ1~2年ほど、この案件の潰しを行っています。
元請けがやらかした失敗を、何故か対応する義理もない我々がケツ拭いてる案件です。
余りにも酷すぎて相手のこと等具体的なことは書けませんが、時系列を整理すると次のような展開。

  1. 「元々の開発担当が逃げ出した」と飛び込みでヘルプが入る。
  2. 所属先で ASP.net 対応出来るの私くらいしかいないので事情を聞き、ヘルプ開始。
    →とりあえず、PHPからC#への社内システムのリプレースと言うことらしい。
    →これが悪夢のはじまり
  3. クライアント元に逃げ出したヤツの開発中ソースコードがあるとのことで、リモートからソースコードを取得。
    →この時点では、「C#」で開発していると思っていた。
  4. 回収したソースコードを見て、驚愕の事実が発覚する。
    1. ソースファイルのファイル名「~.aspx」……まあ、ふつうだね。
    2. ソースファイルの中に「~.aspx.cs」が見当たらない……おや?
    3. とりあえず適当なソースファイルを1つ開く。
    4. 開いたファイルの先頭に次の文字列が。
      <?PHP

お分かりいただけただろうか。
私がC#だと思い込んで開いたファイルが別言語(PHP)だったときの衝撃といったら!?
この結果、所属先の社長を巻き込んでPHPで対応する羽目となり、いったんは収束させました。

だけどねぇ、このあともとんでも展開迎えるんですよ、コレ。

一旦収束させた後、我々は助言ついでに「うちに全部任せてくれたら安くやれますよ」って、元請けには伝えておいたんですよ。

ですがっ

こともあろうに、元請けは何を思ったのか、自社の海外チームにやらせると言い出したんですよ。

日本の!

ビジネスロジックがろくすっぽ分からない!

新人ばかりが集まってる海外のチームに!

我々は思いましたよね。

「余計なものができあがってきそう」

案の定、想定の斜め上の展開で我々に降りかかってしまったわけですねぇ。

  1. ASP.net MVC
  2. SQL Server

構成を見る限りは、まともな感じでできてきました。「構成」だけはね。

  • DBが本番環境で動作している内容と全然一致してなくて草。
    →MySqlと一緒のテーブル構成になっていない。
  • スーパーカオスなリレーションでガチガチに固まってる。
    見たら卒倒するレベル。
    退職しても(多分)消せないユーザー情報(冷笑)
  • DB繋がらないわ、フォームとろくすっぽ連動できてない。
  • ビジネスロジックが全然仕様通りに出来てない。
  • Entity Frameworkで作ったはずなのに、上記のリレーションがカオスすぎてDBのテーブル更新などが危険で出来なくなる。

まあ、DB周りが酷すぎるものができあがってきて、何故か全然無関係決め込んでたのに私が設置する羽目になり、動かないというギャグ漫画のような展開に。

結局動かせるようにしましたよ。動かせるようにはね。

ついでにビジネスロジック通りの処理するように修正する羽目になりましたよ。
フォームのデザインもグジャグジャ。

何で他人のケツ拭きしなきゃいけないんでしょうか。
了承した記憶もないんですけど。

とありえず、一番の問題書いておきますね。

開発費さっさと払ってください。

おひさしぶりです

また気付いたら1年以上投稿していませんでした。
みなさん、いかがお過ごしでしょうか。

最近は、ずっと炎上案件の火消しをしていたりしていましたが、確定申告も終わせてようやく落ち着いてきました。

炎上案件もひと段落しまして、クライアントの開発環境にぶち込んでおきましたのでいいでしょう。金もらえるかもわからない案件はさっさと済ませて次の仕事へ。

この炎上案件の話は、「こんなアホなことあるんだ」という備忘録として、後日このブログにしっかりと残しておきたいと思います。ビジネスとしても問題ありすぎでしたので。
みなさんにも引っかからないように気をつけていただきたいことでもありますので。

今後は、このブログも少しでも頻度を上げて更新できるようにしていきたいと思います。1年に1回じゃなくて開発者としての情報発信もしないとですしね。

書籍レビュー – C#ポケットリファレンス 改訂版

書籍レビューです。

今回は、WINGSプロジェクトの飯島聡様よりご依頼を受け、同代表山田祥寬様のご厚意により、技術評論社様より発刊された【C# ポケットリファレンス 改訂版】を頂きました。
飯島様、山田様、技術評論社様にはこの場を借りて御礼申し上げます。今回もありがとうございます。

本書は、6年前に出版された【C# ポケットリファレンス】の改訂版となります。改定前もレビューしていましたので、併せてどうぞ。

書籍レビュー – C#ポケットリファレンス

今回は前作のポケットリファレンスから、どのように変更されたかを中心にレビューしてみようかと思います。

対応バージョン

改定前はC#4.0までが対象となっておりましたが、本書では最新のC#7.0の記述にも対応しています。どのバージョンから対応しているかは、各項目の見出しに「C#7.0」や「.NET 3.5」等で記述されており、自分たちが開発してるC#の環境で使えるのか乃判断の目安になります。このあたりは、常日頃から改定が進められているC#ならではかもしれません。

章構成

次に改定前との違いで目を引くのは章構成の変更です。前作にあったユーティリティの章が削除され、ユーティリティの一部として記載されていた非同期処理が独立して用意されました。昨今の流行はなかなか追えておりませんが、Windows 8以降に登場したWindowsアプリまたはユニバーサルアプリに代表されるように、デスクトップアプリと呼ばれていた現在のクラシックアプリでも非同期処理を伴った実装が当たり前となっています。そのため、1章丸々使って様々な非同期処理のコーディング方法を紹介しています。
また、ユーティリティの章に割り当てられていた他の項目は、各項目で最も関連する章に吸収されています。削除されているわけではないので、その辺はご安心を。

  • C#を始めるために
  • 基本文法
  • 基本データ型の操作
  • コレクション
  • 入出力
  • 非同期処理
  • データベースアクセス

山田さん監修の書籍にはいつも助けられていますが、本書のようなリファレンスは特に重宝しています。
C#も誕生して早10年を過ぎました。これからも進化を遂げるであろうC#のお供にこのリファレンスはいかがでしょうか。

お求めはこちらから
C#ポケットリファレンス改訂版

改定前の書籍が必要な場合はこちらからお求めください。
C#ポケットリファレンス

Surface RTをセットアップしたらやっておきたいこと

Surface RTはセットアップが完了すると、必要最小限のアプリケーションが自動的にインストールされています。
※余計なアプリケーションが一切ないのはリファレンスPCのいいところですね。

ですが、やはりPCの一つですので実施していただきたい作業があります。
今回のエントリーはこの辺を書いてみたいなと思います。
一応今回は、必須作業とやると便利かも的な項目に分けています。

必須作業

  1. Windows Update
    重要なので赤字です。
    2013年3月15日現在、Surface本体のファームウェアアップデートを含めて100MBを超えるWindows Updateが必要になります。この中にはOffice 2013 RTのアップデートも含まれますのでインストール後に必ず行ってください。
  2. 回復ドライブの作成
    次に必要なのは、先日このブログにエントリーした回復ドライブの作成です。
    PCの仲間である以上、いつでも復帰できるようにしておくのは必須作業ですので行っておきましょう。
    Surface RTのリカバリーメディアを作成する。

できればやっておきたい作業

  1. Microsoftアカウントの連携
    Microsoftアカウントは、TwitterやFacebookなどのアカウント情報と連携できます。PCからのメールをよく利用する方は、連携しておくとPeopleアプリからメールの送信やTwitter、Facebookなどの各SNSへの投稿も容易になります。

    アカウント連携はPeopleアプリかメールアプリから設定できます。
    ※TwitterやFacebookといったSNSとの連携はPeopleアプリから行います。

  • Peopleアプリを起動したら、設定チャームを開きます。
  • 設定チャームから「アカウント」を選択します。
    すると、現在連携設定しているアカウント一覧が表示されますので、「アカウントの追加」を選択します。
  • 次に追加したいアカウントの種類を選択します。
    ここでは例としてHotmail(Outlook.com)でも追加してみましょう。
    Hotmail(Outlook)を選択します。
  • すると、登録したいメールアドレスとパスワードを入力します。
  • 成功すると、アカウントが追加されます。
  1. Office 2013 RTでMicrosoftアカウントの設定
    Office 2010からMicrosoftアカウントとの連携ができるようになっていますが、Office 2013では連携の設定がとても簡単になり更に使いやすくなっています。Skydriveへの保存も楽になりますので、クラウドにドキュメントを保存することが多い方は設定してみてください。
  • アカウントの設定は、Office 2013 RT上の右上にあるMicrosoftアカウントの名前部分をクリックすることで行えます。
    ※他にもメニューの[ファイル]→[アカウント]→[サービスの追加]から行うことも可能です。
  • クリックすると、関連付いているアカウントが表示されますので、「アカウントの切り替え」を選択してください。
  • 続いて、Microsoftアカウントの入力を求められますので追加したいMicrosoftアカウントのメールアドレスを入力してください。
    アカウントの確認後、パスワード入力を求められますのでパスワードを入力し、認証されると関連付けが完了します。

  • 関連付けされたアカウントを確認する倍は、メニューの[ファイル]→[アカウント]で行うことができます。
  1. ホームグループへの参加登録

    Windows 7からホームグループという簡単に家庭のネットワーク内でドキュメントなどを共有できる機能があります。
    Windows 8やWindows RTではこの機能が強化されていて、ネットワーク上にプリンターなどがあると自動的に検出してドライバーなどのインストールをしなくてもプリンターが表示されて印刷できるようになります。
    ※これだけでもWindows 7から乗り換える価値あり。

    また、ホームグループに参加すれば他のPCのライブラリにアクセスできるようになりますので、他のPCにある音楽ファイルなどにもアクセスできるようになってミュージックアプリを経由してDLNA再生などもできます。

    作業は簡単なので、使っていない方はぜひ使ってみてください。

  • まずはホームグループの設定をします。
    設定チャームから「PC設定の変更」をクリックして、PC設定から「ホームグループ」を選択します。
    すると、ホームグループ用のパスワードを入力するよう求められるので、他のPCからホームグループのパスワードを確認して、表示されているパスワード入力してください。そのあとに「参加」ボタンをクリックするとホームグループへの認証を行います。
  • 認証が完了すると、以下の画面に変わって完了します。
    これで同じホームグループ内の別PCにあるライブラリにアクセスできるようになりました。
  • 早速、ミュージックライブラリにアクセスできるように設定します。
    デスクトップのエクスプローラーからライブラリのミュージックを右クリックし、「プロパティ」を選択します。
  • するとライブラリの場所であるフォルダーを指定するダイアログが表示されますので、「追加」ボタンを押して監視対象のフォルダーを指定します。
    なお、リムーバブルメディアであるmicro SDカードのドライブとその中にあるフォルダーを指定することはできません。

  • 選択が完了すると、ライブラリの場所の項目に指定したフォルダーが追加されるので「OK」または「適用」ボタンを押してください。
    別PCのミュージックライブラリのルートを指定すると、その場所で設定しているライブラリの設定がそのままコピーされます。
  • しばらくすると、ミュージックライブラリの更新が始まって、ミュージックアプリからも別PCの曲を再生できるようになります。

以上、おススメを紹介しました。

次はOffice 2013 RTあたりを見ていきたいですね。

追記:併せてMicrosoft MVPのムッシュ小澤さんが書かれた以下の記事も併せて読むとよいと思います。詳細な情報が多いです。
SEの雑記:Surface for Windows RTを購入しました

Surface RTのリカバリーメディアを作成する

Surfaceのアプリレビューを書こうと思ったのですが、それよりも大切なことが出てきたのでこちらに書いておきます。

Surface RTや他のWindows RTマシンにはリカバリーメディアが付属していません。といっても、最近のWindows PCでもリカバリーメディアを用意するところは少なくなりました。そのため、ユーザーは自分でリカバリーメディアを作成する必要があります。

今回は順を追ってやり方を説明したいと思います。

必要なもの

  • 4GB以上のUSBメモリー(Windows 8 PCの場合は8GB以上)
    ※回復ドライブ作成の際にUSBメモリーはフォーマットされて元のデータは削除されますので、あらかじめUSBメモリーのバックアップをとっておくなどの対応が必要です。

作成手順

  1. コントロールパネル、検索チャームから「回復」で検索する。
    検索結果に「回復ドライブの作成」という項目があるはずなので選択。
    ※検索チャームからだと「設定」に検索結果が出てきます。

    コントロールパネルからの検索結果


    検索チャームからの結果

  2. 「回復ドライブの作成」を選択すると、作成のウィザードが起動しますので手順に従って作業を行ってください。
    「回復パーティションをPCから回復ドライブにコピーします。」にチェックを入れて次へ進めてください。
  3. 回復ドライブの作成準備が整うと、次の画面になります。
    ※USBメモリーを接続していない場合。


    USBメモリーを接続している場合(上記画面の後にUSBメモリーを接続した場合)

  4. USBメモリーを接続して、該当ドライブを選択した後に次へ進めます。
    すると、USBメモリーがフォーマットされた後にリカバリーイメージのコピーが開始されます。
  5. 約10分程度でコピーが完了して、準備ができた旨のダイアログが表示されます。

作成した回復ドライブは、管理しやすい場所に保管しておきましょう。ちなみに私は購入したPCの箱の中に入れて管理するようにしています。

回復ドライブを使用したリカバリーの手順

回復ドライブを利用したリカバリーを行う場合、タブレット端末であるSurface RTだと以下のような手順を踏みます。

  1. 端末をシャットダウンした状態で、回復ドライブとして作成したUSBメモリーをUSBに接続してから「Vol. Downボタン+電源ボタン」を画面が変わるまで押し続けます。
    ※ASUS TF600Tの場合、ドックに接続していてもドックに接続していなくても上記の方法で行います。
  2. 回復ドライブから起動すると、キーボードレイアウトの選択の後、BitLockerの回復キーの入力を求められます。別の信頼済みPCから回復キーを参照して入力します。
  3. 正しいキーが認識されると、オプション画面が出てきますので、「続行」「デバイスの使用」「トラブルシューティング」「PCの電源を切る」から「デバイスの使用」か「トラブルシューティング」からリカバリー処理を続行してください。

よくよく考えたら肝心かなめな作業の情報が少ないなと思いましたので、備忘録として残しておきます。

スマートフォン勉強会 関東 #19での資料

過日6月23日行われた「スマートフォン勉強会 関東 #19」で使用したスライドを公開しています。

Slideshareの直接リンク

今回は、要点だけ絞ってお話させていただきました。※まあ、時間も30分でしたし。
Windows Phone 8も発表されて、Windows Phoneのゲーム開発も変わってきそうです。操作系のAPIも整理されてくるのかなぁとかいろいろ考える必要がありそうですね。今後互換性を保つためにXNAで開発していくか、それともスペック的に既存から脱却しDirect XとC++で攻めていくかWindows Phoneデベロッパーは判断を任されることになりそうです。

スマートフォン勉強会でお話させていただきます。

久しぶりの投稿となります。

今回は告知です。
今週末開催となり、募集が始まっています「スマートフォン勉強会@関東 #19」にて、1セッション時間をいただきました。

今回は、スマートフォンで利用されているゲーム用フレームワークをざっくりと挙げてみて、ポイントを整理してみたお話です。

予告しておきますが、今回のお話は開発の話ですがコードを一切出す予定はありません。
実際にツールを使用してどんな感じのツールなのかとかを見せる程度になると思います。
なお、開発者でない方へも配慮した内容にしましたので、開発者でない人には「へー、開発者の人ってこういうものを使ってゲームを作っているのか」程度の理解をしてもらえるような内容にしてみましたのでご了承ください。

Windows 8 スレートでプレイしたいレトロゲームの投票が行われています。

期間が月末までですが、現在 @hidori さんが主催して『Windows 8 スレートで遊んでみたいレトロゲーム』の投票が行われています。

Windows 8 スレートで遊んでみたいレトロゲーム
http://twisen.com/election/index/858

Twitterアカウントをお持ちの方は、ぜひぜひ投票してみてください。