金曜日のネコ

8割日記、2割技術

3日間滞在した北品川が良い街だったという話

先月、就活のために東京に行った。

4月の最終週の火曜日に東京入り、五反田で一泊した後水曜日にとある御社の面接、そのまま土曜日まで北品川のゲストハウスに滞在して就活イベントに参加した。

本当は土曜日の内に岐阜に帰るつもりだったのだが、福井の勉強会で知り合ったうなすけくんの家に一泊させてもらって日曜日に岐阜に帰った。(突然押しかけたのに泊めてくれてありがとう)

Where is 北品川

品川区の北部に位置する。町域北部は港区高輪・港区港南に接する。

北品川 - Wikipedia

品川駅から京急線に沿って南に下った辺りにある街だ。品川駅は駅名に「品川」を冠しているのに港区らしい。

大学院の同期に教えてもらい宿泊したゲストハウスが京急北品川駅のすぐ近くにあった。

bp-shinagawashuku.com

北品川の魅力

宿場町の趣きがあり良い雰囲気

慶長6年(1601年)に、中世以来の港町として栄えていた品川湊の近くに設置され、北宿、南宿、新宿にわかれていた。場所は、現在の東京都品川区内で、北は京急本線北品川駅から南は青物横丁駅周辺までの旧東海道沿い一帯に広がっていた。

品川宿 - Wikipedia

東海道を東京から下る場合には一番目の宿場町らしい。写真は撮らなかったが宿場町の雰囲気を醸している街の外観は散歩していてもなかなか楽しい。

街には鮮魚屋があったり八百屋があったり、地元の方々の生活の営みが感じられるのも地方都市の国道沿いで生まれ育った私にとっては惹かれるものがあった。

そんな街が品川駅のすぐ近くにある

品川駅といえば言わずと知れた東京のターミナル駅だ。駅前には大企業の本社ビルなんかが沢山ある。

北品川から15分北に歩けば品川駅に行けるし、逆も然りですぐに北品川に帰ってこられる。控えめに言って住みたい。

海が近い

宿から少し歩けば海が見られるのは海無し県民にとっては魅力を感じるポイントである。海無し県民は海が好き。

f:id:nasustim:20180513012131p:plain

気分転換に海まで歩ける生活、良い。

まとめ

東京に住みたい.......。

www.youtube.com

関数型初心者がScalaを勉強した(その2)

前回

nasustim.hatenadiary.com

TL;DR

手続き型しかやってこなかった人間が関数型言語の作法を知るまで。

関数型言語とは

これに関しては様々な議論があるし僕も確かなことは分からないのだが、一番根っこにある思想は「副作用の無い関数の組み合わせでプログラミングを行う言語」だと思う。

What is 副作用

  • その関数の外の世界に影響を及ぼさないこと

オブジェクティブなJavaScript

ファンクショナルなScala

オブジェクト指向の書き方を使ったJavaScriptはMeクラスのコンストラクタ内で定義されたメンバ変数[ age ]の値をaging()関数で操作しているので「副作用がある」。

一方Scalaの方は、操作する対象となる変数を引数とし、操作された結果を戻り値として返す「副作用のない」関数を定義し、その関数に値を噛ませることでプログラミングを行っていく。

JavaScriptでお馴染みの[ Array().map() ]や[ Array().forEach() ]も入力として処理を加える値や処理を持ち、処理結果が戻り値として出力される(map()だけ)ので関数型言語のお作法に近い。

とはいえScalaはマルチパラダイム(関数型+オブジェクト指向)の言語であるし、手続きを記述して逐次的に処理をさせていると言われればそれもそうなので、純粋な関数型言語を学びたくなったらHaskellとかOCamlを勉強しようと思う。

関数型言語でプログラミングをするとどういう嬉しいことがあるの

ソフトウェアがどんどん複雑になるにつれ、それを上手く構造化することがますます重要になっている。上手く構造化したソフトウェアは書きやすく、デバッ グしやすく、かつ、将来のプログラミングコストを引き下げるために再利用可能な部品群を提供するものである。従来の言語では問題を部分化する方法について概念的な限界がいくつかある。関数型言語はこれらの限界を押し広げるものである。

なぜ関数プログラミングは重要か

その他

関数型言語にはカリー化とかモナドとか重要キーワードがあるけれど、深入りすると沼にハマりそうなので余裕のある時に。

関数型初心者がScalaを勉強したメモ(その1)

偉大なリファレンス様

TL;DR

  • 環境の使い方とクラス周りの知見

About Scala

環境構築

  • Homebrewでsbtをインストール
  • ワーキングディレクトリを作成&移動
  • [ sbt ]コマンドを実行。動作環境を構築(npm initのような儀式)
  • [ ******.scala ]ファイルを作成、記述

実行

  1. [ sbt ]コマンドでscalaのコンソールに入る
  2. [ compile ]コマンドでコンパイル
  3. [ run ]コマンドで実行。Appクラスを継承しているオブジェクト一覧が表示されるので実行するオブジェクトを選択

変数宣言

型推論も使えるけどなるべく使わない。

Scalaのクラス

  • objectとclassの違いはシングルトン(一つのプログラムの中でインスタンスを一つしか作らない)であるかどうか
  • traitというクラスもある(コンストラクタを持たないクラス、継承元として宣言)

Node.js環境でのUnicode文字

TL;DR

イマイチ使い所が限られてくるけどUnicode文字をidentifierに使うノウハウ。

動作環境 

f:id:nasustim:20180507222332p:plain

バージョン10リリースおめでとうございます🎉🎉

Node.js環境でのUnicode文字の扱い

Valid JavaScript variable names in ES2015 · Mathias Bynens

The ES5 spec allowed implementations to base their identifier support on Unicode versions as old as Unicode v3.0.0. ES2015 lists Unicode v5.1.0 as the minimum Unicode version required for compatibility.

 Unicodeバージョン3.0までなのでかろうじて漢字は書けそう。

実行

これは普通に実行可能

しかし

これは実行できない

なぜか

クラス名、メソッド名、関数名は変数名とは別のフィールド。詳しくはBabylonでAST化。

ソリューション

これで解決

Travis CIの使い方メモ(その1)

TL;DR

Travis CIの設定からテストコードの実行方法まで、

今回は自動デプロイは含まない。

アカウント取得

ここから

https://travis-ci.org/

アカウントをGithubと連携させる。

CIを適用するリポジトリを登録

チェックを入れる

f:id:nasustim:20180507215402p:plain

ちなみにこれがテスト用のリポジトリ

github.com

自分のアカウントにForkしてローカルにクローン。

pushの際にテストスクリプトを走らせる

上記のtravis-broken-exampleはPHPファイルの中の評価式がfalseなのでテストはエラーを返す。

Travis CIはリポジトリのルートにある『.travis.yml』に記述した設定ファイルを読んでテストを実行する。

  • language: テストを実行する環境を記述(Node.jsの場合はnode_js)
  • node_js: テストの実行環境を記述(stable, 5など)
  • script: 実行するテストの内容、リポジトリのルートでディレクトリで実行される
  • branches: テストを実行するブランチについて
  • notifications: 成功/失敗通知について

Node.js環境でのテスト

あまり詳しくないけど、「nodejs テスト」とかググると色々なテストフレームワークがヒットするので、それに沿ってテストコードを書くと良さそう。

postd.cc

フロントエンドの場合は上記のコード通りビルドを実行しておけば良いと思います。

M2になります

皆さまごきげんよう。お久しぶりです。

明日2018/04/01から修士の2年生になります。

得たもの

  • 作ったモノの意味を考える/意味を考えてからモノを作る習慣

この学校で得たと言うか、僕に備わっていなかった習慣でした。大事。

  • 今までの環境ではできなかった経験

プロジェクトでSONYさんとの共同研究に参加させてもらったり、OTON GLASSという今をときめくスタートアップで実業務に携わらせてもらったり、貴重な経験でした。

失ったもの

  • 技術を研鑽する習慣

これは言い訳になってしまうのですが、考えることにかまけていて新しい技術を自分の中に取り込む事を怠っていました。

去年の12月から細々と就活をしていて何社かでは人事の方やエンジニアの方と実際に話させていただいたのですが、技術力の無さを実感しました。

この3月で何とかエンジニアとしてのアウトプットをしようと考えていたのですが、叶わず。

  • 学外の繋がり

最近知り合いのイベントにほとんど行けていなくてつらい。

研究について

研究テーマを固めたと言うかもう後戻りができない時期なのですが、構想発表の研究タイトルは「プログラムソースコードによる表現の可能性」というザックリとした感じでいきます。

github.com

ソースコードの記述というのはプログラミング言語の設計思想やプログラマがどんな技術コミュニティに属しているかが顕著に反映されると思っていて、

例えば僕はCから初めて、今一番手に馴染んでいるのはJavaScriptという、C系の手続き型言語をずっと書いてきた人なのですが、

昔僕がLispを書く機会があってネットのコードスニペットを眺めていたら、

という感じで書かれていました、おそらくLispネイティブの方はこの書き方が一番しっくりくるのでしょうが、手続き型言語をやってきた僕にとってはどうも気持ち悪く、

みたいな書き直しをしたり、それぞれの言語圏による記述だったりとか、そういうエンジニアリングコミュニティごとの文化の違いがとても面白いと思っていたりします。

ソースコード自体がエンジニア一人一人の表現になって、またそれを読む時にもソースコードを読む時に必要な、謂わばプログラマリテラシを介在させることで、自然言語とは違った表現を行えないかなと思っています。

就活

まだ内定/内々定はいただけていません。NNNT(無い内々定)です。

nasustim.com

一通りのスキルセットやいままでやってきたことについてはポートフォリオサイトにまとめてあります。コレは誰にも負けない!といった分野が無く浅く広くなエンジニアなのは承知ですが、最近は大体Node.js環境でコードを書いています。ポートフォリオサイトも最近Reactで作り直しました。

できれば東京方面で就職したい......何か良さげな話があったらこっそり教えてください🙏🙏🙏

 

ひびの

NxPC.Live vol.31 @ CIRCUS TOKYO に来てくれ!!

Acknowledgements

 - カッコいいwebページを作ってくださった永松先輩と加藤先輩に感謝。

nxpclab.info

 - Simple is Bestなフライヤを作ってくださった「装飾は悪である」デザイナお兄さん荏原マンに感謝。

 - NxPCのSNS担当いいじまボーイに感謝。 

www.facebook.com

 - NxPCのオーガナイザ、平林先生に感謝。

www.iamas.ac.jp

 - 最後に、一年間色々思うところはあったけど、なんとか書紀を3月までやってきた俺に感謝。

nasustim.com

本題

NxPC.Live vol.31 @ CIRCUS TOKYO、やっていきます!

以下、スペシャルゲストの皆さま

  • tomad

ノリに乗りまくってるMaltine Recordsのtomad社長。一昨年のクラブトレインでのDJも最高だったし終電逃しちゃった時間帯に踊りまくりたい。ご結婚おめでとうございます!

  • Qosmo

AIDJのパフォーマンスで人気沸騰のQosmoの皆さま。社長の徳井さんはDJとしても超一流との噂。楽しみ......!

Event Information

Datetime: 2018-03-20 21:30~

ADV: ¥2000

Door: ¥2500