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

2016年10月31日月曜日

Macでバックスラッシュ入力する

Swiftの文字列内で変数(定数)を展開する場合、\(バックスラッシュ)を使います。

let name = "John"
print("Hello \(name)") // "Hello John\n"

Macのキーボード設定だとデフォルトでは、「\」を入力するのに「Option(alt)キー + ¥」となっています。
ただ、普段コーディングをしているときは、「¥」より「\」を入力する機会のが多いですよね。なので、私は設定を変更しています。

キーボードの設定は、[システム環境設定]-[キーボード]-[入力ソース]より変更できますので、皆さんも参考にしてみてください。

2016年10月30日日曜日

エンジニアにすこぶる評判のsoft skills

エンジニアにすこぶる評判のsoft skills
ソフトウェア開発者における自己啓発本として結構有名な本らしい。

この本については、
単純にソフトウェア開発者なら知っておくべき事を再確認したいなと思ったのと、
読まれた方々の書籍に対する評価も概ね良さげだったので、
迷うことなくメンバーからバトンを受取り、
私は第1,2,3部を受け持ち、この本を読む事となりました。

まず、著者について。
名はジョン・ソンメズ
アメリカでITエンジニア向けサイト『シンプルプログラマー』を運営しており、
現在、不動産などその他幾つかの事業を行い、
今はプログラムを書くより、講義や事業でお忙しいそうな。

彼のキャリアのスタートは19歳から始まり、HPで仕事をしていた時期もあり、
勤め先から解雇されたり、ベンチャー企業に属して倒産するという経験をしたり、
契約社員になったり、33歳で今のスタイルを確立するまでに、
様々な経験をしてきたんだそうな。

今、彼のサイトやtwitterを拝見すると、
エンジニアやソフトウェア開発者というより、
「プロレスラーかい!」とツッコミたくなるような、
鋼のようなボディを惜しげもなく披露しており、怪しい人なんじゃないかと思ったりもします。
https://twitter.com/jsonmez/status/792554834146709504

では、本題へ。

    第1部 キャリアを築こう

 

第1部

エンジニア・ソフトウェア開発者たる者、
競争の激しいこのITの世界で、本当に成功したいと思うのなら、
今の仕事以上のことをしなければならないんだという事を教えてくれます。

ソフトウェア開発者のキャリアは、
ビジネスとして扱うといったマインドセットが必要なんだと力説しております。
事業主のマインドを持つと、自身のスキルの棚卸しや、必要なスキルの判断をするようになり、
それはとてもプラスに働くんだと。
そして事業として考えれるようになったら、次はビジネスとしての目標を考え、
何に注力すべきかを考える様に問いかけてくる。

この第1部で、エンジニア・ソフトウェア開発者にとって、
凄く大事なコアな部分を揺り動かしてくるパートがあります。

「プロとアマチュアとの違い」


プロになって変わるのはマインドセットだ。恐怖、自虐、先送り、自己不信などと戦っているときの問題は、アマチュアのような考え方をしていることにある。アマチュアは目立たない。アマチュアは休む。アマチュアは逆境に弱い。プロはそれとは異なる考え方をする。プロは、何があっても自分の姿を見せ、仕事を勧め、前進し続ける。

これを聞いて耳が痛くなる人が居るかもですね。
自身が受け持つ仕事の対価としてお金が発生していると漠然と考えているのなら、
その甘い考えは改めないといけない。
分かっております。悔い改めます。

今回のドトール会は、ソフトウェア開発者が題材であった為、
自身を投影しイメージし易かったからでしょうか、
途中何度も話を中断しながらディスカッションが出来、
面白楽しく各々の話が聞けたのではないでしょう。

本日のお会計は、4人で1,530円でした。
次回は第2部になります。

2016年10月26日水曜日

FactoryGirlのsequenceで詰まったメモ

こんにちは、Taroです。
最近Railsを勉強し始め、やっとテストコードを書くようになりました。
FactoryGirlって便利ですよね。
特に連番を作成する際に使用するsequenceがお気に入りです。
しかし先日愛するsequenceに頭を悩まされることになりました。
(当たり前だよ、とは言わないでください。)

sequenceのnって、テスト2週目でも値がリセットされるわけじゃないんだぜ!


まずは状況を理解していただくため、例をあげたいと思います。
例えば下記のようにModelを定義します。

spec/factories/item.rb
FactoryGirl.define do
  factory :item do
    sequence(:name) { |n| "sample#{n}" }
    sequence(:category) { |n|
      n % 4 == 0 ? 4 : n % 4
    }
  end
end
意図としては、名前は「sample1」、「sample2」。。。といった具合に増やします。
ただカテゴリは1〜4の中に収めようとしました。
そしてテストコードを書きます。

spec/models/item_spec.rb
require 'rails_helper'
RSpec.describe Item, type: :model do
  context 'itemのレコードが存在するとき' do   
    before do
      FactoryGirl.create_list(:mst_content_type, 12)
    end
    it 'テスト1' do
      # 省略
    end
    it 'テスト2' do
      # 省略
    end
  end
end
create_listメソッドを使うことで、第2引数の数だけサンプルレコードを作成できます。
(ただし、1つ1つ指定できないことがネックです。)
12レコード作成しておりますが、これは意図した数です。
テストを実行しました。何やら狙った結果が得られません。
どうやらサンプルデータがおかしいということが分かりました。
# テスト1週目
id: 1 name: sample1 category: 1
id: 2 name: sample2 category: 2
...以下10個同様のものが作成された。

# テスト2週目
id: 13 name: sample13 category: 3
id: 14 name: sample14 category: 4
...以下10個同様のものが作成された。
お気づきでしょうか?1週目と2週目でレコードが違うことに。
カテゴリーで絞り込みを行っていると、この辺りで引っかかり、狙った結果を得ることができません。
また、私のように不作法なリレーションのテストもわけが分からないことになります。
(テストコードが悪いのか、それともそもそもテストしたいソースが悪いのか)

いやいや、なんでお前、カテゴリーみたいな範囲のある値にsequence使ってるの?


おっしゃる通りです。。。FactoryGirlにはtraitというグループ分けの機能がありました。

spec/factories/item.rb
FactoryGirl.define do
  factory :item do
    sequence(:name) { |n| "sample#{n}" }
    
    trait category_1 do
      category 1
    end

    trait category_2 do
      category 2
    end

    trait category_3 do
      category 3
    end

    trait category_4 do
      category 4
    end
  end

  factory :item_content_1, traits: [:category_1], parent: :item
  factory :item_content_2, traits: [:category_2], parent: :item
  factory :item_content_3, traits: [:category_3], parent: :item
  factory :item_content_4, traits: [:category_4], parent: :item
end
親を:itemとして、属性を付加します。
下手なことをするよりも、これで3つずつ計12個レコードを作成すればよさそうです。
呼ぶ時は先ほどと同様にcreateやcreate_listでいけます。

spec/models/item_spec.rb
require 'rails_helper'
RSpec.describe Item, type: :model do
  context 'itemのレコードが存在するとき' do   
    before do
          FactoryGirl.create_list(:item_content_1, 3)
          # もしくはこんな感じ(createならばその他の値も設定できるので、融通がききます。)
          3.times { FactoryGirl.create(:item_content_2) }
      end

      # 省略

  end
end
もしもっと良い方法をご存知の方がいらっしゃいましたら教えてください!

余談:sequenceに初期値を設定する


ちなみにsequenceには初期値が設定できます。
といっても簡単で、第2引数に値を設定します。(何も指定しなければ1です。)
# 100番からスタート
sequence(:name, 100) { |n| "sample#{n}" }

2016年10月24日月曜日

さらば「rails migrate」、よろしく「ridgepole」

こちらのブログは下記に引っ越しました。

帳簿の世界史


最近のドトール会ではFintechが連続してお題になっていました。
お金にまつわる最先端の話題だったわけですが、その流れに逆行して
帳簿、つまり会計がどのように発生し、現代に至ったかという本を取り上げてみます。

簿記を勉強したことがある方ならご存知のことですが、簿記には「単式簿記」と「複式簿記」があり、
単式は家計簿のような単純なもので、業務で使用するのは複式の方です。
(だいぶざっくりな説明です。興味がある方は是非3級を勉強してみてください)

単式簿記はそれこそローマ帝国の時代から存在していたそうで、つまり紀元前から帳簿の原型はあったのですが
複式簿記が生まれたのは12〜13世紀のイタリアとのこと。そこから少しずつ欧州全体に、そして海を超えて
アメリカやアジアへと、洗練されつつ普及していきます。

本の中ではルネサンス期イタリアからフランスのブルボン朝、産業革命期のイギリス、独立後のアメリカへと
時代を追って会計の歴史を紹介していますが、以下のようなパターンがひたすら繰り返されます。

  1. 権力者が、初期のうちは財務の健全化を重視し、優秀で誠実な人間に会計を担当させる。
  2. ザル会計による赤字報告を嫌がり、財務担当者を罷免。もしくは財務担当者が死没して業務が停滞。
  3. 会計のブラックボックス化、政体の崩壊へ。

例外は東インド会社設立前後のオランダ*1くらいで、基本はこれです。
細かい報告と、それをする人が煙たがられるのは、今も昔も変わらないと思います。
「重要なのは分かってるから、詳しい人たちだけでやっといて」となるんですね。
数世紀程度では、会計が進歩しても人間は進化しないんだな〜と、この本を読んで改めて実感できました。
IT技術も似たような扱いだなと、エンジニアの自分としては思わざるを得ません。

Fintechで更に会計が加速・複雑化しているわけで、いよいよ専門家以外は帳簿を追うことすら難しくなってきそうです。
ブロックチェーンとか、情報処理を知らない人が聞いてどれだけ理解できるのか…。*2
もうとっくに、人間が紙の書類で処理する分野ではないのかもしれません。



*1: この頃のオランダは株式会社の誕生で、会計の透明化=一定期間ごとの財務報告を株主から要求されたため、簿記を軽視するわけにはいかなかったようです。
*1: 私もまだ理解が相当怪しいですが。


2016年10月22日土曜日

企業CEO座談会のセミナーを拝聴してきました

セミナー名は伏せますが、別々の企業CEO3人の座談会を拝聴してきました。
主な項目はベンチャーに向いている人、大企業に向いている人。
事業の産みだし方の2題目でした。
(そのあと交流会だったのですが参加せず帰宅しました)

・ベンチャーに向いている人、大企業に向いている人
ざっくり言ってしまえば大企業むけのマニュアル型かベンチャー向けの自立型かというものがありましたが
最後はマインド、自分はベンチャー企業(もしくはスタートアップ)という何も保証がないところで戦うという覚悟が
己にあるかどうかが最終的なベンチャー向きの人だと思います。

・事業の産みだし方
この辺りはやはりCEOそれぞれで考え方の違いがあり
大企業にやれないやり方で勝負する、勝ち方を考える、お金のことを常に考えてるなど当たり前のところから、
あまり文章にしたくない黒い話などやり手のCEOならではのお話でした。

所感としては、見習いたいところ半分、ちょっとそれは。。。的なところが半分といった感じでした。
一部の人の、お金儲けの為だけのやり方みたいなところはあまり共感できず、
やはりやりたいこと、面白いと思ったことをやるための起業といったところに関心や共感を得ました。
自分としてもスタートアップに従事するならば、面白いことがしたいと思いますし
それにはお金が必要なこともわかってはいるのですがちょっと夢見てしまいますね。

Rails5 Turbolinks

Rails5でTurbolinksを使ったところ、Rails4の時からJavaScriptのイベント名などが
変更されていたので、 メモを残しておきます。

Turbolinks 5(Rails5)
https://github.com/turbolinks/turbolinks

Turbolinks classic(Rails4)
https://github.com/turbolinks/turbolinks-classic

Qiitaにまとまった記事もありましたので、そちらもご紹介
http://qiita.com/jkr_2255/items/fe1e69e043c94a5c0a79

Rubyの定数について

Rubyで定数を宣言する場合、大文字の英字と数字、アンダースコアから構成する識別子を使う。
ただ、これだけでは変数として扱えてしまうので、freezeを使うことで変更不可にする。
  • 配列やハッシュなどのコレクションオブジェクトをフリーズさせる

module Constants
  SERVER_IPS = [
    "192.168.1.10",
    "192.168.1.11",
    "192.168.1.12"
  ].map!(&:freeze).freeze
end
  • 定数が定義されているモジュールごとフリーズさせる

module Constants
  SERVER_IP = "192.168.1.1"
  SERVER_PORT = "8080"
end
Constants.freeze

  • Ruby2.1以降でループ内で文字列リテラルをフリーズさせる(ループ内で毎回文字列オブジェクトが生成されるのを防ぐ)

server_ips.any? { |ip| ip == "192.168.1.1".freeze }

2016年10月18日火曜日

岐阜県に行ってみた その2

地方を盛り上げるアプリを考えています。
本日は岐阜県を観光しました。

1. 笠松競馬場 


名鉄笠松駅から徒歩5分ほどの場所にあります。
本日は無料開放されていました。

馬はいませんでしたが、コース内を歩くことができるほか、セグウェイの乗車体験ができるようです。


2. 杉山邸


笠松競馬場から徒歩15分ほどの場所にあります。

杉山家の資料が展示されています。


3. 関ヶ原


岐阜駅からJR東海道本線で50分ほどでつきます。

高台からの長めが良いです。
関が原スタンプアプリを使いながら回りました。

2016年10月11日火曜日

ブロックチェーンの衝撃



ビットコインという言葉を聞いたことがあるでしょうか?
ご存知の方も多いかと思いますが、あるとき突然現れた仮想通貨ですね。
日本では、下記のニュースで大々的に問題になったかと思います。
マウントゴックス破綻 ビットコイン114億円消失

ビットコインに関して、下記のSlideShareにて分かりやすくまとめられておりますので、そちらをご参考ください。(外部資料です。)
ビットコインの基礎知識と世界的なトレンド

上記のまとめスライドでもありますが、ビットコインに対する一般の方のイメージは良くないです。(かくいう私もそうでした。)
ただ、有識者の方からは非常に注目を集めております。
その理由の1つとして、ビットコインの根幹技術である「ブロックチェーン」が挙げられております。

本日はそのブロックチェーンについてまとめられた本、「ブロックチェーンの衝撃」を題材にしたいと思います。

ブロックチェーンに関する分かりやすい説明として、下記を使用させていただきました。(外部資料ばかりで申し訳ありませんが笑)
5分でわかるブロックチェーンの基本的な仕組み

ブロックチェーンは金融業界での利用が期待されております。
ブロックチェーンを使う最大のメリットは、
劇的なコスト削減
になります。
今まで「人」や「時間」がかかっていた部分に適用させることで、「効率化」が図れます。
また、コスト削減に関わる項目として、以下が挙げられます。

  • 管理の必要がない(P2Pによる分散管理)
  • ゼロタイムダウン(ノードが1つでも生きていれば良い)
  • 高速処理(複数の処理をまとめて行う)
  • 履歴の改ざん不可

ビットコインによって初めて実用されたブロックチェーンですが、いくつかの不安点も浮き彫りになりました。
そういうこともあり、現在では世界中の各企業、団体で研究が行われているようです。

FinTechもかなりメジャーな単語となってきましたが、今後の鍵を握る技術としてチェックしておきたいと思います。


余談ですが、先日ニュースにもなりました、下記のこと。

こちらもブロックチェーンなどを使用すれば、うまくお金の出所などを管理することができるのかな、とやんわり考えておりました。

Amazonに限らず、多くの企業が通販を実施しており、消費生活も大きく変わったと思います。
既存の法律、条令がこの変化に対応できていないため、ぜひ検討していただきたいと願っております。

2016年10月10日月曜日

FinTechの衝撃


 今更ではありますが、今回のドトール会は「FinTech」についてです。
この本は、下記の6章に分かれて、説明されており、各章とも非常にわかりやすく、読みやすい内容となっておりました。
  1. なぜ今、フィンテックなのか?
  2. フィンテックサービスの実際
  3. フィンテックの核心技術「ブロックチェーン」
  4. 金融機関のフィンテック戦略
  5. モジュール化する金融サービス
  6. 日本におけるフィンテックの方向性
 FinTechとは「Financial technology」の略であり、今に始まった話ではなく、昔からあった言葉です。
 1章では主に米国でのテクノロジー(モバイル化、デジタル化)の進化、市場(消費者心理、市場環境)の変化などが重なり、今改めて金融分野でのIT活用に変化が起き、また加速していることが語られています。(この部分は6章でも触れられていますが、日本とは環境がことなる部分です。)
 2章では、これも主に米国でベンチャー起業などが始めたフィンテックサービスについて触れらています。そのサービスを「新サービス」「代替サービス」「補完サービス」に分類し、下記のサービスが説明されています。
その中で特に発想の転換でうまいなと感じたのは、トランスファーワイズのP2P海外送金サービスです。これは、簡単に言うと「海外に送金したい人と海外からお金を受け取りたい人を同一国内でマッチンングさせることで、国際送金に関わる各種手数料を削減する」というサービスです。
  1. マーケットプレイス・レンディング
  2. バランスシート・レンディング
  3. ロボ・アドバイザー
  4. モバイル決済・送金
  5. デジタルバング
 3章はブロックチェーンです。ブロックチェーンについては、別の日のドトール会で話していますので、その内容を改めてブログにて記載します。
 4章は金融機関が今後どのようにFinTechと向き合うかで、提携や買収などの話題が書かれています。
 5章はサービスのモジュール化です。銀行サービスをモジュール化して考えたり、API提供についての話題がありました。特に興味深い話としては、フランスのクレディ・アグリコルの事例です。銀行がAPIを提供し、そのAPIを利用したサービス・アプリをサードパーティに開発してもらい、銀行が開設したマーケットプレイスでそれらを提供するというものです。
 6章については、1章の米国の状況と国内の状況は異なること(規制、高齢化、消費者の金融知識、国民性)を説明し、どのような考えがあるかなどが説明されていました。

 最後にドトール会での議論のまとめです。
  • 低金利時代であり、FinTechサービスの考えの中心はやはり中間手数料を削減することが主である。
  • 方法は、銀行の手数料を発生させないことであったり、AI・機械学習などのテクノロジーを利用して、人の手をなるべくかけないことなどである。
  • モバイル化、デジタル化は進み、銀行窓口に行く必要はすくなってきているし、これからもそうなる。ただ、やはり現金は必要でATMの数は減って欲しくはない。(ATM手数料はそれなりにかかるので、自分の利用銀行で夜間手数料のかからない時間に利用したいので。)
  • 国内のFinTechサービスと米国のFinTechサービスを比べるとやはり米国などの方がはるかに進んでいる感じがあるが、どのサービスも日本国内ではそれほどニーズがないからなのかもしれない。
  • FinTechサービスへテクノロジーベンチャーが参入するのは、それなりのハードル(知識・ノウハウ・資金面などで)は高そうである。
  • 今後も継続的に注目していきたい題材である。

2016年10月9日日曜日

岐阜県に行ってみた その1

生まれて初めて岐阜県に来ました。
本日は仕事の関係で、岐阜駅周辺しか滞在しておりませんが、明日は少し足を伸ばしたいと思います。


岐阜県といえば、


 


君の名は(飛騨高山)聲の形(大垣)などで私の周りでは話題になっておりました。
私の中では「ひぐらしのなく頃に」も白川郷だったな、と思い出しました。

こちらの記事にもあるように、話題になるとファンの方々が「聖地巡礼」として、その土地に訪れてくれるようになります。
静岡、岐阜、埼玉…地方を舞台にしたアニメが急増している理由

地方のことを知ってもらうきっかけにはなると思いますが、リピーターを増やさなければ一過性のものになってしまうので、そこは地元の方、企業、団体の努力が必要かと思います。

夕食はラーメンをいただきましたが、岐阜県というと、「飛騨高山ラーメン」が有名なようです。
(昔ながらの中華そばのような感じで、広く親しまれているようです。)


本日はあまり見てまわれませんでしたが、明日は時間の許す限り見てまわりたいと思います。
本日は番外編でした!