あいつの日誌β

働きながら旅しています。

VuePress v1.0-alpha で Blog を作る

v1.vuepress.vuejs.org

あらすじ

VuePress の default theme が美しいのでこれで Blog を書きたいと思いました。

VuePress とは

コンセプトは以下2点です。

  • Vue component を使用した Theme を扱う最小構成の静的サイトジェネレーター
  • 技術的な文章を書くために最適化された default theme を提供する

一度読み込まれたHTMLは、それ以降 Single Page Application のように振る舞うためレンダリングは高速ですが、最初のHTMLにコンテンツを書き出しているので SEO との親和性も高い CMS です。

この振る舞いは nuxt generategatsby build と非常に良く似ています。

使われている技術と似ているサービス

Vue, Vue Router, webpack が使用されています。 

VuePress を使ってドキュメントを書く

VuePress を Default Theme を使って利用する場合、必要な作業は以下の通りです。

  • defaultTheme の振る舞いを .vuepress/config.js で設定します。
  • Markdown 形式のテキストファイルを追加します。

Blog 化するために必要な事

VuePress を初期状態で使う場合、ナビゲーションの機能が不十分です。今回私が VuePress を Blog 向けに使う為に、以下の2点の作業を行いました。

  • BlogIndexPage を追加し、記事一覧を表示する
  • sidenav に各記事へのリンクを動的に生成する

BlogIndexPage を追加

.vuepress/components/PostIndex.vue を追加します。

<template>
  <div>
    <div v-for="post in posts">
      <h3>{{ post.frontmatter.title }}</h3>
      <p>{{ post.frontmatter.description }}</p>
      <p><router-link :to="post.path">Read more</router-link></p>
    </div>
  </div>
</template>

<script>
export default {
  computed: {
    posts() {
      return this.$site.pages
        .filter(x => x.path.startsWith('/posts/') && !x.frontmatter.post_index)
        .sort((a, b) => new Date(b.frontmatter.date) - new Date(a.frontmatter.date));
    }   
  }
}
</script>

現状だと Default Theme の Header や Sidebar などを override しづらい構成になっています。 自由にカスタマイズすることも可能なのですが eject する必要があります。まだ VuePress が alpha 版ということもあるので Theme に対するカスタマイズは避けたほうが賢明かもしれません。

ただし、上記のように Page 内に新たに Component を追加する場合は割と簡単です。

追加した PostIndex component を利用して記事一覧ページを作成するには /posts/README.md を以下のようにすればOKです。この例では記事一覧ページの幅を広げたいので pageClass を指定しています。 指定した class の CSS.vuepress/styles/index.styl に記述をすれば適用できます。

---
post_index: true
pageClass: post-index
sidebar: false
---
<PostIndex />

Sidebar を Blog 風にカスタマイズする

.vuepress/config.js に以下のように記述をすると Sidebar のカスタマイズが可能です。ただし Blog の Post のように何度も記事が追加される場合、都度このようにハードコーディングを行うのは煩雑です。

module.exports = {
  themeConfig: {
    sidebar: [
      { 
        title: '2018',
        children: ['/posts/2018/xxxx', '/posts/2018/yyyy']
      },
      {
        title: '2017',
        children: ['/posts/2017/xxxx', '/posts/2017/yyyy']
      }
    ]
  }
}

Life Cycle の中で ready 関数が Hook されているので config を動的に変更することができます。私は年ごとに記事をまとめたかったので以下のようにしました。

module.exports = (options, ctx) => {
  return {
    ready() {
      const { pages, themeConfig } = options

      const items = _.orderBy(pages, 'frontmatter.date').reverse()
      const sidebar = []
      const posts = items.filter(p => p.frontmatter.title && p.frontmatter.type !== 'talk')
      
      for (let i = 0; i < posts.length; i++) {
        const post = posts[i]
        const m = moment(post.date)
        const year = m.year()
        if (!sidebar[year]) {
          sidebar[year] = []
        }
        sidebar[year].push(post.path)
      }
      
      const years = Object.keys(sidebar)
      themeConfig.sidebar = years.sort().reverse().map(year => {
        return {
          title: year,
          children: sidebar[year].map(item => item)
        }
      })
    }
  }
}

まとめ

というわけで Default Theme に少しだけ Component を追加していますが、このようにして Blog 風にカスタマイズすることができました。VuePress は非常に美しいデザインで、技術的なドキュメントを作成するのにぴったりだと思います。

以下、VuePress を使った私の Blog です。海外進出を目論んでいるので英語で書いていますが*1 VuePress で書き出されているのでよかったらご覧になってください。

Blog: https://okamuuu.com/

ソースコード: https://github.com/okamuuu/okamuuu.com

*1:文法があっているかはわかりません

We Are JavaScripters! @30th でLTしてきした。

wajs.connpass.com

JavaScriptを学びたい、もっと知りたい人のためのゆるくつながるというコンセプトの勉強会で発表してきました。

どんな会だったのか

勉強会だけどお酒を飲みながらお話ししましょう、という会です。基本的にフロントエンドの仕事をしているか、もしくはフロントエンドに興味がある人が集まっていたと思います。

何を話したのか

WEB では認証周りを Firebase Authentication で実装するととても簡単だったので React Native でも同じぐらい簡単だろうと思っていたら意外と大変だったのでそれを共有したいと思いつつ、いや、みんなも同じところで手こずるはずなのに誰もその事についてブログに書いていない、他にいい方法があるかもしれない。

という事で共有しつつ、英知を授かりたいので登壇しました。

他の方のLTについて

LT2 Vue でのCSSアニメーションの話 @daitasu

LT の2番手(1番は私)、ここでハプニングが発生し、プロジェクターが死亡。やむなくネット上の資料をそれぞれのPCで閲覧しつつ、合図に合わせて次にページに進むスタイル。

最後のデモで無事プロジェクターが復旧し、見事なオチがついていました。たぶん今後 Atomic Design の話がでるたびに原子が走るを思い出す気がします。

LT3 記事作成ツールのフロントエンドをNuxt.js × Atomic Designでリプレイスしている話 @comy

jQuery x Grunt でゴリゴリしていたサイトをリプレイス。Atomic Design は私も好きなアイデアなので聞いていて面白かったです。state 持って良いかどうかは好みの問題とかありそうですけど、ハンバーガーメニューなんかの state の管理は component に押し込めた方が楽ですからねえ。

LT4: 反復処理に速さを求めて @camcam_lemon

反復処理で本当に一番早い書き方はどれなのか?という謎の競技を開催し、それを共有して下さいました。 jQuery が謎に調子が良かったりして、何か特別な処理を入れているのかな?と思ったりしてとても興味深い話でした。まあ私はどれが早いかあんまり気にしないので、それゆえにこういう話は聞くのが楽しいです。

LT5: スポンサーLT(株式会社レトリバ様)

引っ越ししてまだ1か月ということなのですがそんな中で会場の提供をしてくださいました。会社が行なっている事業の概要をLT形式で紹介してくれました。

LT6: 無思考型個人開発のススメ @skmt3P

個人開発をするときは考えないといけないことがたくさん出てくるので考えなくて良いことは考えないようにしましょう、というお話し。例として Prettier と Lint のようなツールを活用しましょうというお話し

LT7: 『if文のはなし』 @ticktakclock

JS の if 文は true/false の判定ではなく、 trushy/falsy という非常に曖昧なものだったという事に気付かされました。私は普段型が無い言語しか触らないので面白いトークでした。本業が Android ということであまり私の周りには居ないタイプの人だったので色々と質問させて頂きました。

ちなみに Android の勉強会は Shibuya.apk がおすすめらしいです。フロントエンドの勉強会を一通り回ったら今度はそちら方面の勉強会に参加しようと思います。

LT8: 勝手に技術書でビブリオバトルJavaScriptで学ぶ関数型プログラミング」 @sadnessOjisan

最近はすっかり技術書を読まなくなってしまったので、こういうLTは面白かったです。ビブリオバトルという概念も初めて知ったのですが、こういうのを飲み会でやったら面白いかも。こういう発見ができるのも勉強会の魅力です。

LT9: On the Evolution and Change of Riot.js v4 @kuwahara_jsr

Riot.js v3 => v4 かなり変更があるらしく、書き直しが必要になってくるので注意が必要とのこと。インターフェースが React に似てきたとか?

私は React.js と Vue.js を単体で使うことは少なく、 react-router だったり、 Nuxt.js だったりと、SPA を実装するときに使うケースが多い、ということもあるので Riot.js はあまり選択肢に入ってこないんだよなあ。

LT10: もっと画像を壊した話 @chikoski

jpeg はデータが壊れても無理やり表示することができるフォーマットなので動画を jpeg にしてちょっとデータに細工して連続再生したら面白いコマ送り動画が完成。

WEB Browser でゲームをレンダリングするようなお仕事をされているのかな?「画像を壊すときは Worker を使ってブラウザとは違うリソースを使っている」とのこと。

worker-dom というライブラリを使っているそうです。 worker から DOM をレンダリングできる?という不思議な話をしていました。

github.com

フロントエンドのエンジニアを名乗っていますが、そこまでやったことなかったので今度実装してみたいと思いました。

あとそれから

詳しいレポートしてくれてる人が他にもいらっしゃったのでそちらの記事をご覧ください。

https://ozaki25.hatenadiary.jp/entry/2019/03/22/213445

会場について

株式会社レトリバさんの提供でした。新宿駅から割と近いのでなかなか便利な場所でした。途中でプロジェクターが繋がらなくなる、というアクシデントが発生しましたがその場で対応頂き、無事全員登壇できました。ありがとうございます。

https://retrieva.jp/

会場を貸して欲しい

運営の方々によると会場探しが結構大変らしいです。以下、要件。

  • 30-100人くらい
  • プロジェクター/マイクがある

まとめ

今回の勉強会で新しく手に入れたナレッジは以下の通りです。

ちなみに

ネタがないから登壇できない、というのはごもっともですが、登壇しなきゃいけないからなんか作る!みたいな登壇ドリブンディベロップメントは意外と捗りますね。

というわけで次回は目黒界隈の勉強会に向けてTDD*1したいと思います。こちらからは以上です。

meguroes.connpass.com

*1:登壇ドリブンディベロップメントのことです。この勉強会の主催者から教わりました。

カレントディレクトリにあるファイルをあるディレクトリにまとめるために追加したディレクトリに git mv したい

expo init で作成した雛形を一つのでディレクトリにまとめた時のメモです

git mv -n ./!(expo) ./expo
git mv ^(expo) ./destination_folder

https://stackoverflow.com/questions/33002612/move-all-files-of-current-directory-into-subdirectory-and-maintain-history

weworkremotely.com をスクレイピングしたメモ

英語の勉強しているのですがモチベーションを維持したいなあと思って書いたスクリプトです。

海外で remote worker 向けの求人サイトがあるので時々眺めていると location が Anywhere となっている求人があって「英語話せるようになれば日本に居ながら仕事もらえるんじゃね?」と思ったりしてモチベーションが維持できます。

なんですが詳細ページを開かないと Must be located が表示されないので画面をぽちぽちする時間が無駄な気がした次第です。

const _ = require('lodash')
const chalk = require('chalk');
const scrapeIt = require('scrape-it');

const url = "https://weworkremotely.com/categories/remote-programming-jobs";

main()

async function main() {

  const result = await scrapeIt(url, {
    items: {
      listItem: ".feature",
      data: {
        link: { 
          selector: "a",
          attr: "href"
        }
      }
    }
  })

  const links = result.data.items.map(x => `https://weworkremotely.com${x.link}`)

  const tasks = [];
  for (let i = 0; i < links.length; i++) {
    tasks.push(scrapeIt(links[i], {
      title: ".content h1",
      company: ".company",
      location: ".location",
      region: ".region",
    }))
  }
  const results = await Promise.all(tasks)
  const jobs = results.map(result => Object.assign(
    _.pick(result.data, ['title', 'company', 'location', 'region']),
    { link: result.response.responseUrl }
  ))
  console.log(`Found jobs: ${jobs.length}`)
  jobs.forEach(job => {
    console.log(job.title, job.company, chalk.yellow(job.location), chalk.green(job.region))
    console.log(chalk.underline(job.link))
  })
}

とりあえず何件かは英語を話せればいけそうな求人があるのでモチベーションが維持できる気がしました。おしまい。

ニセコに4泊5日で旅をしてきた(2)

f:id:okamuuu:20190214210925j:plain

雪が降る時期に東京からニセコに直接向かうのはちょっと心配だったのと、ちょうど旅行の時期が雪まつりの時期と重なっていた為、東京とニセコの中継地として札幌のドミトリー式のホテルにも宿泊しました。

というわけで札幌で泊まったカプセルホテルをほんの少しレビューします。

  • シティキャビン BY ニコーリフレ(男性専用)
  • ビズコートキャビンすすきの(男性専用)

シティキャビン BY ニコーリフレ

f:id:okamuuu:20190214210802j:plain

とても便利な場所にあるカプセルホテルです。JR札幌駅南口より徒歩1分。札幌バスターミナルより徒歩1分です。

札幌からニセコまではバスで移動する事にしたのですが、バスターミナルまでとても近く、地下通路を移動してバスターミナルまで行けるのでとても便利でした。

ただ、エレベーターがちょっと癖があったり、カプセルの中で空調をコントロールできないなど、色々と「やや残念」なところがありましたがそれを補うほど便利な場所でした。

ビズコートキャビンすすきの

f:id:okamuuu:20190214210858j:plain

こちらはすすきの近辺にあるカプセルホテルです。場所は本当に歓楽街の真ん中(?)という感じでしたがサウナもついていたりするので設備自体は良かったです。

ラウンジも広々としていたのでノマドしやすいです。ただ漫画が置いてあるという難点(?)があって仕事が妨げられる可能性があります。私は3月のライオンを読むのに夢中になってしまいました。

ごはんについてほんの少し

2017年12月にも札幌を訪問していてそちらの記事でも書いてあるお店にばかり通ってしまったのであまり目新しいお店を開拓していないのですが新しく発見したお店を一応備忘録として残します。

SAPPORO餃子製造所 すすきの店

大阪王将の系列(?)だと思うのですが餃子とザンギが食べられます。安くて美味しかったです。

丸美珈琲店 sitatte sapporo

地下街にある珈琲屋さんで、階段の踊り場でお客さんがコーヒーを飲むという変わったスタイルのお店です。

その他

それ以外のお店は大体以下のURLと同じ店に行ってました。

http://okamuuu.hatenablog.com/entry/2017/12/18/155622

まとめ

というわけでニセコに旅して来ました。北海道は寒いと思っていましたが、実際には風が吹かなければそんなに寒くありませんし、スノボは楽しかったし、ご飯も美味しいのでとても楽しかったです。

というわけでまた来年の冬になったら北海道に遊びに行こうと思います。おしまい。

ニセコに4泊5日で旅をしてきた(1)

f:id:okamuuu:20190213123459j:plain

ついでにその前後で札幌にも旅行して合計7泊8日の旅をしてきたのですが、今回は主にニセコについてのお話です。

  • 時期と動機
  • 宿泊所について
  • グラン・ヒラフについて
  • 移動手段
  • 周辺のご飯について

行った時期と動機

02/08(金), 02/09(土), 02/10(日), 02/11(月) に First Cabin ニセコに宿泊してグランヒラフでスノボを楽しんできました。

以前京都に宿泊したときに、ホテルの中にあるこワーキングスペースで外国人のノマドワーカーが働いていて、その中で私一人がノマドしている、という状況を体験したのですが、その時に「ああ、日本だけど英語が中心のスポットがこれから徐々に増えてくるんだな」と感じました。

そういった場所が最初は点と点で出来始めて、そのうち線になって広がるんだろうなと思っていたのですが、実はニセコがすでにそうなっているんじゃないかな。と思いました。

というわけで未来の日本かもしれないニセコに旅してきました。

宿泊所について

ファーストキャビン ニセコ・ぽんの湯

今回スノボしに行った場所はいわゆるニセコなのですが、宿泊先は倶知安駅の近くにあるファーストキャビン ニセコ・ぽんの湯 です。

今回は4泊中の2日間は友人と一緒の部屋だったのでファーストクラスキャビンとプレミアムクラスキャビンをそれぞれ利用しました。

ファーストクラスキャビン

イビキがフロアに響わたるので耐性の無い方はお気をつけ下さい。こちらの施設では一番安い部屋です。

f:id:okamuuu:20190213124441j:plain

プレミアムクラスキャビン

最大4人宿泊できる施設に3人で利用しました。部屋の作り自体がかなりコンパクトなので4人で宿泊すると狭く感じると思います。あと荷物を広げる空間があんまりないのでいっぱい荷物があるとちょっと大変だと思います。

f:id:okamuuu:20190213124503j:plain

スノボの道具について

私は現地でフルセットをレンタルしました。ホテルからヒラフウェルカムセンターまでバスが定期的に発車しているので、バスに普段着で乗り込み、現地でヒラフウェルカムセンター近くの.BASE(ドットベース)で借りました。2日以上利用する場合は板とボードはそこに置いておけるのでとても便利です。ウェアは途中で変更ができませんので最終日に返却します。ウェアを返却するのでホテルに洋服を忘れないようにご注意下さい。

友人はホテルへ郵送しておいて、帰りにホテルから自宅に郵送していました。ヒラフウェルカムセンターまではバスが定期的に発車しているのでホテルからウェアに着替えてスノボの板をそのままバスに持ち込んで現地に行けます。

グラン・ヒラフについて

ニセコにはスキー場が4箇所集まっているのですが、First Cabin からはグランヒラフへの無料バスがでていたので基本的にここのゲレンデを利用しました。

いくつかコースはありましたが私は今回でスノボが3回目の初心者なので、以下のコースを利用しました。

  • ファミリーコース
  • 望洋コース
  • 高原コース
  • グリーンコース

ファミリーコースは平坦な場所が途中で出現するのでスノボだと途中で止まってしまのと、減速しながら進みたいけど道がやや狭いので初心者は難儀するポイントが多いです。 あと雪質がそこまで良くありませんでした。たぶん人がいっぱいいるからだと思います。

望洋コースは一番滑りやすかったです。ターンができる程度であれば広いので人と進路が被らないので安心して滑れます。ファミリーコースよりも雪質が良かったです。とはいえ天気にもよると思うのですが、午後の時間帯になると少し雪質が悪くなった気がします。

高原コースは望洋コースと隣接しているのですが、あんまり滑りませんでした。高原コースから望洋コースへ移動するときに使う感じでしょうか。

グリーンコースは少し難しかったので1度しか滑りませんでした。道が狭い箇所があるので大きく回りこんで減速しながら下りたい初心者には厳しかったです。とはいえ広い場所もあるので狭いポイントをクリアすれば上質な雪質が楽しめると思います。

グリーンコース午前中に一度だけしか滑ってないのですが雪質がすごいもふもふしててすごかったです。

それから実際にニセコのゲレンデで感じたことは以下の通り。

  • どちらかというとスノボよりもスキーヤーのほうが多い
  • 海外では若い人がスキーでゲレンデデビューするのが最近のトレンドらしい
  • みんなヘルメットをきちんと装着している
  • コース自体がスキー向けであまりスノボ向けでない気がする
  • 雪は基本的に新雪で粉雪の状態が非常に多い
  • 午前の早い時間帯に行けば大体パウダー
  • 午後になると初級コースは雪が固まってしまう

雪質はすごく良かったと思います。でも一番優しいコースのファミリーコースがちょっとスノボ向けでない気がしました。木の葉落としがなんとかできるようになってコースを一人で降りてみよう、という人に向いている場所がなかった気がします。

ちなみに去年行ったテイネの初心者コースは勾配と距離がちょうど良かったです。木の葉落としができるようになってターンの練習を始めたばかりの人にとっては逆に札幌テイネのほうが良いかもしれません。

スノボのレンタルについて

フルセットでレンタルしました。板と靴のほかに上着とパンツ、帽子、ゴーグル、グローブ。靴と板は .Base に預ける事ができます。単純に番号札つけておいておくだけの原始的なプロトコルでした。一応他にもレンタルできる場所はあるみたいですが、私はここが便利だったので利用しました。

ウェアに関しては一旦返却ができないので数日はそのウェアを借りることになります。

私は借りたウェアがパスを入れるポッケが腕についてなかったので(後で気づいた)交換したかったのですが、残念ながらそれはできないとこのこと。まあでも胸ポケットに入れて必要なときに取り出して使いましたがそんなに困りませんでした。

ちなみにみなさんメット着用していましたがこちらではメットを借りることはできない様です。やっぱり富裕層のみなさまはヘッドが一番大事なんだな、と思いました。いやホントかぶるだけでリスク減るから絶対かぶった方がいいよなあ。

行き方と帰り方

札幌から First Cabin までのルートは以下の通りです。

帰る時は小樽に立ち寄りしたのですが以下の通りです。

北海道での移動手段ですが、個人的には電車よりもバスの方がスケジュールにずれがないような気がします。以下私の私見です。

  • JR は大雪だと除雪に時間がかかる為遅れることが多いが運休になることはあまりない。* ただし強風の場合は運休になる事が多い
  • バスは吹雪で視界が悪い場合は運休となる場合もありえる
  • 路面が凍結している場合も同様

今回ニセコに移動する前に寒波がやってきたので心配だったので前日にバスの窓口の人にバスが運休になる可能性を尋ねたところ「今の所、運休になるという話は聞いていない。過去寒波によって運休になるような事例はない。運視界不良、凍結によって運転が困難になればそうなることもある」とのことでした。

今回の寒波は夜間の間で落ち着き、かつその後もあまり風が吹かなかったため特に問題ありませんでした。たぶん雪が積もる分には割と安全で、逆に日光で雪が中途半端に溶けた方が危ない様です。

ごはんについて

ニセコは基本的に海外の富裕層が遊びに来る場所なのですが私が今回宿泊した倶知安に関してはリーズナブルなお値段のお店が多いです。

居酒屋二代目サムライ

倶知安駅近辺にあるお店です。友人が車で来ていたので車でお店まで移動しました。徒歩で移動するとたぶん体の調子を崩すと思います。一応電話で予約したのですが、入店した時点でほとんど満席でした。

回転寿司羊蹄丸

First Cabin ニセコの近くにある回転寿司屋さんです。こちらは徒歩でもいける距離でした。北海道とはいえ内陸部にあるのであまり鮮度に期待していなかったのと観光地なのでお値段も高めという事もありハードル低めでお邪魔したんですが意外と美味しくってよかったです。

味の時計台 倶知安

札幌にもあるお店なのでたぶんチェーン店だと思います。あんかけそばと餃子を頼みました。北海道ということもあるせいなのか麺と一緒に食べた海鮮がやたらと美味しかったです。

北海堂レストラン

First Cabin に併設されているレストラン。札幌と新橋にもあります。4500円でラムしゃぶ+飲み放題にできます(要予約)

なんですがちゃんと定食メニュー(1000円〜1500円)があるので雪の中出かけたくない場合はこちらでも良いと思います。

マックスバリュ 倶知安

実はホテルのとなりにマックスバリュがあるのでここでお弁当買ってラウンジで食べるのが一番安いです。正直なところそれが一番良い方法な気がします。

コンビニ

マックスバリュが閉店したとしてもコンビニでお酒を買うことができます。ちなみになぜかわんはんどれっどさうざんど円 のワインがコンビニで売っていました。さすがニセコ。まあでも店員さんに聞いたら「まだ買って行った人を見たことがない」とのことでした。なので逆に購入してみると面白いかもしれませんね。私はもちろん買わないですけど。

f:id:okamuuu:20190213124349j:plain
10万円のワイン

まとめ

私はまだ初心者だったので山の麓にいる時間が多かったのですが、1度少し頑張ってやや高いところ行ったのですがとっても雪がもふもふしていました。

斜面が急で少し怖かったのですが、よくよく考えればここまでもふもふしていれば転倒時のダメージはむしろ少ない気がしました。それぐらいもふもふでした。

そしてニセコですが私が宿泊していたのは倶知安のホテルだったのですが日本人グループも数名いましたしゲレンデでも日本語はかなり聞こえて来ました。海外からの旅行客は多いと思いましたが、とはいえニセコはまだまだ日本だな、と感じました。京都のミレニアルズのような「自分以外外国人」みたいな状況は感じませんでした。

というわけで今回パウダースノーを無事体験し、ニセコが海外化しているのかどうかを検証することができました。この記事を書いている時点ではまだ筋肉痛がひどいのですがスノボ楽しかったのでまたニセコまで遊びに行きたいと思います。

【第6回】フロントエンド × ビアバッシュ 初心者勉強会 に行ってきた

お酒を飲みながら、フロントエンド開発を語る勉強会に行ってまいりました。

https://sakeganaito.connpass.com/event/113024/

ビアバッシュ とは

ビアバッシュ(Beer Bash)とは、懇親会の一種としてビールやピザを食べながら語らう形のイベントです。

どんな感じの勉強会なのか

  • 到着したらとりあえずお酒を飲む
  • 登壇者がLTしている間お酒を飲む
  • LTが全部終わったらお酒を飲みながら懇親会

参加者はフロントエンドとSIerが半々ぐらいでした。サーバーサイドは少なめでした。この日はYAPCが別会場で開催されていたのでその影響だったのかも?

https://twitter.com/hashtag/sakenight6?src=hash&lang=ja

会場とスポンサー

ありがとうございます。

  • 会場: ポート株式会社(PORT INC.)
  • お酒: エンジニア目線の求人・転職サイト Forkwell Jobs

トーク一覧

LT1: ユーザを逃さない登録フォームを考えてみる

WEBの登録フォームはユーザーを疲れさせない事が大事、確かにそうかもしれない。 デザイナーとプログラマとが協力して入力フォームをちゃんと考えたいというお話でした。

LT2: 市場価値を高める為に、俺が考えた最強のソリューション

私のLT。エンジニア同士で技術のトピック毎に飲み会開くプラットフォームをつくりました。

https://deploy-me-a-beer.firebaseapp.com/

LT3: AWS Amplify で認証付きページ作れるしアカウント発行時のSMSコード送信も超簡単!

個人でWEBサービスを作っている人たちの間では認証周りはFirebase Authentication を使っているイメージですが最近 AWS Amplify の話を見かけるなあ、と思いました。

認証付きサイトが簡単に作れるって本当にいい時代になりました。

LT4: JS初心者がJavaScript関数型プログラミングを読んでみた

sort関数は関数型だとおもいっていたけど、元となる配列そのものを改変してしまうため関数型ではない、というのは知らなかった。

LT5: Vue.jsについて入門的な何か

Live Coding で Vue.js の機能を紹介。

LT6: Nuxt.js の Componentについて

時々パンを売っているらしく。この前東京ドームですごく売れたらしいです。SSR と SPA でのレンダリングのタイミングについてデモをしようとしましたが残念ながら時間切れ。

デモする時って思ったよりも時間の経過が早いんですよね...

LT7: 個人サービスの UI を全て作り変えてユーザーインタビューをしたら わりと不評で、改善した話。

officeclock の作者。サービスを良くしようとして不要な機能を削ったらそれが実は使われていた、ということをアンケートとったら判明した。というお話。

5人のユーザーレビューがあれば問題の85%解決する、というのは参考になりました。

OFFICE CLOCK - LINEと Webで勤怠管理ができるサービス

LT8: firebase を使ったフロントエンド開発でのコツとハマりどころ

Realtime Database の操作方法と Cloud Storage の認可など。クエリが貧弱でデータ構造を作り直した。というのはよくわかる。

LT9: 5分でわかるwebpack(初心者向け)

個人的に気になっている codesuka の作者。webpack だけでなく babel の話もしたかったとのことなので次回に期待したいと思います。

https://codesuka.review/

LT10: Kickstart my BackstopJS

View component を snapshot をとって変更箇所をテストしたい。なんだけど animation とか cookie が関わると急に困難さが増す。本当にCSSは人類には早すぎたのかもしれないですね。

懇親会

懇親会の時間は LT10: Kickstart my BackstopJS の @surumebeer さんとお話しました。View component をテストするとか以前に CSS をどうやって書くべきなのか、といったことについて歓談しました。

まとめ

たまたま隣に座った人から JS の勉強会は他にもある事を教えてもらったりもくもく会に参加するとユーザーレビューしてもらうこともできる、という情報をもらえたり、有意義な会となりました。

フロントエンドの仕事もするようになってだいぶ経験値が増えてきたので今年は JS 界隈の勉強会にたくさん参加してみたいと思います。