lacolaco

Google Developers Expert for Angular / 技術的なことや技術的じゃないことを書きます

ng-sake #16 を開催しました

10/25 に開催した ng-sake #16の運営レポートです。

ng-sake.connpass.com

今回も前回と同様、ステッカーとマグネットを用意しました。

会場

今回は初めてヌーラボさんの東京オフィスをお借りしました。会場スポンサーありがとうございました!

f:id:lacolaco:20191026000128p:plain

お金の話

今回はヌーラボさんにスポンサードされたので無料で開催できました。

今回のng-sakeは 募集30人、最終参加申し込みは25人、実際の参加者は22人(laco除く) でした。相変わらずの参加率で助かります。 夕方まではひどい雨でしたがそれでもng-sakeは不滅ということで、毎度見積もりがずれなくて非常にありがたく思っております。

LT

今回は4人のLTがありました。

  • Quramyさん「CSS Coverage in Angular」

  • Jia Liさん「fullTemplateTypeCheck」

バラエティー豊かで非常に盛り上がりました。ありがとうございました!

次回

順当に行けば隔月で次は12月の予定です!忘年会 or クリスマス会になると思います。乞うご期待!

参加してくれたみなさんありがとうございました!またお会いしましょう!

内言と外言 言語化による自己対話と継続的アウトプットの重要性

まずはじめに、「内言」と「外言」という言葉をご存知だろうか。心理学で用いられる用語で、それぞれ次のように説明される。

内言: 発声を伴わずに自分自身の心のなかで用いる言葉

外言: 外に向って発せられ,他人との相互交渉の用具としての機能をもつ音声化した言葉

内言(ないげん)とは - コトバンク

外言(がいげん)とは - コトバンク

わたしたちは普段日本語で考え、日本語で話し、日本語を読み書きしていると思っているが、実は頭の中で使っている言葉と、外の世界で音や文字として実体を得た言葉の間には違いがあるのだ。

頭の中にある考え、思いは内言として組み立てられる。内言は人それぞれの独自の形を持つ。圧縮と省略が頻繁に起こり非文法的に組み立てられる。

文章を書いたり誰かと話したり、外の世界に自分の言葉を出力するとき、そこに内言から外言への翻訳が起きる。これを普段わたしたちは〈言語化〉と呼んでいる。外言はコミュニケーションのための言語だから、ルールに従わないとうまく伝わらない。共通の語彙を使い、整合した文法で組み立てる必要がある。

自由で無秩序な内言から社会の共有言語である外言に言語化するとき、多かれ少なかれ情報の欠落と変質が起きる。 外言とは内言の不可逆な変換の出力であり、外の世界に投影された像とも言える。


少し話を変えて「対話」についての話をしよう。 細川英雄さんの「対話をデザインする」から次の文を引用する。

自分の言っていることが相手に伝わるか、伝わらないか、どうすれば伝わるか、なぜ伝わらないのか、そうしたことを常に考えつづけ、相手に伝えるための最大限の努力をする、その手続きのプロセスが対話にはあります

対話をデザインする ──伝わるとはどういうことか (ちくま新書)

相手と対話するには、自分の言いたいことを伝え、相手の言いたいことを理解する双方向のコミュニケーションが必要だ。

先ほど述べたとおり、自分と相手の間にあるのは外言であり、自分と相手はそれぞれ別の内言を持っている。外言として同じ日本語を話していても、相手に届いている言葉は自分の内言から変換された外言で、さらにその言葉は相手の内言に再変換されて理解される。だから本当に自分の考えは伝わっているのか、同じ概念を共有してるのか、ということを考え続けなければ対話は成立しない。言語化の精度を高めるためにはどのように努力すればいいのだろうか。


自分の考えや思いを極力そのまま表現できるように言語化できるかどうかは、不可逆な変換をどれだけチューニングできるかにかかっている。

まず必要なのは外言の語彙や文法の理解だ。どんなに素晴らしいことを考えていても子供のような語彙では思ったように伝えられない。外言を組み立てるための部品として体系的な言語学習は必要である。

もうひとつはその部品の使い方を鍛えることだ。 内言と外言の変換を何度も反復練習し、出力された外言を評価し、フィードバックを得る学習ステップが必要だろう。

この学習の最も簡単な実践は、文章を書くことである。 文章を書き、それを読み返すことはいわば自己との対話だ。もちろん誰かに読んでもらい、どう伝わったかをフィードバックしてもらえればさらに効果は高い。

これはプログラマーの間でしばしばテーマとなる「なぜアウトプットが大事なのか」へのひとつの回答になるだろう。その内容が評価されるとか知識の定着につながるとかそうしたことを抜きにしても、外言を組み立てる言語化のプロセスを反復することその自体に意味があるのだ。自分の考えを言葉にする力、相手に伝わるように外言を組み立てる力は、あらゆるコミュニケーションの基礎になる。これは社会コミュニティの一員として生きる上でとても重要な能力なのではないだろうか。

もちろんこの投稿も、頭の中の内言を外言へ変換する訓練の一環である。

システム設計と哲学的思考

「はじめての哲学的思考」という本を読んだ。

はじめての哲学的思考 (ちくまプリマー新書)

はじめての哲学的思考 (ちくまプリマー新書)

この本の読後メモは別で書くとして、この本を読んでどうしても書きたくなったことだけをメモしておく。


ドメインモデルというものがある。

ドメインモデル(英: Domain model)は、システムに関わるさまざまな実体とそれらの関係を説明するシステムの概念モデルである。

ドメインモデル - Wikipedia

ドメインモデルが明らかにするのはドメインという目に見えない概念空間の中で、個々の概念がもつ機能、属性や関係性だ。 そしてそれを言語化(文書化)することで関係するひとびとの間での共有知識とする。 これはある概念についての「共通了解」を組み立て言語化するものともいえる。これはまさしく哲学の思考である。 「Aとは何であり、何でないのか」という本質を洞察し、それを関係するひとびとの間で共有し、次なる思考の出発点とする。 つまりドメインモデリングは「本質観取」のステップを必要とする。

ドメインモデリングに限らず、システムアーキテクチャとはシステムコンポーネントの境界と関係性をデザインすることにある。 これもまたシステム全体、そして個々のコンポーネントについて本質観取のステップが必要である。

哲学が「よく生きる」ためにあるとすれば、「よいシステムを作る」ためにもまた哲学の力を借りることができるのではないか。 つまり、哲学における長い歴史の中の知恵が、システム設計にとってもまた有用なのではないかという仮説を立ててみたい。


こんな感じの心持ちで、引き続きしばらく哲学というものについて本を読むことにする。オチなし。以上

CircleCIからGitHub Actionsへの移行 (Node.js)

自作のライブラリのCIをCircleCIからGitHub Actionsへ移行したメモ

github.com

github.com

特にメリットがあるから乗り換えたとかいうわけでもないけど、GitHubだけで完結するならそれに越したことはない

ファイルの場所

.github/workflows/<ワークフローの名前>.yml だが、いまのところ複数作るユースケースが見えないので main.yml とした。

実行環境

ubuntu-latest を選択した。特に理由はないけど一応MacOSWindowsも選べるっぽい?

Software in virtual environments for GitHub Actions - GitHub Help を見るとわかるが、 めちゃくちゃ充実したプリインのソフトウェアがある。 yarn や Git、Docker、Chromeもなんの設定もなく最初から使えるのはよい。

今回の移行ではもともと circleci/node:carbon-browsers を使っていたけど、 ubuntu-latest だけで事足りた。 Node.jsのバージョン指定は node-version: [12.x] のところでマトリックスにできるので、実行環境とは切り離して考えられる。

全体

name: Main

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [12.x]

    steps:
    - uses: actions/checkout@v1
    - name: Run tests with ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - name: npm install, build, and test
      run: |
        yarn install
        yarn build
        yarn lint
        yarn test:ci
      env:
        CI: true

もともと大したことをやってないので、あっというまに置き換えが終わった。

ポイント

  • yarn は最初から入ってるから気にしなくていい (現在は1.17.3っぽいが多分latest追従だろうか)
  • Chromeも最初から入ってるから気にしなくていい (Headlessはまだ試してない)
  • Node.jsのバージョン指定は actions/setup-node の引数で変えられる

ng-sake #15 を開催しました

8/23 に開催した ng-sake #15の運営レポートです。

ng-sake.connpass.com

ttskchさんが名古屋からLTしにきてくれたり、aquila1o1さんが福岡からお土産を持ってきてくれたりとバラエティ豊かな感じになりました。

今回は前回作ったステッカーの他に、マグネットも用意しました。冷蔵庫に貼ってもらう用です。毎日の生活のなかでng-sakeのことを思い出してください。

会場

今回も前回と同じく、スペースマーケット で借りた浅草のカフェレストラン well 浅草 を会場にしました。

well.restaurant

今回は会場のトラブルでプロジェクターが使えないというアクシデントがあり、参加者のみなさんにご迷惑おかけしました。 LT発表者のみなさんにスライドのURLをシェアしてもらい、みんなで手元で見つつ、前では僕がMacを掲げるという形式でなんとか乗り切りました。 ご協力ありがとうございました!

f:id:lacolaco:20190824105505p:plain

アンケート

会場で集めたアンケートの結果です。

f:id:lacolaco:20190824173052p:plain

お金の話

今回もKyash or 現金の参加費受付をしました。 前回に引き続き、現地決済に限定してQRコードを置くことにしました。

f:id:lacolaco:20190628002947p:plain

収支

今回のng-sakeは 募集30人、最終参加申し込みは27人、実際の参加者は24人(laco除く) でした。相変わらずの参加率で助かります。

参加費は Kyash 14人、現金 10人、ということで初めてKyash優勢になりました。お金の扱いが楽になり助かります。

かかった経費と収支は以下のとおりです。お気持ちで心付けしてくれた方のおかげで今回は赤字にならずにすみましたが、心付けに依存せずにできるだけプラマイゼロで継続できればいいなあと思います。

f:id:lacolaco:20190824143051p:plain

次回

会場探しがWebで完結し、フードとドリンクの準備負担も軽くなってきたので、このまま隔月開催でやっていけそうです。次回は10月!

参加してくれたみなさんありがとうございました!またお会いしましょう!