Rのつく財団入り口

ITエンジニア関連の様々な話題を書いているはずのブログです。

【雑記】2017年を振り返ってみるのこと【仕事編】

 はてなブログ界隈でも年末の2017年振り返り・2018年年始の抱負の記事をよく見かけますね。様々な方のエントリを拝見しました。
もう2018年が始まってしまいましたが、年始のまとまった時間のうちに振り返ってみたいと思います。

仕事編

 2017年もいろいろやりました。

LAMPなおしごと

 前年秋から続いていた、DB設計がかなりまずいMySQLPHP(おそらくフレームワークはCodeIgniter)+Apache外注さんが十分な指示なしで作ったけどうまくいかなかったとある社内システムをちゃんと作り直すお仕事。データの一部はバッチで別マシンに渡してPHP製の商用CMSでもWebサイト形式で表示します。
 けっこう大きいのでチームを組んで対応しましたが、打ち合わせに行って色々決めたりDB設計をちゃんと正規化して設計しなおしたりPHPでの開発基盤を整えたりその後は一番むずい機能を実装したり、技術面のコアメンバーとして活動しました。このプロジェクトのあたりで成り行きから周囲の評判として、僕がどうも他言語のみならずPHPも経験があって詳しい人ということになってしまった気がするw

 実際には以前の経験は技術書を読んだ程度だったのですが、本腰を据えて学んで実際の開発に備えました。Webアプリケーション開発のフレームワークとしては基本情報としてはいろいろ調べ、この頃から注目されていたLaravelやCakePHPも考えたのですが、SI案件だと機能のミスマッチがある・機能がリッチすぎるのも・フレームワーク固有の問題が起こった時に情報が少ないと困りそう(海外産だと特に。これが大きかった)……などの点も考え、我々がSI案件で扱うことの多い機能を一通り備えた、簡単で実直なつくりの軽めのフレームワークを自作することにしました。
 ブログや発表資料で見るところのいわゆる「オレオレフレームワーク」というやつですが、開発も無事終了、脆弱性チェックなども通ってもう本番稼働しています。開発手順も他のメンバに展開したりしました。このフレームワークを今後の仕事に繋げられたのが大きかったですね。
 MySQLで項目数があまりに多いテーブルを作ろうとしたら限界があったり、様々な罠や得られた技術的な知見もありました。個人的に一番大変だったのは最後の最後の大詰めの一週間、予定より早く奥さんの出産と重なってしまったことでした。休暇取ったけど昼は病院、夜はこっそり仕事したりしてました。

マイクロサービスなおしごと

 この頃注目を浴びたマイクロサービスアーキテクチャを調べたり、AmazonIBMクラウド技術を調べたり、次世代の開発基盤についてディスカッションしたりするお仕事。
 実際にものを作るわけではないのですが、話を持ってきたお客さん側も参加した面々も、みな経験値が高いハイレベルメンバで話していて刺激が大きかったですね。AngularとGolang推しの人がいたりして僕も後でかじってみようと思った気がするw

マイクロサービスアーキテクチャ

マイクロサービスアーキテクチャ

  • 作者:Sam Newman
  • 発売日: 2016/02/26
  • メディア: 単行本(ソフトカバー)

 仕事用に読んだこの本にもマイクロサービス関連の沢山の最新キーワードが登場するので、だいぶ名前だけでも耳と頭が慣れた気がします。Micro Serviceって略すとよくMSになって使われるのでMicrosoftと紛らわしいですね。

 DevOps関係の本もざっと目を通してはみたのですが、僕は仕事領域がインフラ系でないので、なるほど最新はこうなのかという感じのところで留めています。あと Infrastructure as Code 周りで出てくる言語はやはり常にRubyPythonで、LL系言語は強いなと思いました。

.NETなおしごと

 とあるお客さんの.NET系で統一しているシステムで、ASP.NET WebForms+SQLServerで動く画面系Webアプリケーション部分の製造を代行するお仕事。ずいぶん前に僕が新入社員教育の先生をやった時に教えた後輩とこのプロジェクトで再会したのがなんだか面白かった。もうお互いおっさんになって子供の話とかするようになってしまいましたが、人の縁とは不思議なものです。
 最近のASP.NETは触っていなかったので下の本で体系的に復習しなおし、IDEVisual Studioの無料版にし、処理ロジックは画面に対応したaspx.cs内で適宜部品化、DBアクセスはLINQなしでSQL文を書くスタイルで簡単な開発標準を定めてチームに展開し、取り組みました。

iwasiman.hatenablog.com

 開発は無事終わったんですがやはり、ASP.NETはHTMLのname属性値は自動的に書き換わっちゃうし実際の画面のHTMLソースを見ると自動挿入されるhidden項目がずらーっと並んでてうわーとなるし、検証コントロール(バリデーション)周りもちょっと凝ったことをしようとすると途端に工夫がいるし、独特なところが多いなぁと改めて思いました。
 SQL Serverへのアクセスは普通にSQL Server Management Studioを使いましたが、これもOracleでよく使うObject BrowserやMySQL用のフリーツールに比べるとなーんか使いにくいんですよね。関連してActive Directoryとの連携部品も作ったりしたのは参考になりました。
 あとこの仕事は設計書は提供済みだったんですが我々の基準からするとかなり精度が荒く、案の定バグ改修のころに問題に。継続開発のWebサービス系などだとまた違うでしょうが、やっぱりコードで実物にする前の設計って大事だなと改めて思いました。

employment.en-japan.com

 この記事なかなか面白いのですが、たくさんある国産Webサービス群の中で画面構築にASP.NET Web Formsを使ってるのは価格.comだけですね。いかにもらしい感じもしますが、今どきこれだけ選択肢のある中では、Microsoftファミリー製品との連携など強い理由がなければ、ASP.NET MVCでなくWeb Formsのほうを特に選ぶ理由は薄いのかなと思います。

バッチなおしごと

 とある社内システム用のJavaのSpring Batch+PostgreSQLのバッチ機能を作るお仕事。これは規模が小さかったので実作業はパートナー企業のメンバにやってもらい、別オフィスの他の事業本部のとこに行って話を聞いたり調整したり。母集団をまたいだ仕事が増えてきたなあというところ。

既存システムなおしごと

 我々の部門で前に開発した、JavaStrutsの製品フレームワークOracle+WebOTXでとあるお客さんのとこで稼働中のけっこう大きい規模のシステムの定期的な拡張や引継ぎを手伝うお仕事。
 このプロジェクトはなかなか大きくてメンバも多く、Javaで最初に一式開発した時は僕も技術的なご意見番・標準化に携わったり若手を教えたりのアーキテクト的な立ち位置でやっていました。
 まあもう慣れてるので定期的な機能追加はいつも通り。自動化周りはJenkinsも使ってるんですが間違ったリビジョンでリリース物件ができちゃったりしたことがあったりして、この辺よくありがちですね。DevOps周りの自動化をもっともっと進めてる先進企業さんだと人間系のミスをもっと撲滅できてるのかなあと思います。

 このプロジェクトも引き継ぎで色々あったのですが運用保守の部門に渡してめでたく終了となりました。ここでもStrutsとキーワードに出ると、脆弱性が云々~がよく言われます。このプロジェクトの場合はもちろん製品フレームワーク内でがっちり安全に吸収しているのですが、やっぱりStrutsというともう過去の遺産、レガシーなくくりに入ってしまっているのだなあと思います。

要件定義なおしごと

 とある社外のお客さんのシステム刷新のかなり大きいプロジェクトで、Webアプリとして作り直す機能の要件定義に協力し、アプリケーション基盤を考えるお仕事。プレゼン資料を作ったりお客さんに説明したり内部で会議したりHTMLでモックを作ったりデモを見せたり、いろいろやりました。
 顧客に直に説明したり、自分の部署部門を超えて他事業部・他社と共同でやっていく仕事なのでデリケートで気を遣う案件ではありましたね。最終的には社内事情のゴニョゴニョで撤退しましたが、大規模プロジェクトはリスクも多くて色々大変だと改めて思いました。
 この仕事は外出・出張が多かったので新幹線の中でじっくり『コード・コンプリート』を読んだりしていました。

WebAPIなおしごと

 絶賛進行中なのがこちら。文書管理システムにデータを登録、これをWebAPIの口を通じて取得、Webアプリケーションとしてこれを表示したり検索したりしてしまうサイトを作るお仕事。アプリ側はWebAPIで通信する部品は前に僕がPHPで試作した部品クラス群、基盤部分も僕が作った内製のPHPフレームワークを使い、IISの上に載せることになりました。
 HTMLデザインはデザインをやっている部門の人が凝りまくったCSSとJSを活用して作ってくれているところですが、自分の作ったものが使われるというのは生みの親としてはなんだか楽しいですね。
 世の中的にはフロントをPHPで作るなんて当たり前のありがちな作りですが、僕が生息している会社界隈は保守的なのでまだまだなかなか事例が少ないのでございまする。

 このシステムは規模も小さいし金額的にも大きくはないのですが、公開されたら社内でも注目されるものなので楽しみなところ。スクリプト系言語の高生産性とフレームワークを作った本人が開発してる長所を活かし、もう実際の画面もバンバン動くようになってきています。近いとこの部門と一緒なんですがしっかりタッグを組んで能力を発揮し、確実にやっていきたいところです。

その他

 毎年入ってくる新入社員から新人君が1人うちの部門にもやってきました。プロジェクトが違うのであんまり絡めてないのですが機会があれば手本を示さねばならぬの心。入社時に僕が指導者をやった若手君ももうすぐ4年目です。
 うちの事業部では知らない人同士で親睦を深めようということでえらい人を交えて一緒にお茶を飲むようなイベントをやってるのですが、そこで今年入った別の新人君と話す機会がありました。話好きの面白い子で向こうも刺激を受けてたし、こっちも刺激を受けました。
 僕も日ごろからつまんないオッサンにならないように心がけてる(つもり)なんですが(笑)、若い世代とも進んで接してココロを若く保っていかないとなと思います。

ふりかえり

 振り返ると自分のすぐ周りのメンバとのチームワークは当たり前として、それを飛び越えたより大きい単位での協力が多かった1年でした。技術面でも多様な技術に触れていろいろやり、所属部門の中ではオールラウンダー的に多彩に活動できましたね。
 また、いろんな人に相談されたり新しい仕事の話を持ちかけられたりすることが最近特に多くなったなあと思います。
 恥ずかしながら僕は人脈作りというやつをあまり意識していなかったので(特に20代の頃)、大きい組織の中で異動を繰り返していろんな開発の経験を積んだ中で自然に今がある感じなのですが、特に管理職になると人間系のこういうのも大事になってきますね。僕は管理職には興味がないのですが、技術メインでやっていく上でも、こういう人同士の繋がりも大事にしていかないとなと思います。

 仕事納めの日は軽く掃除をするのですが机の奥から、Javaエンジニアとして成長中だったころの僕が共に幾つもの案件を共に戦ったJSPサーブレットStrutsの古い本が出てきたりしました。とはいってももう10年以上前、ひと時の懐かしさと共に処分することにしました。
 そして一緒に出てきたのが旧版のケント・ベックテスト駆動開発入門』。うーんこれ読んだの何年前だったでしょうか。

 新版も出たので一緒に処分することにしました。よし2018年のKindleで読む本の先頭集団に新版の『テスト駆動開発』を入れることにしよう。

テスト駆動開発

テスト駆動開発

 そんな感じでした。皆様にも2018年が良い年でありますように。