TypeScriptでChrome拡張を書くテンプレートリポジトリを作った

去年の7月からお世話になっている京都のIT系学生コミュニティCAMPHOR- にて,『漸進的型付けを語る会』という素晴らしい催しがありまして,そこでTypeScriptの概要を発表しました.イベント自体については,そのうち公式ブログ http://blog.camph.net/ にレポート記事が上がりますので,興味のある方は見てみてください.

今回の調査に乗じて,拙作のHoogleSwitcherをTypeScriptで書きなおしたのですが,ビルド環境が割と良い感じになったのでテンプレートにして公開しました!このまま使えなくとも,各種設定ファイルくらいは参考になると思うので良しなに使ってください.以下では関係ツールを黙々と紹介します.

github.com

gulp

JS界隈ではおなじみのビルドツール.他の様々なビルドツールAPIをストリームとして組み合わせて処理を記述します.学習コストは高めですが強力なツールです.今回のテンプレートでは主に以下の操作を記述しています.

  • gulp watch
  • gulp test
    • ビルド(型検査)とLint
  • gulp pack
    • ビルドして公開用のzipファイルを生成する

webpack

最近注目を集めている(?)フロントコードのビルドツールです.browserifyと同系列のツールだと思えば大体合っているのではないでしょうか..tsファイルの変換を行うように設定し,gulpから使用しています.

typings

TypeScriptの型定義ファイルを管理するツールです.既存のライブラリを含めた型検査を行う場合に別で用意された型定義ファイルをダウンロードして読み込む必要があり,それらの一覧や設定を管理してくれます.

Wantedly SPRING INTERNSHIP 2016 に参加しました

3/2(水)〜3/4(金)の3日間,「Wantedly SPRING INTERNSHIP 2016」に参加しました.

www.wantedly.com

1日目

CEOの仲さんからプロジェクトを作るための心構えやノウハウを講義していただき,ZOOS(Wantedly Zero to One Objective Setting)という枠組みで新規事業をチームで考えていきました.アイディア出しに1時間,モック作成に3時間と非常に過密なスケジュールでしたが,各段階で仲さんのフィードバックをいただきながら新規事業を創出することに成功しました.実際に市場にインパクトを与えている経営者からのレビューは非常に鋭く,自分たちではたどり着けないところまで思考を引き上げていただきました.

2日目

2日目は打って変わってコーディング漬けの一日でした.実際に稼働しているWantedlyの新卒採用ページをReact.jsで置き換えることを目標に講義と演習を繰り返しました. まず最初に,HTML/CSSのレベルでトップページの一部を再現しました.制限時間は1時間,一番早かった人にはプレゼント(大嘘)というスピード感のある環境で,普段はあまり書かないCSSに一気に取り組めました.答え合わせのコーナーでは,Flexboxによる簡単なレスポンシブデザインなど比較的新しい技術についての説明もあり参考になりました. それが終わると次はReact.jsの講義・演習をしていただきました.Reactはそろそろ実践してみようと思ってチュートリアルを読んだりしていたので非常に興味を持って取り組めました.WantedlyでもReactを用いたSPAに切り替えていく流れがあるという話もこぼれ,積極的に新技術を採用するWantedlyのバイタリティを感じました. 合間に社員の方との昼食をはさみながら講義・演習を乗り越え,18時頃からはひたすら実装しました.メンターの方が「今夜は徹夜だね」とぼやいたのを半ば真に受けるくらい熱量のある場でとても刺激を受けました.

3日目

3日目は前日に引き続き黙々と実装を進めました.Reactのコンポーネント指向を感じながらも,CSS設計に失敗してしまい思ったように実装できずかなり苦しみましたが,最低限見せられるものを実装しました.ほとんどページを再現してアレンジまでしているチームもあり,インターン全体のレベルの高さを感じました. それが終わった後,「Demo Day」というWantedlyの取り組みを発表し合う会に参加させていただきました.真面目なビジネスの取り組みから社内のコーヒーサービスまでトピックは多岐にわたり,Wantedlyのビジネス的な面からアットホームな雰囲気までたっぷりと体感することが出来ました.

まとめ

3日間非常に忙しく,スタートアップらしい熱量を感じました.モダンなWebアーキテクチャやインフラを目指して常に変わろうとしているWantedlyの勢いも実感しました.3日間付きっきりで面倒を見てくださったみなさん,本当にありがとうございました.

Hoogle検索をラクにするChrome拡張を作りました!

YesodでWebサイトを書いているとき,Stackageでわざわざ特定のスナップショットのページに飛んでHoogle検索をするのがとても面倒だったので,検索ソースとなるスナップショットを簡単に選択・追加・削除できるようなChrome拡張を作りました.その名も HoogleSwitcher!

chrome.google.com

中身的には全くスゴイことはしていなくて,入力に応じてHackageやStackageのURLをちょっと変えてやってるだけなので超軽量です.

検索ソース(Hackage / LTS / Nightly)を選んでクエリを投げると良しなにタブが開きます. f:id:yu_i9:20160127215234p:plain

アイコンを右クリックすると出てくるオプションページでは検索ソースを追加したり削除したりできます. f:id:yu_i9:20160127215127p:plain

試しに lts-4.2 を追加してみると下のようになります. f:id:yu_i9:20160127215131p:plain

バグ報告とかコードレビューとかフィードバックとかお待ちしてます!

github.com

型クラスを含んだ型推論を概観する 〜Typing Haskell in Haskell より〜

この記事は CAMPHOR- Advent Calendar 18日目の記事です.

こんにちは @yu_i9 です.CAMPHOR- Advent Calendar には今年が初参加になります! 本記事では「Typing Haskell in Haskell (通称 thih)」から型クラスを含んだ型推論のエッセンスを紹介したいと思います. 多少専門的な内容ですが,なるべく多くの人に理解してもらえるように頑張ります.

論文のホームページは以下になります.論文本体とオリジナルの実装が利用できます.

Mark P Jones: Typing Haskell in Haskell

続きを読む

System F をHaskellとPythonで実装した

無事夏休みに突入して時間ができたので再びTaPLを読み始めました.半年触っていなくても進行,保存の証明が書けるあたり,春の自分はずいぶんしっかりと勉強していたようです.春は22章の型再構築まで読んでいたので,ひとまず23章のSystem Fから読んでサクッと実装しました.Pythonが書きたかったので,パーサーだけHaskellで書いてそれ以外をPythonで書くというよく分からない構成で実装していますが,いろいろと学びがあったのでそれを記していきます.

続きを読む

Haskellで簡単な正規表現を実装した【KMCアドベントカレンダー8日目】

KMCアドベントカレンダー8日目の記事です。

講義で正規表現とかオートマトンをちゃんと学んだので、Haskellの修行も兼ねて簡単な正規表現を実装しました。理論とか実装とかダルいと思うので、おまけだけ読むと楽しいかも知れません。

続きを読む

Haskellで大域変数が欲しい時はReaderモナドを使いましょう

何の知識もなくHaskellでコードを書いていると大域変数を引き回してしまうことが多々あり、非常にイライラします。Haskellで大域変数を実現したいときはReaderモナドを使えば良いようです。微妙にリファレンスが少なくてヤキモキしたので知見を並べていきます。

続きを読む