なおすけの落書き帳

てきとーに。

PostgreSQLでselectの結果をCSVに出力する

φ(..)メモメモ
最近CSV使い過ぎではという意見も一理あるって感じです。

COPY (select * from table1 ) TO '/absolute/path/to/save' DELIMITER ',';

クリスマスイブに考える、ぼくらの本当にほしいもの

前説

www.adventar.org

この記事はSLPアドベントカレンダー24日目の記事です。
昨日はきぃ君が書きました。
アドベントカレンダーSHIROBAKOについて書いたらいろんな人から渋い顔された*1ので、今回はまじめに書きます。

はじめに

サービス開発をするとき、"だれ"の"なに"を"どうする"ためのサービスなのかを意識する必要があります。
まあ、こういう話はよく言われることなんですが、すごく大事なことです。

顧客が本当に欲しかったもの問題

そういう話をしていると、こんな図がイメージで出てくると思います。

http://arison.jp/wordpress/wp-content/project_comedy_l.gif

この図は、いろいろな解釈ができると思うのですが、大事なことは1つだけで、
顧客は、自分の本当にほしいものはわからないということだと思います。
あと営業はアレだと思います変な話

まあ、こういうのって割とありがち(だからこそネタ絵になるんだろうな)ですね。
で、こんな哀しい事件を引き起こさないためにいろいろと考えられています。

開発手法的アプローチ

解決案として、アジャイルな開発を行うということが言われています。
(アジャイル開発って広い意味を持つので、あまり使ってるとその方向の人に怒られそう)
これは、短いスパン(2〜4週間)で開発を行って、顧客からレビューしてもらうという手法です。

本当にそれでいいの?

ここで注意して欲しいのは、アジャイル開発にも落とし穴が存在して、いつも口を広げて開発者を食べようとしていることです。
短いスパンでレビューされるというということは、定期的に機能の変更が起こりうるということですよね。
つまりどういうことかというと、使う人の意見が代わりがちになってしまう危険性があるということです。

すると、本当に欲しかったものというのはブレるし、開発側も場当たり的な解決をしてしまいがちですね。
あと、どうしても見ためやヌルッとした画面効果に目が行きがちですね。
さて、これで正しく顧客が本当にほしいものというのはできるのでしょうか。

顧客が本当に欲しかったものをつくるためには

結局、顧客が本当に欲しいものはわからないし、エンジニアが相手のほしいものを把握するのは難しいんですね。
でどうするかというと、まあこれも最近はよく言われているんですが、エンジニアはユーザ目線でシステムを提案し、開発するんですね。
手法としては、ユーザーストーリーマップ*2とかExテーブル*3とかあります。
こういったもので、現在ある状態(AsIs)から理想的な状態(ToBe)を導いていきます。
もちろん、そこでは顧客とのズレはあるかもしれません。じゃあその解決はできないのかと。

ぼくが思う本当のアジャイル開発の意味

理想的な状態が本当に理想的な状態な状態なのかどうかは、顧客にしかわかりません。
こういうときに、「こんなもの出来ました〜」ってユーザストーリーマップとかみせたりしても顧客は( ゚д゚)です。
この「エンジニアがかんがえるさいきょうのじょうたい」を顧客に理解させるために、システムを作ります。
いわゆる「見える化*4ですね。これで顧客に「まさにこれです」と思わせるってわけです。
これを短いスパンで行うことで、顧客は嬉しい、エンジニアも無駄な努力をしなくてすむ、Win-Winな関係になるわけです。

https://i.ytimg.com/vi/ewDSez9YfK0/maxresdefault.jpg

結論

最近、手段と目的が入れ替わっているパターンをよく経験するので、こういうことを書きました。
システムの構築とかって、あくまで「手段」であって、「目的」ではありません。
システムをつくって、どうありたいのかをイメージして行きましょう。

余談

ぼくらの本当に欲しかったものは、彼女じゃなくて、性の6時間*5にある予定だったんだ!

http://akimoto.jp/blog/wp-content/uploads/2008/01/nanandatte.JPG

まとめ

壮大なポエムっぽい雰囲気がありますね。
勉強している人にとって、こんなものは当たり前なのかもしれないですが、うちのサークルの人には割と新鮮じゃないのかなと思います。
卒業研究とかでもシステムを開発したりするとは思いますが、"だれ"の"なに"を"どうする"のかを常に意識しておかないとドツボにハマります(経験談)
1年や2年のときから意識しておくといいと思います。 こういうのって結構奥深いので、誰か勉強会企画して欲しい…。

そんなことより、mikutterがインストールしやすくなっていて驚きました。
みんなもmikutterつかおう。

http://mikutter.hachune.net/

明日はみんなのアイドル いるかさん さんです。

参考文献

記事を書いてるときに調べたらでてきた、まさに私のいいたかったことって感じの記事でした。
www.atmarkit.co.jp

ExcelでCSVを読み込むときの注意

完全な備忘録。
Excelって気を利かせてるのかそうじゃないのかよくわからない

やりたいこと

CSVExcelで開いて、xlsxファイルにコピペしたい。ただそれだけ。
ただし、CSVのデータには001といったような、0埋めした数字も入っています。

CSVの仕様をざっくりと

CSVComma Separated Valuesの略称で、RFC4180*1で言及されており、公式仕様とみなされています。
ただし、公式仕様として標準化はされていません。

CSVとは名称のとおり、カンマ区切りのデータの集合体です。
一般的なデータはこんなかんじ。

"id","姓","名","生年月日","アカウント名"
"1","友利","奈緒","1990/08/30","ntomori"
"2","乙坂","有宇","1990/01/01","yotosaka"
"3","西森","柚咲","1990/12/31","ynishimori"

データの横を行、縦を列と呼び、""で囲まれた文字が値です。

値を""で囲むことを省略することもできます。
ただし、このときは条件として「値に",、制御文字を含まない」ことが必要です。

Excelの挙動

入力データはこのようなものであるとします。

1,hogehoge.txt,2015/01/01,001
2,foobar.txt,2015/01/02,002,
:
100,piyopiyo.txt,2015/12/31,100

Excelに読ませるとどうなるかというと…
(csv作るのが面倒だったので、2列目、3列目は固定文字列にしています) f:id:naosuke2dx:20151216135351p:plain:w200
このように、勝手に値が変えられます。
Dの列を文字列にしたとしても、0埋めされません。
これをこのままxlsxファイルに流してもただの値としてしか出ません。

どうするのか

csvファイルを開かずに、新規(新規じゃなくてもいいけど)でxlsxファイルを開きます。
その後、データタブから、テキストからインポートをクリック。
対象のCSVファイルを開きます。
f:id:naosuke2dx:20151216141300p:plain:w200
f:id:naosuke2dx:20151216141334p:plain:w200
次へ
f:id:naosuke2dx:20151216141353p:plain:w200
区切り文字にカンマを追加
f:id:naosuke2dx:20151216141921p:plain:w200
0埋めしている列を文字列として扱うよう設定。完了
f:id:naosuke2dx:20151216142001p:plain:w200

できたー
f:id:naosuke2dx:20151216142616p:plain:w200

おわりに

Excelさん、お願いだから邪魔をしないで。

作業合間に見たいアニメ

前説

www.adventar.org

この記事はSLPアドベントカレンダー5日目の記事です。
昨日は阪急くんが書きました。
SLPの下部組織でアニメ視聴プロジェクトつくりたいのでこんな記事を書きます(大嘘)

はじめに

どうも。SLP元所長で気が付くと上位組織の会長になったなおすけです。
みなさん、アニメと聞くとどんなアニメを想像しますか。アツいアニメを想像する人も多いのではないでしょうか。
魔法と剣の話とか、巨人の話とか、6つ子の話とか…。
今日はそういうアニメの話ではないです。もっと日常的なアニメの話をします。

SHIROBAKO

なんこれ

shirobako-anime.com

去年の冬から今年の春までの2クール連続で放送されたアニメです。
未だに根強い人気のあるアニメですね。アドベントカレンダー*1もやってます。
これはアニメを作る人達を描いたアニメです。
アニメへの情熱がすごく感じられます。変な話*2、すごく良いアニメです。

なぜ見るべきか

ソフトウェア業界に通ずる話が多いです。
自分 簡単に列挙するなら、こんな感じ。

  • 1クールアニメの作成の工程管理
  • 監督によるリテイク
  • アニメーターへのしわ寄せ
  • トライアンドエラーの繰り返し
  • 忙しい時に新しいプラグインを作成
  • ひどい編集

これらはすべてアニメ中にかかれています。しかもこれのせいで大トラブルに巻き込まれかけます。

これがソフトウェア業界になるとこんな感じではないでしょうか。

  • プロジェクトのマネジメント
  • 突然の仕様変更
  • エンジニアのデスマーチ
  • ビルドとエラーの繰り返し
  • 忙しい時のタスク自動化スクリプト作成
  • なにもわかってない顧客

結局どこの業界も同じなんだなーって感じです。

あと、マスコットキャラクターのミムジーとロロがめっちゃかわいいです。
この子たちはこの物語の解説役であり、主人公の心象を表現してくれたりします。

http://cdn-ak.f.st-hatena.com/images/fotolife/k/konifar/20151201/20151201164714.jpg *3

感じてほしいこと

このアニメは、主にストーリーを牽引する宮森あおいという女の子の成長物語でもあります。
(他のキャラの成長物語でもあるけど)
そのキャラが、昔は漠然と「アニメの仕事をしたい」と思っていただけだったのが、いろいろな出来事を通して、もっとこうなりたいという思いを持つようになっていきます。
ちょっと前にしたプレゼンで、現実とのギャップに悩みますよねって話をしたと思いますが、宮森あおいも同じように悩みます。
そこをどう解決していくかという方法を見て感じて欲しいです。

あと、世の中には理不尽なことも多いということを見て感じてくれればと思います。

その他

SHIROBAKOは、IT業界の人にもとても人気で、Rebuild.fmという有名なPodcastsでも何度も話されてます。
ぜひ見よう!

SHIROBAKOアドベントカレンダーはこちらです。
www.adventar.org

まとめ

???「つまりこの記事はなにもかいていないのとおなじですよね?」

RubyWorld Conference2015に行ってきた

だいぶ寒くなってきた今日この頃、皆様いかがお過ごしですか。
私は卒論に向けてぼちぼちといろいろ進めています。
そういえばSplatoonをいろいろな事情で手に入れた*1ので、最近やってます。おかげで睡眠不足です。
そんなわけで本題行きましょう。

RubyWorld Conference

RubyWorld Conference2015に行ってきました。
13日は徳島に行かなければならない用事があったので、参加したのは1日目だけですが。
今年のテーマは「Ruby多様性」ということで、Rubyの様々な利用法をや活用事例が紹介されました。
聞いた感覚としては、mrubyの話が多かったかな。

以下つらつらとまとめや感想を。

基調講演1

題目: セカンドシステムシンドローム
講演: まつもとゆきひろ

Matzによる基調講演でした。
ソフトウェアを作るのは難しいという話から始まりました。現在、ソフトウェアは明確な解を持たず、誰も何を作るべきかわからない状態である。開発を続けると、段々と古くなっていき、複雑になっていく。
そうすると、保守も困難になって、作り直したくなってしまう。この「作り直したくなる」というのがセカンドシステムシンドロームである。

この話はすごく身に覚えがある話だし、大学でもよく聞く話なので、なるほどなあと思いながら聞けました。
この症状のソフトウェア業界の例でPのつく言語2つ*2や、Rubyの話*3もでていておもしろかったです。
実際に作り直していく場合はどうするべきかという指針も出していて、今後の参考にしたいと思います。

A-5-1

題目: 非Railsアプリケーションのマルチデータベース対応と高速化の取り組み
講演: 冨田 昌宏 (株式会社富士通システムズ・イースト)

Rubyを使用したWebアプリケーションをマルチデータベース対応や高速化した話でした。
RoRが有名になる前に作られたアプリケーションで、色々としているとのこと。
Mysqlに対応した独自ORMをマルチに対応させるのに様々な苦労をしたらしい。
泥臭い作業をきちんと1つずつこなす重要性を確認できたとともに、データの重要性も再確認できました。
"推測するな、計測せよ"という言葉を何度も出していました。

A-5-3

題目: mruby組込みシステム開発の勘所~ETロボコンへのmruby適用事例~
講演: 三牧 弘司 (SCSK九州株式会社)

mrubyを使って、ETロボコンへ挑戦したという話でした。 もともとEV3マイコンにmrubyを乗っける話とかは聞いたことがあり、その当時はめちゃくちゃ遅いとの噂だったのですが、かなり早く動いていて驚きました。
私が所属しているサークルでもETロボコンに挑戦しているので、Rubyも使えるんだぞーとプッシュしてみようと思います。

A-5-4

題目: Building Ruby on Rails applications with the Taiwan Government 台湾官公庁におけるRuby on Railsを導入する事例
講演: Tsehau Chao (5xRuby Ltd)

台湾の官公庁にRoRアプリケーションを導入したという話。
どこの官公庁も似たような感じなんだなーと苦笑いしました。
この日の発表の中で、一番ネタを入れてきていました。

レセプション

まあぼちぼちとご挨拶して回りました。

その他


参考文献

*1:バイト先の会社のを借りてる

*2:PeとかPyとか

*3:Ruby1.8と1.9

El Capitan入れて12時間くらい経った感想

昨日夜、シコシコと家のPC群をアップデートしてました。 具体的には、iMacYosemiteからEl Capitanに、Windowsマシンを8.1から10に変えました。
あと、iPhone 6sをiOS9からiOS9.1にした感じ。
Windows10については公開してすぐにインストールした*1ので特に新しいことはなし。
それよりもEl Capitanは昨日初めて導入したので、ちょっとワクワクしながら使ってます。 以下、12時間経過の感想*2

IME

超便利。Live変換がマジで便利。Twitterがすごく捗る。
少し重い気がするけど、まあこんなものかなという感じ。 ただ、記号を常に半角にするとか、そういう設定ができなくなっているらしい。
これはかなり困るので、しばらくはGoogle IMEのまま生きていこうかな。

Split View

なんかイマイチって感じ。Windowsがやってるアレの方が使いやすい。
ただ、これはまだあまり使っていないので、もう少し様子見。

Mission Control

これはYosemiteに比べてかなりよくなった印象。
画面になにがあるのかとかが見やすくなっていいね。
でも仮想デスクトップ出してる時に、別のほうになにが乗ってるのかが見えないのはマイナス。

その他

速くなったっていう感想をよく見かけるけど、体感的にそこまで速くなったという感じはないかな。
普段電源を入れっぱなしにしているので、40日くらい起動して、それでも遅くならなければ優秀だと思います。
アップデートだったので、brew使うときにSIP*3でこけたりはしていないし。
ただ、ラップトップのほうを買い換えようと思っているときにSIPは邪魔かなあ、とちょっと思います。


そんな感じで。もう少し開発とかで使ってみて、思うことがあればまた記事にします。

*1:参照記事

*2:実際には3時間くらいしか使っていない

*3:System Integrity Protection

モニタ買った

ちょっと前に、古いモニタを知り合いに上げたので、しばらくモニタ2枚*1で生活をしていました。
流石に2枚だときつかったので、新しく1枚買いました。

www.eizo.co.jp

これなんですが、近所のPCショップに行くと14000円で売ってたので、即決。
一応、画面の確認をしたけど、ドット抜けも変な焼きつきもなく、いい感じ。
帰って確認したら使用時間は1000時間くらいでした。

今までモニタはmitsubishiを使っていたのですが、最近はもうなくなったらしい*2ので、別のメーカーを買いました。
とはいってもEIZOとかいう神ブランドなので、特に問題はなさそう。

次に経済的余裕ができたら、アームを買って、今あるモニタの1つを縦長に設定してみようと思います。

*1:iMac 27inchと三菱の20型

*2:io-dataに売却されたらしい