Lento con forza

大学生気分のIT系エンジニアが色々書いてく何か。ブログ名決めました。

gitのリモートブランチをチェックアウトしたい時

Gitのremote checkoutのおはなし

Gitのリモートブランチをローカルにチェックアウトしたい時、ありますよね。 しかもそのローカルブランチにはトラッキングブランチを指定したいですよね。

僕は今まで

git checkout -b branch_name origin/branch_name

というコマンドを打って実現していました。 このコマンドは、branch_nameというブランチをorigin/branch_nameから作成し、なおかつトラッキングブランチに指定、更にcheckoutまで行ってくれる便利なコマンドです。 以下のコマンドの省略形ですね

git branch branch_name origin/branch_name
git checkout branch_name

さて、このコマンドをどこで覚えたのでしょうか。僕はGitBookでこのコマンドを覚えました。

Git - リモートブランチ

日頃からcheckoutを行っていると、時々この事を忘れて、ローカルにブランチがないのにcheckoutしてしまうことがありました。

ksaito% git checkout branch
Branch branch set up to track remote branch release/branch from origin.
Switched to a new branch 'branch'
ksaito%

あれ、git checkout -b branch origin/branch と全く同じ結果では・・・?

いつからか省略できるようになったのでしょうか。答えはStackoverflowが教えてくれました。 stackoverflow.com

僕が見てる時点で6000件近い+評価がついています。これによると gitのバージョンが1.6.6から、 git checkout branch はremoteブランチが一つのみ存在する場合、自動的に git checkout -b branch origin/branch に読み替えられるとのことです

?????

gitのバージョンの1.6.6が出たのはいつでしょうか。それはちょうど僕がプログラミングを始めた頃、2006年でした。

https://github.com/git/git/blob/master/Documentation/RelNotes/1.6.6.txt#L145-L147

確かに書いてますね。今までの僕の苦労はなんだったのでしょう。 今まで何回無駄な -borigin/branch を打ってきたのでしょうか。悲しくなります。

P.S.

ちなみに英語版、v2の同じ章にはちゃんと-b--trackを使わないリモートブランチのチェックアウトについて触れられていました。やはり英語は全てのエンジニアが身につけるべき最高のスキルですね。 https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches

Arukasが最高だった

Arukasというサービスをご存知でしょうか。

ちょっと前にSRE Tech Talk に行った時にさくらインターネットの方が発表していて知ったのですが、とても良いサービスだったので紹介します。
ちなみにこの勉強会のプレゼンはとても良かったのでおすすめです。スライドのトークは残っていないみたいですが、スライドはこちらにあります。

Arukas

Arukasコンテナーを簡単にデプロイできるサービスです。なんと2017年2月10日現在 無料!! で一人10個までのコンテナをデプロイすることができます。
デプロイ元のイメージとしてDocker hubのPublicリポジトリを指定できます。Docker hubのリポジトリを数回のクリックと少ない入力でデプロイできるのはとても素晴らしいですね!

現在このサービスは招待制になっているので、是非登録しましょう!

つかいかた

試しに何かアプリケーションをデプロイしてみましょう!せっかくなので楽しいアプリケーションにしたいですね。そんな方にオススメなのが、僕が以前作ったこのSlack botです!

kouki.hatenadiary.com

このbotは、masterリポジトリのDockerイメージがDocker hubのPublicリポジトリに自動でビルドされるようになっています。

Arukasをちょっと試してみたい・・という方には絶好のアプリケーションですね!
ただ、BotトークンをArukas上に入力してあげなくてはいけないため、セキュリティ上心配な方はご注意ください。

Arukasへの登録

現在Arukasは承認制でのアカウント作成方式になっています。アカウントを登録してから実際に使えるようになるまで少し時間がかかるので、早めに登録しておきましょう!Githubアカウントでの登録も可能です。
登録はこちらから

Arukasのデプロイ画面

無事にArukasのアカウントを取得することができたら、アプリを無料で走らせることができます。デプロイ画面は以下の画像のようになっています。 f:id:kouki_dan:20170211020535p:plain

各入力欄は、以下のように入力します。

名前 説明 Slack Shogiを入れる場合の入力
App Name 管理用に表示されるアプリケーションの名前、文字列ならなんでも良い Slack将棋
Image DockerHubにあがっているイメージ setokinto/slack-shogi
Instances 同時に実行されるコンテナの数 1
Memory コンテナに割り当てられるメモリ量 256MB
Endpoint コンテナにアクセスするためのエンドポイント (入力なし)
Port コンテナにアクセスするために開放するポート番号 0, UDP
ENV コンテナに与えられる環境変数 SLACKSHOGI_API_TOKEN=xoxb-xxxxx-yourtoken-xxxx
CMD コンテナ起動時のコマンド (入力なし)

この中で一つ注意しなくてはいけないポイントは、Slack将棋を実行する場合はPortに 0,UDP を指定しなくてはいけないことです。
Botは外部からアクセスする必要がないため、ポートを開放する必要はありませんが、現在Arukasでは最低一つのポートを開放しなくてはいけません。コンテナの起動はこの開放したポートに接続できた事を確認してから行われるため、実際に開けていないポートを指定するとコンテナが起動中の状態になりません。   Botやcronといった、外部からのアクセスを必要としないコンテナを実行したい場合は、0, UDPなどの、UDPポートを指定することによってこのポート開放確認をスキップすることができます。そのうちこの方法を使わなくても実行できるようになると思いますが、現在のところはこの指定を使うことでBotをArukasで実行することができます。

この罠に引っかかり、悩んでいたのでArukasのサポートに聞いてみた所、すぐに返事が返ってきました。迅速な対応に感謝します🙏

これらを入力したら以下のような状態になります。 f:id:kouki_dan:20170211020625p:plain

あとはこの状態で、アプリケーションを作成ボタンを押すことでArukas上でコンテナが起動し、Botが実行されます。

まとめ

Dockerは開発環境の構築がし易いこともメリットの一つですが、このようにデプロイフローを完結にすることでも非常にメリットのあるツールです。Arukasのようなサービスがなければ、自分でmesosやKubernates、Rancherを建てる必要があったり、Docker Machineを使うといった方法が考えられます。Arukasを使うことによって、これらを自前で用意する必要がなくなり、幾つかの設定項目を埋めるだけで自分のイメージをコンテナにして動かせるようになりました。

試してみて、簡単にコンテナを実行できるというのはとても素晴らしく便利であると感じました。言うならば自由度MAXのherokuが自由に使えるといった感じでしょうか。とにかくとても便利なので一度使ってみて頂きたいです。

コートとジャケット

なぜ書くことになったのか

なぜ書くことになったのでしょう。僕は苫小牧高専生ではありません。苫小牧に生まれ育ちましたが、苫小牧高専に知り合いが多かっただけのただの高校生で大学生でした。
その中でたまたま mktakuyaと知り合い、気づいたらこのアドベントカレンダーに誘われていて、気づいたら登録ボタンを押していました。
そんなこともあり、何を書こうか考えても全く思いつきませんでした。アドベントカレンダーの説明には

苫小牧高専の学生、教職員、OBOG、その他関係者のアドベントカレンダー。 テーマはなんでもOKです。技術ネタ、自分語り、ポエム、学校への意見などなど。

と書かれています。 1行目について、僕はその他関係者に当たりますね。 2行目のテーマについてはなんでもOKと書かれてるので、本当になんでもないことを書こうと思います。

コートとジャケット

世の中には不思議なことがいっぱいで、コートとジャケットの違いもその中の一つです。 僕はいま着ているコートがジャケットなのか、ジャケットがコートなのか、特にわからず、特に気にせず暖かければいいと思って着ています。特に分ける必要もないしね。どっちでも伝わるし、なんだったら「上着取って」でもいいし。

別の世界の人に取っては

別の世界の人、今回の例ではファッション業界の人に取ってはこの違いはとても大きな物である(のかもしれません。)僕はそういう業界の人じゃないのでわからないのですが、実はコートとジャケットを見分ける社内資格がikkaにはあるのかもしれないですし、この2つを間違ってお客さんに説明して売ってしまったがためにお客さんから苦情が来て、評判は下がり、お客さんが来なくなり、閑古鳥が鳴いているお店だってあるのかもしれません。

僕の世界で考える

僕はITと音楽の世界で生きてるので、僕の世界で少し考えてみます。
例えばこの2つ

たった一文字違うだけですが、意味する事は全く違います。
httpsにしといてね!とサーバーを用意する人に頼んだのに、いざリリースされ確認してみるとhttpであったらそれはとても大変な事です。 なんてったってCookieのSecure属性はonにしましたし、STSもmax-ageを12年後に設定してしまいましたからね。


  • 短三度
  • 長三度

こちらも1文字違いです。全ての短三度の音と長三度の音が入れ替わった世界を想像してみてください。なんかとても不安になりますね。「短調にしてみた」などのワードでニコニコ動画で検索してみてください


  • ホームページ
  • Webサイト

ホームページとWebサイトの厳密な定義なんてもはや消え去り、混同して使われている現状に憤りを覚えます。区別して欲しいのに区別してくれない。ものすごい溝を感じますね。(自分でも時々区別してないときはありますが)


USBは規格だ!!混同するんじゃねぇ!!!

違いは数あれど

違いは数あれど、その違いは知る人だけが知ってれば問題ないのかな―。って思います。
Webサービス運用者がhttpとhttpsを区別してなかったり、クラシックピアニストが短三度と長三度を区別してなかったりするのはとても問題のある事だと思いますが、そんなの他の人からみたら「なにが違うの。どっちでもいいじゃん。」で一蹴されてしまう事だと思います。
確かにその世界にいる僕は、自分の世界の事をもっとたくさんの人に知ってもらいたいし、言葉は定義をしっかりと理解して使って欲しいです。でも他の大多数の人に取っては興味が無いことだろうし、正直混同して使っても通じます。

いろんな世界の人が集まる

この世界は色々な世界の人が集まってできています。世界にも色々な意味がありますが、ここではその人の持つ個性や特徴で分けられた世界のことです。
そして、概して人は似た人同士で世界を構成し、一緒に暮らしていく傾向があります。

別の世界に目を向けて

物事を考える時、自分の目線だけでは物事のある1面しか見えません。3次元空間上に自分と対象という2つの物体があったとしても、互いに相手の裏側を見る方法は存在しません。
人は自分の世界のどこにでも歩きまわる事ができるでしょう。深い部分まで知ることができるのです。ただ、自分の世界の外にある他の世界は、ある側面しか見ることができないのです。これって勿体無いことだと思いませんか。僕だって他の世界に自分のコピーロボットを用意したい。頭をくっつけるだけで他の世界の事を知りたい。でも実際は僕の世界にパーマンはいなくて、コピーロボットもありません。

色々な事を知りたい

「色々な事を知りたいな―。」って、良く思います。「知らない」ということは「怖い」ことだといつも思います。体のどこかが悪いと思うと、自分に医学的知識がないから病院に行き、知識があると思われる人に丸投げです。よくわからないブラックボックスに入れたら出てきた薬を使って対処しています。

人が一人で学べる事には限界があるので、これは正しい最適化の方法ではあります。医学は専門性を高めていく事で飛躍的に短期間で発展を遂げたとある漫画で言われていました。

何ができるか

僕は本を、特に小説を読むのが好きです。小説を読むと、まるで他の人の人生を体験しているように感じます。本を読むという行為は他の人生を生きることができる素晴らしいものです。色々なことを知るために本を読むということは理にかなった選択肢です。
いろんな世界を知るためにもこれからも本を読んでいきたいなーと思ったので書きました。

本を読むことで、少なくとも登場人物や作者の考えていること、持っている知識を自分のものにすることができます。それは時間が経てば忘れてしまう事かもしれませんが、案外そうでもなく、近い物事に出会ったときにひっかかりを感じ、調べるきっかけになったりもします。いろいろな世界のコートとジャケットについて、少しでも知りたい方は本を読むのが良いでしょう。

コートとジャケット

「コートとジャケットって何が違うんだよ!!一緒じゃん!!」という憤りからここまで書き進めてきた記事ですが、そろそろ着地しようと思います。 コートとジャケットのような違いは至る所、いろんな世界に存在しています。その違いに出会ったときにどう行動するかが大事です。 否定する。わかったフリをする。理解しようと努力する。更に深く知っていく。なんでこんなこともわからないのかと落ち込む。普段から勉強し続けてこういうことが起こらないようにする。取りうる選択肢はたくさんあります。 何が最適か、それはその時々によって違いますが、人間にとって「知る」ということは「面白い」事であるため、否定はせずに、ぜひ別の世界に向き合って行けたらいいなぁと思います。

ちなみに僕はコートとジャケットの違いを未だにわかっていません。

まとめ

技術的な事を期待していた方はすみませんでした。
技術的なことは現在所属している会社のこっちのアドベントカレンダーの記事を同日に公開するので、こちらでお茶を濁してください。

あと今日誕生日なのでウィッシュリストもおいておきます。

http://amzn.asia/0FVmzzJ

明日はmillayがJavaについてどうやら何かを書いてくれるみたいですね。 僕はJavaが大好きな人なので期待しています。

Slackで将棋を動かしてみる

土曜日の夜のことです。ふと友達とslackで話していて将棋がやりたいね。という話になりました。

当然将棋をやるためには、将棋盤と駒が必要で、それらを動かし、更にその状態を最低2者間で共有する必要があります。手軽に無料でこれらの事がどのような環境でもできるサービスは私達の知るところ存在しません。近いところで言えば、将棋倶楽部24や、将棋ウォーズでしょうか。それらでさえも、有料であったり、時間制限が強要され友達同士で自由に対局を行いにくいという問題を抱えています。幸いにも僕たちはエンジニアで、ないものは創りだす事ができます。当然今回も手軽にできてマルチプラットフォームの将棋を作ろうという事になりました。

Slackというプラットフォーム

皆さんはSlackというサービスをご存知でしょうか。社内チャットとして有用だと言うことで広まったこのサービスですが、現在においてはオープンソースコミュニティで使われているなど、多様な使われ方をしています。家族で使用している例や、友達同士で利用する例、更には恋人同士で利用する例すらもあります。僕も所属している会社のSlack-teamの他に、学生時代のスタートアップのSlackや、バンド仲間でのSlack等に所属しています。Slackの有用な点の一つとして、Slackはチャットプラットフォームだけではなくゲームプラットフォームとしても使うことができるという事があげられます。

今回将棋を実装するためのプラットフォームとしてSlackを選択したわけですが、理由としては以下の事柄があげられます。

  • 将棋はバンドSlackに入っているメンバーとやることが多い(個人的な理由)
  • Windows, Mac, iPhone, Android, ブラウザ等、多様なプラットフォームでの使用が可能
  • 特に実装をしなくても通知が可能
  • 特に実装をしなくてもチャットが可能
  • 特に実装をしなくても観戦が可能

個人的な理由は抜きにしても、Slackで実装するメリットはとても多いことがわかると思います。チャットや観戦機能は実装するのがとても面倒なので、その部分の実装を省けるのはいいですね。また、Slackのチームには将棋が強い人がいることが多く、その人からアドバイスがもらえるという嬉しい副作用もあります。

実装方法

盤面を表現する方法として、絵文字を採用しました。Slackには自由に絵文字を登録することができ、登録した絵文字はテキストで参照できます。テキストで参照できる絵文字はとても扱いやすいフォーマットです。具体的には以下のようなテキストがその下の画像のような形に変換されます。

:slackshogisss_kyou_enemy::slackshogisss_kei_enemy::slackshogisss_gin_enemy::slackshogisss_kin_enemy::slackshogisss_ou_enemy::slackshogisss_kin_enemy::slackshogisss_gin_enemy::slackshogisss_kei_enemy::slackshogisss_kyou_enemy:
:slackshogisss_mu::slackshogisss_hi_enemy::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_kaku_enemy::slackshogisss_mu:
:slackshogisss_fu_enemy::slackshogisss_fu_enemy::slackshogisss_fu_enemy::slackshogisss_fu_enemy::slackshogisss_fu_enemy::slackshogisss_fu_enemy::slackshogisss_fu_enemy::slackshogisss_fu_enemy::slackshogisss_fu_enemy:
:slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu:
:slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu:
:slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu:
:slackshogisss_fu::slackshogisss_fu::slackshogisss_fu::slackshogisss_fu::slackshogisss_fu::slackshogisss_fu::slackshogisss_fu::slackshogisss_fu::slackshogisss_fu:
:slackshogisss_mu::slackshogisss_kaku::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_mu::slackshogisss_hi::slackshogisss_mu:
:slackshogisss_kyou::slackshogisss_kei::slackshogisss_gin::slackshogisss_kin::slackshogisss_gyoku::slackshogisss_kin::slackshogisss_gin::slackshogisss_kei::slackshogisss_kyou:

f:id:kouki_dan:20160719001859p:plain

盤面を表現するためには30個近くの絵文字を登録する必要があります。これを手作業で行うのは辛かったので、絵文字を自動で登録するスクリプトを作成しました。仕組みとしては、Mechanizeを使ってslackにログインし、自動で絵文字をどんどん登録していくものになっています。IDとパスワードを必要としているのは、Slackには現在絵文字を登録するAPIが存在しなく、Web UIからでしか登録する事しかできないからです。Slack社には絵文字登録APIを早く公開していただきたいです:pray:

絵文字が登録できたら、あとは将棋を管理するbotを作って、うまく将棋のルール通りに動かすだけでSlack上で将棋の対局ができます。実際に作ったものが以下にあります。

github.com

仕組みとしては、Slackに用意されているBot Integrationを使用し、RTM APIから入力を受け付け、対応した局面の図を表示する、極めて一般的な将棋の作りになっています。
Slack Botの弱点として、入力が制限されてしまう事がしばしばあげられますが、将棋を作る上でもここは大きな課題でした。幸いにも、将棋には、棋譜の表記方法が一般的で、「76歩」や、「34歩」等といった、言葉で駒の動きを一意に特定できる方法が定まっています。今回はこれを利用し、駒を動かす事に成功しました。

「76歩」「58金右」「13歩成」「55金打」などのように駒の動きをbotに伝えることで、bot上に持っている盤面が動き、それをbotが絵文字データとして投稿することで対局者、観戦者へのフィードバックを行います。これを繰り返す事で対局が進んでいき、終局まで将棋を指すことができます。

いくつか対局中の図を添付します。 f:id:kouki_dan:20160719003518p:plain

f:id:kouki_dan:20160719003546p:plain

もちろん、駒が本来動かせないところには動けないし、手番の人しか動かせない機能もついています。

f:id:kouki_dan:20160719003756p:plain f:id:kouki_dan:20160719003935p:plain

もちろん手駒の機能も、それを打つ機能も、成る機能もあります。 f:id:kouki_dan:20160719004220p:plain f:id:kouki_dan:20160719004301p:plain

Botを作る事でSlack上で完璧に将棋の対局を行う事ができるようになったのがわかると思います。

まとめ

チャットを遡ったところ、一昨日、土曜日の夜24時17分からこのプロジェクトがスタートしていました。現在は月曜日の24時過ぎです。作りはじめた時はまともに動くものができると思ってなかったのですが、48時間経った今は予想以上にうまく動いている将棋Botができていて、自分でも驚いています。
また、多分どのslack-teamでもPython3系さえ入っていれば動くと思うので、試したい方はgithubから試していただければと思います。 まだBeta版なのでうまく動かない点や改良点等あると思いますが、IssueやPRなどに残していただけると助かります。

一緒に作ってくれたよっしーmillayアチャチャに感謝です。みんな一緒にSlackで将棋ライフを送ろうぜ!!

FirefoxTVのアプリケーション開発1 〜Hello world編〜

最近、と言っても3ヶ月くらい前にテレビを買ったんですが、選ぶときに「面白そうなOSがが入っている」という選定基準を掲げていました。 僕の中での面白そうなOSとは、開発ができそうなOS、カスタマイズ可能なOSです。

テレビを買った時の記事はこれです。結局PanasonicVIERAを選びました。OSはFirefoxTVです。 kouki.hatenadiary.com

テレビを買ったのはいいんですが、テレビのコンテンツ力とNetflixの素晴らしさに感動し、何も開発することなく3ヶ月が過ぎてしまいました。 これではまずいと思ったのでそろそろFirefox TVの開発でもしようと思いこの記事を書き始めました。

FirefoxTVで開発できるようになるまで

FirefoxTVの開発は、FirefoxのWebIDEを使って行います。以下のURLでWebIDEとの接続をどう行えば良いかが書かれているので詳細はリンク先を参照してください。 developer.mozilla.org

注意すべきところは、最後のAllowing the connection from WebIDE の節で、YesNoを応えるアラートは、その前の節で表示しているIPアドレスを確認する画面を開いている時には表示されないことです。僕はこれでだいぶ時間を無駄にしました。 IPアドレスを確認したら、一度テレビの画面に戻っておくと安心です。

FirefoxTVでHello Worldを動かす

さて、これでテレビとIDEの接続ができました。実際にHello Worldのアプリケーションを動かしてみましょう。 普通のFirefox OSアプリケーションを作るのと同じように進めていけば良いみたいです(僕はFirefox OSのアプリを作ったことがないので本当かどうかわかりませんが)

まず、FirefoxIDEを開き新規アプリを作ってみましょう。 IDEを開き、「新規アプリ」ボタンをクリックします。 f:id:kouki_dan:20160110011543p:plain

アプリのテンプレートを選択する画面が出てきます。
テンプレートはHelloWorldを選択
プロジェクト名にも"HelloWorld"と入力し、OKボタンを押しましょう
f:id:kouki_dan:20160110011800p:plain

これでアプリの雛形が完成しました。 f:id:kouki_dan:20160110011842p:plain ここには基本となるHTMLファイル。そして、そこから呼び出されるjsファイルがあります。 見慣れないファイルとして manifest.webapp というファイルがあります。これはFirefoxOS用のアプリの設定ファイルで、アプリ名やアイコン、パーミッション等の指定を行うファイルです。詳細は以下のリンクに書かれています。
アプリマニフェスト - アプリセンター | MDN

ひとまず実行してみる事にしましょう。 リモートランタイムに接続済みなら、中央上部にある三角の実行ボタンを押すことで実行できます。接続済みではない場合、テレビのIPアドレスを右カラムにあるリモートランタイムから入力し接続してください。詳細は FirefoxTVで開発できるようになるまで に書いてあります。

テレビで遊ぼう

おそらく画面が真っ暗になったと思います。それで正常です。
実行ボタンの右にある、デバッグボタンを押してみましょう。 f:id:kouki_dan:20160110012926p:plain

デバッグ画面が出て、コンソールに "Hello world!"と出力されているのが確認できると思います。これは app.js 内でconsole.logが呼び出される事によって表示されています。

これでテレビで自分の作ったアプリケーションを動かすことができました。ただ、これだけだとつまらないので少し遊んでみましょう。WebIDE上のコンソールにいろいろ入力することで、テレビ上でプログラムを動かす事ができます。 f:id:kouki_dan:20160110013242p:plain

テレビで動いてる感を簡単に出すにはalertがおすすめです。
alert("Hello world!")
と入力すれば、実際にテレビにアラートが表示されます。
f:id:kouki_dan:20160110013352p:plain

テレビの写真も撮ったのですが、部屋が写り込んでしまってなんか微妙な感じになったので写真を貼るのはやめておきます。実際に動かして楽しんでください!

次はどこへ

さて次は何をやりましょう。 とりあえずパッと思いつくだけでも、画面に文字を出したり、動画を表示したり、テレビを表示したり、やりたいことはたくさんありますね。 何ができて何ができないのかはまだアプリ開発を始めたばかりなのでよくわかっていません。APIをいろいろと調べていると、実際にテレビ番組にアクセスできるAPIなんかもあるみたいで、アクセスできると楽しいなー。と思っています。実際につなぐことができるかはこれから試していきます。

また、Firefoxがテレビのサンプルプロジェクトも公開しているので、そこを読んでまた次の記事を書きたいと思います。

0の0乗から教育実習を振り返りたくなった

はてブで0の0乗が話題になっていました。
0の0乗の正解がネット検索しても見つからないので作成した。 | 子育ての達人 | 妊娠・出産・育児・子育ての毎日を楽しく

去年教育実習に行った時に、ちょうどここら辺を教えていました。指数法則を拡張する流れで、0乗すると1になることを解説していた時に、生徒から「0の0乗も1になるんですか?」と聞かれた事を思い出しました。

0の0乗は?

僕は数学で教育実習に行きましたが、数学の専門家ではないので細かい事はわかりません。この時に僕は、「0の0乗は『定義されない』場合が多いかなぁ。1とする場合もあるんだけど。」と返答した記憶がうっすらと残ってるんですが、先の記事を読み、今改めて考えるとここは数学の奥の深さ、面白さを伝えるポイントだったのかなぁと思いました。

この時は上のように答えただけで、先に進んでしまったのですが、ここで思いっきり脱線して、0の0乗を考える授業に変更する事して、いろいろなパターンで考えながら授業を展開できたら一部の人には数学の面白さをわかってもらえたのではないでしょうか。それ以外の人は数学を嫌になってしまうかもしれませんが。

10を知って、1を教える

僕が先生に言われて今でも覚えている言葉の一つに、「10を知って、1を教える」というものがあります。何かを教えるにはその10倍の事を知っていなくてはいけない。という教育に臨むための心構えです。教師が勉強不足の場合は教科書をただ読んで終わるだけの授業になってしまいますし、生徒の質問から授業の展開を変える事だって難しくなります。教育を志す者としては忘れてはいけない言葉です。

0の0乗で教育実習を思い出し、勉強しなくては。まだまだ勉強が足りない。と思い、勢いで記事を書きました。 プログラミングに関しても、数学にしても、その他いろいろ全てに対して。
そんな僕は先日WiiUを購入し、マリオメーカーとぷよテトに耽っております。あれ?

AppleTVを買った

2,3週間前ですが、AppleTVを買いました。テレビと一緒に。

買ったテレビはPanasonicビエラです。
地上・BS・110度CSデジタルハイビジョン液晶テレビ TH-40CX700 詳細(スペック) | テレビ/シアター | Panasonic

どんなテレビを買うかは相当悩んだんですが、選ぶ基準は

  • なんかよさ気なOSが入っている
  • 予算は最大でも15万まで
  • 置けるサイズが部屋の大きさ的に40インチくらいまで?

この3つでした。
後で気づいたんですけど、テレビで15万って相当いいもの買えるんですね。

よさ気なOSが入っていない(´;ω;`)

会社帰りにアキヨドに言って店員さんに聞きました。
僕「AndroidとかFirefoxが入ってるテレビがほしいんですけど」

そこで店員さんから、SonyがAndroidOS、PanasonicFirefox OSが入っているとの情報を手に入れました。本当にメーカーでOSが決まるのか!?と疑問に思ったのですが、なんだかんだ僕の見つけた範囲ではこの通りでした。この時点でSonyまたはPanasonicに絞られました。が、しかし・・。

店員さん「例えばAndroidOSならこのテレビですね」
と、50インチを超えるテレビを案内してくるじゃないですか。
更に話を伺うと、ある程度大きいテレビじゃないとAndroidとかFirefoxとか入ってないみたいです。辛い。

二択まで絞った

現実的に買える条件を満たしてるテレビはこの2つしかありませんでした・・。

最終的にPanasonicビエラにしたんですが、理由はPanasonic割りと好きだからです。ブランド力ですね。
全体的なテレビを見てる感じ、7,8万で済むんじゃないか?とも思ってたんですけど、よさ気なOSが入ってると値段が跳ね上がりますね。これが一番最低ランクな気がします。14万前後

Firefox TV どうよ

とても良いですね。Netflixボタンが素晴らしい。ボタン1つでNetflixが開きます。テレビも見てるんですが、使用率は
Netflix < テレビ < AppleTV
こんな感じですね。AppleTV使ってねぇ・・・。開発もしたいんですが、USB TypeCを買ってくるのが面倒でサボってます。AppleTVの開発よりFirefox TV のアプリ開発の方が興味出てきてます。