けんぼーは留年生スマートフォン用の表示で見るけんぼーは留年生Twitterに書ききれないこととか2016-05-15CordovaでAndroidアプリを作ろうとする話Cordovaだよ。HTML5でAndroidからiOSからwindowsアプリとかクロスプラットフォームでアプリ開発出来るすごいやつらしいよ。今日はAndroidアプリを作ろうとしたよ。このチュートリアルを進めたんだよ。Tutorial0.環境導入ググって適当にやったら何かうまくいかなくてもう一回やったら何か上手く行った。大丈夫ググれば何とかなるから頑張れ。1.プロジェクトの作成iOSへの対応は持ってないし環境整えるのも面倒だから今回は飛ばした。プラグインを導入するところで早速つまずく。org.apache.cordova.consoleどうやらこのチュートリアル古いらしい。cordova-plugin-consolehttps://www.npmjs.com/package/cordova-plugin-deviceCordovaでは利用する各種機能がプラグインという形で提供されていてrubyのgemやpythonのpipのように適宜必要な物を付けたり外したりしていくらしい。3.セットアップ落としてきたものをそのままぶち込んで動かしてみる。4.データの扱いサンプルのindex.html内で参照するjsを切り替えることで情報を色んな方法で持ってくることが出来るらしい。デフォルトのmemoryだと普通にjsの変数に叩き込むだけだが、WebSQLにぶち込んでそこから取ってくることも出来るし、外部からjsonを引っ張ってくる事もできる。このサンプルでは3で落としてきたファイルの中にあるサーバーを自前で動かしそこから取ってくるようになってる。裏側の動きが変わるだけで表向きには変わらない。実際の運用ではデータの大きさとか更新頻度とかで適切なものを使い分けることになるだろう。5.ダイアログを出してみるjavascriptでもダイアログは出せるが、webブラウザのダイアログとスマホのOSの通知は別物だったりするわけで。その通知を出す機能が1でインストールしたようなプラグインの1つとして提供されている。1のように書かれているコマンドが古いので要注意。cordova-plugin-dialogsチュートリアルに書かれている通りに、cordova.jsを読み込み(さっきインストールしたプラグインを有効にするため)、app.jsで馴染み深いwindow.alert()をcordovaのnotificationに上書きする。するとこれがこうなる。僕の環境だとダイアログの色が変わっただけだな......。古いけど日本語での解説が読みたかったらこっち読んだ方が多分早い。※この記事は生活リズムの崩壊したけんぼーが謎の躁状態の中でまとめた文書であり、情報源の精査や専門的知識を踏まえることなく適当に聞きかじった曖昧な話を元に外野から私見を投げ込んでいるだけのものです。Go"とやらが何か世界最強クラスの囲碁選手を倒したらしい。何が起きたか(手法の特徴)・「ゲームのAI」とは「評価関数」ゲームは「自分が有利になるような手」を考えてそれを選び勝つものです。プレイヤーは常に複数ある手の選択肢の中から「自分が勝てる手」を選択して勝つわけです。これをコンピューター的視点から考えるとある選択肢が「どれくらい有利なのか」を数値化して比較する、つまり「手を評価する関数」を用意するのがゲームのAIを作ることと同義らしいです。・評価関数を作るには?→全部調べろ評価関数を作る一番簡単な方法はあらゆる全てのパターンを走査し勝利につながる枝の多さをそのまま評価にしたらいい。○×ゲームなら人間にも理解できる範囲の枝の量なので実際に調べてみれば分かると思います。枝が少なすぎて評価関数が全か無かになってしまってピンと来ないかもしれませんが。囲碁のパターン数は現実的な時間で処理が完了するレベルではありません。「組合せ爆発」とかで検索すれば分かると思いますが、盤面が広い分枝分かれがものすごく広く、優勢・劣勢の判定もとてもしづらい感じです。故に囲碁は「人間に勝てるまで他のゲームに比べてかなり時間がかかるはずだ」と言われてきました。・じゃあどうするの?具体的には全然知らないのでこの辺から特に曖昧です。今までのAIは人の思考などを参考に人間がある程度評価のガイドラインを作ったり、プロの棋譜を読ませて機械学習を回したり、その辺を組み合わせたりして作ってます。どちらにせよ人間がインプットやロジックをチューニングして作っとるんです。その点ではほぼ同じなのですが、何が違うって規模が違うんです。機械学習はやればやるほど正確に近づきますが、当然やればやるほど時間がかかります。GoではGoogleの資本を背景に物凄い量の棋譜をぶち込んで学習させます。それだけじゃなく学習済AI同士で対戦を物凄い回数繰り返してるわけです。これ「Google以外に真似出来る奴いなくね?」ってなってるわけです。要するにアプローチの方向性が今までと全く違うので既存のAI研究者は膝から崩れ落ちてるのが現状らしいです。囲碁はもう遊べないのかチェスでAIが勝利してもチェスが遊べなくなったわけではありません。確かに人とコンピューターでは勝負にならない時代になりましたが、人間同士が戦う分には何の問題もありません。カンニングに気を配る必要は多少増えたかもしれません。囲碁の場合は今までの将棋やチェスのケースとは違い「そもそも見たことがない」という手筋がバンバン出て来たそうなので、しばらく「コンピューターの指す目を如何に読むか」という世界になるかもしれません。この調子でAIが発達すると人間がいらなくなるのではここからは私の主観に依る部分がより大きくなります。自動車は人間より圧倒的に大きな物を運んだり人間より圧倒的スピードで走るわけです。これによって大八車で物を運ぶ人や飛脚みたいな職業は消え去ったわけですが、人間が消え去ったわけじゃないですよね。その仕事を人から機械に回しただけで、むしろ自動車によって余ったリソースによって人は新しい仕事を生み出しそれをやっているわけですよ。確かにAIの圧倒的性能によって現存する仕事の多くで人に取って代わられることはあると思います。AIは人の脳とイコールなわけではありません。人が自動車を利用して色々なことをしたように、これからは人がAIを利用して何を為すかという時代になっていくのだろうなと思います。本来留年はしない方が良いし休学もしない方が良いし退学なんて絶対したくないものだが、したくないことでもせざるを得ない場合があるのが人生。せざるを得なくなってしまった電通大生に向けて今日は少し書いてみようと思う。休学しよう基本的には休学も怪我や病気でないなら避けたいものだが、それでも卒業は諦めるけど次の進路は未定とか、留年等の理由で取るべき・取ろうと思う授業が無くなった場合等は休学した方が良いだろう。電通大では休学期間中は学費がかからないのだからこの仕組活用しない手はあるまい。*1ちなみに休学期間は在学期間に含まれないため、例え8年生であっても休学は可能だ。休学自体のリミットは別に設けてあり学部なら2年までだ。休学中も学生には違いない。図書館は使えるし学割もある。国立科学博物館が安かったりもするので単に身分を維持するだけでなく色々ある特典も利用したい。休学手順0.休学の予定を立てる原則休学は1学期単位で行う。月単位での中途半端な休学も出来ないことは無いが、途中から休学するメリットは特に無いのできちんと学期単位で休学しよう。*21期だけの休学と1年度分の休学がある。年度をまたいで一年分は出来ない。休学の申請は休学したい月の前月20日までとなっているが、教員との面談もあり割りと時間が必要になるので休学の一ヶ月前くらいから動いた方が良い。春なら2月中・秋なら8月中に動いておくのがベストだ。1.教務課に行くとにかく窓口へ行こう。年度をまたいでの休学等で休学期間を更新する場合も窓口へちゃんと行こう。面談しなきゃいけない相手が変わっていることがある。休学の原因がアレな場合には足がすくむかもしれないが、職員は貴方を詰ったり問い詰めたりはしない。問い詰めはしないが、窓口で「休学事由」と言うのを聞かれる。ここでの記入はメモ書き程度のもので、後から変わると怒られたりする性質のものではないので適当に記入しておこう。これを記入すると色々と書類がもらえる。書類には色々と細かい説明が書いてあるし、職員の方も手続き手順について詳しく説明してくれる。書類は失くしたりしないよう大切に扱おう。2.保護者と面談するあなたが社会人学生で無いなら兎にも角にも保護者との面談が必要だ。家庭環境にもよるがこの戦いは色んな意味で大変かもしれないが、必要なことである。休学通知は実家にも届くし学費が落とされなかったりするので逃げきれない。保護者から署名捺印を勝ち取ろう。3.教員と面談する学科主任と助言教員(選択肢複数あるので1人選ぶ)と面談をする。「休学したいので面談させてください」と言う感じのメールを出してアポを取ろう。僕も初めて面談をした時は窓口へ行った時以上に足がすくんだものだが、大抵教員の方々は優しいことが多い。本人が色々考えた上で決断し、保護者が許可を出していれば問題無いと言った感じで許可をくれる。教員は学会等で一週間くらいいないこともあるので早め早めに動いておくことが肝要だ。4.提出する一通りサインと押印が貰えれば後は出してリアクションを待つだけ。基本的には不受理と言うことはなく、後日通知が届く。提出が20日より遅れそうな場合は早めに教務課に連絡しよう。割りと何とかなったりする。退学も手順としてはほとんど変わらず。退学と除籍は全く違う。卒業できないならちゃんと自主退学にしておいた方が良い。自主退学なら"編入"を行使出来るかもしれない。他大学だけじゃなく「電通大の夜間主でやり直す」なんてことも不可能ではない。その場合には一部単位が流用出来るかもしれない。「休学中に自分を変える」みたいなのは大体無理。人間そんな短期間で劇的に変化したりしない。おまけ留年系電通生のためにUEC留友会って集まりがあります。集まる必要はなくて「留年に関わる相談がしたいけど相手がいない」「行き詰まっている」等の事情がある時は大学の各種相談窓口を活用しましょう。言ったところにアクションかけるのもやりづらいという時には我々留年コンサルタントがいます。*1:他の大学では割引されるだけで0にはならない事があります。*2:学期途中からの休学時に学費の返還等は無いので純粋に無駄だ。*3:編入学の条件は大学の資料を読んでください。中退者の編入の条件はちゃんと募集要項の隅々まで読まないと分からないかも。世の人々は会社を辞める時に「退職エントリ」なるものを書くらしい。私は「退学エントリ」を書きましょう。退学しました長年電気通信大学で留年を重ね「永遠の2年生」などと言う薄ら寒い称号を背負って学生を続けていましたが、とうとう本日(9/30)を以って退学という形になりました。経緯うちの大学は2年から3年に上がるタイミングで最初の進級審査があるのですが、そこで落ちて以来4年以上ずっと進級出来ずにいました。原因は学力不足でも興味が無かったわけでもなく、勤勉さの欠如でした。毎週学校に来て授業に出るという程度のことが出来なかったんですね。毎期始まりに「今度こそ授業出るで」→「また続かなかったよ......」という失敗を繰り返すごとに次第に「もう諦めるか」という思いが強まり去年の4月から退学を見越して休学していました。休学は最初に留年した頃にも半年だけしていて、残りの1.5年分を今期で使いきってしまったため退学の手続きをしました。先輩がやっているweb系ベンチャーでバイトしています。「大学さえ通えないような奴が会社に通えんのかよ」というもっともな指摘もあるかもしれませんが、以前大手の塾でバイトしていた時はちゃんと通っていましたし多分何とかなります。それに今いる所は社長が「通勤電車に乗りたくなかったから起業した」と言い出すような環境なので、この環境を大事にしていきたいと思ってます。留年コンサルタントやUEC留友会について学生ではなくなりますが、どちらも続けていきます。「卒業できなかった人」に聞きたいことがあれば、休学・退学について質問とかあればいつでも相談に乗ります。UEC留友会の方は僕自信が退学することを踏まえ世代交代をしたいなと考えています。「除籍」とは色々違う、という話は誰しも聞いたことがあると思いますが、実際全く違います。退学しても「単位を修得した」という事実は消えません。故に別の大学へ行った時も一部の授業が免除になったり、勿論同じ大学へ入り直した時にも使える可能性があります。*1単に経歴がどうとかだけじゃないんですよね。出来るのであれば除籍は避け自主退学をした方が良いです。卒業がベストなんですが。*1:大学によって違います。これは電気通信大学の場合です。一年くらい前の記事で語った「ハッシュを使ってパスワードを作る」って奴javascriptで作ってGitHubに上げてみた。GitHubってそのままWebに公開出来るんだねー。使い方パスワードジェネレーターキーワードを入力して「生成」ボタンを押せば同じキーワードに対して必ず同じパスワードが返ってくる。キーワードのセキュリティ意識は多少低くても生成されるパスワードはまるでランダム文字列のように見えるので問題無い。入力ボックスに並んで確認ボックスもあるが、空欄のままにしておけば比較は行われない。最初パスワードを作る時は間違いを防ぐために確認を行うべきだが、普段パスワードを使う時には確認はすっ飛ばしても構わないだろう。君が本当にセキュリティを気にするのであれば先述のGitHubのページからjavascriptディレクトリの部分だけ引っ張ってきてソースコードを確認して自分のローカル内で動作させるのが確実だ。言うとアルゴリズムだけ参考にしてちょこっとだけアレンジして作れば更に安全性は高まる。31どんなサービスでもパスワードを安全な方法で保持してくれていて絶対に流出しないなど、そんな保証はどこにもない。大手でも平気でパスワード複合できる形で保存してたり、ポロッとお漏らししちゃったりそういう可能性は常に存在している(むしろお漏らしのリスクは大きい所の方が狙われやすさ的な意味で危ないかもしれない)。なると自分の身は自分で――自分のパスワードは自分で守るしかない。自分を守るためのパスワードは大体↓こんな感じの要件を満たしている必要がある。普段使ってるサービスのパスワードとか銀行のパスワードとか特別に重要なものや日常的に使うものなら覚えられるかもしれないが、そうじゃない瑣末なパスワードなんて覚えてられないだろう。使い回したり分かりやすいものにしちゃったり。いう瑣末な所から漏れたパスワードがどんな結末をもたらすことか......。aを@に置き換えるとか複数の単語をストライプ状に混ぜるとかパスワードを作り出す「法則」というものはいくつかある。「法則性を見出だせない」と「大量に作成・覚えられる」を両立させるのは結構難しいものだ。そこで今回私の作ったサービスを挟むことで多少なりとも簡単にパスワードのセキュリティ性を上げることが出来る。パスワードを作り出す「法則」の部分はコンピューターが弾きだしてくれる。万一流出しても攻撃者にとっては無意味な羅列と区別付きにくく、もし生成方法が判明しても逆算して突き止めるのは地味に困難だからね。あーいいよね、そう言うの。ストレージで複数の端末間で共有させたりしてね。入力まで自動でやってくれる場合もあるしね。僕はさ、何かを作り上げて世に出すというその行為自体に意味があると思うんだよね。それが例え100行未満の粗末な代物だったとしてもさ。数学とか科学とか技術とか僕は何度か色々なところで巨大数の話をしてきたと思うが、今日はちょっと趣向を変えて有限ではなく無限の数の話をしようと思う。「無限」の捉え方は色々あるのだが、今回は以前の記事でちょっとだけ触れた「超限順序数」というものについて語りたいと思う。順序数とはそもそも「数とは何ぞや」という話から始まる。数について色々な説明の仕方があるとは思うが、その中でペアノさんが導き出した自然数に対する根源的な公理が「ペアノの公理」だ。ペアノの公理の詳しい内容については他のサイトにお任せするとして、一番重要なのは以下の2点である。最初の数(0でも1でも)があるどの数にも「次の数」がある「何であるか」という問いに対し最低限の要件のみを与え「そのように振る舞うものがそれである」と言ってしまうのが「公理」だ。曖昧な言葉の意味へ言及することを避けるためだ。要は「最初の数」と「次の数」さえ定義されればそれは数(自然数)と呼ぶことが出来るということだ。関数型プログラミングをかじったり舐めたりしたことのある人ならチャーチ数という言葉に聞き覚えがあるはずだ。それもペアノの公理を満たす数の定義の一種だ。今回は集合を使ってこの「最初の数」と「次の数」を定義する。これが「順序数」である。*1式だけだと分かりにくかろう。実際にこれを元に1,2,3,......を表そうとするとこうなる。要するに0は空っぽの集合で、それ以降は自分の直前までの数の集合ということになる。定義すると数の大小関係の定義がやりやすく厳密になる。ある数はその数の直前までの数を全て含んでいるので、含んでいる方が大きくて含まれている方が小さいのだ。ここで「自然数全体の集合」というものを考えてみよう。どの自然数も「自然数全体の集合」に含まれているので、「自然数全体の集合」を順序数と見なすとこれはどの自然数よりも大きいということになる。このωのように有限ではない順序数のことを「超限順序数」と呼ぶ。ところで、このωは自然数の集合であるから、自然数以外の余計な物は含んでいない。故に「ちょうどピッタリ自然数より大きい数」だと言える。「ωより小さくて自然数より大きい」数は存在しないということだ。超限順序数ωとは簡単にまとめておこう。ωはどの自然数よりも大きい超限順序数の一種。自然数よりも大きくてωより小さい数は無い。超限順序数を足し算してみようω+1を計算してみよう。さっきの定義を思い出せばすぐ出来る。このようにωには前の数ω-1は無いが次の数ω+1はちゃんとある。今度は2を足してみよう。集合での表記は面倒臭いので以後割愛する。最初の定義をもう一度思い出してほしい。定義にあるのはsuc即ち+1の演算だけだった。+2とは+1を2回繰り返すことだし、+nとは+1をn回繰り返すことになる。「何を当たり前のことを」と思うかもしれないが、そういう細かいことを気にしていかないと次の演算を理解できない。この一見頭のおかしい式について考えてみよう。+nが+1をn回繰り返すことならば、+ωは+1をω回繰り返すことになるだろう。ω回+1を繰り返すのはちょっと無理があるので、ゆっくりωに近づいていこう。これを自然数n回繰り返してるとこうなる。nが自然数ならば当然n+1も自然数だ。このnが自然数の限界を突破するまでこの作業は続く。逆に言うと自然数の壁を突破する直前までは常に自然数だ。n回目の+1でωになっちゃったりはしないので、1+ωがωより大きくなるのは不可能なのだ。数式で表現するとこう。要するにωとは「自然数を全て数え上げる」という不可能なはずの動作をやってのけるバグ技みたいなものだ。自然数は無限にあるのでちょっとやそっと途中から数え始めたくらいでωを超えられるわけではない。ωにならωを足すことで値を増やせる。超限順序数ω+ωを練成できる。超限順序数を掛け算してみよう(序章)さすがに長くなってきたので、この辺で終わりにしよう。最後に少しだけ掛け算を定義してみる。ωを2個足してるのだからωかける2、それだけだ。次回は掛け算でも前後を交換出来ないこと、そしてもっと不思議な掛け算やさらに複雑なべき乗について扱っていこうと思う。*1:suc(x)とは「xの次の数」即ち「x+1」という意味になる。何これ?所謂スマートウォッチです。ディスプレイが通常の液晶ではなく省電力なメモリ液晶と呼ばれる代物で、他の同様の商品に比べると「明るい場所でも見やすい」「画面は常時表示しっぱなし」「電池が良く保つ」というメリットがあります。日本語化デフォルトだと英語です。メニューが英語なのは良いんですが、通知の日本語を表示出来ないのは超困ります。有志の方が非公式で日本語言語パックを作ってくださっているのでこれを利用しました。pack作ったのが日本語圏の方ではないというのがまた驚いた。通知スマホに来る通知は大体pebbleにも飛ばせる模様。今はGMailとTwitterのリプライをpebbleに飛ばしてるのですが、全てのメール通知が飛んで来てしまうのはちょっとどうにかしたい。スマホの通知はメインタブのメールしか通知しないのになぁ。pebble音は出ないんですが、時計がブルっと来ると結構気づきます。僕は自転車移動が多いんですが、信号待ちのタイミングとかでチラッとメール確認とか出来るの超便利ですね。スマホを取り出すまでもないちょっとした情報の確認にはお役立ちです。他の一般的な"スマートウォッチ"ってボタンを押して液晶つけないといけないんですよね。その反面デフォルトで画面つきっぱなしのpebbleは腕時計として要をなしています。解像度は低いのでアナログな時計を表示したい時は針が太めのものを選ばないと見づらいですね。僕はデジタル表示にしてます。時計の種類は本当に追えないほど無数にありますし、自分でも作れます。僕もシドニアの騎士風とか作ってみますかね。アプリ勿論時計以外にも色々アプリがあります。メモを表示してくれたりだとか、サイクルコンピューターの代わりになる奴とか、万歩計とか、睡眠管理とかその他諸々......。画面は狭くボタンの数も少ないのであくまでスマホの補助の範疇を超えない程度にしておかないと却って使いづらいです。買ったばかりなんでしばらく使ってみて良さそうなのあればレビューします。後javascriptで作れるらしいので僕も何かしら作ってみたいですね。ゲーム当然ゲームも有ります。あの小さい画面と少ないボタンですから碌なゲームは出来ません。テトリスとか入れてみましたが、大抵のゲームは苦痛でしか無いです。そんな中でちょっと面白そうかな?と思ったのがこのゲーム。forums.getpebble.com放置してると一定時間でアイテムを拾ったりモンスターに遭遇したりする。その都度選択肢を選んでRPGっぽくダンジョンを攻略していくゲームらしい。進めてないから「面白い」とは言えないけど、こういうデバイスだからやはり放置系のゲームが合ってると思うんだ。皆の評価は高いっぽい。電池めっちゃ保つらしいです。一週間くらいイケるとか。言ってもスマホの方が保たなきゃ意味無いんだよなぁ。スマホが落ちても多分時計としての用はなすはずだし。防水とかも完璧らしいです。プールに飛び込んでも良いらしいから風呂とか大抵の場面は凌げそう。その反面端子が磁石でくっつくタイプだったりします。充電そんなにいらなさそうだから大丈夫でしょ。デザインは黒だと黒すぎたし白は好みじゃなかったから赤を選んだけどやっぱりあればオレンジが良かったとは今でも思ってる。