2015/12/23

PostgreSQLのネットワークアドレス型と外部モジュールip4r

このエントリーをはてなブックマークに追加
この記事は PostgreSQL Advent Calendar 2015 の22日目の記事です(代打)。
最近、Amazon RDS for PostgreSQLで、ip4rというEXTENSIONが使えるようになったみたいですが、ip4rって初めて聞いたので簡単に調べてみました。

ip4rとは

ipという名前から連想されるように、ipアドレスやipアドレスの範囲を格納するデータ型です。
このモジュールを入れることで、下記の5つのデータ型を利用できるようになります。
  • ip4 :IPv4のアドレス格納用のデータ型
  • ip4r:IPv4のアドレスレンジ格納用のデータ型
  • ip6:IPv6のアドレス格納用のデータ型
  • ip6r:IPv6のアドレスレンジ格納用のデータ型
  • ipaddress :IPv4 or IPv6のアドレス格納用のデータ型
  • iprange :IPv4 or IPv6のアドレスレンジ格納用のデータ型

ネットワークアドレス型との比較

PostgreSQLには、ネットワークアドレス型がサポートされており、inet型、cidr型というものを使うことで、IPv4, IPv6にIPアドレス、アドレスレンジを格納できます。
「ip4rって何のためにできたの?」と気になった方も多いかと思いますが、ip4rのページに下記のように書いてありました。

While PostgreSQL already has builtin types 'inet' and 'cidr', the authors of this module found that they had a number of requirements that were not addressed by the builtin type. Firstly and most importantly, the builtin types have no support for index lookups of the form (column >>= parameter), i.e. where you have a table of IP address ranges and wish to find which ones include a given IP address. This requires an rtree or gist index to do efficiently, and also requires a way to represent IP address ranges that do not fall precisely on CIDR boundaries. Secondly, the builtin inet/cidr are somewhat overloaded with semantics, with inet combining two distinct concepts (a netblock, and a specific IP within that netblock). Furthermore, they are variable length types (to support ipv6) with non-trivial overheads, and the authors (whose applications mainly deal in large volumes of single IPv4 addresses) wanted a more lightweight representation.
つまり、乱暴に言うと下記の通りでしょうか。
  1. ビルトインのネットワークアドレス型では、(column >>= parameter)という演算子での検索にインデックスが利用できない(これが重要らしい)
  2. ひとつのデータ型に意味を込め過ぎている(inetには、アドレスレンジとアドレスレンジ内の単一のIPアドレスを格納可能で、IPv4,IPv6ともにサポートされている)

確かに、IPv4のアドレスだけ管理したいような時は、inet型やcidr型だと、CHECK制約とかで回避しないといけないので、無駄なコストになりそうですね。

注意しなければいけない点としては、ip4rで利用できる関数とビルトインのネットワークアドレス型で利用できる関数の差でしょうか。
ビルトインのネットワーク型で利用できるすべての関数と同様のものが、ip4rにあるわけではなさそうです。

ちなみに最初に書いた通り、ip4rはAmazon RDS for PostgreSQLでもサポートされていまして、RDSでは
CREATE EXTENSION ip4r;
とやるだけで利用できるので、試すのも楽ちんでした。
IPアドレスの管理をしたい方は、ぜひ一度ネットワークアドレス型なりip4rを試してみてください。 簡単ではありますが、こちらからは以上です。
このエントリーをはてなブックマークに追加

2015/02/07

eclipse使ってGoを書く(Macから)

このエントリーをはてなブックマークに追加

コンソールからviで書くのもいいんですが、eclipseでGoが書けるみたいなので設定を行ってみました。
ちなみに、Mac上のeclipseです。
また、Eclipseは既にインストールしている前提で話を進めてます。

環境

OS: Mac OS X
Eclipse: Kepler(4.3)
Go: 1.4.1

Eclipseの設定(Goclipseのインストール)

1.  [ヘルプ]-[新規ソフトウェアのインストール]をクリック

2. 「作業対象」に「http://goclipse.googlecode.com/svn/trunk/goclipse-update-site/」を入力して[追加]をクリックして、「リポジトリーの追加」ダイアログが出てくることを確認
3. 「名前」に任意の名前を入力し、[OK]をクリック

4. 3で入力した名前にチェックを入れ、[次へ]をクリック
5. 以降、ウィザードに従って[次へ]進んだり、ライセンスに同意したりしてインストールを実行
6. インストール終了後、eclipseが再起動することを確認
7. 再起動後、[Eclipse]-[環境設定]をクリック

8. [実行]をクリックし、「GOROOT」にgoをインストールしたPathを入力。
(Eclipseを日本語化すると、"Go"が「実行」と訳されるらしい…orz)

9. [ファイル]-[新規]で、「Goプロジェクト」が作成できるようになっていれば、完了。

オートコンプリートのセットアップ

せっかくEclipseを使うので、オートコンプリート機能(コード補完)を有効にしてみます。
gitをインストールしていない場合、https://code.google.com/p/git-osx-installer/からインストールする必要があります。
そして、ターミナルから下記のように実行するだけです。
go get -u github.com/nsf/gocode

後は、Eclipseを再起動して確認してみてくださいー
何はともあれ以上です。
このエントリーをはてなブックマークに追加

Get gtarted with Go

このエントリーをはてなブックマークに追加
AWS SDK for Go が出るなんてニュースもあったので、一度は触ってみたかったGoに触れることにしました。

環境

OS: Mac OS X
Go: 1.4.1

Goのインストール

インストールは非常に簡単で、コチラに置いてあるインストーラーが簡単に出来ました。
インストールが成功したかどうかは、下記のようなコマンドで確認できます。

$ go version
go version go1.4.1 darwin/amd64

何はともあれHello World

プログラミング

viなどで、下記のように書きます。
package main

import "fmt"

func main() {
 fmt.Println("Hello World!")
}

  • 構文の意味
    • package: ソースファイルの管理単位を指定(Javaなどと同じ)。このプログラムはmainパッケージに属することを宣言。mainパッケージはプログラム実行時にはじめに呼び出されるmain関数を持つ特別なpackage。
    • import:他のパッケージを使用することを宣言(Javaなどと同じ)。
    • func:関数の宣言。
      • fmt.Println:fmtパッケージのPrintln関数を実行。

フォーマットを整える

下記のコマンドで、フォーマットを整えることができます(これはコード規約考えたり、コードの可読性のことを考えたりしたときに嬉しい。特にプロジェクトやる人にとってはきっと)。


$ go fmt helloWorld.go

コンパイル

下記のコマンドで、コンパイルが可能です。

$ go build helloWorld.go

コンパイルが終わったら、実行してみます。
$ ./helloWorld
Hello World!

ちなみに下記のように実行することも可能です。

$ go run helloWorld.go 
Hello World!

とりあえず、Goの第一歩ということで以上。



このエントリーをはてなブックマークに追加

2015/01/31

第31回(仮名)PostgreSQL勉強会に参加してきました!

このエントリーをはてなブックマークに追加

いつになったら、(仮名)がとれるのか気になっている江川(@daiti0804)です。
1/31(土)に行われた第31回(仮名)PostgreSQL勉強会に参加してきました!


今回は、PostgreSQLの勉強会にも関わらず、MySQLの話も聞けちゃうお得な回になりました。知らないことを知るのは新鮮で楽しいですねー。
また、@nuko_yokohamaさんが中国地方DB勉強会にてご登壇。というわけで、まとめてくれる人がいなそうなのもあり、以下、本日のメモ書きをば。ちなみに少し遅刻しました。ごめんなさい。

MySQLのロックについて - Oracle ACE 平塚貞夫(sh2)氏

  • Oracle DB, PostgreSQLと対比させつつ、MySQLのロックの話を。
  • InnoDBでは、不可解なデッドロックが起きることがある(トランザクション分離レベルが"RepeatbleRead"のときの話)。
  • MySQLのつらいとこ
    1. ギャップロックで、コードとレコードの間がロックされるとこ
      • 「MySQLのギャップロックで泣いたことある人RT #jpug_study #俺はブチ切れたことがある」(@soudai1025)
    2. 合致したレコードではなく、走査したレコードに対してロックを取得するとこ
      • 「MySQLは操作したレコードにロックをかけるので、実行計画によってロック範囲が変わる! これは厳しいな・・ 」(@kasa_zip
  • READ COMMITEDを使いましょう
    • 「私、READ COMMITED普及委員会の人なので」
    • READ COMMITEDにしておけば、ギャップロック発生しない
    • 空振りでもギャップロックとらない
  • まとめ

プラクティカルなPostgreSQLチューニング - 喜田 紘介氏 (株アシスト)

  • 出だし、プラクティカルな映画の話して、会場が静まった気がするw
  • チューニングの種類
    • DBチューニング:パラメータチューニングetc
    • SQLチューニング:SQL修正、統計情報の調整etc
  • DBチューニング
    • キャッシュヒット率をあげよう、ディスクI/Oを減らそう
      • →OSが出してくれる情報を監視することが重要
    • 基本はパラメータ設定(postgresql.conf)!
      • アクセスデータ範囲をshared_buffersに収める
        • shared_buffers: 物理メモリの25〜40%程度
      • WAL生成のタイミングを知る。WALバッファがいっぱいになって、ディスクに書きにいくことを避ける
        • wal_buffers:16MB以上(推奨32MB)(旧バージョンの場合。最近のバージョンでは自動調整)
      • ディスクソートの発生を避ける
        • work_mem:SET文でセッションごとに適切な値を
          • trace_sortパラメータを有効にし、ログ出力からディスクソートがあったかを確認!
      • チェックポイント間隔の調整
        • クラッシュリカバリ時に許容できる時間を元に調整
        • checkpoint_segments:16個以上
        • checkpoint_timeout: 30分以上
      • VACUUM処理の調整
    • DBチューニングとっておきのツール!!
      •  pg_statsinfo:PostgreSQL統計情報収集/可視化ツール(9.4対応済み)
  • SQLチューニング
    • 実行時間が長いSQLが、レスポンス要件を満たすように改善!
    • ログ出力から実行時間の長いSQLを確認
      • log_min_durations:SQLの実行時間をログに記録
      • auto_explain:自動的に遅い文の実行計画をログに記録するcontribモジュール
    • 実行計画をよく見ましょう
      • PostgreSQLの計画タイプを覚えておきましょう!(@surumegohan)
      • たまに、nest_loop をoffって、巨大テーブルの結合をHash join or Merge join に倒して、バッチ系のチューニングをすることがありますね(@kasa_zip)
      • pg_hint_planなんてものもある
    • 高速化が期待される機能
    • PostgreSQL9.4での改善
      • WALロックの改善
      • hugepageへの対応
      • JSONB
      • GINの軽量・高速化
      • pg_prewarm
      • auto.conf
    • 堀川さんの質問:「shared_buffersを極端に多くすると、メモリ管理のオーバーヘッドが大きくなるので、注意と言っていたが、なぜ?」→「OS(Linux)の従来のページを扱うため、RDBMS側で多くのページ管理をすることにより、CPU負荷があがることがあるため。ただし、PostgreSQL9.4からLinuxのhugepageをサポートする!」

NTT データと PostgreSQL が挑んだ総力戦・カンファレンスで話せなかった裏話 - 笠原 辰仁氏 (NTTデータ)

  • まずは、PostgreSQLカンファレンス基調講演のダイジェスト
    • 今回は、某Web記事で講演してなかった人みたいになっていた@kasa_zipさんが一人で話すみたい。
    • エネルギー元売会社の情報系システム
      • 販売情報などをもとに、集計などをほぼリアルタイムで行う
      • OSSメイン & 拡張機能フル活用:商用システム初適用のものも
    • 大量SQLの死守
      1. SQLガイドライン
      2. SQLチェックツール:シンタックスチェック。
        • ブラウザでSQL書くと、 「XXだからNG」みたいなのが出る
      3. 実行計画チェックツール:EXPLAINをチェック!
        • 統計情報を偽装するのに、pg_dbms_statsを拡張して使用
        • 開発環境用に統計上をすげ替えて環境整えるとかDBエンジニア思いつくことすごいな。(@cstyles_jp)
      4. アジリティSQLチューニング
        • pg_hint_planを使用:単体テストのやり直ししなくていいので楽だった
      5. SQL書き換え
  • 今日の本題
    • SEGVでPostgreSQLが落ちた
      • コード解析した結果、pg_dbms_statsが誤った統計情報を返していた
      • pg_dbms_statsの内部については、スライド上がったらリンク貼る
        • 本番稼働前に発覚したのが奇跡っぽいw(@yancya)
    • SELECT結果が違う
    • 根本原因を特定することが重要!
      • PostgreSQLのコードには親切なREADMEやコメントがあるので、助けに
      • コミュニティも力になってくれる!
  • ソースがあれば何とかなる

さて、飲み会に行ってくる!

懇親会
  • うぇーい
  • @fujii_masaoさんが育休中という話から、家庭生活話へ。
    • たなけんさんの「子ども二人目できると大変」だわー
    • 結婚のときに色々な契約をコミットするとツラいわー
    • 陰でこそっと言われるのツラいわー
    • 一馬力ツラいわー
    • とりあえず自由なのが一番
  • サポートではまるとツラいわー
  • JPUGなお話
    • マニュアル翻訳に対して、もう少し力入れた方がいいかなー
    • すそ野を広げる意味でも、初心者向け本やDB一般本の中でPostgreSQLを例にとるもの出したら
    • PostgreSQL徹底入門、そろそろ新版出した方がよいのでは?
    • 理事の若返りが求められる
  • pg_bigmPGroongaのお話
  • textsearch_jaというか、形態素解析は需要ありますよー
  • 60歳越えてもコード書くのか論
  • 「ビールとソーセージ作って暮らしたいわー」(by @kasa_zipさん)
  • JPUG合宿を熱海でやるから来てねー(by @kkkida_twtrさん)
  • すき焼きー


次回は5月。久しぶりになにか話したくなってきたー




このエントリーをはてなブックマークに追加





2014/06/13

RDS(PostgreSQL)でJSTを使う たった1つの冴えたやり方

このエントリーをはてなブックマークに追加

@j3tm0t0 さんのRDS(MySQL)でJSTを使う たった1つの冴えたやり方という記事があったので、「PostgreSQLも!」ということで、RDS for PostgreSQLでJSTを使う方法をブログにまとめようと思います。
このように書くと、RDS使うから特別なことが必要のように見えますが、普段PostgreSQLを使っている場合と同じ設定でOKです。
ただし、RDSを使用する場合、直接postgresql.conf(パラメータ設定ファイル)を編集できないので、DB Parameter Groupsを使用します。

1. RDS for PostgreSQLのデフォルト設定

Amazon RDS for PostgreSQLのシステム標準設定タイムゾーンはUTCです。
デフォルト設定のままPostgreSQLを立ち上げると下記のように表示されます。
$ date
2014年 6月13日 金曜日 13時32分42秒 JST
$ psql -h postgres.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -U postgres -c "SELECT CURRENT_TIMESTAMP"
Password for user postgres: 
              now              
-------------------------------
 2014-06-13 04:32:50.531748+00
(1 row)


2. JSTを使うには

2-1. DB Parameter Groupsによる設定

RDSでは、DB Parameter Groupsを使用することで、パラメータの設定が可能です。



PostgreSQL用のDB Parameter Groupsを作成し、設定項目中のTimezoneを「UTC」から、「Asia/Tokyo」と変更することで、JSTを使用できます。

2-2. RDS起動時にDB Parameter Groupsを割当

DB Parameter Groupsを作成したら、あとは起動時にそれを選ぶだけです。
(Rebootが必要ですが、起動中のRDSでもDB Parameter Groupsの変更が可能です。)



この設定を行ったRDSで試すと、下記のようにJSTで現在時刻が取得できますよー。
$ date
2014年 6月13日 金曜日 13時55分19秒 JST
$ psql -h postgres.xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -U postgres -c "SELECT CURRENT_TIMESTAMP"
Password for user postgres: 
              now              
-------------------------------
 2014-06-13 13:55:25.306856+09
(1 row)

以上!

このエントリーをはてなブックマークに追加

2014/02/23

Zabbix2.2のインストール with PostgreSQL

このエントリーをはてなブックマークに追加

お久しぶりです。私は元気です。
タイトルの通り、バックエンドのDBをPostgreSQLにして、Zabbix2.2をインストールしてみました。

Zabbixのバックエンドには色んなDBが使えるはずなのに、MySQLの情報ばかりです。
挙げ句の果てに、Zabbix本家のマニュアルにもMySQLを使った場合しか書いていません。
https://www.zabbix.com/documentation/2.2/manual/installation/install_from_packages
というわけで、PostgreSQLを使った場合のインストール方法をまとめてみようかと(zabbixサーバのみ)。

0. 準備

今回はRHEL6.4、PostgreSQL9.3.3を使います。
OSの準備、設定は省略して、PostgreSQLのインストールと設定から始めます。
まず、PostgreSQLのソースコードをダウンロードし、インストールを行います。
$ wget http://ftp.postgresql.org/pub/source/v9.3.3/postgresql-9.3.3.tar.gz
$ sudo yum groupinstall 'Development tools'
$ sudo yum install -y readline-devel zlib-devel bison flex
$ tar xvfz postgresql-9.3.3.tar.gz
$ cd postgresql-9.3.3
$  ./configure --prefix=/usr/local/pgsql-933
$ make
$ sudo make install

yumでインストールしているのはコンパイルに必要なパッケージです。

1. リポジトリ設定パッケージのインストール

Zabbix用のリポジトリ設定パッケージをインストールします。
$ sudo rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm


2. Zabbixパッケージのインストール

yumで一発です。
$ sudo yum install zabbix-server-pgsql zabbix-web-pgsql


2. Zabbixデータベースの作成

データベースクラスタを作成し、zabbix管理用のユーザ、データベースを作成します。
$ export PATH=/usr/local/pgsql-933/bin:$PATH:$HOME/bin # PATHの設定
$ mkdir -p /pgdata/data
$ initdb -D /pgdata/data/ -E utf8 --no-locale
$ pg_ctl -D /pgdata/data/ start
$ createuser -U postgres zabbix
$ createdb -U postgres -O zabbix zabbix
続いて、スキーマとデータをインポートします。
$ psql -U zabbix zabbix < /usr/share/doc/zabbix-server-pgsql-2.2.2/create/schema.sql
$ psql -U zabbix zabbix < /usr/share/doc/zabbix-server-pgsql-2.2.2/create/images.sql 
$ psql -U zabbix zabbix < /usr/share/doc/zabbix-server-pgsql-2.2.2/create/data.sql


3. Zabbixサーバプロセスの起動

設定ファイルにデータベースの情報を入力します。
$ sudo vi /etc/zabbix/zabbix_server.conf
    :
    :
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=
    :
    :


サーバプロセスを起動します。
$ sudo service zabbix-server start


4. Zabbix WebインターフェースのPHP設定

ZabbixはWebインタフェースを使用するみたいです。
Apacheの設定ファイルが、/etc/httpd/conf.d/zabbix.confにインストールされます。
ここでは、以下のように設定しました。
最低限、timezoneは設定する必要があります。
$ sudo vi /etc/httpd/conf.d/zabbix.conf
    :
    :
    php_value max_execution_time 600
    php_value memory_limit 128M
    php_value post_max_size 32M
    php_value upload_max_filesize 16M
    php_value max_input_time 600
    php_value date.timezone Asia/Tokyo
    :
    :
設定した後は、httpdを再起動する必要があります。
$ sudo service httpd restart


5. WebアクセスのためのOS設定

HTTP通信ができるように設定を行っていきます。
まず、石川さんに謝ります。
$ sudo setenforce 0
$ sudo reboot
続いて、ファイアウォールの設定を行います。
ポート80での通信を許可します。
$ sudo /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT


6. Zabbix Webインターフェースからの設定

http://[zabbixサーバのホスト名 or IPアドレス]/zabbix へブラウザでアクセスします。
下記のような画面が見えれば成功です。
「NEXT」をクリックします。

続いて下記の画面にて、全ての項目が[OK]であることを確認して「NEXT」をクリックします。

続いて、DB設定を行います。下記のように設定を行い、「Test Connection」をクリックします。
接続に成功したら、「NEXT」をクリックします。

Zabbixサーバの設定を行います。Zabbix サーバとフロントエンドが同じところで動いているので、このまま「NEXT」をクリックします。

確認画面で問題なければ、「NEXT」をクリックします。

無事インストールが終わると下記のように表示されます。

そのままZabbix 管理画面へのログインします。

下記のような画面が見えて、Zabbixサーバーの起動が「Yes」とか「はい」となっていればよいみたいです。
(言語設定はプロファイルで変更できます。)

ひとまず今日はここまで。
では。

参考資料

下記、参考にさせていただきました。ありがとうございます。
○本家マニュアル
https://www.zabbix.com/documentation/2.2/manual/installation/install_from_packages
○第 1 回 Zabbix を動かしてみよう - SRS OSS
http://www.sraoss.co.jp/technology/zabbix/introduction/01-firststep.php#3


このエントリーをはてなブックマークに追加

2014/01/06

1/10をもって、NTTデータを退職することになりました。

このエントリーをはてなブックマークに追加

本日、辞令を受け、2014年1月10日をもって、株式会社NTTデータを退職することになりました。NTTデータには、2009年4月に入社し、5年弱お世話になったことになります。
退職に当たって、簡単に自分の気持ちを整理しようかと思い、若干酒入っていますが、乱文を書きました。


NTTデータと私


NTTデータに対する思い

正直に言って、一番に出てくるのは感謝の気持ちです。
NTTデータには、新卒で入社しました。入社前は世界史の勉強をしていました。
会社入ってからやることは、すべて初めてで、Javaのjの字も、データベースのデの字も分かりませんでした。なにも分からないくせに、態度だけは一人前のように振る舞ってた気がします。僕がそんな後輩を持ったら、腹立つことも多かったかと思いますが、様々な方々に暖かくご指導していただいたので、今があるのだと思います。
こんな新人をここまで育ててもらったことに感謝しております。

一緒に働いた方々に恵まれた

退職にあたり、NTTデータでの生活を振り返っても、嫌なことがほとんど思い浮かんできません。それは、周りの人に恵まれたからだと思ってます。

NTTデータでは、色んなプロジェクトに支援に行き、厳しいプロジェクトもありました。しかし、自分の周りにいる方々は常に前向きで、そんなプロジェクトを成功に導いてくださいました。前向きで優秀な人たちと仕事すると、厳しいプロジェクトでも楽しいと感じるものなんだなと思いました。
また今の職場に異動してからも、まだまだ基盤領域の技術に明るくない自分にやさしく技術を教えていただき、しくみ勉強会などの講演の面倒を見ていただいたりして手をかけていただきました。ここでも前向きな方々が多く、OSSを通して、仕事することの価値、自分が創り出すべき付加価値というものを考えさせられました。また、優秀な後輩にも恵まれ、仕事っていうのは他人にどう思われるかというのではなく、自分がどうあるべきか、どう楽しむのかということ教わった気がします。

固いこと書いた気がしますが、辞めるにあたって「気にすること何もない」と言ってくれた統括部長や、自分が書いた30ページ以上のドキュメントをしっかり読んでレビューしてくれる課長、仕事をする上での考え方を教えてくれたトレーナー、PostgreSQLの世界に導いてくれた先輩方、ものすごい技術者の方々、辞めるときに泣くくらい慕ってくれるような後輩、そんな人に囲まれて、これ以上の幸せはあるだろうかという感じです。ここには書ききれないくらい様々な方々にお世話になりました。

そういった方々と仕事ができたこと、辞めるにあたって嫌な思いが浮かんでこないことが自分の誇りだと思っています。


NTTデータに対する不満

NTTデータでの生活の中で自分自身が辞めるようなきっかけになった嫌な出来事はありません。
上司に辞めることを伝えたときに、何か不満はないかということを聞かれましたが、正直思い浮かびませんでした。
しいてあげるとすれば、「技術者の地位が高くない」とか「努力している人とそうでない人の待遇が変わりない」とかありました。
ただ、大企業にはありがちなことであるし、だからと言って、そういった不満をあげるような技術力を自分がもっているとか、自分が仕事する上で待遇に不満だとか言うことはありませんでした。


じゃあ何で辞めるのか

不満がないのであれば、なぜやめるのかという話ですが、大きく分けると以下の2つの理由になります。

1.  次にやることが面白そうだったから

1つ目は直感的な理由です。単純に、次のジョブが面白そうだと感じたからです。
社名はまだ伏せますが、次のジョブではクラウドコンピューティングを勉強し、クラウドを使った開発の仕方などを人に教えることになります。まだ仕事として取り組んだことはない技術ですが、様々なシステムが集まるプラットフォームだと思うので、興味を持っていました。それ以上に人に教えるということに惹かれたかもしれません。NTTデータでインドの協力パートナーさんにPostgreSQLのことなどをレクチャーするなどして、ダイレクトに反応が返ってくるのに充実感を覚えてたのも転職を決意する決め手になったと思います。

新しいことをやるのは大変なことだと思いますが、NTTデータでも様々なプロジェクトで、新しいことを色々やらせていただいたので、頑張れるかなと思います。
新しいことをやるのは楽しいですし、せっかくの人生なので色んなことをやりたいなーと。ダメだったら、また違うことを始めればいいですし。

2. お世話になった方々に負けないために

NTTデータで最後に一緒になったチームにはPostgreSQLのコミッタをはじめとして、PostgreSQL、DBのスペシャリストがそろっていました。
私が分からないに直面しても、彼らに聞けば、最短距離で解決にたどり着けるということも何度も経験しました。とても恵まれた環境でしたが、反面、そういった環境に甘えてしまう自分もいるなーと何となく感じていました。もう少し厳しい環境に身を置いて、自分を鍛えなければ行けないなというのも一つあったと思います。
また、そういったスペシャリストの方々に追いつくイメージが持てなかったのもあるかもしれません。どちらかというと、色んな技術を学んで、色んなことをやったエンジニアとして、彼らに負けないような存在になりたいなと思っています。

さいごに

僕はNTTデータでも恵まれた人だったなーと思います。
不満を言わざるを得ない環境で働いている人もいると思うので。
そのような状況に無縁だったのは幸いでした。

多分、あまり面白い退職エントリではないと思います。
特に辞めることにつながる不満があったわけでも、頑張って転職活動をしたわけでもありません。
というか、辞めることになってから逆に寂しい思いを感じました。
ですが、そういう寂しい思いを感じさせてくれた方々と、より成長した姿で出会い、また一緒に仕事をしたいなというのが正直な気持ちです(きっと近い将来どこかである気がする)。
これまでお世話になった方々に感謝の気持ちを示して、お別れとしたいと思います。
お世話になりました、ありがとうございました!!

サラリーマン江川大地 NTTデータ編 完
江川先生の次回作にご期待ください。


このエントリーをはてなブックマークに追加