LINEエンジニアインターンに参加しました
8月8日〜9月2日まで,「LINE Summer Internship 2016 Engineerコース」,通称40万インターンに参加してきました.
選考
募集要項ページに書かれているとおり,書類選考→技術テスト→面接 という流れでした. 書類選考後の技術テストはmecab-ipadic-neologdを使ったもので, こんな感じでGitHubのリポジトリの形で提出を行いました.
その後の面接では技術テストの内容についてや,LINEのインターンで何をしたいかなどを話しました. 面接は対面で行ったので交通費が無駄にならないかヒヤヒヤしましたが,帰り際に新幹線代を現金でポンとくれました.最高.
インターンの様子
LINEはちょうど上場後だったで,オフィスには胡蝶蘭がところせましと置いてました.
こちらがオフィスの眺めです.
レゴゾーンにあったシン・ゴジラ.
もちろんインターン中は遊んでいるだけではなく,課題にもちゃんと取り組んでいました.
LINEのインターンは面接時の希望に応じてそれぞれ違う部署に配属される形になっていて, 私はLINEポイントのチームで新機能を作っていました. 部署によっても違いますが,開発をしていく際には特に技術的な縛りはなく, どちらかというとインターンの期間中にちゃんと定めた目標を達成することを重視していると思います. また実際にチーム内ミーティングにも参加することもあり,メンターの方からは大規模なサービスならではのアドバイスがあったりしてとてもためになります.
こんな感じでいろんなテーブルがあり,思い立ったらシュッとミーティングができます.(いつも埋まっている)
美味しいコーヒーもたくさん飲めます.10円玉の調達に困るところが欠点です.
実はヒカリエオフィスはスペースが無くなりつつあるらしく,来年には新宿ミライナタワーへ引っ越すとのことです. 一体新オフィスはどんなオシャレ空間になるんでしょうか…
インターンに行こう
LINEインターンはこんな人におすすめです. きっと良い経験になりますよ!
- 多くの人に使われるサービスを開発してみたい人
- 大規模バックエンドの裏側を知りたい人
- 大量のデータをいじくり回したい人
- 凄腕エンジニアにビシバシコードレビューされたい人
- 40万円がほしい人
同じくインターンに参加していたメンバーの感想エントリも紹介します(随時追加).高校生で本を書いていたり,OpenJDKのコミッターだったり,インターン中に海外に研究発表に行ってたり,どの人も強そうでとても刺激になりました.精進します.ハイ…
「はじめる React Native」メイキング
事後報告になってしまい申し訳ないのですが、先週のコミックマーケット90で個人サークル「pentapod」として、このような本を頒布していました。
おかげさまで売れ行きは順調で、Twitter等でも感想を見かけることがありとても励みになりました。有り難い限りです。 ところで、この本は組版にVivliostyleを利用したCSS組版を採用しており、 組版について言及したツイートも頂きました。
これ開いて、「なかなか凝った組じゃないの…」と思っておしまいのほう見たらVivliostyleでCSS組版です!って書いてあって唸り声でた https://t.co/9LfwSqT3dr
— わかめ@3日目西a-05b (@vvakame) 2016年8月18日
せっかくなので、「はじめる React Native」を入稿するまでに行った手順を紹介しようと思います。
執筆
CSS組版を使うにあたり、どのような形で原稿を書くかは少し考えるところでした。 CSSでレイアウトを作成するため、当然最終形はhtmlになるのですが、生でhtmlを書くのは面倒ですし、 かといってMarkdownからhtmlを生成する方法ではレイアウトを考える時点で柔軟性が足りない可能性がありました。 そこで、今回はPug(Jade)を使ってhtmlを生成することとしました。
Pugについては公式ページを見れば一目瞭然なのですが、これはインデントで入れ子を表現する形のhtmlテンプレートエンジンです。Pugにはフィルタ機能があり、これを使うことでテンプレート内でMarkdownを使うことも可能です。これであれば、執筆時にあまり手間を掛けずに思い通りにhtmlタグを作ることができます。
このような感じでmarked
やcode
といったフィルタを作成し、その中に文章やコードを書いていきました。PugのビルドにはGulpを使ったビルドスクリプトを用意して、htmlを生成しました。
レイアウト
執筆と平行して、ページのレイアウトの試行錯誤も行っていました。 レイアウト前は単にCSSを組む作業だと思っていたのですが、この工程が存外に時間がかかり難航しました。 これはVivliostyleがまだ策定中のCSS仕様を先取りで実装していてインターネット上に情報が少なく、Vivliostyleで使うことのできるCSSの情報を得るためには、W3Cを資料を読むしかないという状況が多くあったためです。(CSSやEPUBの勉強にはなりましたが…)
実際にレイアウトを行う際にはこちらのVivliostyleサンプルページが非常に参考になり、特に「CSSシークレット」はCSSソースコードのかなりの部分を流用しています。
実際のCSSはStylusで書いており、レイアウト作成中はVivliosytle.jsでプレビューを行って、最終的にはChromeの印刷機能を使って完成品となるpdfを生成しました。ここで、後述するテンプレートにピッタリ合わせるためにCSSでページサイズを182mm 257mm
に、余白を3mm
に設定しています。
入稿
印刷はグラフィックに依頼しました。オフセットB5フルカラー(表紙:片面カラー/マットコート/135kg 本文:52ページ/上質/90kg) を100冊印刷して89,460円です。学割が効けばここから1割引してくれます。
グラフィックでは入稿用のテンプレートが用意されており、入稿を行う時はIllustratorを使って手作業でpdfのページをテンプレートに貼り付けていきました。この時、フォントのアウトライン化に漏れがあり、再入稿を行ったため早期入稿を逃してしまいました…結局テキスト全選択→アウトライン化→保存をバッチ処理にして行ったのですが最初からこうすれば良かったですね。
技術系同人誌を作ろう
普通こういった情報はブログやQiitaなどで公開することが一般的ですが、僕は一冊の本としてまとめた形で公開するのも一つの手段だと思っています。体系的にまとまった情報は、インターネット上では貴重なものです。ぜひ世界中で他にはない同人誌作りにチャレンジしてみてください。
文章以外のファイルを公開しています。完成形となるCSSのソースコードは実家のPCに置いてしまいコミットできていませんが、来月くらいに修正します。
「はじめる React Native」は電子版でも販売しています! 書籍版も取り置き承ります🙏ご興味あればどうぞ🙏
Arduinoから取得した情報をMackerelで見る
ゴールデンウィーク暇すぎて,以前衝動買いしたArduinoで何か作れないかと思い立ち, 部屋の温湿度を見られるようにしようということになりました.
TL;DR
Arduino→PC
使用した部品は以下の通りです.見た限りDHT11以外はArduinoをはじめようキットに含まれているようなので,そっちを買うのが手っ取り早いです. (なお,僕はこのキットを日本橋にて9000円で買ったのですが,同等品がAmazonにて4000円以下で売られていることをTwitterで教えられめっちゃ不機嫌になったのでAmazonで買うことをおすすめします)
- Arduino Leonardo
- USBケーブル
- 温湿度センサ DHT11
- カーボン抵抗 10kΩ
- ブレッドボード
- ジャンプワイヤ 4本くらい
Arduinoと部品を以下のような感じで繋いでいきます.
https://www.arduino.ccからAuduinoのIDEをインストールしたら,「スケッチ>ライブラリをインクルード>ライブラリを管理」から,「DHT sensor library」を検索してインストールします.
ライブラリをインストールしたら,早速Arduinoで実行してみます. GitHubに上げているwatcher.inoをIDEにコピペしてみてください.
ArduinoをUSBで接続したあと「ツール>シリアルポート」を確認し,接続したあとに現れた項目を選択します.また「ツール>マイコンボード」でArduino Leonardoを選択します.そして「スケッチ>マイコンボードに書き込む」を実行すると,Arduinoにプログラムが書き込まれます.
書き込みが終わったら正しく動作しているか確認してみましょう.「ツール>シリアルモニタ」を開くと,Arduinoから送信されるシリアル通信を表示できます.(ボーレートは9600bpsとしておきます)
PC→Mackerel
Arduino側が完成したら,常時起動してArduinoからの信号をMackerelに送信するPCを用意します*1.今回は自室の片隅で動いている録画サーバーにぶっ込むこととします.ちょうどこのサーバーでは既にMackerelを導入していたので好都合でした.
PC側で実行するスクリプトは,シリアル通信を受信して標準出力を行うだけなので,各自お好きな言語で書いたらいいと思います.今回はJavaScriptで書きました.作成するスクリプトの出力は,以下のページの仕様に従うようにします.
具体的には,プログラムを実行すると,{出力項目の名前}\t{出力項目の値}\t{UNIX時間}
という行を表示したい項目(温度,湿度など)の行数だけ出力するようにします.
また,環境変数MACKEREL_AGENT_PLUGIN_META
に1が設定された状態で実行すると,1行目に# mackerel-agent-plugin
を,
2行目からは設定情報を含むJSON形式のテキストを出力するようにします.
$ node main.js odango.humidity.my_room 19.00 1462368181053 odango.temperature.my_room 22.95 1462368181053 $ env MACKEREL_AGENT_PLUGIN_META=1 node main.js # mackerel-agent-plugin { "graphs":{ "odango.temperature":{ "label":"Temperature", "unit":"float", "metrics":[ {"name":"my_room","label":"My Room"} ] }, "odango.humidity":{ "label":"Humidity", "unit":"percentage", "metrics":[ {"name":"my_room","label":"My Room"} ] } } }
もし僕の書いたコードをそのまま使うのであれば,GitHubからコードをcloneしたあとmetrics.sample.json
とdefs.sample.json
をそれぞれ
metrics.json
,defs.json
という名前でコピーし,適宜JSONの内容を書き換えて下さい.
スクリプトが完成したら,Mackerelの設定ファイル(/etc/mackerel-agent/mackerel-agent.conf
)に以下の内容を追記します.
[plugin.metrics.arduino] command = "node /path/to/script/main.js" # 作成したスクリプトを実行するコマンド
忘れずにArduinoを接続したら,mackerel-agentを再起動してmackerel.ioを見てみましょう.1分ごとにグラフが伸びていくはずです.
所感
電子工作ができなくても,ArduinoとMackerelどちらもシンプルな仕組み&ネット上に情報がたくさんあるので,拍子抜けするくらい簡単に終わります.興味のある方はぜひ.
ただ,Mackerelの無料アカウントでは1日しか情報を表示できないのが残念.せめて7日だけでも…
Arduinoをはじめよう 第3版 (Make:PROJECTS)
- 作者: Massimo Banzi,Michael Shiloh,船田巧
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/11/28
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
Arduinoをはじめよう 互換キット UNO R3対応互換ボード 初心者専用実験キット 基本部品セット20 in 1 Arduino sidekick basic kit
- 出版社/メーカー: vership
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
EasyWordMall DHT11温湿度センサーモジュール Arduino用
- 出版社/メーカー: Apple Trees E-commerce co., LT
- メディア: その他
- この商品を含むブログを見る
*1:「常時起動しているPC」のハードルが高いようなら,Raspberry Piを使うのもいいでしょう
マレーシア行ったけど最高だった
2月末から4週間語学留学のため、マレーシアのクアラルンプール(KL)で過ごしていました。 ところが、マレーシアは観光地としても最高であることが判明しつつあります。
料理
マレーシアの多民族文化によりバラエティ豊かな料理が(格安で)食べられます。
手っ取り早く食べたければ、ショッピングモールのフードコートに行くことによりマレー、中国、インド、タイ、韓国、日本(妙に高い)料理にありつけるでしょう。
こちらはotak-otakという名前のオタクっぽい料理です pic.twitter.com/S48bXBAtZI
— 緑豆はるさめ (@spring_raining) 2016年3月19日
ビールが飲みたくなればチャイナタウンへ、 アラブからの観光客も多いため、KLには中東料理店も多くあります。
当然南国のフルーツもよりどりみどりです。 小さな果物ナイフを用意して、マンゴー、ドラゴンフルーツ、マンゴスチン、ロンガン、サワーソップを食べましょう。
— 緑豆はるさめ (@spring_raining) 2016年2月29日
マンゴスチンはいいぞ。
観光スポット
マレーシアはイスラム教が国教で定められており、入場可能なモスクが多くあります。
とはいえムスリム一辺倒ではなく、すぐ近くにカラフルな寺院や白い教会があったりする。
中心部はよく交通機関が整っていて、観光スポットは初乗り30円の電車と地下鉄、 モノレール、無料のGOKLバスでほぼ巡れます。会話をする際もほぼ全員が英語を話せるので、英語が理解できる人は何の問題もないはずです。 *1
また外は暑いので、至る所にあるショッピングモールで涼みながら観光しましょう。
クアラルンプールに飽きたら他の地方へ遠出しましょう。 マレーシアにはエアアジアという神が存在し、国内至る所へ激安で飛ぶことができます。 バスに乗ってKLIA2へ行き、様々な島へ飛びましょう。
ところでマレーシア第2の観光都市はペナン島らしいですが、あまのじゃくなのでランカウイ島に行きました。
島は最高。レンタカーを借りられたらなお良かったですね。
治安
これほど多民族の国にもかかわらず治安は良く、1ヶ月過ごしても危険を感じたりスリに遭うことはありませんでした。 まれにいる呼び込みも一言断ればあっさり帰ってくれて、むしろ日本のほうがしつこそう。*2
ただ、今はテロの可能性が高いせいで、ショッピングモールなどではときおり軍が警備をしています。 日本のようなノーガード戦法とは違うことを実感するでしょう。
インターネットは偉大
マレーシアは良い国ですが、もしインターネットが無ければマレーシアに行くことはなかったでしょう。
道に迷ってもGoogleマップを開けばいいし、飯の場所に困った時もTripAdvisorで検索すれば解決します。 GrabやUberを使えばタクシーもすぐ呼び出せます(使う機会は無かったですが)。最高な時代だと思いませんか?
そんなわけで、マレーシアに行くときは忘れずSIMフリー端末を用意しましょう。 ついでに写真をTwitterにアップしまくりフォロワーに自慢しましょう。
マレーシアへ行こう
帰路です…🙍🙇🙍 pic.twitter.com/EknmMo2OSB
— 緑豆はるさめ (@spring_raining) 2016年3月19日
日本に帰って全てへの興味を失った…
— 緑豆はるさめ (@spring_raining) 2016年3月21日
7E0
一年の計はなんとやら、というわけで、今後の目標のようなものを考えています。
使ってもらえるアプリケーション制作
最近までは、Girafの開発をしていました。出来上がったものは確かに多機能でしたが、使いやすさという面では独りよがりなものになってしましました。今後はGirafに限らず、誰でも使いやすいようなアプリケーションを作っていくのを目標にします。
また、これからはプロモーション的な事にも力を入れたいですね。せっかく作ったのに誰にも使ってもらえないほど悲しいものはありません。というか、使ってください!!!
英語
英語、僕は読む方は出来ないことはないのですが、聞いたり話したりに関しては本当にだめで、何とかしたいと思っていました。
丁度アルバイトでお金が貯えられつつあったので、2月下旬から1ヶ月語学学校に留学に行くことにし、今はもろもろの手続きを行っているところです。予算を鑑みて、行き先はマレーシアにしました。
とはいえ、気分はほぼ旅行という感じなのでまるで身につかなそう。今もマレーシアについて調べていますが、ナシレマ、バクテー、ラクサとどれも暴力的に美味しそうな食べ物ばかりで、英語ではなく飯情報ばかり身についています。
コミケにサークル参加
ここ数年はコミケに行くことが恒例となっているのですが、最近は一度自分で装丁した本を作ってみたいと思っていました。今度の夏コミに向けて申し込む予定です。
肝心のネタはいくつか考えているので、その中で一番実現可能なものが完成品になりそうです。が、果たして完成するのか。
卒業
ところで、上の目標って大学に復学したときのことを全く考えてないような…卒論…院試…ウッ頭が… 大学生活不安しかない。目標は前期のうちに取りこぼした単位を全て取り切ることです。
絶対に1年で卒業する。多分… きっと……