クオンツがVisual Studioを使うのは?
クオンツはPython、R、SASなどの専門ソフトを使うことで計算が足りることが多いのだけど、それらのソフトに入力するためのデータを加工する部分は手作業だったりします。そこを自動化するのにC#は便利なんです。
実際に自分が使っているC#アプリを紹介しましょう
- ブルンバーグのAPIからデータ取得、Accessにアップロード
- ブルンバーグAPIを使い5分おきに株・債権・金利データの時価情報をまとめてCSVファイルに出力
- 決まった時間にSQL サーバーに登録しているストアドプロシジャを実行して、編集したデータをACCESSにアップロード
- 決まった時間に決まったフォルダに保存されているExcelファイルから必要なデータを取り出して編集、それをAccessにアップロード
まだまだあるのですが、ポイントとしては「普通は手作業で行うようなことを自動化」するアプリを作るという感じ。
これらの自動化メリットはかなり大きくて、人手がいらなくなります。
ポイントはデータベース
データベースのメリットを理解できている人は意外と少ない。データベースが便利に使えれば、データをとても効率的に使うことができるし、自動化の大きな武器にもなります。クオンツだってデータサイエンティストだってデータがなければ分析はできないわけですよ。
ということで、C#においてもデータベースに関連したオブジェクトをいかに学ぶかで、そのありがたみは変わってきます。自分が意識して習得したC#のオブジェクトは以下
- データセットオブジェクト(メモリに展開されるデータベースといったオブジェクト)
- データグリッドビュー (データを表示するフォーム)
- OLEDBなどデータベースのオブジェクト(DataAdapter,Connect,Commandなど)
といったところ、これから作るであろうアプリで何度も使いそうなものを集中的に習得した感じ。
C# と Visual Studioの組み合わせは心地よさ抜群
何度も使うC#フレーズは全力で自習
先程並べたオブジェクトを扱うフレーズは時間をかけて自分で開発したりしました、例えば
- データベースやCSVファイルからデータを取得して、C#のDatasetオブジェクトにデータをまとめる
- C#のDatasetオブジェクトからCSVや他のデータベースにデータを出力する
- ブルンバーグから取得したデータをC#のDatasetにまとめて、フォームに表示する
- フォーム上に様々なデータを自由に表示して、データ出力用の機能をつける
などです。これら全部、最初はそれなりに時間をかけて、自分なりのフレーズを作っていったのですが、一度それを作ってしまえば、再利用は簡単だし、そこがC#で開発する楽しさでもあります。
IDE(Visual Studio )の機能はガチ自習
Visual Studio にはプログラミングを効率化させるための機能がたくさんあります。それらの機能を覚えることで、知的満足も得られるし、間違いが少なくなるような効率性も学べる。自分が使っている機能を紹介すると
- 名前の変更(プログラムのあらやる部分の名前変更を行える、これは本当に便利)
- コードスニペット機能(簡単なキーワードで長いコードを生成する機能)
- リファクタリング(長いコードの一部を取り出してモジュール化)
- 条件付きブレークポイント(一定の条件になった時に一時停止する機能)
- 参照元を調べる、定義に飛ぶなど、複雑なプログラムでは必須
開発するスピードとメンテのしやすさにこだわるのであれば、時間をかけても習得する価値があります。
再利用コストの低さ、半端なし
よく使う部分はモジュール化して別のDLLとして、他のプログラムで再利用することができます。自分で作るAPIのようなもの。ただ、自分でもそこまでしたことはありません。
Visual Studio を使うとプログラムが解析しやすいので、以前作った忘れかけの自分のプログラムも、Visual Studioで見るとすぐ思い出すことができるますし、少ない行数で一つの機能を独立化させておけば、簡単なコピペで再利用することも簡単です。
アルゴリズムの心地よさ
C#はバージョンが上がるたびに追加される機能があり、それらを追いかけていくだけでプログラミングのトレンドが把握できます。この数年間で一番便利と感じて良く使うようになった機能はLinqやラムダ式という機能。
LinqはForなどの代替となる繰り返し機能なのだけど、Linuxなどで使うシュルスクリプテで使うパイプラインのような処理と組み合わせると同時に、データベース的な集計機能も使えて、かなりスッキリとしたコードが書けるのだ。
つまり、頭がいい人が考えたんだなっていうアルゴリズムが随所に盛り込まれていて、学習する楽しみがあるのだ。
汎用的なプログラムは移植も簡単
自分が作ったプログラムを他の人が使いたいという場合が多々あります。
自分のPCで動いていても他のPCでは動かない、同じ環境を作り上げるが大変だったりすますが、C#の場合はWindowsに最初から搭載されている.NetFrameworkでプログラムが動くので、インストールもコピペで簡単に行うことができます。これは圧倒的に便利です。
まとめ
- C#はめんどくさい自動化処理を行う強力兵器
- いろんなPCへのインストールはコピペ
- C#を習得する過程で知的満足度もえられる
- Visual Studioを使いこなせばC#もかなりイージーモードに!
ということですが、心地よいと感じるまではかなり時間がかかる可能性があります。
ただ習得したら、どんな言語もできそうな気になれます、興味のある人は頑張ってください!