Dentoo.LTが続いている話

この記事はLT Advent Calendar 20164日目の記事です。

www.adventar.org

昨日は@whywaitaさんで、「Dentoo.LTを引き継いでバトンを渡した話 #dentoolt」でした。アドベントカレンダー荒らしのような真似をしておきながら、遅刻してしまいすみません…………

一昨日、昨日に引き続きDentoo.LTの話をしようと思います。 この3日間Dentoo.LTを始めた人、引き継いでバトンを渡した人、今続けている人で書いていますが、その中で僕はDentoo.LTとの出会いと今の気持ちについて書いていこうかなと思います。


僕とDentoo.LTとの出会いは高校3年生の時になります。当時TwitterでDentoo.LTなるイベントがUstreamで配信されているのを偶然知り、配信を見ていたのが最初でした。当時から電通大の噂は耳にしていて、Twitterでたまによく見るアイコンの人は何故か電通大生であることが多いなという印象でした。今から考えると、この頃から情報系のLTをやる界隈に憧れのようなものを持っていたのだと思います。

それから電通大を受験し、落ちて浪人生になり、また電通大を受験しようやく電気通信大学に入学した時、MMAというサークルに出会いました。このとき初めて、あのときDentoo.LTを開催していた人がこのサークルにいて、今もやっているということを知りました。サークルに入り、Dentoo.LT次回開催のお手伝い募集の案内を聞いたとき、僕は2つ返事でOKをした覚えがあります。

そしてDentoo.LTで登壇したり、気がついたらid:masawadaさんからwhywaitaさんへの主催交代があったり、また気がついたら今度は僕自身が主催になっていたりといろいろありました。何で僕が主催をやっているのかは正直わかりません。気がついたらやっていました。


主催をやることに対し特別に意識していることはそこまでないのですが、作業的な気持ちにはならないようにしようと心がけています。イベントの雰囲気は主催や運営をしている人の性格や色が表れると思っているので、参加者に楽しんでもらおうと思ったら主催自身がつまらない感じでやったり、しんどそうな感じでやるのはやめた方がいいなと思っています。*1

とはいえ僕が主催になってからを振り返ると、毎回開始があたふたしていて、楽しむ余裕を持ったスタートが切れていない回が続いている気がして反省しています。

また、前回から電通大の方以外でもWifiを使えるようにしています。せっかく来てもらったので、良いイベントに来たと思ってもらうには快適な環境を提供することが大切なのかなと思います。


そうこうしている内に僕も後輩にバトンを渡す立場になろうとしています。嬉しいことにDentoo.LTは今も続いていますし、この先も(少なくともあと2年くらいは)続いていくでしょう。 けれども引き継ぐということは、最初に始めたid:masawadaさんや引き継いだwhywaitaさんや僕のことを直接知らない世代が行うということになります。そういう世代が困らないように、明文化してこなかったことを文章にして、誰でもDentoo.LTを運営できるようにすることも大切です。始めた辺りの時期の人がやってくれると僕としては楽で助かるのですが、Dentoo.LTは回を重ねて形にしていったものなので、僕の代でやるのはいいタイミングなのかなと思います。

長くなりましたが、この辺りで締めようと思います。これからもDentoo.LTをよろしくお願いします。

Dentoo.LTの主催が3日間、LT Advent Calendarにお邪魔させていただきました。LTに限りませんが、他人と交流のあるイベントはとても楽しいものです。皆さんもLTに参加するのもよし、登壇するのもよし、企画して開催するのもよしです。楽しいLTライフをお過ごしください。

明日(今日)はid:yomoyamareijiさんの記事です。

reiji1020.hatenablog.com

*1:まあ当たり前のことですね

Dentoo.LT #15を開催しました

もう1週間経ちますがやりました。

atnd.org

最近のDentoo.LTではなかなか多い、58名の参加者と18名の登壇者が集まりました。

ディスプレイ接続のトラブルがたくさんあって、Xが固まる人・OSをリブートする人・Windowsに切り替える人と色々大変な感じがした。でも何故かディスプレイを持ってきてる人がいて、そこで事前に接続確認をしたりと不思議な空間が出来上っていた。

今回は参加者が多いだけじゃなくて、初参加の人が多かったことも良かった。何回か前のDentoo.LTで id:whywaita が言っていたのだけれど、見に来てくれる人が増えることが大切なのかなと僕も思う。

また今回では電通大以外の人でもWifiを使えるようにしたのでより良い環境になったのかなと思う。電通大以外の人でも参加しやすいように、もっと良い環境にしていきたい。

毎回慌だしい運営をしているので、そろそろ落ちついたスタートを切ってシャキっとしていきたい。

そんなこんなで次回は調布祭で開催します。まだ未定ではありますが、おそらく調布祭2日目(11/26(土))に開催します。

次回も楽しんでもらえるように頑張ります。よろしくお願いします。

atnd.org

Emacsの設定をぶっ壊してしまったので作り直してる (あとGitHubのProjectsの機能を試してる)

タイトル通り。Emacsの設定を変更したらぶっ壊れてしまったので難儀してます。

github.com

加えた変更は今まで一つの init.el に設定を書いていたのを、init-loaderというパッケージを使って細かくファイルを分割して読み込もうということをしたかった。

ファイルの分割は上手くいったんだけど、他のパッケージの読み込みがされなくてひどいことになってる。

当然gitで管理はしているからロールバックは出来るけど、これを機に溜まっていた不満を一気に解消したいので踏ん張ろうみたいな気持ちになってる。

それと同時にGitHubの新機能のProjectsを試してる。Issue管理すら不要だけど折角なので使ってみてる。

パッと触わってみた感じだとIssueとラベル管理で同等のことは表現できるだろうけど、カンバンを使えるという点ではいいのかなという印象。個人で使ってると全然威力が発揮されなさそうなのでまあそうだよねという感じ。

見方によってはものすごく些細なIssue未満やラベルが無限に増えていくのをProjectsでnoteとカテゴリ分けをすることで解消できそうだけどこれも個人で使ってるからこう感じたのかも。

個人でカンバンを活用する知見を教えてほしいです。

インターン中に使った金額を計算した

こちらの記事と合わせて読むと良いのかもしれません。 benevolent0505.hatenablog.com


インターン中に使った金額をやっとこさ計算した。インターン期間でもらったレシートをなんとなく残しておいたので、いつか終わったら計算してみようと思っていた。

どんな店にいくら使ったのかを雑にまとめてみる。レシートの残っているものしか計算していないので実際はもう少し使っているはず。

食品

コンビニ等 パン屋さん 餃子の王将 行き帰りの駅 お土産
5,423円 915円 1,165円 791円 3,672円

食品以外

ヨドバシカメラ アニメイト 大垣書店 映画 京都国際マンガミュージアム
712円 626円 2,208円 5,700円 800円
合計
22,012円

表が大きくなったので食品類とそれ以外に分けた。

計算してみると食品とそれ以外にかけた金額がだいたい同じでびっくりした。使った金額を見てみると思ったより使ってなくて安心という感じ。レシートが残ってないものも合わせると30,000円弱になりそうだけど、まあ普通に1ヶ月間の内に使う金額と同じくらいなので良さそう。

以下お金を使った場所での思い出を書いてく。

コンビニははてなの入っている御池ビルの1階にセブンイレブンがあるので、就業の後にホテル組のインターン生とよく寄ってホテルに帰ってた。他はホテルの朝ご飯を逃がした日にサンドウィッチを買ってオフィスでよく食べてた。

パン屋も朝ご飯を逃がした日に散歩がてらに歩いて良さげなパンを買って食べてた。少し歩くけど進々堂というパン屋がおいしかったのでお勧め。


ヨドバシカメラでは雑なHDMIケーブルを買って、ホテルのテレビでdアニメストアのアニメを流してた。インターン中の意外な買い物の内の一つ。

アニメイトでは「アルテ」って漫画の5巻目を買ってた。その土地のアニメイトに寄って何かしらのものを買うと実績解除をした感じが自分の中ではある。

京都国際マンガミュージアムはホテルから徒歩5分で行けて僕の日曜日の時間を吸いつくしてくれたすごい場所だった。Kindle Unlimitedを具現化したらあんな感じになるんだろうなってところで、昼の1時から2時間くらい見物するつもりだったのが結局閉館時間の6時までいてしまい、完全に時間を溶かしてた。

大垣書店ではマンガミュージアムで気に入った「響〜小説家になる方法〜」って漫画の既刊全部を買った。この漫画は本当に面白くて、読むと絶対衝撃を受ける漫画なので是非読んでみることをお勧めする。

映画は「シン・ゴジラ」を2回*1、「君の名は。」を1回見に行った。MOVIX京都のある寺町通は、これが歴史ある京都にあるのかと思うくらい普通に栄えた商店街で、これも京都なんだなと意外に思った場所だった。*2


京都で1ヶ月弱生活してみた感想は普通に住める良さそうな街って感じ。それまでのイメージだと、有名な観光地であまり生活をする場所でないという思い込みだったけど、中心部はそんなことはない普通の都市で、しかも1箇所に集まってる感じなので徒歩や電車でのアクセスもしやすい良い街だった。

使った金額を見ると半分が自分の趣味や娯楽への出費で、たとえインターンに行ってホテル生活をしてもそういう性格は変わらないんだなというのを実感した。

最初は金額計算のつもりが思い出振りかえり会場となってて本題とずれてる感じがするけど、まあそういうことで。

*1:内1回はMX4D

*2:アニメイトメロンブックスとらのあなとかもこの商店街にあって、ここはすごい商店街だぞと思った記憶がある

幼稚園以来の充実した日々を過ごしたはてなインターンでの1ヶ月が終わった

はてなインターンで最高の夏を過ごしてきたid:miki_bene です。

インターン中でははてなブログのaboutページ編集機能「プロフィール」の下の部分に最終更新を表示する機能を作成しました。

とにかく最高だったはてなインターンに応募してから終わるまでの思い出を振り返ってみようと思います。

hatenacorp.jp

来るまで

僕がはてなインターンに応募してみようと思った理由は単純で、僕の2つ上の先輩のid:masawadaが2年前にはてなインターンに参加していて、やけに楽しそうな夏を過していたのが印象深かったからです。

そんなことを思いながら、応募するかとなったときです。いくつかの項目の他に自分のポートフォリオをまとめて提出する必要があったのですが、まとめるのが面倒で更に大学の課題やらサークルやらで忙しく、締切2,3日前になってあわててポートフォリオを書き始めた覚えがあります。

ポートフォリオ · GitHub

来年の応募のポートフォリオは、はてなブログaboutページに書いてもらえると嬉しいです。

前半過程

前半過程は講義パートでPerl, SQL・DB, WAF, JS, 機械学習, シスプラをやるカリキュラムで、シスプラ以外の各講義には課題が付いてきます。これらを1週間半で行うスケジュールで、割と過密なスケジュールになっています。僕は途中必須の課題が終わらなくて、間の日曜日や自由課題の空いた時間でなんとか終わらせました。

この期間で講師の人達に受けたコードレビューのお陰で、自分の「このくらい書けば良い(問題無いコード)だろう」と思う閾値が上った気がします。更に他の人が書いたコードも見れるので、同じ動作のコードを他の人が書くとどんな風に書くのかが見れてとても勉強になります。

また今年から本格的に機械学習の講義を行ったようなのですが、この講義がとても良くて、普段は意識することのないWebサービスコンピュータサイエンスの関わりを学ぶことができて本当に良かったです。大学の講義で聞いた覚えのあるような内容なんだけど、実務で使うという視点での話もあってとても興味深かったです。

この期間はとにかくコードを毎日書きまくった期間で、過去にはてなインターン精神と時の部屋だと表現した人がいましたが、まさしくそんな感じで、これまででこんなにコードを書きまくった期間はないと思うほど濃密な日々でした。

f:id:miki_bene:20160916185444p:plain

インターンSlackでのペアの人とのあたたかみのあるやり取り

後半過程

後半過程は各チームに配属されて新機能の開発を行いました。はてなブログコースで開発した機能は、はてなブログaboutページ編集機能と最終更新を「プロフィール」の下に表示する機能です。aboutページの拡充はブログチームの悲願*1だったらしく、そこに手を加えることができて良かったです。

残念ながら最終発表での優勝はできませんでしたが、個人的には最高の機能だと思っているのでとても満足です。

はてなブログのコードを実際に見てみるといろいろがあーでこーであーで、「これが、実際に動いているサービスのコードか」という感想でした。

開発の大部分はペアのid:susisuさんとペアプロをして進めました。ペアプロは初めての経験で、最初の内はペアの人の動きを追ったりするのに集中してしまい、コードを書いてる感じがしなかったけれど、慣れてくると良い感じに作業の分担が出来て上手くやれた方かなと思います。*2

機能がリリースされた瞬間は、まず機能がちゃんと動いているかどうかが不安でした。動作確認を終えると、今度はユーザからの声がどんなものなのかが正直不安で恐かったです。

けれど機能紹介のブログが公開され、好感触の反応をしてくれているブコメも付いて、実際に使ってくれている人が出てくるという体験はとにかく最高で貴重な体験でした。

staff.hatenablog.com

staff.hatenablog.com

LGTM

インターン終了2日前に謎の高まりを見せた僕

インターンで学んだこと (思い出したら追記していきます)

インターンで学んだこととして、Perlのような言語*3でもしっかりとやっていくという気持ちがあればはてなブログのような大規模なサービスでも運用することができるし、Perlを書いているからといって特別苦痛に感じることもあまりない。大切なのはどんな言語使うかではなくて、しっかりとした設計や丁寧なコードを書いていくといったことであったり、開発のしやすい環境やチームの体制であるということがあります。

具体的にどう丁寧なのかはid:hitode909さんの発表多分これあたりを見てもらえればいいけれど、これからインターンを考えている人*4も「あそこは○○の言語を使ってるからちょっと……」といって敬遠する必要はなくて、上に書いたようなことの方が重要だということを頭の隅みおいてもらえると嬉しいです。

総評

はてなインターンでの日々はとにかく最高の毎日で、こんなに毎日楽しい日々を過ごしたのは、幼稚園以来だったのではないかと思うほど充実した期間でした。2週間でWebアプリケーションを書けるようになり、チームに配属されて機能をリリースする。これだけのことを1ヶ月弱で行うので実際濃密です。

加えて濃い面子の同期に出会えたり、インターネットやブログで見たことのある人達と一緒になってコードを書くという体験もできるので、本当に色々なものが凝縮されてつまった日々でした。

はてなのエンジニアは優秀で最高の人達がたくさん集まっていましたが、特にブログチームのみなさんは本当に最高の人達でした。メンターのid:amagitakayosiさんはメンターというよりは一緒に機能を開発していた仲間という感じで、本当にお世話になりました!!!!!!!!

そしてこのインターンを準備してくださった、インターン実行委員長のid:daiksyさんもありがとうございました!!!準備に半年もかけてるらしく本当に、用意周到という感じです。

みなさん本当にありがとうございました!!!!!!!!

他のインターン

最後に他のインターン生を紹介します。

id:susisu : ブログチームでペアだった人, 半額シール susisu.hatenablog.com

id:upamune : ホテルで同室だった人, 芹澤優 http://blog.upamune.com/entry/2016/09/12/120000blog.upamune.com

id:polamjag : DJ, いろいろ凄い polamjag.hatenablog.jp

id:mr-sunege : 漫才プレゼン良かった mr-sunege.hatenablog.com

id:hantas : ISUCON, インターン終わった後すぐ台湾に行った人 blog.taniho.net

id:ak1t0 : CTF, 午前中がつらそうだった人 http://ak1t0.hatenablog.com/entry/2016/09/16/115333ak1t0.hatenablog.com

id:nakamura-takuya : お昼を良くおかわりしていた人

*1:id:uedayさん談

*2:特にsusisuさんはコードを書くのがとても早かったので、頭を追いつかせるのが大変でした。

*3:Perlをdisってるわけではないです

*4:はてなだけではなくて

JavaScriptでopenという名前の関数を作るとどうなるか

背景

今受けている大学の授業でJavaScriptを扱っている。

その授業で window.openという関数を用いて新しいウィンドウを開いたり閉じたりする関数を作るという課題が出ているのだが、この課題に取り組んでいる友人がプログラムが動かないと言っていたので、コードを見たところ下のようなコードを書いていた。

<script>
function open(a) {
    window.open(a);
}
<script>
<body>
    <input type="button" onclick="open('~~~~')">
</body>

このコードが動かない理由について下で書いていく。

何故動かないのか

JavaScriptは関数の外に作成した変数や関数、例えばscriptタグの中に直接書き込んだ変数や関数はグローバル変数やグローバル関数となる。

下のコードは変数messageと関数helloをグローバルな変数や関数として宣言した例だが、window.messagewindow.hello()とやってもmessage変数の参照やhello関数の実行が出来る。

<script>
var message = "Hello, world!";

function hello() {
    alert("hello");
}

alert(window.message); // "Hello, world!"とアラートが出る
window.hello(); // hello関数が実行され、helloとアラートが出る
<script>

何故これで実行出来るのかというと、実はJavaScriptではグローバル変数やグローバル関数を作るということは、グローバルオブジェクトのプロパティとして定義するということを意味する。グローバルオブジェクトとはその実行環境の一番トップにあるオブジェクトのことだが、ここではwindowオブジェクトのことだと思えばいい。

なので関数の外でvar message;function hello() {}windowオブジェクトのプロパティやメソッドを宣言していることと同じなのだ。その為、window.messagewindow.hello()で変数の参照や関数の実行が出来る。

このことを考えると先程のコードが動かない理由が説明できて

<script>
// window.openの再定義
function open(a) {
    // 再定義された window.openを呼び出す
    window.open(a);
}
<script>
<body>
    // クリックしたが最後無限ループ地獄へ
    <input type="button" onclick="open('~~~~')">
    // エラーが出る
</body>

function open(a) ~の記述で、既に存在しているwindow.open関数を再定義する形になる。その再定義したopen関数でwindow.openを呼んでいるのでいつまでも再帰呼び出しがされ、無限ループが発生する。

ちなみにChromeではUncaught RangeError: Maximum call stack size exceeded(…)というエラーが発生する。これはスタックオーバーフローのエラーで、JavaScript再帰処理を行ったときにを行いすぎたときに見かけるエラーである。 FirefoxInternalError: too much recursionとエラーが出た(まんまだな……)。

まとめ

JavaScriptを理解してないとこういうこともある。割と初級者がハマることで「JavaScript グローバル汚染」とかでググると似たようなことが書いてある記事が一杯ある。

一応授業的にはこれを回避する予防線を張ってるみたいで、

ウィンドウを生成する関数createNewWindow ("URL")を作ること.また,引数として表のURLの何番目(n)かを受け取り,対応するウィンドウを閉じる関数closeWindow (n)を作ること.

と書いてあった。でも説明の仕方を考えればグローバルオブジェクトのことを説明できたと思うしフォローのやり方はもっとあるんじゃないかなあと思う。*1

参考

developer.mozilla.org

JavaScriptについて本格的に勉強したいと思ったらここだけを読むといいと思う。他のサイトが全く信用できないわけないないけどMDNは割と信用できる。

パーフェクトJavaScript (PERFECT SERIES 4)

パーフェクトJavaScript (PERFECT SERIES 4)

JavaScriptの本はサイ本とこの本しかよく知らない。だいぶ古い本になっちゃったけど言語仕様をわかりやすく書いてあるのでオススメではある。

*1:授業自体は様々な言語に触れて、色々なパラダイムを学ぼうというもの。JavaScriptはイベント駆動型プログラミングのテーマで扱われている。全4回しかなく、限られた時間で説明するために詳しくやらないのはわかる。わかるけど………

つっこむぞ つかまれッ!

はじめに

これは UEC Advent Calendar 2015 11日目の記事です。

こんばんは、benevolent0505です。UEC Advent Calendar 2015への投稿は2回目となります。2日目に急遽今回書くつもりだった記事を載せてしまい内容に困ってしまったので、僕の最近のお気に入りの漫画「ポプテピピック」のことでも書いてお茶を濁そうと思います。

読んだことがない人はとりあえず見てみましょう。僕は一切の責任を負いませんが。 mangalifewin.takeshobo.co.jp

このまとめを見るだけでもぶっちゃけ十分です。 togetter.com

であい

初めてポプテピピックのことを知ったのは、僕の所属しているサークルの先輩 @twismiko さんが確か「みきおくんこれすごいよ、訳がわからない」的なことを僕に言いながら部室で見てたのを横でのぞいていたのが始まりでした。(多分、きっと、、そんな感じで…)

僕もはじめの感想はわけわかんねえなこれと言った感じでしたが、更新が来るたびに見て、笑い、次第にのめり込んでいってしまいました。 特に時事ネタという名のパクリを恥ずかしげもなくぶっこんでくる態度と、コピペをこれでもかというくらいに使って描く量を減らす姿勢は最高です。どこからこんな発想が生まれてくるんだと感心するしかありません。

便利な画像たち

そんなポプテピピックの中で僕が注目するのは便利な画像たちです。

例えばこれ

間違えたこっち

頭おかしいけど便利でしょう? Twitterの画像リプも捗るわけです。

こうなってくるともっと他の場所にも使いたくなりますよね? 例えばGithubやGitlabのコメントの画像の画像に使いたくなってきませんか? いわゆるLGTM画像と同じノリです。

電通大生ならGitくらい普段から使うでしょうしPull Requestをバンバン送っている人もいると思います。使ってみたくなりましたよね? 使いましょう。

そんなことを言われてもどれを使えばいいのか迷ってしまうと思います。そこで僕が「これは使える」と思った画像をいくつか紹介していきましょう。

普通のLGTM

https://pbs.twimg.com/media/BzvWk7cCUAATBCN.jpg

理解した時

コピペばっかなコードを見た時

浮かれたコードをレビューした時

各種レビューコメント用

議論がまとまらない時

よく確認しないでマージするとき

ひとまずとりあえずこんなところでしょうか。

おわりに

いかがでしたでしょう、皆さんポプテピピック画像を使いたくなってきたでしょうか? こんな煽り合いを行うチームのプロジェクトが成功するとは思えませんが、皆さんも是非Issueやプルリクのコメントにポプテピピック画像を使いまくりましょう。

さて、こんなポプテピピックですがアンチの罠により現在は連載が終了してしまいました。 しかし奇跡的にポプテピピックは単行本化がされています。今は品薄の状況らしいですが、作者も知らない内に出ていたKindle版やその他電子書籍ならすぐに読めるでしょう。

www.amazon.co.jp

気がついたら12日になってしまいました。 もっともっと画像を紹介したいですが収集がつかないのでこのあたりで止めておきます。 駄文かつめちゃくちゃロードが重たい記事になってしまい申し訳ありませんでした。

次回は @alstamber さんの記事です。