覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。 twitter: @yyoshikaw

運用から見たシステムに関してのあれやこれや

ITシステム(サービス, アプリケーションレベルで)の開発を行っていると、設計してコード書いてテストしてリリースするという流れになり、 このリリースというのがゴールという感覚に陥る場合があります。 実際は、システム(サービス)は運用が開始されてから…

INEVITABLE ja night インターネットの次にくるもの #inevitable2017

INEVITABLE ja night インターネットの次にくるものに参加してきました。 以下自分用のメモです。 概要 Google Cloud に代表されるクラウド技術の進化によって引き起こされるその先の世界を、 機械学習、VR / AR、IoT などの領域で活躍されているスタートア…

Javaでプログラムを書く際に意識しておきたいこと

以下、個人的にJavaでプログラムを書く際に意識しておきたいことです。 ただし、学術的な裏付けなどがある内容でありません。あくまで私の経験に由来する内容となっています。 そもそもコンテキストによってはそぐわない内容もあると思いますので、その辺は…

Go言語LT大会! 「最近、Go言語始めました」の会に行ってきた #golangjp

Go言語LT大会! 「最近、Go言語始めました」の会に参加してきました。 以下自分用のメモです。 概要 Go言語入門者のLT大会&懇親会 開催日: 2017/6/5 場所: レバレジーズ株式会社 おススメ・標準・準標準パッケージ20選 オススメの標準・準標準パッケーシ…

golang.tokyo #6 に行ってきたよ #golangtokyo

golang.tokyo #6 に参加してきました。 以下自分用のメモです。 概要 開催日: 2017/6/1 場所: 株式会社ディー・エヌ・エー Gopher Fest 2017 参加レポート 上田拓也 氏 (メルカリ/ソウゾウ) Gopher Fest 2017参加レポート from Takuya Ueda Gopher Fest…

Go言語 - 日時のフォーマット処理

本エントリでは、Go言語で日時を特定の書式にフォーマットする処理を実行してみます。 基本的にはtimeパッケージのTime.Format関数を利用することになります。 例えばJavaなら、LocalDateTime#format やら SimpleDateFormat#format 等を利用してフォーマット…

Go言語 - melodyを利用してWebSocketサーバを立てる

melodyとGinを使ってWebSocketサーバを立てて、簡易的なチャット画面を作ってみました。 実際には、melody Exampleを、ほぼそのまま流用しているだけです。 準備 以下を実行してmelodyを利用可能な状態にしておきます go get gopkg.in/olahol/melody.v1 プロ…

Go言語 - Goの特徴

Go言語(Golang)の特徴(メリット)として以下のようなものが一般的に挙げられています 高パフォーマンス 一般的に軽量言語(LL)ではメモリ管理のコストなどに注意してコードを構成しなければパフォーマンスが極端に悪くなることがあります。 それに対して、…

Go言語 - Ginを使ってHello World

Go言語ではnet/httpを利用することでHTTPサーバを立てることができまが、GinといったWebアプリ用のフレームワークも存在しています。 事前準備 以下を実行してGinのパッケージ取得を行います go get github.com/gin-gonic/gin とりあえずHello World 以下 He…

Go言語 - HTTPサーバでHello World

Go言語ではnet/httpを利用することでHTTPサーバを立てることができます。 とりあえず今回はお試しな感じでHTTPサーバを立ててみます とりあえずHello World 以下 Hello World の文字列を返す例です。 http.HandleFuncにより、ハンドリング対象のパスとハンド…

Go言語 - WindowsのアクティブなセッションのIDを取得する

Windowsではセッションという概念が存在しています。(セッション 0 の分離 - Windows 7 対応アプリケーションの互換性) 複数セッションの中で現在アクティブになっている(物理コンソールにアタッチしている)セッションのセッションIDをGo言語で取得する…

コード品質特性を悪化させるには

プログラムのより良い設計を支える中心的概念としてコード品質特性があります。これに点数付けした場合に、悪い点をとるためにはどうすればいいかについて書きました。 以下内容のベースはJavaです そもそもコード品質特性とは ここでは、以下をコード品質特…

複雑なプログラムに現れる傾向や特徴

「ソースコードを汚くするには」に記載したようなコードを書いていると、結果的に複雑なプログラムになってしまいます。 ここでは複雑なプログラムに現れやすい傾向や特徴などについて記載しました 基本的にJavaをターゲットにして本エントリを記載していま…

「APIデザインの極意」-優れたAPIを決定づけるもの

「APIデザインの極意」 の 第3章 優れたAPIを決定づけるもの で気になった部分の抜粋 APIデザインの極意 Java/NetBeansアーキテクト探究ノート作者: Jaroslav Tulach出版社/メーカー: インプレス発売日: 2014/07/02メディア: Kindle版この商品を含むブログ (…

「APIデザインの極意」-APIを作成する動機

「APIデザインの極意」 の 第2章 APIを作成する動機 で気になった部分の抜粋 APIデザインの極意 Java/NetBeansアーキテクト探究ノート作者: Jaroslav Tulach出版社/メーカー: インプレス発売日: 2014/07/02メディア: Kindle版この商品を含むブログ (6件) を…

Go言語 - enumを定義する

Go言語には、C言語やJavaにおける「enum(列挙型)」のような機能がありません。 Go言語をやり始めて最初にこれを知った時、 え嘘でしょ? と言いたくなりました。 が、実際には 定数定義とiotaを利用することでC言語のおける列挙型に近い振る舞いを実現する…

Go言語 - 空インターフェースと型アサーション

Go言語には、全ての型と互換性を持っているinterface{}型(空インターフェース)というものが存在しています。 たとえば以下のように、interface{}で宣言した変数にはどんな型の値でも代入可能です var obj interface{} obj = 123 // int obj = "str" // str…

Go言語 - interfaceを触ってみる

Go言語にはメソッドの型だけを定義したinterfaceというものが存在しています。 interfaceは型の一種であり、任意の型が"どのようなメソッドを実装するべきか"を規定するためのものです。 大雑把にいえばJavaでいうところのinterfaceに似たものです。 interfa…

Go言語 - forループによる繰り返し処理

Go言語で繰り返し処理(ループ)を記述するために用意されている構文はforのみとなっています。 whileやdo whileといったものは提供されていません。 無限ループ 他の言語であれば、無限ループを記述する場合は、 while(true) { xxx } といったようにwhileを…

Go言語 - メソッド

Go言語には、任意の型に関数を紐づけるためのメソッドという機能が存在しています。 メソッドの定義方法 メソッドの定義は以下のように記述します。レシーバーに関する記述をする部分が、関数と異なる箇所になります func (<レシーバー>) <関数名>([引数]) […

Go言語 - 無名関数

前回のエントリでGo言語の関数の基本的な部分について書きました。 本エントリでは、前回のエントリでは扱わなかった無名関数について書きます。 Go言語では関数を値として扱うことができて、変数へ格納することもできます。 まずその辺りの動作を以下確認し…

Go言語 - 関数

オブジェクト指向ではないGo言語において、関数を定義することがプログラミングにおいてかなり重要なものとなるようです。 ここでは、Go言語の関数について基本的な部分を確認します。 Go言語の関数はJavaのメソッドやC言語の関数と比べても独特な部分がいく…

Go言語 - %Tや%vの書式で出力される文字列

Go言語のfmtパッケージに存在するPrintf関数は書式を指定して標準出力に書き込みを行います。 C言語のprintfに良く似ています。が、C言語には存在しない書式がいくつか加わっています。 その中の代表格として以下のような書式が存在しています。 %T 対象デー…

Go言語 - flagパッケージでコマンドラインパラメータを処理する

前日のエントリではos.Argsを用いてコマンドラインのパラメータを取り扱いました。 これ以外にも、Go言語ではflagパッケージというものが用意されています。 コマンドラインで与えられたパラメータのパース処理を簡単に実施できるようになっています。 本エ…

Go言語 - os.Argsでコマンドラインパラメータを受け取る

コマンドラインで与えられたパラメータはosパッケージのArgsで受け取ることができます。 C言語のmain関数やJavaのmainメソッドでは引数でコマンドラインパラメータを受け取りますが、Golangでは引数ではなくos.Argsを通じて取得することになります os.Argsは…

Go言語 - Tickerを使った定期処理

gorutineとtimeパッケージのTickerを使ってバックグラウンドで定期処理を実行することができます。 本サンプルでは、1秒間隔のTickerを生成して、現在時刻を表示します。 5秒後にTicker停止用のメッセージがチャネルに送られて、Tickerをstopしています ■サ…

Go言語 - 外部コマンドを実行する

Go言語で外部コマンドを実行するには、execパッケージを利用します。(実際のimportはimport "os/exec"となります) 実行したいコマンドをexec.Command(<コマンド>)で生成して、生成したコマンドをCmd.RunやCmd.Outputで実行する流れになります Run - コマン…

Go言語 - 整数型

Go言語では整数を扱うための型が複数提供されています。 以下は、各整数型の違いなどについてのメモとなります。 実装系に依存しない整数型 以下の整数型は実装系によらずサイズが決まっています 型 サイズ(bit) 符号 最小値 最大値 int8 8 あり -128 127 in…

Go言語 - マップの基本的な操作

Go言語で提供される map について基本的な操作を試してみます。 以下map生成のサンプル以外は基本的に package, import 部分の記述は省略しています mapの生成 makeで生成 make関数を使って make(map[<キーの型>]<値の型>) を実行することで mapを生成するこ…

Go言語 - Windowsのexe実行時にコマンドプロンプトを表示しないようにする

Go言語で単純にビルドしたWindows用のexeを実行すると、コマンドプロンプトの画面(DOS窓)が表示されてしまいます。 ツール作ってる時は別にそれでも大丈夫ということもありますが、GUIアプリケーションなどの場合は邪魔でしかないです。 exe実行時にコマン…

Go言語 - WebSocketのクライアントでJSONメッセージをやり取りしてみる

golang.org/x/net/websocketパッケージでWebSocketクライアント側の実装サンプルです。 (WebSocketサーバ側は別に存在していて、クライアントから送られたメッセージオウム返しするEchoServerになっているものとします) ■サンプルコード 大まかに、websock…

Go言語 - rsrcを使ってexeにアイコンを埋め込む

go buildして生成するexeファイルにアイコンをファイルをrsrcを使って埋めこむ手順です アイコンファイルの用意 exeに埋め込むためのアイコンファイル(.ico)を用意してください ここでは、SampleApp.ico を用意したものとします rsrcの入手とexe化 以下の…

Go言語 - WindowsのセッションID取得

Windowsではログオンしたユーザごとにセッションが存在しています。(セッション 0 の分離 - Windows 7 対応アプリケーションの互換性) そのセッションのセッションIDをGo言語で取得するサンプルです。 本サンプルでは自プロセスIDを元にそのプロセスが存在…

MedNight Tokyo #2 〜Web技術でレガシーな医療業界に革命を!エンジニア開発裏話 #mednight

MedNight Tokyo #2 〜Web技術でレガシーな医療業界に革命を!エンジニア開発裏話 に参加しました 以下自分用のメモです(発表内容からだけではなく懇親会中に聞いた話も追加されたメモになっています) 概要 医療ヘルスケア分野の成長企業である、エムスリー…

NEST 新経済サミット2017 - day2 #NEST2017

NEST 新経済サミット2017 - day2 に参加してきました。 (day1の参加メモはこちら) 以下自分用のメモです 概要 NEST(新経済サミット)は、一般社団法人新経済連盟が主催するグローバルカンファレンス。 世界の新経済・新産業を牽引する数多くのアントレプレナ…

NEST 新経済サミット2017 - day1 #NEST2017

NEST 新経済サミット2017 - day1 に参加してきました。 (day2の参加メモはこちら) 以下自分用のメモです 概要 NEST(新経済サミット)は、一般社団法人新経済連盟が主催するグローバルカンファレンス。 世界の新経済・新産業を牽引する数多くのアントレプレナ…

PostgreSQL - DBに接続しているセッションの確認

PostgreSQLで現在DBに接続しているセッションの情報は以下SQLを実行することで取得できます select procpid, datname, client_addr from pg_stat_activity where datname = '{DB名}'; ■実行例 SAMPLEDB=> select procpid, datname, client_addr from pg_stat…

PostgreSQL - トリガーの確認

PostgreSQLでトリガーに関する情報を取得するための各種操作についてのメモ トリガーの一覧取得 トリガーの一覧は以下のSQLで取得できます SELECT * FROM pg_trigger; ■実行例 SELECT * FROM pg_trigger; tgrelid | tgname | tgfoid | tgtype | tgenabled | …

エンジニアリングでレガシーな世界に革新を起こす。既存産業に切り込む4社合同MEETUP

エンジニアリングでレガシーな世界に革新を起こす。既存産業に切り込む4社合同MEETUP に参加してきました。 以下自分用のメモです。 概要 金融、人事、医療、不動産といった専門性の高いレガシーな領域で新しい顧客体験や社会システムを生み出そうとしている…

Healthcare × Deep Learning

医療 と Deep LearningやAI分野 を組み合わせたサービス等を提供する企業で個人的に気になったものをメモしておくためのリンク集です。(日々増減します) imagia http://imagia.com/ AIによる医用画像解析 Mindshare Medical https://mindsharemed.com/ 臨…

機械学習エンジニア3社合同MeetUp!〜MICIN・DATASECTION・LPixel〜

機械学習エンジニア3社合同MeetUp!〜MICIN・DATASECTION・LPixel〜 に参加してきました。 以下自分用のメモです。 概要 機械学習を活用した技術開発を行う株式会社情報医療・データセクション株式会社・エルピクセル株式会社3社のCTO/研究開発部長が、 各社…

Kotlinの特徴

「Kotlinスタートブック」を読み始めたので、とりあえずKotlinの特徴として押さえておきたい点をメモしておきます。 Kotlinスタートブック -新しいAndroidプログラミング作者: 長澤太郎出版社/メーカー: リックテレコム発売日: 2016/07/13メディア: 単行本(…

HR Tech x 機械学習 x AWS(Machine Learning)活用事例紹介に行ってきた

HR Tech x 機械学習 x AWS(Machine Learning)活用事例紹介 に参加してきました。 以下自分用のメモです。 概要 AWS Machine Learningを使用した機械学習を中心としたAIの導入事例を紹介 日時: 2017/03/13(木)19:30〜 場所: 株式会社ビズリーチ HRMOSでのAI…

PostgreSQL - DBのデータをCSVに出力したい

DBのデータをCSV出力したいという場面は多々あると思います。 PostgreSQLにpsqlで接続して特定のコマンドを実行すればCSVファイルへの出力ができます。 テーブルの全データをCSVに出力する 単純に特定のテーブルの全データをCSV出力する場合は以下のコマンド…

日付のフォーマット処理する時にどれだけメモリ消費するの?

業務アプリケーションを作成する上で、日時を取り扱うのは日常茶飯事だと思います。 例えば、生成した日付オブジェクトを特定のフォーマットパターンで文字列化する という処理の流れは大体どんなシステムでも実施されます。 これをJavaで実現する場合、現在…

Linuxでよくお世話になるスペシャルファイルに関するメモ

開発やテストの際などによくお世話になるLinuxのスペシャルファイル(の中の疑似デバイス)に関するメモです /dev/null 書かれたデータは捨てられる。 null スペシャルファイルを読むと常に end of file が返される。 /dev/zero 書かれたデータは捨てられる…

KotlinでHello World

Kotlin流行ってますし、そろそろ勉強しようかなと思っている今日この頃。とりあえずHello Worldだけやってみました。 IntelliJ IDEAでKotlinのプロジェクトを作成して以下実行しています。 ■サンプルコード Kotlinのファイル(HelloWorld.kt)を新規作成して…

「Deep Learning×画像解析」ライトニングトークイベント

「Deep Learning×画像解析」ライトニングトークイベント by LP-tech に参加してきました。 以下自分用のメモです。 概要 画像解析技術に特化した情報を発信している専門サイトLP-techが主催する、Deep Learning×画像解析に関するLTイベント。 日時: 2017/02…

JSUG勉強会 2017年その2 ~ 脱Spring Boot初心者 に行ってきました

JSUG勉強会に参加してきました 以下自分用のメモ 概要 開催場所 : Pivotal Japan 開催日時 : 2017-02-27(月)19:00 - 21:00 Spring for Spring Boot -Spring Bootユーザーが知るべきSpringの基礎知識- 多田 真敏氏 (株式会社カサレアル、Pivotal認定講師)…

MBassador - サブクラスのメッセージ受信時の動き

MBassadorを用いてメッセージのハンドリングを行う場合のメッセージのサブクラスに対する動きを確認します。 本エントリでは、MessageObj とその子クラスの SubMessageObj を定義しました。これらをEventBusにpublishします。 ■メッセージクラスの定義 publi…