2017年7月23日日曜日

cliでGo Playground 的なこと

  • Go Playgroundは、ちょっとしたコードを試すのによい。
  • ただ、3rd Partyのライブラリが読み込めない。
  • 今あるGoの開発環境を使いたい(ライブラリ,Cli)
  • Go のreplもいくつかあるので、そちらが合う人はどうぞ。

と考えて、godoというgulp likeなタスクランナーを使ってcli上で、コードを試せるものを簡易的に作りました。

https://github.com/ynishi/simple-go-playground

単純に、goのスニペットファイルを作って、変更があったら自動でrunするだけのシンプルなものです。

vimで使う

vimで開発してる人は、vim内の別ウィンドウで、プロセス起動できるプラグインがあります。

https://github.com/vim-scripts/Conque-Shell

これを使うと、vim内でスニペットファイルを変更して実行結果が随時確認できるので、Playgroundにより近くなると思います。

よきGo lifeを!

2017年7月1日土曜日

JSプロジェクトのテンプレートを公開しました

  • フロントエンドを改めて調べた。
  • 各種ツールを組み合わせる必要があり、公開されてるテンプレートが非常に役に立った。
  • やりたいことが一通りできたので、テンプレートを公開します。
  • リポジトリ https://github.com/ynishi/riot-firebase-es6

概要

やりたかったこと

  • ES6でできるだけ記述
  • テスト可能にする
  • npmパッケージを使用する
  • 学習コストの低い軽量ライブラリ/サービスを使う

使用フレームワークと対応仕様

  • Riot(tag & route) => ES6
  • Firebase => ES6
  • Karma => ES6
  • Rollupで上記ES6 => ES5 => test & build & deploy => ブラウザで閲覧
  • npm => npm-scriptで簡易ビルドコマンド

参考になった記事

  • npm とか bower とか一体何なんだよ!Javascript 界隈の文脈を理解しよう http://qiita.com/megane42/items/2ab6ffd866c3f2fda066
  • Riot+Firebase APIをたたくhttp://qiita.com/tomomichi/items/43da4d35007e69d0f484
  • Riot+Webpack https://github.com/esnunes/riotjs-loader
  • Riot+Rollup http://qiita.com/cognitom/items/c20c22614560627062cb
  • Riot+Rollup Example http://qiita.com/cognitom/items/c20c22614560627062cb
  • Firebaseにデプロイする http://qiita.com/kohashi/items/43ea22f61ade45972881
  • SAMモデル(SPA/Reactをモデル化) https://www.infoq.com/jp/articles/no-more-mvc-frameworks

よきES6ライフを!

2017年5月3日水曜日

プログラミング入門講座 で最新のプログラミング学習方法を読んでみる

  • 「プログラミングの基本を最少の時間で確実に習得できる学び方とは?」とのことで、最近の学習方法について気になったので読んでみました。

対象読者

◆◆本書の対象読者◆◆
・ できるだけ効率よく、プログラミングの基本を習得したい人
・ プログラミングに興味はあるが、そもそもの「学び方」がよくわからない人
・ 社会人の一般教養として「プログラミングの基本」を身につけておきたい人
・ 子どものプログラミング教育に興味のある人

とのことで、内容からもブルーバックスや理系の新書も読まないレベルの方々が対象と感じました。

プログラミングをやりたい=>「Java入門/計算機科学入門/コンピューターのしくみ/アルゴリズム入門をやらないと」という方々にはあまり有益と感じられる情報はないかもしれません。

気になった個所

その前提ではありますが、目に留まった個所を紹介します。

  1. オンライン講座の紹介が豊富
    • この本では、オンライン講座から入門することを推奨していて、様々なサービスが紹介されています。
    • 動作環境ありのオンライン講座は経験者でもさくっと試してみるにはいいです。
    • 経験者でも、新しい分野をCourseraなどから入門する方法はありですね。
  2. 簡単なことから難しいことへ
    • オンライン講座でとりあえず動かしてみて、基本的な用語も身についたところで、質問をしてみる。
    • 本でスムーズに独学できるレベルになってから独学する。
  3. 企画と開発を分けて考える
    • プライベート・入門者だからこそ、企画と開発を分けて考えることが重要。
    • プライベートでプログラミングをしようとして挫折するパターンとして、「とりあえず○○入門を買ってくる」=> 「写経する」=> 「終わったけどどうしよう?」となる。
    • これではプログラミングの醍醐味である、自分の好きなアプリを作って、それが実際に動くというところが体験できないし、続かない。

プログラミング「言語」の入門を期待すると全く違う内容ですが、プライベートでプログラミングを体験してみることの概要がつかめるので、「プライベートでプログラミングやってみたいんだけど」と相談された時に、上記の条件にあっている人に教えてあげると役立つと思います。

よいプログラミング入門を!

2017年4月30日日曜日

初めてのRuby 1章について

  • 「言語のしくみ」を読んで、MatzさんとRubyに改めて興味を持ったので、Rubyエンジニアの方に聞いたら「Rubyは作りたいものを作りやすい」とのことでした。
  • 「初めてのRuby」を以前買っていたので読み直しました。
  • 他の言語経験者向けの入門書で、他の言語や一般的な言語の作りと比較してRubyの基本を説明しています。リファレンスを読みながら進められるところまで。
  • 「1章 ようこそ、Rubyのある生活へ」で気になったところをまとめました。
  • コラムでは、「文字列の変更可能性」や「型変換」など、簡潔に他言語との比較で、はまりそうなポイントを説明していて気に入ってます。
  • バージョンが1.8, 1.9対応だったのが難ですが、それ以外はおすすめです。

1章 ようこそ、Rubyのある生活へ

  • Rubyの主要概念が書いてある。
  • バージョンナンバーの振り方や、開発環境/実行環境など一通り書いてある。
  • Rubyの文脈を理解してRubyらしいコードを書くとよい。

Rubyの特徴的な部分で気になったところ

  • 動く擬似コード
    • ほぼ擬似コードのまま動く
    • 処理の本質的な記述に集中できる。
  • 高階関数
    • コードブロックというオブジェクトをやりとりすることができる。無名関数のように使える。
    • コードブロックを受け取るメソッド(=高階関数的に動く) => ブロック付きメソッド
    • コードブロックはクロージャとして機能するが、メソッドはそうではない。
  • DSL
    • 言語内DSL
    • カスタム言語を追加する => それを使ってソフトを作る。
    • このスタイルがRubyでは一般的になっている。
  • 動的
    • 実行時にクラス定義を処理する。
    • メリットはクラス定義まで通常の制御で管理できる。
    • デメリットはクラス名がずれたりしても、実行時エラーにしかならない。
    • どちらにしろ単体テストかくのだから、そのあたりは問題ないという考え方も。
  • メタプログラミング
    • DSL/動的な機能を使って、かなりの部分をパラメータ化できる。
    • それをしようとしたときに、特別な宣言等をする必要なく、シームレスに言語を拡張できる。
    • クラス定義が実行時に行われるため。

機能探索順

  1. 専用の文法
  2. 組み込み関数
  3. 組み込みクラス
  4. 標準ライブラリ
  5. 外部ライブラリ
  6. 自作

構成

  • 言語本体
  • 組み込みライブラリ
    • 組み込み定数
    • 組み込み変数
    • 組み込み関数
    • 組み込みクラス
  • 標準添付ライブラリ

外部ライブラリ

  • 標準添付ライブラリ
    • 追加インストール不要。
    • ユーザプログラムからインクルード必要。
  • 外部ライブラリ
    • 基本はRubyで書かれている
    • 拡張ライブラリ(C言語等で書かれたネイティブライブラリ)

実行環境

  • 対話

    irb
  • スクリプト実行

    ruby hello.rb
  • デバッガ

    ruby -rdebug hello.rb
  • リファレンス
    • コマンドライン

      ri String
    • irb

      irb help

あると便利

2017年4月25日火曜日

リーン・スタートアップを改めて

  • 改めてリーンスタートアップを読みました。
  • 起業やベンチャーにいる方以外のビジネスマンにもぜひおすすめしたい本です。
  • 最初期の検証をどうやって行ったかの事例も豊富でどのような行動が検証といえるかのイメージができます。
  • 気になったポイントをまとめました。

スタートアップの事業運営を検証による学びのプロセスととらえる

  • スタートアップの最大の課題は、事業が成立する(顧客がいる)ことが「仮説」に過ぎないこと。
  • 「仮説」といえば、大層に聞こえるが、程度の差はあれ思い込みにすぎない。
  • この「仮説」を最も低コストかつ、最も確実に検証し、そのフィードバックを得ること、また、その一連のプロセスを最短にすることを目標とする。
  • 「仮説」の元とした事実が間違っている場合など、考察によって見つけることは現実的にかなりの困難を伴う。
  • そのため、実験(検証したいことにあった最小のビジネス活動)を行って定量・定性的にフィードバックを集める。
  • スタートアップにとっては、価値仮説と成長仮説が重要。

「とにかくやってみよう」では、すぐに手詰まりになる

  • 計画と遂行を基礎とする一般的なプロジェクトマネジメント(総括マネジメントと呼んでいる)は、新製品を開発するのには向かないが、無計画も同様に成果を出しにくい。
  • 行動力は重要だが、それだけでは失敗する。
  • 体系的で適切な仮説と検証をすることは難しいが、それをやらずに、全ての仮説に基づいて商品を作って試していたら、それをうまくやる競合に必ず負ける。
  • 先にものを作ってしまうと、コストがかかりすぎる。
  • 検証という視点がないと、「製品」を作ろうとしてしまう。

MVPや、スモールスタートなどとリーンスタートアップ

  • MVPなど、聞いたことがない人の方が少ないかもしれませんが、リーンスタートアップでは、明確に定義しています。
  • MVPは最低限使える機能を持った製品ではなく、仮説の検証が可能な最小の製品。
  • リーンスタートアップを「小さく始める手法」と紹介されることがあるが、解決しようとする課題によっては、「仮説」の検証にかなりの品質が必要となる場合がある。
  • デザイン思考やA/Bテストなどの手法は以前からあった。リーンスタートアップはこれらの手法を、製品開発に活用するのが違い。
2017年4月24日月曜日

IoTを調べた情報ソース

  • IoTについてキャッチアップしたときの情報源です(2017年4月)。

入門

  • 技術・ビジネス両面を解説している。
  • 最初に概要をつかむにはよい。

図解でわかるIoTビジネス いちばん最初に読む本

  • IoTの活用事例が載っていて、イメージがつかみやすい。
  • 技術解説を含めて初心者向けでわかりやすい。
  • https://www.amazon.co.jp/gp/product/4897951976/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1

IoTとは何か 技術革新から社会革新へ (角川新書)

  • TRONの坂村氏によるIoT入門本。
  • 早期から研究してきた立場から書いている。
  • https://www.amazon.co.jp/IoT%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B-%E6%8A%80%E8%A1%93%E9%9D%A9%E6%96%B0%E3%81%8B%E3%82%89%E7%A4%BE%E4%BC%9A%E9%9D%A9%E6%96%B0%E3%81%B8-%E8%A7%92%E5%B7%9D%E6%96%B0%E6%9B%B8-%E5%9D%82%E6%9D%91-%E5%81%A5/dp/4040820584/ref=asap_bc?ie=UTF8

インターネット白書2017 IoTが生み出す新たなリアル市場

  • 定番だが、一通り押さえられる。
  • IoTの他にもAI、ブロックチェーンなどこの1年話題になった技術に触れている。
  • https://www.amazon.co.jp/gp/product/B01MYDIDWW/ref=oh_aui_d_detailpage_o04_?ie=UTF8&psc=1

技術入門

IoTエンジニア養成読本

  • IoTを使ったサービスを作る際に必要な技術を一通り押さえている。
  • ハンズオンがある。
  • https://www.amazon.co.jp/gp/product/4774188654/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1

雑誌

  • トランジスタ技術
  • Interface
  • ラズパイマガジン

ネットニュース

  • IoTNews
  • https://iotnews.jp/
  • Make:
  • http://makezine.jp/
  • カメリオ IoTタグ
  • https://lp.kamel.io/

IoTプラットフォーム

  • サービス名 - プロバイダー
  • 大手はたいていサービスを提供している
    • AWSIoT - Amazon
    • Azure - Microsoft
    • Watson IoT Platform - IBM
  • SORACOM - SORACOM
  • Kii - Kii
  • さくらのIoT Platform - さくらインターネット
  • Predix - GE
  • Lumada - 日立
  • ABEJA Platform Open - ABEJA

勉強会

  • IoT縛りの勉強会
  • https://iotlt.connpass.com/

事例

  • クラウドファンディング(特に海外)はIoTプロダクトの宝庫
  • https://www.kickstarter.com/
2017年3月5日日曜日

技術ブログを書いてみて

2016年4月にこのブログを始めて、早1年がたちました。 その経験を踏まえて、技術ブログをすることの価値を考えました。

結論をいうと

  • ブログ(にアウトプットすること)はエンジニアとしてメリットが多い。
  • ただ、いざ書こうとすると、エンジニアにとってハードルが高いアドバイスが多い。
  • 「技術ブログ」に限定することで、ハードルが下がる。

キャリアの初期からアウトプットをすることは、 エンジニアにとって、非常に効果的で有用なツールになると 考えてます。

なので、4月から何か新しいことをという方や、技術ブログ始めてみようかな という方はぜひはじめてみてください。

ただ、その際に、ブログの書き方とかを検索すると、一般的なブログの 書き方が多く、エンジニアにとっては、ハードルが高い項目もあります。

例えば、プロフィールを充実させろ、日常的な話題を入れろ、誰にでも わかるようにしろ、マーケティングを考えてSNSで積極的に宣伝しろなどです。

技術ブログの場合、そこに力を入れなくても、技術記事を書きためて、 アウトプットすることをキャリアの初期からすることの方が、エンジニア自身が 得られるメリットは十分にあると思います。

もちろん、マーケティング的な要素を強化すれば、エンジニアとしての働き方は 選択肢が増えると思うので、そこを重視したい方は、ぜひやってみてください。

また、ブログマーケティング的な話は、すでに非常にたくさんの情報が出てるので 検索してみてください。

技術ブログの位置づけ

この記事での技術ブログを定義します。

見てもらう人は、

  • 技術ワードで検索して来る人
  • 職場のエンジニア
  • 勉強会など職場以外のエンジニア

と、ネットに記事内容は公開するのに加えて、 身内の人々が見ることも想定した半SNS的な位置づけを想定してます。

身内の人々が見る前提で始めるとフィードバックがもらえたり、 一定の品質を保つモチベーションになり、職場以外の場所や 転職活動でも、気兼ねなくポートフォリオの一部として公開 できるので、おすすめです。

公開する要素について

ブログを始めようと思って調べると、ブログマーケティング的な話が出てきて「自分の情報を公開してファンを作ろう」的な話が出てくると思います。

その辺の話がネックになって、技術ブログを持たないのはもったいないです。

リアルでつながりがある人には、直接URLを伝えることを想定しているので、プロフィールなどは充実しなくてもメリットは十分あります。

また、技術以外の記事や、情報について書かなくても、同様にメリットは十分あります。

ただ、その場合は、ネット上での反応は薄くなります。

技術ブログのメリット

上記を対象者として技術ブログを書くメリットです。

  • 学習効果が高くなる。
    • 理解度が高くなる
    • フィードバックがもらえる
  • 情報感度が高くなる。
    • 意識的にネタを集めるようになる
    • ネタから一歩進めて形にするのが習慣になる
  • 備忘録になる。
    • ネットは最強のバックアップストレージ
  • 名刺代わりになる。
    • 履歴書、職務経歴書だけでは伝わらない技術をアピールできる
  • Web技術の勉強になる。
    • 特に自分でホスティングしたりする場合。

技術ブログのデメリット

「ブログで有名人になろう」というスタンスで臨むと相応のデメリットも生じると思いますが、自身の技術を高めることをメインに考えるとそれほど大きなデメリットは生じないと思います。

  • 時間がかかる
    • コマンドを並べただけの記事ならば、1時間で書ける。
    • ある程度価値がありそうな記事は数時間かかる。
  • PVが少ない
    • マーケティングに力を入れないと、PVは伸びない。
    • PVを伸ばしたいなどは、一般のブログと同じように施策してください。
  • NG内容がある
    • リアルとのつながりを前提としているので、ネットならではの自由さは制限されます。

記事とテーマについて

技術ブログの記事のスタイルをカテゴリ分けしてみました。 比較検証記事は、勉強になりますが時間もかかります。

ブログを継続するためには、手順やTIPS記事などと 織り交ぜていくといいと思います。

テーマですが、最初は特定の技術分野に絞り過ぎない方がいいと思います。

以前、いくつか作ってみたのですが、個人ブログでやるときは、モチベーションが重要な要素になるので、ある程度幅を持たせた方が継続しやすいと思います。

  • 比較
    • あるテーマに沿って類似の技術やアプリ等を比較する。
    • 比較軸と論拠を明示すると記事の質が上がります。
    • 使用ケースを想定して、それぞれ最適なものを選んでみる。
    • 技術選定の経験が積める。
  • 検証
    • 1つの技術やアプリ等について、仕様や性能調査をする。
    • 調査軸を明確にして、それを実地調査する。
    • 前提条件や、実施状況など基礎的な要素を明示する。
    • パフォーマンス調査が学べる。
  • TIPS
    • ある技術やアプリ等について、細かい仕様や使いこなし。
    • 一般的なコマンドなどについても、以外と記事がないことがある。
    • 検索してもよい解説がでてこなくてmanページを読んだりして解決したことはそのまま記事になる。
  • 手順
    • インストール方法や、設定方法、一般的な使い方など。
    • 記事があっても、新しいバージョンに更新されてない場合におすすめ。
    • historyコマンドが重宝する。
  • 技術解説
    • 技術やモデルなどについて、解説する。
    • モデルの理解の仕方など。
    • 入門者向けに。
    • HaskellのMonad解説ページのようなイメージ。
  • 書評
    • 技術書を中心とした書評です。

記事を書くときの注意点

可能な限り正しい記事を書きましょう。 不明、未検証箇所は、そのまま書いておきましょう。

以下のメリットがあります。

  • ちゃんと調べることで自分の勉強になる。
  • 見た人も確実な情報を得られる。

また、記事を読む人のレベルを想定しましょう。 全ての記事を初心者でも問題なく読めるレベルにする必要はないと思います。 読む人のレベルを、できるだけ具体的な人物を想定して書くとまとまった記事になると思います。

実際に書いてみる

現実的にエンジニアにとってメリットのある技術ブログについて、まとめてみましたが、いかがでしたでしょうか?

技術ブログの始め方でおすすめは、SOFT SKILLSです。 ブログを持つことをかなり推奨していて、マーケティング的なところもカバーしています。

実際にスタートするときは、以下の2つのやり方があると思いますが、初めてブログを書く場合は、とにかく書いてみることをおすすめします。

1. とにかく書いてみる

初めてブログを書く方は、とにかくある程度の記事を実際に書いてみることをおすすめします。

  • まずHello world動かしてみるイメージです。
  • 書いて見ないと、自分でしっくりくる記事や、面白いと思える記事はよくわからない。
  • 最初はほとんど反応がないので、いろいろと手を尽くしてもいいのか悪いのか判断しにくい。

2. 既存のブログを参考にする

何らかのブログを書いていたり、他のブログを読むのが好きな方におすすめです。

  • 気になった技術ブログをいくつかフォロー => 書いているテーマや、スタンス、記事の言葉遣いなどを観察 => まねして書く => 自分のスタイルで書く。
  • 技術を身につけるときと同じです。

継続するときに気をつけること

  • アクセスがなくても気にしない。
  • 書き始めてからプラットフォームを移動するのは大変。
    • WordPress触るのが苦でない人は、自分でWordPressホスティングするのがいい。
    • WordPress触るのがいやな方は、ブログサービスを使うのがいい。
    • ブログを書くのとWordPressなどを勉強するのは分けた方がいい。
  • 移行せずにブログのテーマなどを変えるのはできる。
  • 数ヶ月更新しないとフェードアウトしてしまうので、月に1回以上を最低ラインに目指すといいと思います。

よき技術ブログLifeを!