Retired Colourman

何度も朝がやってくる

サークルにSlackを導入した

 サークルの引き継ぎがあったのでいろいろやっていた。うまくやってインフラ関係をいじれる立場に移ったので、どこまでうまくやっていけるか実験的知見を得ることもふくめて頑張っていきたいと思う。ちょっと思っていることを書く。

 僕が所属しているサークルは完全にプログラミング系のみというわけじゃなくて、DTMやCGの人もいる。プログラミングをしている人もみんながみんなオタクっぽい(ここでのオタクは「ソフトウェア操作に対する勘を持ち最初のわかりやすさよりも機能性を重視する人」ぐらいの意味。)わけではないので、少しSlackを導入するのを躊躇っているところがある。

 Slackいいよ、Slack最高というのはエンジニアの間で言われることではあるんだけど、Slackを使いこなすのは正直難しくて、コミュニケーションツールを使うときに自分がどの情報を真剣に受け止めるべきかといったことに関する取捨選択や、話題を適切に振り分けるためのコストをかけることができる人というのは実は限られていると思っている。ベストプラクティスを探していくことが好きな人しか結局は使いこなせないのではないかという疑問は常にあって。ツールが持つ機能をツールは管理してくれないので、その使い方やルールをうまく敷いていくのはユーザー本人なのである。これはTrelloみたいなツールにも言えることではあると思う。

 一方で、LINEなんかは使い方が限られてくるので、新しいことを行う場合多少どんくさいやり方を強いられることになる。これは統一性や管理の問題を考えると馬鹿らしくはあるんだけど、少なくともツールの持つ有能性に振り回されるということはない。できることが限られているということは少ない選択肢の中でやっていけばいいということであり、少なくともその危険性を理解しているのであれば別に問題ないと思ったりする。

 結局は取捨選択の問題であり、どちらを取るかというのは難しい話ではあるんだけど、個人的には人数も多くグループ内でのコミュニケーションを進めていこうというときにSlackはそんなに悪くないんじゃないかと感じている。とりあえず一ヶ月ほどテストしてみる。また気づいたことがあればどこかに書く。

pugで変数に格納した文字列をmarkdownフィルターにかける

- var markdown_str = "[testlink](example.com)";

みたいなのがあったときに,markdown_strをそのまま :markdown-itの下にいれても上手く適用されない.理由はFilters – PugのWarningの部分を読めばわかると思う.

なので面倒だけどこうする.

- var md = require('markdown-it')();
- var markdown_str = "[testlink](example.com)";
div != md.render(markdonw_str)

!=を使うとエスケープされないので,md.render()でHTMLに変換したmarkdownをそのまま突っ込める.markdown-itは:markdown-itが使える環境ならrequireできる.あとビルド時にどうにかして{require:require}を設定してあげないとダメ.

『コンピューターで脳が作れるか』を読んで

コンピューターで「脳」がつくれるか

コンピューターで「脳」がつくれるか

kazoo04様に献本して頂いたのでレビューさせていただきます。

理解しやすい構成・文章

 とにかくまずわかりやすかったです。専門知識のない方でも理解しやすいように平易な文で書かれており、また文章の構成が丁寧であるため文を追う上で理解できないということがなかったのが好印象でした。イラストや図解も丁寧で可愛らしく、そういった意味でも飽きない内容となっていました。  また、いきなり脳の説明から入るのではなく、人工知能の定義や分類、その歴史なども丁寧に解説されており、読んでいく上で理解につながりやす買ったのではないかと思います。

興味深いトピックの選択・丁寧な解説

 わかりやすいこともそうですが、それぞれについて解説が丁寧であり、初学者向けの「煽りがちな」文章ではないことも非常によいところだと思います。各章についている「コラム」の内容などもとても面白く、技術的な活動をしている人も満足できる内容だったと思います。(個人的には「正確性を犠牲に」などの注意がついているところが技術への真摯さを感じられてよかったです。)

広いカバー範囲

   一口に「人工知能に興味がある」といっても、「人工知能が将来に及ぼす影響」に興味があるのか、「人工知能をどうやって作っているのか、その技術」に興味があるのか、「人間の脳と人工知能の違い」に興味があるのかなど様々だと思いますが、様々な事柄をなるべくカバーしているのも特徴だと思います。そういった意味でも様々な人に手にとっていただきたい本でした。

人工知能について興味のある方におすすめの一冊です。あととにかくイラストがかわいい。

コンピューターで「脳」がつくれるか

コンピューターで「脳」がつくれるか

Chrome拡張においてchrome.tabs.onRemoved はWindowを閉じた時にも発生するのか

結論

発生する。閉じられたWindowにあったすべてのタブに対して発生する。

こちらからは以上です。本当にありがとうございました。

実験コード

Playground/ChromeExtensionSandBox at master · sh4869/Playground · GitHub

Pug(Jade)でgulpを使って複数のjsonファイルをいい感じに読み込みたい

目的

Pug(Jade)にJSONオブジェクトを渡して楽したいことがあると思う。

{
  "title":"最高のWebページ",
  "description":"最高のWebページです",
  "author":"最高の作者"
}
html(lang="ja")
  head
    title=title
    meta(name='description',content=description)
    meta(name='author',content=author)

pugファイル内でオブジェクトを変数宣言しようとしても複数行に渡る変数宣言はエラーになってしまうので、オブジェクトを書きづらいという問題がある。 なので「jsonでオブジェクトを書いてそれをどうにかしてpug内でincludeしてよしなにやりたい」となるんだけど、jsonファイルをpugの中でincludeして使うことはできないので、それをどうやるのかが割と課題だったりする。 さらに欲を言えばこんなふうにもしたい。

.
│   index.pug
~
│   
├───json
│       index.json
│       en-index.json

ってやって、jsonファイルの中にそれぞれの設定ファイルをしこんでおきたい。

解決

gulp-jadegulp-dataを使う。

まあだいぶ無理やりな解決なんだけど、jsonフォルダ内の中身をみて、その中にはjsonファイルしかいれないようにする。それでそのファイル名でdataの中にjsonオブジェクトを格納してjadeコンパイル時に渡すことができるので、たとえばindex.jsonの中身はdata.indexでアクセスできる。それぞれのpugファイルの先頭に例えば

- var option = data.index

みたいに書いておけば、includeするファイルにも対応できるはず。