早くなんとかしないと…

社会人としてもシステムエンジニアとしても駄目になってしまう…

はじめてのしゅっちょう in Okinawa ~暮らし編~

1か月ほど沖縄に滞在しておりました。
得た知見をまとめておきます。



■仕事
・かりゆしがビジネスウェアとして定着している

□昼食
・弁当屋
 お昼休みになるとオフィスビル街にあらわれる。
 300-400円でコスパがよい。

・飲食店
 ランチメニューは650-750円が相場。

 https://tabelog.com/okinawa/A4701/A470101/47000095/
 24時間営業。
 SmaSTATION!!やはなまるマーケットで取り上げられたことがあるらしい。
 メニュー豊富。ちゃんぽん(みかど風)がイチオシ。

 https://tabelog.com/okinawa/A4701/A470101/47003717/
 ランチは日替わりで3種類。
 アフタードリンク付680円。

 https://tabelog.com/okinawa/A4701/A470101/47009566/
 魚メニューが豊富。日替わりメニューも1種類あり。
 ご飯・味噌汁・サラダはセルフ。
 デザート付。
 
 ↑↓真向かいにある

 https://tabelog.com/okinawa/A4701/A470101/47000838/
 ランチは日替わりで3種類。
 デザート付。

 https://tabelog.com/okinawa/A4701/A470101/47007565/
 ランチは8種類。ハンバーグがおすすめらしい。
 ごはんおかわり無料。
 フリードリンク付。

 屋台赤道ラーメン | 沖縄屋台発祥のラーメン・飲茶 専門店
 券売機で食券買って注文。

・コンビニ



■生活
・最高気温はほぼ毎日30度超え

・降水確率はほぼ毎日20-30%
 通り雨が降る日が多く、安心して洗濯物を外に干せなかった。

・プラスチック容器も燃やすゴミで捨てられる

日本テレビ系列のローカル局がない
・民放の番組は全国OAと放送時間が異なるものがほとんど

・旧盆の習慣があり、この期間は休業するお店もある
 ウークイがいちばん大切な日らしく、島や地方で送り出し方が違う。
 どっかは22時までエイサーを踊るらしい。
 …ってテレビのニュースでやってた。


□交通
ゆいレール
 那覇空港首里方面を通っているモノレール。
 切符についているQRコードをかざして改札を通る。
 夜の首里方面行きはデカいキャリーバッグを携えた観光客であふれている。
 最終便は23時台の模様。
 空港からの移動と、スーパーへの買い物の行き帰りで利用。

・バス


□スーパー
・全国規模だとイオン系列

・ローカル展開だとサンエー、かねひで辺りが店舗多い模様

・レジ袋は有料がスタンダードっぽい
 私が行っていたスーパーは3円。
 1回買った後、使いまわした。

・レジ列に袋詰めランプがある
 客が袋詰めする列と、店員が袋詰めしてくれる列に分かれている。


□その他
・コンビニは圧倒的ファミマ、次点ローソン

・BLUE SEAL
 沖縄を中心に展開しているアイスクリーム店。
 沖縄のブルーシールアイスクリーム|公式サイト

・35COFFEE
 TOP - 35COFFEE

さんぴん茶
 沖縄の自販機なら必ず売っているジャスミンティー。

・スーパーやコンビニでも沖縄限定のお酒やアイス、ジュースが置いてある
 物色楽しかった。
 沖縄バヤリース | 沖縄で受け継がれてきたおいしさを、これからもずっと
 アサヒ 南国チューハイ | アサヒビール
 お酒|商品情報|ファミリーマート
 紅いもフラッペ|沖縄ファミリーマート
 御菓子御殿 紅いもタルトアイス | アイス | 沖縄明治乳業株式会社
 新垣ちんすこうアイス | アイス | 沖縄明治乳業株式会社

・免税店は日用品の買い物には不向き
 ドラッグストアは化粧品が多め。
 柔軟剤も最近流行りの香り付ビーズタイプばっかりだった。



後日、観光編書きます。

『新装版 達人プログラマー 職人から名匠への道』を読んで思ったこと

『達人プログラマー』を読み終えた。

shop.ohmsha.co.jp


なぜ読んだのか

2014新卒として入社し、丸3年が経過。4年目を迎えたものの、圧倒的技術力の成長もなく、エンジニアとしてこの先生きのこっていけるのだろうかと不安を抱く日々。
そんな中、2017年の春先から日課となりつつあったはてブチェックで、2017新卒関連のスライドが目にとまる。

エンジニアとしてこの先生きのこるために // Speaker Deck
Stairway to The Pragmatic Rails Programmer

特に印象に残った上記2つのスライドで共通で名が挙がっていた本が『達人プログラマー』だった。
エンジニアとしてのこれからに悩んでいたこともあり、購入した。


蛇足:Rebuild.fm案件

購入して手元に届く前に、はてブでこんなコメントを見つけた。

はてなブックマーク - 5年間コードを書き続けたエンジニアが、新人に読んでもらいたい11冊+αを紹介する - エンジニアHub|若手Webエンジニアのキャリアを考える!

Rebuild.fm案件…?

Rebuild.fm案件とは - chrome blog

『達人プログラマー』が新装版になる前に出版されたのは2000年。
確かに17年前の本だし、これは早まったか…?と思った。

# Rebuild.fmはこれをきっかけに知り、聴くようになった
# 通勤の車で聴いて遡り中
# 該当のエピソードはまだ聴いてない


感想

読んでよかった。
自分のエンジニアとして欠けているところが見えてきた気がする。
この本の中心となる内容が、時代とともにトレンドが変わっていく言語やツールではなく、エンジニアとしての指針や心構えの当たり前だからこそ、長年読まれ続けているのだなあということがわかった。

就職してからの3年間は、業務に支障が出ないレベルで頑張ろうという態度だった。
しかし、


こういった状況もあり、この先エンジニアを続けるためには"知識ポートフォリオに対して定期的な投資を行うこと"は必要不可欠。
最近モチベが下がっていたので、いいケツ叩きになった。
まずは応用情報技術者試験の勉強を再開しようと思う。

心がけたいと思ったこと

DRY原則(Tip11)

コードもそうだが、動くコードが正、更新できてないドキュメントは無視、みたいな二重化もあるなあと思った。

コマンドシェル(Tip21)

小学生の頃からWindowsを使ってきたせいか、コマンドを避けてきてしまったところがある。
貝殻遊びに取り組んでみないとなあと思わされた。

エディタの熟知(Tip22)

エディタもそうだが、ツール全般使いこなせてない感があるため、どうにかしたい。

偶発的なプログラミングを行わない(Tip44)

わからん・動かん・落ちた・バグった→ググる→試す→動いた→テスト通った→やったー
…みたいなことをしてしまうため、とても刺さった。
ここはまさにプログラミング力の底上げが必要。

自動化(Tip61)

マンパワーでどうにかしようとする傾向があるため、少しずつ意識して取り組みたい。

日本語もプログラミング言語(Tip67)
ドキュメントは組み込むもの(Tip68)

どこかで誰かが述べていた、という記事を見た気がする…と思い探したところ、以下の記事だった。
雑な感想とメモ【まつもとゆきひろ氏特別公演】若手エンジニアの生存戦略 @DRECOM #colab_matz 20170520 - zuckey_17’s blog
ドキュメントをおざなりに考えないようにしたい。

以前読んだ似たようなテーマの本

以前読んだ本だと『SOFT SKILLS ソフトウェア開発者の人生マニュアル』が同系統かと。

ec.nikkeibp.co.jp


読書メーターの感想でも述べているが、このブログを始めたきっかけの本である。

『達人プログラマー』はエンジニアとしての指針や心構えを述べ、職人・名匠へ導く本であるならば、『SOFT SKILLS』はエンジニアとして飯を食べるためのキャリアの積み方や自分の見せ方に重きを置いたエンジニア人生設計本であると言える。

DBのデータをdmpファイルにexportして他のDBにimportする

長らくメンテしていなかった共有開発環境を最新化する必要が出てきた。

「あとDBだけなんですけど…」
「個人開発環境からエクスポートして、共有開発環境にインポートすればいーじゃん」
「あ、はい」

…ということで、エクスポート・インポートしようと試みる。
共有開発環境と個人開発環境の、DBのGUIツールが違うのはなぜなんだ…
# 個人開発環境のGUIツールは指定されたものを使ってる

対象ファイル
共有開発環境DBのGUIツール:*.dmp
個人開発環境DBのGUIツール:*.csv

なぜなんだ!

「コマンドでやればいーじゃん」
「コマンド教えてください」
「"export oracle"で調べれば一発よ」
「あ、はい」

"dmpファイル エクスポート"でググった。
# あえて指示された単語で調べないスタイル

ORACLE/EXPORT編 - オラクルちょこっとリファレンス
↑のURLを参考にしました。

個人開発環境のコマンドプロンプトを起動して↓のコマンドを叩く。

exp user/pass@db file=db.dmp

…ということで、これで個人開発環境DBのエクスポート完了。



次、インポート。

ORACLE/IMPORT編 - オラクルちょこっとリファレンス
同じサイトの↑のURLを参考にしました。

とりあえず、共有開発環境でコマンドプロンプトを起動して、ベタっぽいコマンドを叩いてみる。fromuser/touserを指定しろと怒られる。
指定したら、すでに存在するテーブルやviewがあるぞとエラーが出る。あ、ここでignore指定しろってことね。

…で、最終的にインポートできたコマンドがこちら↓

imp user/pass@db file=db.dmp fromuser=user touser=user ignore=y


結局ここへ行きつくまでに1時間かかった。
コマンド知ってるなら教えてくれてもいーじゃん…。
自分で調べたり試行錯誤したりが大事だと思ってるんだろうけど、こうやって残しておかないと忘れるだけだと私は思うんだよね。
というわけで備忘録でした。

『ヘルシープログラマ』感想と自分の健康の振り返り

『ヘルシープログラマ』を読み終えました。

www.oreilly.co.jp


なぜ読んだのか

そもそも、私が「健康を意識しないとまずい」と思ったきっかけは、入社2年目の健康診断の結果でした。
高校生の頃から横ばいだった体重が、働き始めて1年で3.8kg減ったんです。

入社1年目→2年目→3年目
体重:→-3.8kg→-0.5kg
BMI:21.3→19.7→19.5
腹囲:→-1.2cm→-1.8cm

思い返せば、就職してからの1年は帰りが遅くなりがちで、晩御飯を食べない日が多かった。
「仕事にかまけて、健康をおざなりにしたら、いつか絶対ガタがくる」
それから私は、健康に気を遣うようになりました。

その1年後、『ヘルシープログラマ』という単語を知りました。
オープンセミナー2016@広島でのLTでした。
オープンセミナー2016@広島プレゼン資料

さらに1年後、↓の記事を読みました。
体型を支える技術 ──35歳になっても現役で戦い続けるプログラマの体づくり - エンジニアHub|若手Webエンジニアのキャリアを考える!

「最近は体重が増え始めたし、今一度、自分の健康を見直した方がいいかもしれない」

送料無料のための調整も兼ねて、購入することにしました。


感想

大好きなプログラミングをずっと続けたいよね?じゃあこういう生活習慣を身につけよう?プログラミングできる健康状態を末永く維持していこうね!っていうスタンスで書かれていました。
「○週間で○kg痩せる!」みたいな俗っぽい内容はないです。

同じように長く椅子に座っているであろうデスクワーカーでも実践したい内容だと思います。
ただ、プログラマがターゲットなので、アジャイルとかユニットテストとか、そういうプログラマなら知ってる単語で書いている箇所はあります。

短期間で効果のある方法はないんだなあとつくづく思わされたので、生活習慣としてひとつずつ身につけて続けていきたいなあと思いました。

カイゼンしたいと思ったこと

十分な睡眠(9.3章)

放送した内容・リスクチェック結果|睡眠負債が危ない|NHKスペシャル
NHKスペシャルの睡眠負債を見た後、カイゼンしようと7時間睡眠を数週間は続けました。
…が、結局また5時間睡眠に戻ってしまいました。
7時間睡眠の方が日中の眠さもあまりなくて良かったんですけどね。
なんで続かないのかなあ…。

栄養バランス(4.2章)

肉が好き、野菜・魚が嫌いなので、意識しないと偏るんですよね…。

試してみたこと

エクササイズ(6.3章)

表6-1の例で試してみたところ、20分/日くらいでできるかなあという感じでした。
寝る前にやると、翌日背中と足に結構きた…。

椅子の高さの調整(6.4章)

職場と自室の椅子を、お尻と膝が同じ高さになるように調整しました。

すでにやってたこと

健康のためのゲームプレイ(8.4章)

休日は大体ダンエボとかDDRとかやってます。
2年目→3年目で腹囲が減ったのたぶんこの影響だと思う。
# このタイミングでハマって休日プレーヤーと化したので、推測

水分補給(5.3章)

ここまで厳密ではないけど、意識はしてる。
水分補給が、大学生の頃は午後の紅茶茶葉2倍、就職直後は無糖ブラックコーヒー、ここ最近はただの水になったから、カイゼンしてると思いたい。


本には書かれていなかったけど

カイゼンしたいこと

腸内環境のカイゼン

食物繊維が足りてないんですかね…。

猫背のカイゼン

小学生の頃から言われ続けている筋金入りの猫背です。
直した方がいいんだろうと思いつつ、何したらいいやらって感じです…。

やっていること

目薬

ドライアイ対策。
ロート Cキューブ® m | ロート製薬: 商品情報サイト
↑この目薬を愛用してます。

ブルーライトカット眼鏡

就職してからブルーライトカット眼鏡を購入して、使っています。
あまり効果の実感はないけど…。

歯科検診

3か月に1回、定期歯科検診を受けています。

歯の話は過去に詳細を書きました↓
dosomething.hatenablog.com



あと整体ってどうなんだろうなあ。
良かったって言ってる人もいれば、悪化したって言ってる人もいて、(´ε`;)ウーン…

GIMPのスクリプトをPythonでつくる(Python-Fu)

dosomething.hatenablog.com

・ACゲームにハマった
社会人2年目からとあるACゲームにハマっている。これが身体を動かすゲームで、運動不足解消になっている。身体を動かして汗をかくの楽しい。

※ACゲーム=ダンエボ

公式アプリで投稿せずに、リザルト画像をスクリーンショットで残すと、余計な枠がついてしまうため、いつもGIMPで手作業で切り抜いていました。

この切り抜き作業をPython-Fuでスクリプト化してみた、備忘録です。

ググったところ、GIMPスクリプト作成で利用できるのは、「Script-Fu」と「Python-Fu」の2つ。
私が選んだのは「Python-Fu」。
Python、自動化に興味があって、やってみたかったんです。
これは良い機会だなあと。

Pythonの開発環境構築にあたっては、下記の記事にお世話になりました。
Python を使用して GIMP 用のプラグインを作成する

Python用のEclipseは、下記のサイトからダウンロードしました。
Eclipse 日本語化 | MergeDoc Project
Pythonを選んでダウンロードすれば、PyDevプラグインがデフォルトでインストールされています。
日本語化もされてます。
ダウンロードすれば、すぐにPythonのコードが書けます。便利。

Python-Fuの書き方や罠については、下記の記事が参考になりました。
PythonでGIMPのスクリプトを書く(Python-Fuの書き方) | d.sunnyone.org
imageとlayerの引数を書き忘れていたせいで動かなかったことに気づいたし、雛形が完成されてる。

そういえば、これは罠なのだろうか。
コメントを入れたら、スクリプトGIMPに認識されなかった。
そういう仕様なのだろうか?よく分からない。
# GitHub公開用にコメント入れたら、メニュー項目から消えてしまった

ということで、今回つくったPython-Fuはこちら↓

これを使えば、ワンクリックで切り抜くことができます。

こんな感じの、ラクするためのプログラミングにも、もっと取り組みたい。

JavaでJSON

JavaJSONを扱うことになりそう、とのことで事前学習。


JSONとは?

JSON (JavaScript Object Notation)は、軽量のデータ交換フォーマットです。

JSON http://www.json.org/json-ja.html より
日本語だと、上記URLが一次情報?


JavaJSON

外部ライブラリを使わずに、JavaJSONを扱おうとすると、下記URLの実装になるみたいです。
Java SEの標準APIだけでJSONを扱うサンプル(JDK 1.6以降、1.8も対応) - ぐーたら書房


Javaで利用されているJSONの外部ライブラリ

下記2つが主に利用されていそう。

Jackson

JacksonはJava7以上で利用可能っぽいです。
(Java6だとObjectMapperクラスを呼び出した時点で落ちました。)

一時情報として見るべきWikiは下記URL?
JacksonHome - FasterXML Wiki

Jacksonを利用するに当たって、下記URLを参考にしました。
Jacksonの便利な使い方 [初心者向け] - Qiita
Java Jacksonの基本的な使い方 | 酒と涙とRubyとRailsと

今回動作確認で作成したPOJOは下記Userクラス。

public class User {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

…で動作確認はこんな感じでやりました。

public class JacksonSample {
    private static ObjectMapper om = new ObjectMapper();

    public static void main(String[] args) throws Exception {
        // POJO→JSON
        User user1 = new User();
        user1.setId(1);
        user1.setName("HAL");
        String json1 = om.writeValueAsString(user1);
        System.out.println(json1);

        // JSON→POJO
        String json2 = "{\"id\":\"2\", \"name\":\"PET\"}";
        User user2 = om.readValue(json2, User.class);
        System.out.println("id:" + user2.getId());
        System.out.println("name:" + user2.getName());
    }
}
Jsonic

先にJsonicの動作確認コードをば。

public class JsonicSample {
    public static void main(String[] args) {
        // POJO→JSON
        User user1 = new User();
        user1.setId(1);
        user1.setName("HAL");
        String json1 = JSON.encode(user1);
        System.out.println(json1);

        // JSON→POJO
        String json2 = "{\"id\":\"2\", \"name\":\"PET\"}";
        User user2 = JSON.decode(json2, User.class);
        System.out.println("id:" + user2.getId());
        System.out.println("name:" + user2.getName());
    }
}

JsonicはJava6以上で利用可能です。

Jsonicの一次情報は下記URL。
http://jsonic.osdn.jp/

Jsonic、こんな感じでも使えるよ~ということで、参考になりそうなURLは下記。
Java JSONICでjsonな文字列をオブジェクトに直接デコード - Symfoware
jsonicのlistだけを持つクラスを使いたくない場合 - だましだまし


一次情報をチェックすることを心がけようとしているのですが、やはり英語が多い…。
英語が読めないと厳しいなあと思う、今日この頃…。

あとググる前にダウンロードファイル確認しよう。
Sampleちゃんと入ってたの、あとから気づいた…。



↓↓↓2017/07/30 追記
Javaで利用されているJSONの外部ライブラリとしてもうひとつ、Googleが提供しているGsonを見つけたので、試してみました。

Gsonの一次情報は下記URL。
GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back

動作確認のコードは下記。

public class GsonSample {
    public static void main(String[] args) {
        // POJO→JSON
        User user1 = new User();
        user1.setId(1);
        user1.setName("HAL");
        Gson gson = new Gson();
        String json1 = gson.toJson(user1);
        System.out.println(json1);

        // JSON→POJO
        String json2 = "{\"id\":\"2\", \"name\":\"PET\"}";
        User user2 = gson.fromJson(json2, User.class);
        System.out.println("id:" + user2.getId());
        System.out.println("name:" + user2.getName());
    }
}

上記のコードを書くにあたって、UserGuideのObject Examplesを参考にしました。
gson/UserGuide.md at master · google/gson · GitHub


基本の使い方は、ほぼほぼ同じみたいですね。

はじめてのGitHub

"Write Code Every Day"をやってみたい!
いい機会だから、GitHubも始めてみよう!ってことで、昨夜から作業を始めて、今日のお昼ぐらいに初pushできました。
ここまでの備忘録をまとめておきます。



作業

  • 作業日:2017/07/08-2017/07/09
  • OS:Windows8.1(64bit)

手順

  1. GitHubのアカウントをつくる
  2. Git for Windowsのダウンロードとインストー
  3. Git for Windowsの設定
  4. GitHubリポジトリを作る
  5. ローカル環境にリポジトリを作る
  6. ローカルリポジトリにcommitする
  7. リモートリポジトリにpushする

1.GitHubのアカウントをつくる

github.com

Step1:ユーザー名、メールアドレス、パスワードを入力する。
Step2:プランを選ぶ。私はFreeを選びました。
Step3:飛ばしました。(アンケートだったと思います)

Step1で入力したメールアドレスにメールが届きます。
メール内の"Verify email address"をクリック。
# 私はここでログインを求められました。(ブラウザを跨いで作業していたため)
タイトルが"Welcome to GitHub!"の、メールが届けば登録完了です。


2.Git for Windowsのダウンロードとインストー

3.Git for Windowsの設定

私家版 Git For Windowsのインストール手順 | OPC Diary
上記のURLの手順に倣って作業しました。
以下は補足になります。

Git for Windowsのダウンロードとインストー
  • ダウンロードしたバージョン:2.13.2
  • デフォルト設定のままインストールしました。
グローバルの設定
SSHキーの作成

補足はありません。手順通りに作業しました。

posh-gitのインストー

"Windows PowerShell"を右クリック > 「管理者として実行」をクリック
…で手順通りに作業しました。

しかし、

インストール後の説明通り、プロファイルをリロードします。

これだけがよくわからず、何もしていません。
# インストール後の説明が異なっていました。

エディタの設定

秀丸に設定しました。

git for windowsで秀丸を使ってコミットメッセージを編集したい | GENDOSU@NET
上記のURLを参考に、秀丸に設定しました。

editor = 'C:/Program Files (x86)/Hidemaru/Hidemaru.exe' //fu8

以下、失敗談。
コマンド叩いていけるかなあと思って試したものの、秀丸が起動せず。
試行錯誤中に叩いたコマンドが2つ通ったせいで、2つ設定されてました。

$ git config --global core.editor "C:\Program Files (x86)\Hidemaru\Hidemaru.exe"
$ git config --global core.editor \"'C:/Program Files \(x86\)/Hidemaru/Hidemaru.exe' /fu8\"
$ git config -l
core.editor=C:\Program Files (x86)\Hidemaru\Hidemaru.exe
core.editor="C:/Program Files \(x86\)/Hidemaru/Hidemaru.exe

gitコマンド及びls等UNIXコマンドでの文字化け対策

コマンドプロンプト」を右クリック > 「管理者として実行」をクリック
…で手順通りに作業しました。

「コントロールパネル」 > 「システムの詳細設定」 > 「環境変数
…のユーザー環境変数に追加されてました。
コマンド嫌いなら、ここから設定しても大丈夫だと思います。

# 蛇足。あれこれググってる最中に見つけたんですが、GitHub for Windowsもあるようなので、コマンドが嫌ならこちらの方がいいのかも?

Visual Studio Codeをdiff toolとして設定する
シンボリックリンクのためのWindows側の設定他
Git Credential Manager(GCM)のインストー

作業していません。
# 先にpushまでいきたかった


4.GitHubリポジトリを作る

5.ローカル環境にリポジトリを作る

6.ローカルリポジトリにcommitする