プログラミングを英語で教える会に参加してみた

こういうことをボヤ〜っと考えていて、知り合いの外国人に聞いたりしていたんだけどなかなか見つかっていなかった。
んで、meetup.comをフラフラと閲覧していたらこんなコミュを発見。

自分のために作られたんじゃないかというぐらいにドンピシャ。
という訳で脊髄反射で参加ボタンを押してさっそく行ってみた。
参加料は無料。

会場はカフェのように綺麗なSHIFTBRAINさんのオフィス。
10人弱が集まった後、ホストの人が英語話者に何が学びたいかをヒヤリングした。
ジャックというイギリス人がiOSを学びたいというので、自分が教えることに。

彼はUXデザイナーで、画面をSketchで描けるようだ。
プログラミング知識はHTMLが少し書ける程度。
なので、まずはXcodeのStoryboardでボタンなどのコントロールをいろいろ配置する所から教えてみた。
次に、ボタンをSwiftでプログラマティックに配置する方法を教えた。
自分も最近はSwiftを全然書いていなくて忘れていたけど、適宜復習しつつ教えた。
最終的にはTable Viewでダイナミックにデータを表示できるところまで行けた。

2時間という短い時間だったけど、ジャックもiOSプログラミングの雰囲気を掴めたようだ。
自分の英語はカタコトだったけど、意外と通じるもんだなぁと思った。
自分のアプリのユーザサポートを外国人相手にやっていた経験がかなり助けになったと思う。

でもヒヤリングが絶望的な事を再認識した。
単語同士の音がつながると全く聞き取れない。
普段から耳を慣らす対策が必要だ。

あとジャックが彼のiPhoneのことを「My friend」と呼んでて面白かった。
“Where is my friend?” みたいな。
最初何のことかさっぱり分からなかった。笑

楽しいmeet upイベントなので定期的に参加したいな!

ES6でクラス名を動的に変更する方法

ES7のdecoratorsでクラスを生成するとクラス名がそのデコレータのものになってしまいます。
例えば:

import React from 'react'

function addAwesomeProperty (Spec, Component = Spec) {
  class AwesomeClass extends React.Component {
    render () {
      return React.createElement(
        Component,
        Object.assign({ awesome: 'yes!' }, this.props)
      )
    }
  }
  return AwesomeClass
}

@addAwesomeProperty
class OriginalClass extends React.Component {
  ...
}

こうすると生成後のクラスの名前は AwesomeClass になってしまいます。これは不便。
だからといってクラス名を以下のように変えようとしても出来ません:

AwesomeClass.name = 'OriginalClass'

なぜなら name プロパティは writable ではないからです:

Object.getOwnPropertyDescriptor(AwesomeClass, 'name')
    { value: 'func',
      writable: false,
      enumerable: false,
      configurable: true }

しかしES6の仕様によると以下の方法で変更できるとの記述を見つけました:

> Object.defineProperty(func, 'name', {value: 'foo', configurable: true});
> func.name
  'foo'

という事は、前述の例を以下のように修正すればクラス名に影響を与えずに済みます:

import React from 'react'

function addAwesomeProperty (Spec, Component = Spec) {
  class AwesomeClass extends React.Component {
    render () {
      return React.createElement(
        Component,
        Object.assign({ awesome: 'yes!' }, this.props)
      )
    }
  }
  // 追加
  Object.defineProperty(AwesomeClass, 'name', { value: Component.name, configurable: true })

  return AwesomeClass
}

まぁ、これが設計として正しいのかは謎です。

蛇足

動的なクラス名を定義する方法として、

const classes = { [ dynamicClassName ]: class { ... } }
classes[dynamicClassName].name  // => dynamicClassName

みたいな方法もあるみたいだけど、自分の環境では常に _class となって上手く行かなかった。
自分のbabelの設定が悪いのかもしれないけど。

Dockerで子プロセスからのstdoutをsupervisordにリダイレクトする方法

Dockerではsupervisordを使ってプロセス管理をする事が多いですね。
そのようなコンテナでは、以下のコマンドでsupervisordが吐いたログを確認できます:

docker logs -f <container_id>

さらに、子プロセスが吐いたstdout/stderrを同様に確認したくなることがあります。
例えばmysqlapache2のログなどです。
いちいちコンテナにログインしてtail -fなんてやってられませんよね。
supervisord.confを以下のように設定すれば、これら子プロセスのログをsupervisordに転送できます:

続きを読む Dockerで子プロセスからのstdoutをsupervisordにリダイレクトする方法

ヤフーのコワーキングスペース「LODGE」を利用してみた

僕は元ヤフーなんですけど、当時は移転前の東京ミッドタウンに通っていました。
現在は赤坂見附に位置する東京ガーデンテラスにあります。

ヤフー同期の友人と飯を食う約束をしていて、ついでにLODGEを使ってみました。
続きを読む ヤフーのコワーキングスペース「LODGE」を利用してみた

デッサン会@バレエスタジオ

バレリーナを描けるなんて滅多にない機会だったので楽しかった。
前回に引き続きiPad Pro + Apple Pencilで参加するのは二回目。
男女二人がモデルで、1ポーズ5分。
制限時間が厳しくて、ほとんど満足に描けなかったのがくやしい。
模様を描くのが好きなので、つい衣装を丁寧に描きたくなった。
ムダのない筋肉が美しかった。その流線形をもっと綺麗に描けるようになりたい。

続きを読む デッサン会@バレエスタジオ

中国製とは思えない完璧な寸法のiPhoneケースを買った

TPU素材のケースはすぐ日焼けする

一年ほど使っていたTPU素材の透明なiPhoneケースが、そろそろ換えどきだなと思いまして。
というのも、最初は透明でいい感じだったんですけど、日焼けしてだんだんと色がこんな感じに・・

黄みがかっていて、着けていて不清潔感がありますね。
まぁ安かったし妥当です。でも彼はiPhoneを何度も落下から守ってくれた優秀な子です。ありがとう!

新しいケースを買った

iPhoneを生で持つと手が滑って怖いのでケースは何か付けたい。
下記はデザイン性もよくて評価も高めだったので買ってみました。

早速付けて一日使ってみました。こちらがその写真。

黒い部分はマット感のある素材です。
金色の縁が高級感を醸し出していていい感じです。
上下が着脱式になっていて、ハメるとカチッとなって遊びが一切無くなります。

着けてみて思ったのは、寸法の完璧さです。
たいていのケースはボタンのサイズとかカメラの部分の穴が余分に大きかったりするのですが、これはそんな遊びもズレもなし!

更に驚いたのが、Lightningケーブルの穴。
Appleストアで購入したbelkinのケーブルとのサイズが、まるで示し合わせたかのようにピッタリ!
もはや気持ちよさを感じますね。

表から見るとこんな感じです。スッキリしてますね。

褒めちぎった後にいうのもなんですが、気になる点もあります。
それは、指紋が結構付くということです。
マットな素材の背面が、わりと目立つレベルで白くなる。。
あと、金色のフレームの境目には0.2ミリほどの溝があって、そこに埃が溜まりそうな予感がします。
その辺は経年変化を見てから判断ですね。
まぁ一年持ってくれたら十分です。

色もバリエーションがあるので選ぶのも楽しい商品ですね。

既存SNSと高い親和性を持った、行きたいお店管理アプリが欲しい

最近は雑誌やブログだけでなく、facebookとかinstagramやtwitterで紹介されていたお店に惹かれることが多い。
食べログで適当に点数の高いお店に行くのもいいけど、なんだか味気ない。たいてい混んでるし。
「オシャレな誰々さんが行ってた」みたいな背景情報があれば点数なんて気にしないし、「僕も行きました!」みたいなコミュニケーションになって楽しい。

単純にお店をリストに追加するだけのアプリなら沢山ある。そういうのは要らない。
「行きたい」リストにせっかく入れてもしばらく経てば「なんでこれ登録したんだっけ?」ってなる。
だから関連するソーシャルの情報とかを紐付けた状態でメモしたい。
例えばinstagramで美味しそうなコーヒーの写真があったら、その投稿をメモしたい。
twitterでもfacebookでも、サービスに関わらず同じことがしたい。
で、ちゃんと場所も紐付いていて、地図から探せたりする。
一覧画面では、お店に加えて「どこで」「なんで」知ったのかも確認できる。

そういうアプリをずっと探してるんだけど、見つからない。無いのかな?
Evernoteとかで出来るっちゃあ出来るけど、運用がめんどくさい。
うーん
また作りたいアプリががが