2015/04/29

【超訳】CodingDojo:連想配列による文字列置換(KataDictionaryReplacer)

photo by François Philipp

CodingDojoの第2弾ということで、KataDictionaryReplacer(連想配列による文字列置換)をやってみた。



KataDictionaryReplacer


このカタは、簡単な文字列置換だ。
Corey Hainesのプレゼン(LT)を聞いて思いついた。

仕様


引数が文字列と連想配列のメソッドをつくる。
そして、$で囲まれているキーと、それに対応する連想配列の値を置換する。

2015/04/28

【atom-typescript】ファイルパス指定でnot foundエラーになったときの対処法

VisualStudioを卒業して、AtomでTypeScriptを開発するために「atom-typescript」というPackageを導入したときの話。

TypeScriptで型定義やファイルを参照するときに「<reference path=”./foo/bar.d.ts”>」や「import hoge = require(“./foo/bar”)」のように書く。
このときに、実際に指定したパスにファイルが存在しているにも関わらず、「File './foo/bar.d.ts' not found.」というエラーが発生する場合がある。


そのときの対処方法をまとめる。

2015/04/27

【超訳】CodingDojo:アラビア数字をローマ数字に変換(KataRomanNumerals)

photo by Paul L Dineen

CodingDojoの第3弾ということで、KataRomanNumerals(アラビア数字をローマ数字に変換する)をやってみた。

KataRomanNumerals


ローマ人は頭いいやつばかりだ。だから何百年もヨーロッパを支配していた。
コンクリートやまっすぐな道、ビキニを発明したんだけど、発見できなかったものもあった。

それが数字のゼロ。

2015/04/26

【JavaScript】配列をゼロで初期化する方法

配列を宣言するとき、オブジェクトリテラル(var arr = [];)とかArrayクラスで初期化(var arr = new Array();)などの方法がある。
(一般的にオブジェクトリテラルを使うのが推奨されてるが)

そして、初期化直後の配列は何も入っていない空の状態で生成される。

コーディングする上で、どうしてもすべての要素をゼロで初期化したかったのだが、なんだかうまくいかない。
ということで、配列をゼロで初期化する方法を調べてみた。

2015/04/24

Atomのフォルダツリービューを左側(右側)に表示する方法

GitHub製のエディタ Atom に標準で搭載されているフォルダツリー(Tree View)が、右側に表示されるのがたまらなく気持ち悪かった。
他所のAtomのフォルダツリーは左側に表示されてるのに、なぜ自分のAtomだけ?と思いググったが表示位置を変える方法は見つからず。

ということで、いろいろAtomを弄っていたらやっと「フォルダツリーを左側に表示する方法」を見つけた!

2015/04/22

【超訳】CodingDojo:ボウリングのスコア計算

前回のCode Kataについて紹介した。

今回は、Coding DojoのKataCatalogueから「KataBowling:ボウリングのスコア計算」をやってみた。

これまたすべて英語なので、練習がてら翻訳した内容をまとめていく。
※ 英語は苦手なので、最低限意味がわかる程度に超訳した。

2015/04/21

【超訳】CodeKata2:Karate Chop(ソースコード付)

photo by sean dreilinger

「TypeScript実践プログラミング」を読んで、Code Kata(http://codekata.com/)という存在を知り、早速試してみた。

ちなみにCode KataのKataは、空手や柔道の「形(Kata)」からきている。
決められた形を何度も練習することで、プログラミングの基本を覚える。そして、実践で使えるようにするのがCode Kataの目的。



見ての通り、すべて英語。しかも日本語訳サイトが少ない。

ということで、CodeKataの練習がてら翻訳した内容をまとめていく。
※ 英語は苦手なので、最低限意味が分かる程度に超訳した。


今回は、Kata02の「Karate Chop(空手チョップ)」について書いていく。

2015/04/20

TypeScript+Jasmineでテスト駆動開発(ビヘイビア駆動開発)をする

膨大なユニットテストを手動でやりたくないし、リグレッションテスト(回帰テスト)も面倒で、テストの自動化をしたい。

ということで、JavaScriptのテストフレームワーク「Jasmine」をつかったテスト駆動開発(ビヘイビア駆動開発)をやってみた。


開発環境と各種バージョンは、以下の通り。
  • Visual Studio Community 2013
  • TypeScript
  • Jasmine 2.2(現時点での最新版)

追記:2015/06/07
bowerやtsdを使うともっと簡単にJasmineとその型定義ファイルをダウンロードすることができる。
詳しくは、以下のエントリで。

2015/04/10

getElementsByTagNameとquerySelectorAllの違い

photo by Tim Johnson

querySelectorAllという存在を知り、さっそくToDoアプリでgetElementsByTagNameを使っているところを書き換えようとしたとき、問題が発生した。

それは、以下の違いによるものだった。
  • getElementsByTagName : 動的なNodeList
  • querySelectorAll : 静的なNodeList


追記:2015/04/25 16:40
コメントで指摘していただいた箇所について追記する。ご指摘ありがとうございました!
※ コメント通知で気づいた時にはすでに削除?されていたっぽいですが

getElementByTagName について

ゆくゆくは、NodeListではなくHTMLCollection が返ってくるようになる。
どちらもcollectionに変わりないが、メソッドが少し違うので注意。



具体例をあげて違いをまとめていく。
ついでにquerySelectorAllの代替案として、ID指定のgetElementsByTagNameについても載せておく。

2015/04/08

素のJavaScript(TypeScript)でMVCモデルのToDoアプリをつくってみた

photo by Sébastien Barré

AngularJSやBackbone、KnockoutJSといったMV*フレームワークや、ReactといったVに特化したフレームワーク、jQueryといったライブラリがいっぱいある。
AngularJSを勉強し始めたは良いが、2.0になると全く別モノになってしまうなど、どれを勉強すればよいかわからなくなってしまった。

ということで、まずはフレームワークやライブラリを使わない「素のJavaScript」でMVCモデルを勉強してみようと思った。

つくったToDoアプリの概要は、前回の「TypeScript + AngularJSでToDoアプリをつくってみた」と同じだ。

※ 以降TypeScriptで記載しているが、JavaScriptのソースが見たい方はGitHubにコンパイル後のソースを置いてあるので、そちらを参照ください。

2015/04/04

TypeScript+AngularJSでToDoアプリをつくってみた

Webアプリを作ってるときに、素のJavaScriptではどうもソースコードが汚くなってしまった。
「ソースコードには人格がでる」と思っているので、キレイに、かつ簡単に書きたい。

ということでAngularJSというMVC(MVW)フレームワークを使ってみた。


参考にしたTodoアプリは、ドットインストールの「AngularJSで作るToDoアプリ」を基にした。
詳細な説明については、ドットインストールを参照してほしい。

2015/04/03

【C#】文字列の先頭や末尾、部分一致をチェックする

photo by Tim Reckmann

よく「先頭が○だったらA処理、×だったらB処理」みたいな条件分岐がある。
そんなときに便利なのが、String.StartsWithString.EndsWith

var value = "ABC123";

if (value.StartsWith("A"))
{
  Console.WriteLine("先頭がA");
}

if (value.EndsWith("3"))
{
  Console.WriteLine("末尾が3");
}

単純に「先頭がこの文字列なら」と指定できる場合は、上記の方法で対処可能だ。

ただ、先頭が英字のみとか、末尾が数値のみというようなチェックの場合は、StartsWith、EndsWithが使えない。

2015/04/02

【TypeScript】thisの使い方にハマった!thisを保持する3つの方法

photo by Brendio

C#erが、それほど勉強せずにTypeScriptに足を踏み入れたせいで、thisの使い方にハマってしまった。

JavaScriptはちょっと勉強していたので、「thisは今の親オブジェクトを参照する」ということだけは知っていた。しかし、それだけでは認識が甘かったようだ。


2015/04/01

5年間務めたSIerを辞めようと思った理由と決断したキッカケ

2015年3月31日をもって、5年間務めたSIerを退職した。
なぜ退職しようと思ったのか、退職を決断したキッカケはなにかについて書く。

もちろん「ポジティブな退職理由」はあるが、ここでは「ネガティブな退職理由」に限定して書き綴っていく。