SIer在職中に使った技術を書いてみる
なんやかんや退職直前ということで、仕事で使ったもの(の一部)を載せて、備忘として残します。約二年間です。
案件に関しては書けません。ご了承ください。言語等、ある程度グルーピングします。
データベース
| 種類 | 現職前の経験有無 | やったこと、使用シーン |
|---|---|---|
| SQL Server | あり | ETL追加機能、レポート用クエリ作成とパフォーマンスチューニング |
| Oracle | なし | 保守 |
| MySQL | なし | アプリのサーバーサイドのDB |
| SQLite | なし | 開発用DB |
幅広くやってますね。SQL Serverは、前職ではストアドやユーザー定義関数をゴリゴリ使っていた時期もあるので、わりと得意です。DB構成管理者も経験あるので、自信は無いものの、アプリだけやってきた人と比較したら得意なようです。
ETL部分の開発をやっていたので、それなりに巨大なデータを扱っていました。クエリを瞬時に組める程度にはなりました。
C#
アドバイザリー的な感じで、ちょっとしたレビューに付き合ったり、アドバイスしたり、質問に答えたりしていました。
業務でコーディングすることはありませんでした。でも今でも一番得意だと思っています。
VBA
VBAのフォームを使った業務アプリの保守があったのと、データ分類用のツールをなぜかVBAで作ることになったので、それらで使いました。
結果、とても嫌いになりました。ほかに選択肢があるなら絶対使いません。
エディタがクソ、エラーメッセージがクソ、型がいい加減、コレクションがまともに使えない等、嫌になる要素が多すぎます。
Java
このブログでも書いたことがあります。
Web開発ほぼ初体験でした。よく考えると、C#ではVisual Studioの「サービス参照の追加」使ってWebサービスを参照していましたし、DelphiでWeb部分作ったりしていたのですが、ちゃんとやったのは初めてでした。
Play Frameworkを使ってサーバーサイドを作っていました。ここでAPIの基礎などを学び直した感じです。
Python
元は、在職中に独学で始めたものです。まさか業務で使うことになるとは思っていませんでした。機械学習の勉強のために習得したのですが、結局機械学習には向いていないと思い、言語のみ使い続けています。
このブログでは単独のカテゴリーを振って、記事をいろいろ書いています。
使ったモジュール等は以下のようなものです。
| モジュール | 利用シーン等 |
|---|---|
| jupyter | メモ用、開発用 |
| xlrd | Excel読み込み |
| openpyxl | Excel書き込み |
| Django | アプリ開発(一から)、分析ツール開発 |
| django-rest-framework | クライアントサイドが呼び出すREST API実装 |
| django-debug-toolbar | 便利。とにかく便利 |
| djangorestframework-csv | REST APIでのcsvエクスポート(streaming) |
Djangoは、サクッとサイトを作るには便利ですね。本当に。ツールを作る用途としても使えます。
Pythonは手軽さが良いです。インストールしてファイル置いて実行すれば動く、というのは、C#ばかりやってきた私としては楽だし新鮮でした。今後も使っていくでしょう。
Visual Studio Code
これも、とにかく使っていました。これなしでは仕事にならないです。当ブログで単独カテゴリーを振っています。
拡張機能は、以下のようなものを使っていました。「拡張機能」列にリンクを貼っています。標準で推奨されるものは基本的に除外しています。
| 拡張機能 | 説明 | いいところ |
|---|---|---|
| Debugger for Chrome | webのデバッグをVSCodeから開始でき、js等のデバッグも行える | ほとんどVSCodeで完結する |
| Django Django Snippets Django Template |
Djangoのテンプレートハイライト、スニペット等 | テンプレート作成等の作業効率が上がる |
| Git History | Gitのコミットツリーを表示 | どのブランチがどの位置か分かる。見やすい |
| Git Lens | アクティビティバーにGitを出す、その他コマンドをGUIから呼べる | Git使うなら必須。そのぐらい便利 |
| Indent Rainbow | インデントを色分け表示 | インデントが揃っていると綺麗に色づく |
| CSS Peek | 「定義にジャンプ」でCSS定義に飛べる | css定義に飛べるのすごい |
| Kitty Time =(^● ⋏ ●^)= ෆ | 猫を出す | かわいい |
| MySQL SQLite |
DBにVSCodeからアクセスする | 簡単なクエリ発行は可能。VSCode単体でクエリも完結 |
| Rainbow Brackets | 対応する括弧を色で対応付け | 括弧を追う負担が減って結構助かる |
| Rainbow CSV | CSVを色分け、マウスホバーで列名表示、クエリ発行 | CSVが非常に見やすくなる。とても便利 |
| Visual Studio IntelliCode - Preview | 一般によく使われるメソッド等をレコメンド | 初めてのライブラリでもレコメンドが効く |
この部分だけで独立した記事書けますねこれ…
Node.js
TypeScriptを導入し、さらにビルド等で楽するために使っていました。
パッケージ管理のためにpackage.jsonの書き方を勉強し、スムーズに開発環境を整えたり、ビルドスクリプト書いたりしており、便利だという印象を受けました。あくまでフロントエンド開発のために使っていたので、すべての機能を使っていたとは言えません
社内で知っている人が誰もいなくて驚きました*1。なので自分で勉強しました。ググってばかりでしたが。
使っていたパッケージはこんな感じです。
| パッケージ | 説明 |
|---|---|
| typescript | これを使うためにNode.jsを導入した |
| browserify | import、export、requireを解決して一つのJavaScriptファイルにしてくれる。webpackでよかった気がする |
| cpx | ファイルコピー。ビルド時に使う |
あとは、いくつか型定義ファイルを使ったり、プロジェクト固有のものを導入していました。
PowerShell
Windows使って業務を行っていたため、シェルとして使っていました。時にはWebAPIにリクエストを投げるためのテストツールとして活躍していました。
テスト用途としては、Restlet Client等で十分ですね。後で教えてもらいました。
設計技術
設計は、様々なパターンを知っており、この技術を使ったと示すのはとても難しいです。
名前がついているものに関して、使ったとはっきり言えるものを挙げます。
テスト駆動(自動テスト)
保守案件で、自動テストなんてものは無いプロジェクトに、全面導入する前に作り方を伝えるために、導入しました。
とりあえず、どう見ても仕様変更がひどいことになりそうだった計算ロジックだけは、真っ先にテストを記述しました。ただ、単にデータ取得して返すだけのAPI等はテスト書きませんでした。
ちなみに、テストをいくら書いても良さを理解してもらえなかったため、無駄に終わりました。
ドメイン駆動
業務を整理する、という観点で利用しました。私にとって未知の業務である部分に関してユビキタス言語を作る、という点では成功しました。
また、Djangoでドメイン駆動を採用したソースを書こうとしたことはあります。しかし、厳密に適用するとDjangoの良さが殺される側面があるように思ったため、断念しています。一部役に立った部分はあるのですが。
ここは整理して記事にできたらいいですね。
おわりに
整理用に書いたのですが、わりといろいろやっていた感じです。
案件の内容とか需要あるんですかね。無いと思っていますが。
ただ、幅広くやっていたものの、どれも深くやっていたわけではありません。Pythonは相当深くやりましたが、業務外での勉強したためです。深く技術に携わりたいと思うなら、SIerは向かないでしょう。
私の場合、C#や設計技術がコアになっており、それを持った状態で様々な技術に触れたことで、多くを学べました。いろいろやるより、コアとなる知識を身に着けたほうが良いと思っています。
コアとなる部分は、会社で身につかないなら自分で習得するしかなくなるのが辛いところですかね…
あと、私はかなり好き勝手やっていたので、自分やプロジェクトの生産性が上がるならなんでも導入するスタンスでした。なのでいろいろ触れた、という側面もあります。
一応、良い側面という観点で書いてみました。ではでは。
*1:使ってはいたが、Gitにnode_modulesの中身全部入っていたので、意味分からず使っていたらしい