学内でGitについてのハンズオン勉強会を行いました

発表資料

speakerdeck.com

スライドを作成するときの参考にした資料

gihyo.jp

今回のスライドは大体の部分を,GitHub実践入門を見て作成しました. この本の4章では,非常に小さなケースを対象にして,Gitコマンドを叩きながら覚えていくことが記述されていました. 小さなケースというのはREADME.mdをガシガシいじっていくやつです. やっぱREADME.mdすげぇなという感想です.

スライドには載せなかったのですが,コンフリクトも小さいケースで起こしていて,感動を覚えました.あとrebaseなどの歴史改変系も.

またgit-challengeは,一回も行ったことがなかったのですがこの機会に調べることができたので, 良い機会だったかなと思います.

まとめ

普段使いこなせているつもりでも意外と知らないものが多かったりして,改めて身近なものでもアウトプットすることは大事だなと思いました.

参考にしました.

github.com

VuePressを触ってみた

VuePress

vuepress.vuejs.org

VuePressは,Vue.jsが使える静的サイトジェネレーターです.今回はVuePressを使って,デモサイトをデプロイするまでやります.

準備

さっそく準備をしていきます.

以下のコマンドを実行します.

# create working dir
mkdir vuepress-test

cd vuepress-test

# install VuePress
yarn add -D vuepress

# create index page
mkdir docs

echo '# Hello VuePress' > docs/README.md

package.jsonに以下の記述を追加しましょう.

"scripts": {
  "docs:dev": "vuepress dev docs",
  "docs:build": "vuepress build docs"
}

その後,以下のコマンドでbuildやらができるようになります.

# make a dev server
yarn docs:dev

# build static site
yarn docs:build

他のページを作成し,リンクを貼ってみる

まずページを作成します.

cd docs

# 設定ファイル置き場もついでに作成
mkdir .vuepress

echo "# first page" > First.md

echo "# second page" > Second.md

README.mdにリンクを貼るため,以下の記述を追加します.

[First](./First.md)

[Second](./Second.md)

これはマークダウンなので,マークダウンと同じ構文で書けます.

navbarにもリンクを貼るために.vuepress/config.jsを作成し,以下の記述を追加します. ついでにサイトのタイトルも設定しています.

module.exports = {
  title: 'VuePress-Test',
  description: 'Just playing around',
  themeConfig: {
    nav: [
      { text: 'Home', link: '/' },
      { text: 'First', link: '/First.md' },
      { text: 'Second', link: '/Second.md' },
    ]
  }
}

その後,ビルドすると以下のような画面になっていると思います.

f:id:MitubaEX:20180515020454p:plain

faviconについて

fiviconに使いたい画像は,.vuepress/publicに配置しておきます. そして.vuepress/config.jsに以下の記述を追加します.

head: [
  ['link', { rel: 'icon', type: 'image/png', href: '/fivicon.png' }],
]

deployについて

www.netlify.com

今回はnetlifyを利用します.

デプロイのためにあらかじめリポジトリを作成して,pushしておいてください.

対象リポジトリとして,作成したサイトを選択し,Build commandは以下のように設定してください.

yarn add -D vuepress; yarn docs:build

その後,Publish directoryにdocs/.vuepress/distを指定します.

後はデプロイされるのを待って完了です.

まとめ

今回はVuePressを使って,雑な静的サイトを作成しました. マークダウンで文字を書いていけるので,すごくお手軽感がありますね.

まだcomponentなど,Vue.jsの機能を利用した拡張を行なっていないので,また今度触っていきたいと思います.

5/13 (日) ビットサミットに行って来た

5/13(日)のビットサミットに行って来ました.

ビットサミットって?

bitsummit.jp

5/12~13の二日間,京都のみやこめっせで開催されたインディーズゲームの祭典です.インディーズゲームを実際に触ったり,開発者のトークセッションなんかも見れたりと面白みに溢れたイベントです.

気になったゲームたち

CARTO

制作はSunhead Gamesさんです.

どういうゲーム?

  • フィールドを探索して地図の断片を手に入れていく
  • マップを開いて,その地図の断片を好きな場所に配置する
  • 新しい場所に行けるようになるので,その場所を探索する

Sunhead Gamesさんが動画を投稿していたので,これを見たらだいたいわかると思います.

面白いと思った点

地図のーマスーマスを自由に移動や回転させたりできるので,基本的にキャラクターを操作して目的の場所に向かうという時間を地図を操作することで,大幅に短縮できます.

マップを探索するゲームは個人的に大好物なのですが,一工夫をすることで効率よくゲームを進められる点が新しいなと思いました.

よくあるマップ移動として特定の場所をワープできる機能などはよくあると思うのですが,自分でワープする場所を決めるような感覚で地図の断片を操作できる点が非常に自由度が高くて良いです.

リリースされるのが楽しみです😍

ghostpia

制作は超水道 さんです.

どういうゲーム?

  • ジャンルはデンシ・グラフィックノベルというジャンル
  • ビットサミットで見せてもらったものは,多くのイラストでアニメーションのような躍動感を持ったノベルゲームという印象でした.

面白いと思った点

繊細なイラスト,音楽から作り出されるすごく幻想的な世界を感じました.まだシナリオは読んでないのですが,隙間を見つけてやって行きたいと思います.

Switchでのリリースも予定しているとのことなので,そちらも楽しみです😍

入れました💪

他やってないけど気になったゲームたち

まとめ

13日のみの参加でしたが,非常に楽しく過ごすことができました.また来年も行って,面白いゲームを探して行きたいと思います🙏

tmux + zsh + fzf + ghqでセッションを作成して,指定リポジトリに移動する処理

挙動

  • tmuxを開いている状態で,C-gを押すとghqでgetしてきたリポジトリのリストを取得する.
  • 移動したいリポジトリを選択する.
  • 新規セッションが作成され,そのセッションに移動する.

コード

これを.zshrcに書いたら動くと思います.

function create_session_with_ghq() {
    # fzfで選んだghqのリポジトリのpathを取得
    moveto=$(ghq root)/$(ghq list | fzf)

    if [[ ! -z ${TMUX} ]]
    then
        # リポジトリ名を取得
        repo_name=`basename $moveto`

        # repositoryが選択されなかった時は実行しない
        if [ $repo_name != `basename $(ghq root)` ]
        then
            # セッション作成(エラーは/dev/nullへ)
            tmux new-session -d -c $moveto -s $repo_name  2> /dev/null

            # セッション切り替え(エラーは/dev/nullへ)
            tmux switch-client -t $repo_name 2> /dev/null
        fi
    fi
}
zle -N create_session_with_ghq
bindkey '^G' create_session_with_ghq

エラーもみ消している感

こんな感じで動く

f:id:MitubaEX:20180502234529g:plain

参考にしました

ghq+fzf on tmux | matsub

blog.chairoi.me

Mobile Act OSAKA #4に参加してきた

mobileact.connpass.com

参加してきたので,まとめます.

サービス開発とアプリ開発 nory_kanameさん

クックビズのマネージャー

  • 作ったあとどうして行くか
    • ソフトウェア開発のV字モデル
    • データを見ることが多い
    • ログを見て何をするか?
      • ボタンのタップ率を調査
      • 縦スクロールなのに横スクロールのやつをなおす
      • 空の画面としては,コンテンツが追加されたらどうなるかなどの画像があるとわかりやすい

感想

データからわかるUI改善について,いろいろなパターンを知ることができました. ユーザの目線の動きに着目する例が多く,勉強になりました.

Firebaseとモバイル開発 1amageekさん

クックパッド

  • komerco
    • firebaseでサーバーレス
    • 短い時間で作るためのfirebase
    • firestoreを利用している

感想

FirebaseのFirestoreの利点に関して色々勉強になりました. Firestore使ってみようと思います.

Kotlinコンバートと戦った話 TakuyaOhashiさん

フェンリルAndroidエンジニア

  • java Android エンジニアには人権がない
  • Java を kotlin にコンバートして行く

  • Lombok

  • Icepick
    • Activityの破棄で入力した値が破棄されるやつをなんとかしてくれるやつ.
    • android-state
  • SAM変換
    • 一つだけの抽象メソッドを持つインターフェース
  • kotlinだとコメント入れ子が可能

感想

JavaからKotlinに変換する時の罠がたくさん知れて勉強になりました. ライブラリ周りでKotlinと相性が悪いと大変ということがわかりました.

Charlesで通信デバッグ izuchyさん

株式会社インパス

  • 運用の悩み

    • API間の通信が見えづらい
    • ログは出るけど・・・
  • Charlesで通信デバッグ

    • 間にプロキシ立てて通信を確認できる
    • 利用するとき変更すること
    • できること
      • 通信の内容を変更することができる -> ブレークポイント
      • 3G回線の再現
      • 通信のリトライ
      • API設計を変更して,施行が可能

感想

Charlesすごい.いろいろできそう. ちょっと触ってみます.

制約付きレイアウトと仲良くする itokさん

そらかぜの中の人

  • constraintLayout
    • 制約を守りつつ,可変のレイアウトが実現できる

感想

複雑なレイアウト周りをあまり知らなかったので,あまり理解ができず申し訳ない.

ペダルのある生活 Hironさん

株式会社MetaMoji

タブレットを利用してノートをかけるアプリ

  • iRig BlueTurn

感想

iOSでキー入力をとる話が非常におもしく,かつペダルでやる感じもネタ感があったよかったです.

@objcとは何だったのか hokuronさん

フェンリル株式会社

感想

@objc周りが完全にわからなくて,非常に申し訳ない.

QR Code Recognition on iOS 11 Satoshi Hachiyaさん

  • ios11では標準でQRコードを読み取れるようになった
  • wifiQRコードで配布できる
  • カレンダー登録もできる

感想

QRコードWiFiまで繋げるだって!?と一人感動していました. 少し興味があるので,触ってみようかと思いました.

まとめ

ネイティブの機能周りいろいろ触って見たいなぁと思ったので精進します.

おまけ

zsh + prezto + powerlevel9k + iTerm2 + Solarizedの環境周りをまとめてみる

github.com

雑にitamaeを利用してオレオレ環境を再現できるようにしたので,やったことなどを日本語でもまとめていきます.

OSは,Mac OS X 10.13.4です.

なおある程度まっさらな環境から作っていくことを想定しているので,動かない可能性もあります.🙇‍♂️


iTerm2

brewでインストールできます.(楽)

brew cask install iterm2


zsh

zshのアップデートを行います.

brew install zsh

sudo vim /etc/shellsで開いて一番下に以下の記述を追記します.

/usr/local/bin/zsh

その後,chsh -s /usr/local/bin/zshでシェルを変更します.


prezto

github.com

HOMEディレクトリで以下のコマンドを実行したらインストールできます.(zshrcなどがある場合は削除されるっぽいので注意)

git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"


powerlevel9k

github.com

preztoがインストールできたのであれば,HOMEにある.zpreztorc内のthemeを以下のように変更したらpowerlevel9kを使用することができます.

zstyle ':prezto:module:prompt' theme 'powerlevel9k'

しかし,themeを変えただけじゃ文字化けが発生すると思います. なのでフォントを入れます.

フォントは以下のコマンドで入ります.

git clone https://github.com/powerline/fonts.git --depth=1

# install
cd fonts
./install.sh

# clean-up a bit
cd ..
rm -rf fonts

その後,iTerm2の環境設定を開いてフォントをSource Code Pro for Powerlineに変更して,開きなおすとかっこいい環境になっていると思います.


f:id:MitubaEX:20180423041716p:plain


Option (入れなくても十分機能します)

個人的なプラス要素として,絵文字がいろいろあるフォントが使いたいなぁと思って,nerd-fontを利用しました. インストール方法は以下のコマンドを打つだけです.

brew tap caskroom/fonts
brew cask install font-hack-nerd-font

その後,フォントをHack Regular Nerd Font Completeに変更して,以下の記述を.zpreztorc内のthemeの上に記述します.

export TERM="xterm-256color"
POWERLEVEL9K_MODE='nerdfont-complete'

これでおそらく少し変わったと思います.


僕は色などをいろいろいじって以下のような感じにしました.

より詳しくは以下に記載されています.(wiki)

github.com


Solarized

いい感じのプロンプトができたので,iTerm2のテーマもいい感じにします.

驚くことにデフォルトでiTerm2にはSolarizedが入っているようで,設定で切り替えたら設定完了です.(僕は驚きました)

f:id:MitubaEX:20180423042354p:plain

まとめ

開発環境がかっこよくなると,モチベが上がるのでおすすめです.

関西Node学園 梅田キャンパス 1時限目に参加して来た

nodejs.connpass.com

参加して来たので,まとめます.

春からはじめる新しいNode.js - Node.js v10 @shisama_

平野さん、ウェブリオ

  • EcmaScript
    • 二ヶ月に一回ミーティング
    • TC39
  • node
    • node.js release にリリースしたやつが載っている
    • node4 v8 engine 4
    • node 6 今月末にLTSではなくなる
    • node 8 現在のLTS async / await をサポート
      • 一年後の四月にLTSではなくなる
    • node 9 現在のcurrent
    • 次のnode 10 4/24リリース
      • v8 6.6に
      • v8 6.7 chrome 67に乗っている
      • npm7に期待
      • EcmaScript
        • 多くの機能が追加される
        • dynamic import
        • promiseにfinallyが追加
        • node greenでどの機能が使えるかが書いている
        • 実験的な機能はフラグによって使用することができる
          • harmony
          • 実験的な機能が使える

感想

どのバージョンがどんな感じかを詳しく説明して,バージョンの上げる目安なんかもわかって勉強になりました.

TypeScript + Express(仮) @kamiyam

かみやんさん フリーランス

  • TypeScript
    • マイクロソフトさん
    • nodeの代わりにts-nodeを入れる
    • 型定義置き場はtypes/...
    • switch caseのところを文字列で比較するのではなく、enumで定義したtypeを利用する
  • TypeScript + Express

感想

実演もあったりしてどうやってTypeScriptを導入していくかをじっくりやっていて,すごく勉強になりました.ts-nodeは知らなかったです😇

Babel7.xで変わること @mochiya98

ふなおかさん HAL大阪

  • babel
    • npm i @babel/とかで書かないといけない
    • どこの情報を見たら良いか
      • planning for 7.0
      • nearing the 7.0
      • Upgrade to Babel7 移行メインの内容
      • babel-upgradeで移行が楽

感想

babelをあまり意識したことがなかったので,勉強します・・・

JavaScriptユニットテスト入門 きりん@sota1235

きりんさん メルカリ

テストに行くまでの道

  • テストの必要性
    • 品質担保
      • 意図した通りに動作するか
    • 責務ごとにテストを書く
    • 汚いコードはテストが書きづらい
  • 現実との戦い
    • フロントエンドのテストが書けるようになったのは数年前
    • UIとロジックの切り離し
    • テストのコスパ
      • ロジックが変化しやすいものはテストを書き換えることが多くなる
      • 計算ロジックはテストして良さそう
      • UIのテストは無駄になることが多い
      • ビジネスロジックは変わることが少ない
  • モジュールを切り出す
    • ユーザインタラクションとロジックを分離する

感想

スライドで出てきた,せやなボタンがネタ感があって非常に面白かったです.そしてそれを元にちゃんとロジックとUIを切り離し分離したコードまで書いてありすごく考えられたスライドで感動しました.こういうプレゼンをしたいなと思いました.😆

無理せずflowtypeを導入していく

まいけるさん

  • flowtype
    • jsで書いて,ビルドするときにアノテーションを取っ払う
    • flow-remove-typeでアノテーションを取れる
    • flow.org/en/docs/types
    • React使うときに便利
    • language serverを使おう
    • typeを定義するのが大変だったらObjectでおっけー
    • サードパーティーライブラリの型はanyになってしまう
  • flowのupgrade
    • ためるとやばい
    • flowはchangelogを見る
    • それで分からなければtestコードを見る

感想

flow周りのupgradeのつらい現状が非常に伝わって来ました.Utility Typesを知らなかったので,学んでいこうと思いました.

まとめ

精進します.🙇‍♂️