Token Ringについて

Token RingというLANの規格が既に過去形になってしまいましたが、設計思想が面白く、採用しているRing Passingなどは他の技術でも活用されている基礎的な考え方なので、Token Ringを紹介するスライドを作成しました。

Read More

モック用便利サービス6選

Web 開発を行う際に、ダミーコンテンツを利用したいシーンがしばしば出てきます。データベース内のデータじゃなくてもいいものの、それなりのリアリティが求められるケースも多いです。今日は私が気に入ったモック用サービスを紹介したいと思います。

Mockaroo

1
2
3
4
5
insert into MOCK_DATA (id, first_name, last_name, email, gender) values (1, 'Therine', 'Cawsey', 'tcawsey0@issuu.com', 'Female');
insert into MOCK_DATA (id, first_name, last_name, email, gender) values (2, 'Melvin', 'Barthrup', 'mbarthrup1@mozilla.org', 'Male');
insert into MOCK_DATA (id, first_name, last_name, email, gender) values (3, 'Salim', 'Iacobassi', 'siacobassi2@uiuc.edu', 'Male');
insert into MOCK_DATA (id, first_name, last_name, email, gender) values (4, 'Gilemette', 'Pittam', 'gpittam3@rediff.com', 'Female');
insert into MOCK_DATA (id, first_name, last_name, email, gender) values (5, 'Gaylord', 'Elliker', 'gelliker4@opensource.org', 'Male');

氏名を始め、住所や電話番号、IP アドレス等々、いろんなダミーデータが作成できます。作成できたデータは CSV だけでなく、直接 JSON と SQL 等に書き出せる機能は非常にありがたいです。無料ユーザでしたら、1000 件までしか作れませんが、一時的にテストをする目的であれば十分だと思います。ただ、英語しか対応していなく、日本語のデータ作成ができないことは難点として挙げられます。

avataaars generator

avataaars generator

Read More

wevox values cardをコードネーム風にアレンジしたらウケが凄くよかった話

去年 2 月あたりにオフサイトを企画しまして、その時アイスブレイクのコンテンツとして wevox values card をコードネーム風にアレンジしたゲームをみんなに遊んで頂きました。かなり反響がよかったので年末年始の時間を使って当時実施したゲームのルールを整理し、チームビルディングのアイスブレイクコンテンツで悩んでいる方のヒントにできればと思います。

紹介

まず wevox values card とコードネームを軽く紹介したいと思います。
wevox values card はアトラエ社より出しているカードで、計 90 枚あって、それぞれのカードに価値観を表す一つの単語が書かれています。詳しい説明は公式サイトを参照していただければと思います。wevox values card のメリットとしてはコンセプト通り価値観の相互理解へ有益だと思います。書かれている単語は全て価値観なので、カード間の優劣が存在していなく否定することは起こり得ないはずです。一方で、既存ルールのゲーム性が弱く盛り上がらない恐れがあります。さらに、チームワークの要素があんまりないので、チームビルディングの目的が果たしにくい面もあります。
一方、コードネームはチェコのヴラーダ・フヴァチルによって 2015 年に考案され、2016 年のドイツ年間ゲーム大賞も受賞した人気ボードゲームです。ルールがシンプルの上、大人数で遊びやすいとの定評があります。Wikipedia のページがあるので、そちらをご参照頂ければわかりやすいと思います。

ルール

準備フェーズ

準備フェーズ

Read More

働きながらUoPeopleのMBAを取った話

こちらは 【増枠】社会人学生 Advent Calendar 2020 25 日目の記事です。メリークリスマス!

UoPeople

まず具体的なタイムラインを紹介しますと、2018 年春の Term 4 から授業を取り始め、今年の Term 3 にて最後の Capstone を修了し、3 月 31 日に卒業申請を出してから 2 ヶ月強を待ち、6 月 8 日に学位記が届き、晴れて Alum と名乗れるようになりました。

UoPeople とは

UoPeople は University of the People の略称でアメリカの非営利オンライン大学です。ググれば Wikipedia の記事や内容を紹介するブログが一杯出てくるので、説明は割愛させて頂きます。ただ、入学記が多いものの、卒業後の感想を述べる記事はあんまり見当たらなかったので、自分の振り返りを兼ねて軽く綴りたいと思います。

なぜ UoPeople の MBA を取ろうと考えたか

Read More

純粋なCSSで実現するアクセス解析

アクセス解析は昨今のウェブサービスを実装する上で欠かせない要件になってきています。アクセス解析を実現するのに、いろんなツールやソリューションを活用することができます。その中で最も利用されているのは恐らくGoogle Analyticsだと思います。Google Analyticsから提供してくれたスクリプトタグをHTMLファイルに埋め込むだけで来訪者のデバイス情報やブラウザ情報等を把握できてしまいます。一方で、Google Analyticsのようにスクリプトタグを埋めることはJavaScriptを使うことです。もしユーザがそのスクリプト(もしくはJavaScriptの実行自体)をブロックしたら、当然ながら情報の収集ができなくなります。そのような場合、アクセス解析が不可能になるでしょうか?簡易的ではありますが、実は純粋なCSSでもある程度代用できたりします。

メディアクエリを使ってデバイス情報を取得する

まずHTMLファイルに見えない要素を一つ置いておきます。

1
<p class="invisible-element"></p>

そしてurl関数を活用し、こういうCSSを書けばOKです。

1
2
3
4
5
6
7
8
9
10
11
@media screen and (orientation: portrait) {
.invisible-element {
background: url(https://example.org/analytics?orientation=portrait);
}
}

@media screen and (orientation: landscape) {
.invisible-element {
background: url(https://example.org/analytics?orientation=landscape);
}
}

Read More

ストーリーポイントを効率よく見積もる為に

ストーリーポイントはどのように見積もっていますか?PO がユーザーストーリーを紹介した上、各自が手元のプランニングポーカーから一枚を引き(もしかしたらアプリかもしれません)、「せーの」と唱えった後おもての数字を見せ合います。もし違いが存在していたら、互いに説明をし、最終的に同じ数字に揃えるようにします。とても定番的なやり方ですよね。しかし、そのやり方を貫くだけで、上手く行くとは限りません。例えば、A さんが 1 を出しているものの、B さんがその数字をはるかに上回った 5 とかを出しているケースが頻出していたら、回し方に問題が潜んでいるはずです。自分の経験上、以下の 3 点に関する問題が起因となった可能性が高いです。

バックログアイテムがうまく作成されていない

正確なストーリーポイントが出せていないというのはあくまで事象で、そもそも土台に当たるバックログアイテムが見積もりにくい状態になっていることはよくあります。バックログアイテムの完成度を判断するのによく使用されているのは「I.N.V.E.S.T」という基準です。要するに、取り扱いやすいアイテムは以下の基準を満たさなければいけません。

  • Independant (独立している)
  • Negotiable (交渉できる)
  • Valuable (価値がある)
  • Estimatable (見積れる)
  • Small (サイズが小さい)
  • Testable (検証できる)

ネット上「I.N.V.E.S.T」を説明する良い記事がたくさん存在している為、細かい説明は割愛しますが、ここで Independant と Estimatable に注目したいです。例えば、「上のアイテムを完成しないと、下のアイテムが見積もれないよ」という言い方はよく聞きます。それは恐らく独立性の不足を表している証拠です。上手く切ったユーザーストーリーなら、お互いに干渉しないし、不確実性の急増がしません。

また、Estimatable も大事です。ストーリーポイントを出す前、開発チームが見積もる対象のスコープと情報を理解していなければ、正しい見積もりが出せません。もしバックログアイテムが見積もりにくいと感じたら、リファインメントもしくはプランニング 1 のタイミングで開発チームと PO が擦り合わせを行うべきです。

Read More

JavaScript のプリミティブ型

JavaScript 言語において、データ型は恐らく基礎中の基礎だと言われてもおかしくありません。しかし、JavaScript をよく使用している方でも、データ型に関する知識が曖昧もしくは間違っているかもしれません。スコープが広がり過ぎないように、プリミティブ型に焦点を当て、JavaScript のプリミティブ型にまつわる落とし穴について解説してみたいと思います。

JavaScript の型

プリミティブ型

執筆時の最新パージョンである ECMAScript 2019(略称:ES2019/ES10)の中に、データ型は全部で 7 種類です。そのうちプリミティブ型は下記の 6 つです。

  • Number
  • String
  • Boolean
  • Null
  • Undefined
  • Symbol

C 言語のように、integer や double を区別することがなく、数字系なら Number 型一択です。ただ、Number 型に特殊な値が 3 つ存在します:+Infinity(無限大)、-Infinity(無限小)およびNaN(Not a number/数字ではない)です。
Java でしたら、String はオブジェクトになりますが、JavaScript に String というプリミティブ型が存在します。意味は同じく文字列を表現する型です。
Boolean、Null と Undefined の値は限られています。Boolean の値は true と false 二つのみです。Null の値はnullだけで、Undefined の値はundefinedのみです。
Symbol は ES2015(通称:ES6)にて新しく追加されたデータ型です。MDN を含む、Symbol は ES2016 で追加されたとの記述が散見されますが、それは間違い(タイポ?)です。
また、2019 年 6 月に開催された TC39 ミーティングにて、BigInt という新しいプリミティブ型はStage 4 へ進むことが許可されました。よって、ES2020 の言語仕様へ組まれることがほぼ決定になっています。BigIntは文字通り、今までの Number 型だと取り扱えない大きな数字を処理する為に導入される型です。一部の資料では ES2019 の新機能だと説明されていますが、残念ながらそれは間違いです。確かに一時期 ES2019 へ入れられるんじゃないかと見られていましたが、まだ仕様へ入っていません。ただ、ChromeFirefoxNodejs10.8+ではすでに実装されていますので、JavaScript のプリミティブ型としてカウントされていることもあります。

Read More