【自己紹介】私の仕事~プログラミング言語編~
みなさんこんにちは、MOTはしもと です。
今回は『プログラミング言語』をキーワードに自己紹介したいと思います。また、私が各言語を使う際に参考としていた書籍なども紹介していきます。
前提として、私のざっくりとしたコーディング経験は次の通りです。
C言語をマインドストーム®やArduinoでちょっとだけ使用(プライベート)。
https://www.lego.com/ja-jp/themes/mindstorms/aboutJavaやAndroidアプリケーション開発の研修を受講
C言語でのパッケージ開発を3年ほど担当
Java、Pythonなどでサービスの開発を4年ほど担当
各種スクリプト言語をサーバの運用で使用
COBOL講師として半年ほど登壇
それなりに経験のあるもの(半年以上)
Python
コーディング量として最も多いのがこれ。
単発使い捨てのスクリプトからDjango REST frameworkを使用したAPIエンドポイントの実装まで、幅広い要件に対応できる。
Linux OSでは標準でインストールされているため、特に理由が無い限りはPythonが第一の選択肢としている。
一方、Windowsでは実行環境を構築しなければならないため少し導入しづらい。
Pythonチュートリアル
The Python Standard Library
PowerShell
最近書くことが多い。使用期間としては最も長いのがこれ。
なんと言ってもWindows OS周りの操作をプログラムできることが魅力。スタートアップスクリプトやタスクスケジューラなどと組み合わせれば、大規模環境の運用を自前で省力化できる。
PowerShellのREST APIサンプルを公開していないサービスも多いが、最近は自力でリクエスト処理できるようになったので、Windows環境でPythonの替わりとしても多用している。
要件に合わせてググりながら書いているので、残念ながらリファレンス的に買った書籍など、紹介できる情報は無い。
C言語(Native C)
一番時間をかけて勉強したのがこれ。
運用業務でC言語のスキルを求められることは殆ど無いが、メモリやプロセスなど、コンピュータの動作に関する知識を必然的に得られることは大きな利点。
サーバサイドなCプログラミング中級者に要求される制御技術は以下。これを踏まえると私のC言語スキルは恐らく下の上くらい。
新・明解C言語 入門編
C実践プログラミング
C言語逆引きハンドブック
シェル(Bash)
Linuxを扱っていると、なんだかんだで使うことが多い。OS標準で色々できるので便利。
Pythonとの使い分けは、OS周りの処理を手軽にしたいときはシェル、Webアクセスやライブラリを使った本格的なサービス開発をしたいときはPythonとしている。
UNIXコマンドポケットリファレンス ビギナー編
sed & awkプログラミング
Tera Termマクロ
マクロってプログラミングなのか?と若干疑問に思いながらも記載しておく。
運用の現場ではある意味で一番生産性に貢献しているのがこれ。
サーバやスイッチにログインし、操作ログを残しつつ自動的に処理を実行できる。
特に、繰り返し行う必要がある資料採取や定期点検などの業務において、何らかの理由でオートメーション製品を導入できない場合の切り札である。
Tera Termの便利な使い方
Windowsバッチ
Bash同様、OS標準なので出番は多い。
最近はPowerShellでできることはそちらに任せる方針にしているので、あまり使っていない。
Windowsコマンドプロンプトポケットリファレンス
COBOL
業務として最初に扱ったのがこれ。
他の言語と比べてかなり独特な仕様だが、コードが英文に近く読みやすいのが利点。
コーディングに限らず、ドキュメントにおける構造や定義を正しく書くことの大事さを教わったという点で、やっといて良かったと思える言語だった。
開発現場で役立つ COBOLプログラミング入門
COBOLポケットリファレンス
Java
一番大変な思いをしたのがこれ。新人研修で扱ってから業務で使うまでに5年くらい空いたが、やっぱり大変だった。
ド定番の入門書『やさしいJava』(やさしいシリーズ)は、ゴーストライターが書いているんじゃないかと思っている。
JSP業務アプリケーション短期開発入門
やさしいJava
やさしいAndroidプログラミング
Spring Framework 4 プログラミング入門
少しだけ使ったことのあるもの
Go言語
書けるようになったら一番かっこいいと思うのがこれ。
Javaより速く、書きやすいのが利点という触れ込みだったが、プロジェクト期間が短く、性能を実感できるまで使い込めなかった。
また、会社としてGo言語を使う案件がほぼ無かったので、使い所が限られてしまったのがもったいないところ。
Go言語プログラミング入門 on Google App Engine
基礎からわかる Go言語
Ruby
業務上ほとんど使うことがなかったが、赤くてお洒落なので、唯一独学で勉強していたのがこれ。
スクラッチで書くことはほぼ無いが、Ruby on Railsで構築されたOSSをチューニングする時なんかで触ることがある。
たのしいRuby
PHP
COBOLより前に使うことになる可能性があったので、数日だけ勉強した(結局使わなかった)。
古いWebサーバをメンテする際によく目にする。
ノン・プログラマのためのPHP入門[10日間コース]
Perl
社会人になってから10年くらい触れることがなかったが、今頃になって古いUNIXサーバのCGIをメンテするようなケースで目にすることが時々ある。
R言語
個人的『使えるようになるとかっこいい言語』その2。一度だけ半日の勉強会に参加した。
大学のときに高額なソフトを使って処理していた多変量解析等の分析がお手軽にできそうでよいと思う。
まとめ
以上、私のお仕事 プログラミング言語編をご紹介しました。
最近の業務は運用メインなので、いずれそちらの技術についてもご紹介したいと思います。