OmniAICreator/Qiita-1.07M huggingface dataset:
WindowsForm C# NumericUpDownのボタンを非表示にする

NumericUpDownのボタンを非表示にする方法です。



```C#
        private void Form1_Load(object sender, EventArgs e)
        {
            numericUpDown1.Controls[0].Visible = false;
            if (numericUpDown1.TextAlign == HorizontalAlignment.Right)
            {
                numericUpDown1.UpDownAlign = LeftRightAlignment.Left;
            }
        }
```

![無題.png](https://qiita-image-store.s3.amazonaws.com/0/165589/14a3a724-9fe5-5617-25a6-25f354ae4a9d.png)


枠を黒くする方法は見つかりませんでした。
【React Native】Android実機デバック手順

### Android実機デバック手順

1. システム > 端末情報 > ビルド番号を連打
1. システム > 開発者オプション> USBデバッグを許可

> ref: https://www.konosumi.net/entry/2018/07/10/031039#Android-%E7%89%88%E3%81%AE%E5%AE%9F%E6%A9%9F%E3%83%93%E3%83%AB%E3%83%89

そうすると、以下を叩けば接続されている端末のIDが表示されます

```sh 
$ adb devices
```

```
// 1台だけ接続で実行
react-natave run-android 

// id指定で実行
react-native <端末IDEALLY>
```

#### 実機で開発者メニューを開く

```sh
adb shell input keyevent 82
```
docker-compose upしたときに「A server is already running.」って言われないようにする

`docker-compose up`して`rails`サーバを立ち上げるときにこんなかんじで怒られることがある。

```sh
$ docker-compose up
...
web_1           | A server is already running. Check /app/tmp/pids/server.pid.
web_1           | => Booting WEBrick
web_1           | => Rails 5.0.6 application starting in development on http://0.0.0.0:3000
web_1           | => Run `rails server -h` for more startup options
web_1           | Exiting
...
```

`docker-compose kill`とかでコンテナ終了させたとき、pidファイルが残っているのが原因。

毎回 `rm tmp/pids/server.pid` するのも手間なので、docker-composeを修正します。

### before

```yml
version: '3'
services:
  db:
    ...
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db
```

### after

```yml
version: '3'
services:
  db:
    ...
  web:
    build: .
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db
```

おしまい :wave: 

## 参考
- [Railsのサービス を docker-compose up したら A server is already running. Check /[WORKDIR]/tmp/pids/server.pid. - メンチカツ](http://hsuzuki.hatenablog.com/entry/2017/06/08/151658)
- [When closing a container with a rails app, rails doesn't delete /tmp/pids/server.pid · Issue #1393 · docker/compose](https://github.com/docker/compose/issues/1393)
SPSS Modeler on WindowsでModeler ClientのデフォルトのエンコードをUTF-8に変更

SPSS Modeler on Windows で UTF-8 で日本語を扱いたいことがあると思います。
特に、Mac ユーザーと入出力ファイルを共有することが多い人は、新しいストリームを作成するたびに UTF-8 に設定しなければいけないので大変です。

UTF-8 の設定は、以下の3箇所で設定ができるようです。
　１. ノード単位(入力ノード、出力ノードで個別に設定)
　２. ストリーム単位
　３. Modeler Client

１.と２.については、以下にわかりやすい手順が記載されていますので、割愛します。
　**SPSS Modeler on WindowsでUTF-8を扱う**
　https://qiita.com/kawada2017/items/643311fcfd5bf7eca596

## Modeler ClientのデフォルトのエンコードをUTF-8に変更
SPSS Modeler の options.cfg ファイルに、新しい項目「encoding」を追記して、そこに文字コードを設定して、SPSS Modeler を起動しなおすと、デフォルトのエンコードを変更できました。

マニュアルなどの公式のドキュメントの記載は見つけられなかったので、当設定を行う場合は各個人の責任でお願いします。

### 手順
１. options.cfg ファイルをテキストエディタで開き、以下のように追記してファイルを保存します。
※options.cfg ファイルは、[SPSS Modelerインストール・パス]/config ディレクトリーにあります。
例）C:\Program Files\IBM\SPSS\Modeler\18.1.1\config

|encoding, utf-8|
|:--


２. SPSS Modelerを再起動します。

これで SPSS Modeler Client 自体のデフォルトのエンコードが UTF-8 になりますので、Mac ユーザーとのファイルの共有もストレスなくできるようになります。
ただし、WindowsユーザーとSJISのファイルを共有することもある人には、この設定はオススメしません。

## 試した環境
Modeler 18.1.1
Windows 7
Webページの高速化の為に画像周りでやったこと

Webページの表示の高速化で、画像周りは手を入れにくいなと思いつつも、お手軽で効果があった方法のご紹介です。

### 画像最適化(1)
まずは表示されるサイズと実際に使用するサイズが同じ（もしくは近い）か確認しました。
(近いと書いたのはレスポンシブにするとデザイン上、画像サイズが画面比率で決定される場合がある為です)

縦横サイズが大きい画像はファイルサイズも大きい場合がほとんどなので、表示に必要なサイズに縦横を調整してサムネイルを生成します。
表示される画像が200x200なのに、ダウンロードされる画像が500x500だと、かなり無駄なので。
少し古い記事だとRetina用に2倍のサイズをsrcに入れるTipsが紹介されていたりしますが、Retina用には `srcset` で指定して、 `src` には通常サイズを指定するようにしてあります。

### 画像最適化(2)
画像に不要なデータ(= Exif)が残っている場合があるので、削除しておきます。

```ruby
image = MiniMagick::Image.open("test.jpg")
image.strip
```

画像によっては効果があるんですが、元々消えてる画像もあるので画像によって削減できるサイズはまちまちでした。

### 画像最適化(3)
ここからさらに画像のファイルサイズを削ります。
今回は `mozjpeg` を使ってみました。
ImageMagick等で生成されるjpegと比べると同じクオリティでもファイルサイズを小さくすることができます。
[mogjpeg](https://github.com/mozilla/mozjpeg) をソースインストールしつつ、 Gemで `mozjpeg` をインストールしました。

```ruby
Mozjpeg.compress(
  tmp_file,
  new_file,
  arguments: '-quality 80 -optimize'
)
```

### 遅延読み込み(lazyload)
画面外(ファーストビュー外)の画像を遅延読み込みすることで、読み込み完了を早くすることができます。
同様のライブラリはいくつかありますが、今回は `lazysizes` を使用してみます。
(最近触っているサイトは、Rails(erb)で `imgタグ` が出力される場所もあれば、 Reactで `imgタグ` が出力される場所もあるので、どちらも同じ仕組みでlazyloadに対応したかった)

実際はassetsですが、直接読み込めば下記のような感じです。

```html
<script src="/js/lazysizes.min.js"></script>
```

あとは出力されるimgタグが下記のようになれば、画面外の画像は必要になったタイミングでダウンロードされます。

```html
<img data-src="test.jpg" class="lazyload">
```

実際は、Retina対応＋レスポンシブ対応にしたいので以下のように使用しています。

```html
<img data-src="test.jpg" data-srcset="test.jpg 1x, test2x.jpg 2x" data-size="auto" class="lazyload">
```

### 今後
- mozjpegを紹介しつつも、jpgeよりもwebpの方がいいんじゃないかなと思ったりします。
- lazyloadを使っている時に、高速にスクロール(ページの下の方に急激に移動）すると、画像の読み込みが追い付かない場合があるので、これはなんとかしたいです。
新人エンジニアがLeap Motionで遊んでみた

入社3ヶ月の新人エンジニアが、Leap Motionで遊んでみました。

# Leap Motionとは
ざっくりですが、手と指の動きを認識できるセンサーです。
<img src="https://qiita-image-store.s3.amazonaws.com/0/316493/38e4f351-0b8b-290c-2719-61d29eb17a7e.jpeg" alt="Leap Motion" width=80%>

箱の中には本体の他に、接続用USBケーブルが2本（長いものと短いもの）が入っています。
<img src="https://qiita-image-store.s3.amazonaws.com/0/316493/b6b9b75d-c571-fdc2-5a1c-2d461168e565.jpeg" alt="Leap Motion" width=80%>

早く遊びたい気持ちを抑えて、まずはセットアップからしていきます。

# 環境

メモ程度に…

* MacBook Pro
* macOS Mojave 10.14

# セットアップ

* 接続用USBケーブルで接続する。

* [公式サイト](https://www.leapmotion.com/setup/)からインストーラーをダウンロードする。

  * Desktop > Get started<br>
<img src="https://qiita-image-store.s3.amazonaws.com/0/316493/a3f8d761-034c-868f-501e-8da42fb36cd6.jpeg" alt="screenshot" width=80%>

  * ダウンロードするOSを選ぶ。<br>
<img src="https://qiita-image-store.s3.amazonaws.com/0/316493/c9c8a3af-7cd9-2c47-0478-733002018f73.jpeg" alt="screenshot" width=80%>

* インストーラー（Leap_Motion_Setup_Mac_2.3.1.dmg）を開き、指示に従ってインストールする。

以上で認識されるようになりました！さっそく遊んでみます！！

# Google Earthを動かしてみる
簡単に遊べるデモは[こちら](https://gallery.leapmotion.com/)にたくさんあるのですが、
今回は個人的な趣味嗜好により、Google Earthを動かしてみたいと思います。

* [Google Earth](https://www.google.co.jp/intl/ja/earth/)から「Google Earth プロ（パソコン用）」 をダウンロードする。
<img src="https://qiita-image-store.s3.amazonaws.com/0/316493/6dc571f4-372e-c63e-f26b-756bf8e1968b.jpeg" alt="screenshot" width=80%>
**↓**
<img src="https://qiita-image-store.s3.amazonaws.com/0/316493/2e9481b8-348d-6aed-0a12-3440be220e0e.jpeg" alt="screenshot" width=80%>

* インストーラー（GoogleEarthProMac-Intel.dmg）を開き、指示に従ってインストールする。

* アプリを開いて、Leap Motionを認識させる。
Google Earth Pro > 設定 を開き、
ナビゲーション > マウス以外のコントローラ > コントローラを有効にする にチェックを入れる。
<img src="https://qiita-image-store.s3.amazonaws.com/0/316493/fffbcafb-74a6-2b38-dd7c-28fef109d1be.jpeg" alt="screenshot" width=80%>

以上！
こんな感じで動きます！！
<img src="https://qiita-image-store.s3.amazonaws.com/0/316493/a508d58f-17b1-bc0d-5c21-ca957fce3f49.gif" alt="アニメーションgif" width=80%>

全体の所要時間は15分程度でしょうか。
近いうちに面白そうなデモで遊んでみたいと思います。

お粗末さまでしたー。
PhotoShopの「塗りの不透明度」はPSDファイルフォーマットのどこに格納されているのか？

# 発端

今回、[吉里吉里用のPSDプラグイン](https://github.com/wtnbgo/psdfile)に、PhotoShopの「塗りの不透明度」（↓これです）を読み出す機能を追加しようと思い立ちました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/325282/01fbe21e-3fd3-a8cb-b214-353a6a662ebd.png)

# 調査

PhotoShopのPSDファイルフォーマットの公式な仕様書はAdobeのサイトで公開されています。

[Adobe Photoshop File Formats Specification](https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/)

PhotoShopの「塗り」パラメータは英語では「Fill」もしくは「Fill Opacity」と表現されます。仕様書内をこのあたりのキーワードで検索してみましたが、該当するフィールドの定義が見当たりません。

関連情報を検索してみると、どうもこの仕様書はメンテナンスが不十分な様子なので、該当の仕様が記載漏れになっている可能性を疑いました。そこで、既存のpsd parseライブラリのいずれかにヒントが無いか調べることにしました。

その結果、[libpsd](https://sourceforge.net/projects/libpsd/files/)の実装に、対応するフィールドの読み出し機能が実装されていることを発見しました。

# 結論

「塗りの不透明度」のフィールドは、**Layer Info** の　**Additional Layer Information** に、 **'iOpa'** というキーで格納されています。

前述の公式の仕様書にならうと、以下のような定義になります。

**Additional Layer Information**
**Fill Opacity**
The key of the fill opacity is 'iOpa'. The Data has the following format:
**Fill Opacity Info**

|Length| Description                               |
:------|:------------------------------------------|
|1     | Opacity: 0 = transparent ... 255 = opaque |
|3     | Padding                                   |
1コマンドでまとめて複数のプルリクをmergeする方法

1コマンドでまとめて複数のプルリク(pr)をmergeする方法

Terminal

```
% git fetch upstream
% git checkout -b new_stgup_branch upstream/master
% toMergeForStgUp
```

コンフリクトでこけたら、 直して、また `toMergeForStgUp` を叩けば続きだけmergeできる



## 事前準備

hub コマンドinstall
https://github.com/github/hub


.git/config

```
[remote "upstream"]
	url = git@github.com:<オーナー名/リポジトリ名>.git
	fetch = +refs/heads/*:refs/remotes/upstream/*
	fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*
```

.zshrc

```
## まとめてstgにあげるprをmerge
# githubのラベルが s-uptoStaging または s-Staging がついているものをまとめてmerge
# \d{5} の数字は pr番号の桁数
# 適宜、チームのルールに合わせて変える

function toMergeForStgUp(){
  hub pr list -f "%i %l%n" | grep -e s-uptoStaging -e s-Staging | grep -o -E "\d{5} " | while read i
  do
    git merge upstream/pr/$i
  done
}
```

※ `-f "%i %l%n"` で、 pr id と ラベル情報を改行で取得。タイトルにissue番号が入っている時に `grep -o -E "\d{5} "` で該当にならないように 必要な情報にしぼる。
[React Native] 突然 Could not find any matches for com.android.tools.build:gradle:2.3.+ as no versions of com.android.tools.build:gradle are available.

React Nativeのプロジェクト開発してますが、今日突然以下のエラーが発生してビルドできなくなってしまいました。

```
A problem occurred configuring project ':react-native-vector-icons'.
> Could not resolve all artifacts for configuration ':react-native-vector-icons:classpath'.
   > Could not find any matches for com.android.tools.build:gradle:2.3.+ as no versions of com.android.tools.build:gradle are available.
     Required by:
         project :react-native-vector-icons

```

このメッセージだと`react-native-vector-icons`のパッケージですが、他にもいくつかのパッケージで同じエラーが発生します。

[ここ](https://github.com/react-native-community/react-native-image-picker/issues/1002#issuecomment-445864985)を参考に、`android/build.gradle` (app/以下でない) に以下を追記することで修正できました。

```
subprojects {
    if (project.name.contains('react-native-vector-icons')) {
        buildscript {
            repositories {
                jcenter()
                maven { url "https://dl.bintray.com/android/android-tools/"  }
            }
        }
    }
    // 同様のエラーが発生するパッケー分追記する
}
```

あ、gradleのキャッシュ削除も必要かもです。

```
rm -rf $HOME/.gradle/caches/
```

どこかのリポジトリから gradle 2.3.x が消えてしまったのでしょうか？
よくわかりませんがとりあえず解決したよってことで!

ライブラリ側の更新でそのうちこの記述は不要になるとは思いますが。。
Mojaveで外部ディスプレイのフォントが汚いのをなんとかする

Mac OSX Mojave は、Retina によってもはや不要となった、サブピクセルアンチエイリアス処理がオフにされました。て、いやこれ Retina ディスプレイなら細いフォントで綺麗なんですが、非 Retina 外部ディスプレイではひどいことになるじゃないですか。

![スクリーンショット 2018-12-11 15.31.26.png](https://qiita-image-store.s3.amazonaws.com/0/11525/26db5ff3-6203-1217-bed0-805a03ca4d2e.png)

アプリにもよりますが、自分が使っている VSCode はこのありさまでした。
これを以前のアンチエイリアス処理に戻す方法があります。

```
defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO
```

この設定以後、起動するアプリのフォントスムージングオプションが変わるようです。

また、 アンチエイリアスの強度を変更する設定もあるみたいです。

```
defaults write -g AppleFontSmoothing -int 3
defaults write -g AppleFontSmoothing -int 2
defaults write -g AppleFontSmoothing -int 1
defaults write -g AppleFontSmoothing -int 0
```

3から0の値は、強・中・弱・無にあたるようです。こっちはいったんログアウトしないといけないらしいですね。

...では、御覧くださいこの劇的ビフォー・アフター!!

![スクリーンショット 2018-12-11 15.31.26.png](https://qiita-image-store.s3.amazonaws.com/0/11525/26db5ff3-6203-1217-bed0-805a03ca4d2e.png) ![スクリーンショット 2018-12-11 15.40.51.png](https://qiita-image-store.s3.amazonaws.com/0/11525/043db2db-b6d2-7710-f23a-f451e3f30ed4.png)

4Kモニター買ったとき元に戻すには NO を YES に

```
defaults write -g CGFontRenderingFontSmoothingDisabled -bool YES
```

OS の GUI シェルなどはこの

![スクリーンショット 2018-12-11 15.45.15.png](https://qiita-image-store.s3.amazonaws.com/0/11525/da74cbdc-bcf3-b71a-c1ae-2500862dcc47.png)

 「使用可能な場合は滑らかな文字を使用」 が関係しているようです。

各設定の関係はあまり理解してないのですが、とりあえず、普通の外部ディスプレイ (Retina 以前の Thunderbolt) をメイン側に使っている自分としては、それぞれアンチエイリアス積極的にかける感じにすると快適でした。
Flutterのデスクトップアプリをビルド＆実行してみる

Flutterすごいですね。iOS/AndroidだけでなくLinux/Mac/Windowsのデスクトップアプリも作れるようになるそうです。HammingbirdでWebもできるようになりますし本当になんでもできるようになります。
デスクトップアプリをビルドするためのリポジトリとサンプルプログラムが公開されているので試しにビルドしてみました。

Mac前提です。
先に最新のXCodeを入れておきます。

## 1. リポジトリをclone

```
# flutterのリポジトリもflutter-desktop-embeddingと並列に置く必要があります
git clone https://github.com/flutter/flutter.git
git clone https://github.com/google/flutter-desktop-embedding.git
```

## 2. XCodeでネイティブのフレームワークをビルドする

`flutter-desktop-embedding/library/macos` をXCodeで開きビルドする

## 3. プログラムをビルド

`example/macos/ExampleEmbedder.xcodeproj` をXCodeで開いてビルド＆実行

## 4. ホットリロード

UIのソースは `example/flutter_app/lib` にある。
下記のコマンドでホットリロードしてソースの変更を反映させることができる。
ポートはXCodeのコンソールに表示される。毎回変わるようなので注意。

```
# example/flutter_app　で実行
../../../flutter/bin/flutter attach --device-id=flutter-tester --debug-port=58460

# Shift + R でホットリロード
```

詳しくはここ
https://github.com/google/flutter-desktop-embedding/blob/master/Debugging.md
ELBのヘルスチェックをログに残したくない(Apache版)

#はじめに
ELB(ALB)はターゲットグループに含まれるWebサーバーの死活監視(ヘルスチェッ)をするため、頻繁(デフォルトだと30秒間隔)に対象のWebサーバーへアクセスをすることから、アクセスログにサービスとは関係のないログが大量に残されます。
また、Webサーバーから見た場合、クライアントアクセスは全てELBからのアクセスとなるため、本来のアクセス元の情報が記録されないことになります。
これは、ELBからのヘルスチェックアクセスを記録しないようにすると同時に、本来のアクセス元の情報をログに記録する場合のApache設定方法です。

#具体的な設定(Apache)

*.confファイルに次のログ設定を書きます。
個人的には、ログフォーマット設定はグローバル設定としてhttpd.confに記述し、
ログ出力先の設定は各バーチャルホスト.confに出力先ログファイルを指定するようにしています。

```httpd.conf
#前略～～～
<IfModule log_config_module>
    SetEnvIf User-Agent "ELB-HealthChecker.*" nolog
    LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>
#～～～後略
```

ログフォーマットに「"%{X-Forwarded-For}i」を記述することで、本来のアクセス元情報を含めます。
※logio_moduleの記述は必須ではありません。I/Oバイト数を記録する場合のみ記述します。

```virtualhost.conf
<VirtualHost *:80>
#前略～～～
  CustomLog logs/hogehoge/access.log combined env=!nolog
#～～～後略
</VirtualHost>
```
VirtualHost セクション内で出力先ログファイルを指定します。
「env=!nolog」を指定することで、ユーザーエージェントが「ELB-HealthChecker.*」となっているものはログに出力されなくなります。

#おわりに
適切なログ出力を設定することでログの可読性を確保して利用状況の把握し、トラブルシューティングに備えましょう。
Julia Pkg modeの操作

`Julia: ver.1.0.2`
参考: 
- [julia 0.6からjulia 1.0への移行](https://qiita.com/Hidekazu-Karino/items/eeda08fbd6f16c735843)
- [公式ドキュメント/ Standard Library / Pkg](https://docs.julialang.org/en/latest//stdlib/Pkg/)


# Pkg modeとは
`version1.0`から新たに導入された．
juliaモード（`julia>`となっている状態）で`]`を入力すると`(v1.0) pkg>`に変化する．

## 終了方法
`delete`キーを押すだけ．(これ調べるのに時間かかった笑）

# コマンド

## `help`
これを見れば，大体解決する．

```
(v1.0) pkg> help
  Welcome to the Pkg REPL-mode. To return to the julia> prompt, either press
  backspace when the input line is empty or press Ctrl+C.

  Synopsis

  pkg> cmd [opts] [args]

  Multiple commands can be given on the same line by interleaving a ; between
  the commands.

  Commands

  activate: set the primary environment the package manager manipulates

  add: add packages to project

  build: run the build script for packages

  develop: clone the full package repo locally for development

  free: undoes a pin, develop, or stops tracking a repo

  gc: garbage collect packages not used for a significant time

  generate: generate files for a new project

  help: show this message

  instantiate: downloads all the dependencies for the project

  pin: pins the version of packages

  precompile: precompile all the project dependencies

  preview: previews a subsequent command without affecting the current state

  remove: remove packages from project or manifest

  resolve: resolves to update the manifest from changes in dependencies of
  developed packages

  status: summarize contents of and changes to environment

  test: run tests for packages

  update: update packages in manifest
```
## `add`


複数個もOK

```
(v1.0) pkg> add Example1 Example2 Example3
```

URLでもOK

```
(v1.0) pkg> add https://github.com/JuliaLang/Example.jl
```
## 各Packageのversionを確認したい時: `status`
```
(v1.0) pkg> status
```
特定のPackageのversionはどうやって確認できるのだろうか？？
OctoberCMSプラグイン作成：Ajaxハンドラにデータを渡す

[October CMSのドキュメント][ref1]では (さらっと書いてはあるが) ハンドラでデータを受け取る方法が分かりづらかったのでメモ。OctoberのAjax APIの基本的な使い方はドキュメントを参考のこと。

[ref1]: https://octobercms.com/docs/ajax/handlers

Octoberは[JavaScriptからOctoberのAjaxハンドラを呼び出す方法][ref2]と、[JavaScriptなしでHTMLタグから呼び出す方法][ref3]の２通りを提供しているので、両方に関して記述する。

[ref2]: https://octobercms.com/docs/ajax/javascript-api
[ref3]: https://octobercms.com/docs/ajax/attributes-api

## フロントエンドからデータの渡し方
下記の例ではAjaxハンドラ`onHoge`が実装されていると仮定する。
AjaxハンドラはPageのPHPセクションに関数として、あるいはコンポーネントにメソッドとして実装する。

### HTMLタグからAjaxを使う場合
`<input>`の値が自動的に送られるのに加えて、`data-request-data`属性の値が送信される。（この例では都合上`hidden`にしているが、`type`は何でも良い。）

```html
<form>
    <input type="hidden" name="value1" value="hoge">
    <input type="hidden" name="value2" value="fuga">
    <button type="button" data-request="onHoge" data-request-data="value3: 'foo', value4: 'bar'">Ajax実行</button>
</form>
```


この例だと、`onHoge`では下記のようなデータを受け取ることができる。

```php
array (
  'value1' => 'hoge',
  'value2' => 'fuga',
  'value3' => 'foo',
  'value4' => 'bar',
);
```

### JavaScriptからAjaxを使う場合
`request`メソッドの第二引数のオブジェクトに`data`プロパティとして渡したいデータを入れる。

```javascript
$.request('onHoge', {
    data: {
        value1: 'foo',
        value2: 'bar',
    },
});
```

この例では、`onHoge`では下記のようなデータを受け取ることができる。

```php
array (
  'value1' => 'foo',
  'value2' => 'bar',
);
```

## データの受け取り方
上記のどちらの呼び出し方法を使用しても、ハンドラでの取得方法は同じだ。
ヘルパー関数`input`を使用してデータを取得することができる。（`input`はInputファサードの`get`メソッドと同じものなのでこちらを使うこともできる。）

```php
public function onHoge()
{
    $inputs = input(); // 全てのデータを配列で取得する
    Log::debug($inputs);
    $value1 = input('value1'); // value1の値を取得する
    Log::debug("value1 is {$value1}");
}
```
Video Group Roomへの電話参加ができるようになったようです

2/19 追記
Twilio公開ドキュメントの該当ページを記載いたします。
ご参照ください。
https://jp.twilio.com/docs/video/adding-programmable-voice-participants-video-rooms

-------------------------


みなさま、こんにちは。

週明けから寒さが厳しくなってきましたね。
街を行き交う通勤中の人々も、肩をすくめて寒さに耐えています。

とはいえ会社につけば、暖かいオフィスで温かいコーヒーを飲みながら
同僚と「サンタさんって私のとこにもくるかしら？」なんて話しながら楽しく過ごせるわけですが
営業さんともなるとそうもいきません。
どんなに外が寒くても、往訪先に行かなくてはいけないわけです。
雨ニモ負ケズ風ニモ負ケズ　ってやつですよ。偉い！

![tukin.jpg](https://qiita-image-store.s3.amazonaws.com/0/165378/5ef539dc-910a-6af6-54ea-c289bf4f3f71.jpeg)

※画像はイメージです


でもTwilioでビデオ会議システムを作れば遠隔で打ち合わせができるので寒い思いをしなくてもすみますね！


で、おなじみのTwilio Videoですが、この度、新機能が発表になっていましたのでご紹介させていただきます。

なお、本記事はTwilio Blogをネタ元としております。
**_ちゃんとした_**記事は、そちらをご覧ください。


<img width="672" alt="スクリーンショット 2018-12-11 16.09.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/165378/a70cccc5-4400-9894-d172-adffaf5dd365.png">

https://www.twilio.com/blog/now-you-can-add-programmable-voice-participants-video-group-rooms



#どんな機能？

今までは、Twilio Video GroupRoomを使って構築されたアプリケーション上でのコミュニケーションしかできませんでしたが、GroupRoomにSIPやPSTN（一般電話回線）からの参加者を追加できるようになったようです。

**すごい！ 便利！**

ちなみに対象となるのは、GroupRoom,Small GroupRoomでPeer To Peer Roomでは利用できないようです。


#参加方法は？
参加の仕方はとてもシンプルで、
・GroupRoomと連動させておいたTwilioの電話番号に架電して参加してもらう
・参加対象者の電話番号にTwilioから発信し、受話してもらうとGroupRoomに参加できる
の２パターンになります。

![twilio-video-pstn.width-800.png](https://qiita-image-store.s3.amazonaws.com/0/165378/ff20f91c-8fe8-c5e2-6f62-1e0953a7f1dc.png)


会議の時間になったらあらかじめ登録しておいた対象者に自動で電話がかかる、といったほうが便利かもしれませんね。


#どうやって構築するの？

電話での参加者をTwilio Video GroupRoomに接続するために、新しいTwiML動詞＜Connect＞が作成されました。
＜Connect＞に電話参加者を参加させていGroupRoomを指定します。

具体的には以下のようなTwiMLを作成します。

```xml
<?xml version="1.0" encoding="UTF‐8"?>
<Response>
  <Connect>
    <Room>YourRoomNameHere</Room>
  </Connect>
</Response>
```

 
**シンプル！ 素敵！**


#どんなシーンで使えそう？

例えばTwilioVideoを使ったビデオ会議システムの参加者のインターネット通信状態が悪かったり
参加するための端末の設定がうまくいかない。
また、業務環境からのインターネット接続が許可されていなかったりなど
必ずしも全ての人がビデオでの接続ができるとは限りません。

そんな時にビデオ会議に電話で参加できたらとっても便利ですよね？

あとは、思いつきアイデアなのですが、コンタクトセンターでビデオを使った手話窓口を作って
手話対応の方が受けた質問を、電話参加しているオペレータさんに伝えて、その回答を手話通訳者さんが手話でお客様に伝える仕組みが作れそうですね。
ポイントはコールセンター側は既存の電話システム（SIP/電話番号）で対応できるってトコ。

お客様 ⇄（手話やりとり）⇄　手話対応者さん ⇄（音声で伝える）⇄　既存のコールセンターシステム。


<img width="531" alt="shuwa_image.png" src="https://qiita-image-store.s3.amazonaws.com/0/165378/b27e3d02-6203-537e-937b-8e904969c89d.png">


#でも、お高いんでしょう？

いえいえ、この機能の利用には別料金は発生しません。
今まで通りのGroupRoomの利用料金と、Voice利用で発生する発着信の通信料金がかかるだけです。

・Programmable Video料金
https://twilio.kddi-web.com/price/video/

・Programmable Voice料金
https://twilio.kddi-web.com/price/voice/

#最後に

Twilioの魅力は、何と言ってもエンドユーザ様の環境にあったコミュニケーション手段をサービスに実装できる点だと思います。
今回の新機能で、そんなTwilioの魅力がまた一つ増えましたね！

みなさんなら、この機能をどのように使いますか？
Hackを使いこなす .hhconfig達人への道

# .hhconfig
Hackは、単純に `<?hh // strict` を記述したHackのファイルを用意するだけではなく、
`.hhconfig` ファイルをプロジェクトのルートに作成しなければなりません。
このファイルは自動で作られるものではない、というのを忘れずに覚えておきましょう。

このファイルは主にTypechckerのためのもので、
Typecheckerが型チェックを行う場合に、プロジェクト全体のコードを分析するわけですが、
この時、アプリケーションのプロジェクトルートはどこか、というのを教えるために設置する必要がある、ということです。

最近のHackはバージョンアップで記法や型周りで変更が入ることもあり、
.hhconfigで一部だけTypecheckerの振る舞いを変更したり、
実装コードに対して厳格にチェックする様にしたり、と
アプリケーション開発時に結構重宝することが多いです。
.hhconfigファイルを作ればいいだけ、という情報は **古すぎる情報** なので、
しっかりと覚えましょう。

今回はHackの達人になりたい方むけに .hhconfig でよく使われるものを解説していきましょう

## assume_php
PHPファイルを混入させて使うかどうかの設定です。

今現在はHackのコードの中にPHPのコードが混入するのを想定し、デフォルトはtrueになっています。
Hackのみで開発する場合は不要なので、必要がなければfalseで良いです。
ただしこれがtrueになっていてもPHPライブラリがHackのコードに入る場合は、
**strictにすることはできません。**
今後HHVM自体でもHack環境のみになっていくため、
ライブラリ、フレームワークを作って公開する場合は *false* にしておきましょう。
どうしてもPHPのライブラリなどを混ぜて利用したい場合は、hhiファイルを作成して、
hh-autoloadに取り込んでください。 [PHPのライブラリの補完について](https://qiita.com/ytake/items/2aee4fdee13e7244adfe#php%E3%81%AE%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E8%A3%9C%E5%AE%8C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)

```.hhconfig
assume_php=false
```

## safe_vector_array / safe_array
strictモードでは利用できませんが、
arrayの `<_>` と `　<_, _>` の混入についてですね。
fooの引数にただの配列が指定されていますが、
内部でコールしているメソッドの引数の配列が異なっています。
これを良しするかどうかです。
デフォルトでは良しとしないことになっています(true)

```hack
  public function foo(array $data): void {
    $this->bar($data);
    $this->baz($data);
  }

  public function bar(array<string> $data): void {
    $this->baz($data);
  }

  public function baz(array<int, string> $_): void {

  }
```

不具合の原因にも繋がりますので、
PHPから移行途中のコードや、昔のHackのコードを動かす場合、
といったケース以外はtrueにしておくのをオススメします。

```:.hhconfig
safe_array = true
```

## deregister_php_stdlib
Hackのhhiファイルなどに `<<__PHPStdLib>>` と書かれている関数がいくつもあります。
主にPHPで利用されている関数です。
これを有効にするとこれらの関数が利用できなくなります。
デフォルトはfalse

```:.hhconfig
deregister_php_stdlib = false
```

## user_attributes
Hackのアノテーション / Attributesに関するものです。
`__` から始まるものはHackであらかじめ用意されているものですが、
それが以外のものは開発者が自由に作ることができます。
これはプロジェクト内で独自アノテーションを利用する場合に、
開発者が作る・使うものを明記することでそれ以外のものの混入を防いだり、勝手にたくさん作られるのを制御できます。

下記の様にuser_attributesで空文字指定すると、
開発者が独自アノテーションを作ることはできません。

```:.hhconfig
user_attributes = 
```

次の例の通りに記述すると、 `<<Hoge>>` は使うことができますが、
それ以外の独自アノテーションは利用できません。

```:.hhconfig
user_attributes = Hoge
```

## disallow_return_by_ref
参照渡しの返却を許可するかどうかの設定です。
デフォルトはfalseですが、
trueにすると前回紹介した xhp-lib / ([初めてのXHP](https://qiita.com/ytake/items/2ee2c0e10c6ef6f040fa), [
初めてのXHP Tutorial / XHPとReact](https://qiita.com/ytake/items/d62a74d9cdab6baee4f8)) が引っかかってエラーが発生します。

```:.hhconfig
disallow_return_by_ref = true
```

ちなみにHackで参照渡しで返却したい場合は、下記の書き方です。

```hack
  public function &returnReferenceArray(): array<string, string> {
    return [];
  }
```

あたまに `&` 

## ignored_paths
特定のファイルを完全に無視するようにするためのものです。 
このオプションには、正規表現の配列が含まれています。
たとえば、 **ignored_paths = ["vendor /.* tests？/"]** というようになります

```:.hhconfig
ignored_paths = ["vendor /.* tests？/"]
```

今回取り上げたのは一部だけですが、
みなさんの環境であれ？！って思ったら .hhconfig を確認しみましょう！
東京リージョンのAmazon Connectを利用してみる

ついに東京リージョンのAmazon Connectがリリースされました！
さっそく使ってみたいと思います。

# インスタンスの作成
Amazon Connectで東京リージョンを選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/ecaa7452-3a24-c458-5bc1-13c3cbe1cb10.png)

インスタンス名を「tokyo1」として次へ
※「tokyo」は先を越されたようです
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/e165899c-5364-ad58-2630-3499c21a889d.png)


管理者を作成して次へ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/2e010a43-4cfb-9b2e-9bd0-43b99e15e958.png)


オプションはデフォルトで次へ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/f704c40b-d95b-b2f2-978c-b1cb29f0bbc4.png)


設定内容を確認して次へ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/2ce0aec5-7a90-e7b4-2c41-ac0a285baa13.png)

作成
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/e7bbc9dc-abe2-f9c2-2306-067b24598759.png)

数分待ちます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/8c1a7b9c-ff42-4766-9a62-9fe1b2457225.png)

作成完了
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/c2f1ed1c-bb2e-7fbb-2747780a8a85b3d4.png)

Amazon Connectにアクセスできました
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/e6987941-82de-e733-2ad6-2168536a9b3c.png)

東京リージョンにインスタンスが作成されていることを確認できます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/561422ff-c908-7a4c-0a5b-7b22d24877b0.png)

# 電話番号の発番
それでは東京リージョンでは0120が利用できるようなので電話番号を取得してみます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/ca51ded9-b324-24a7-f97d-bdece3fbde64.png)

Toll freeで日本を選択すると0120の電話番号が選択できるようになっています！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/321760/5734318c-3822-d56e-7500-ef30ae96fc87.png)

# まとめ
取得した電話番号にコンタクトフローを割り当てて利用すると普通につながりました。
Amazon Connectが東京リージョンでリリースされたことで日本でもコンタクトセンターの入れ替えが活発になると思います！
これからもウォッチしていきたいと思います
Microsoft Store Appの格納場所

最近はMicroSoft Store Appの提供が主流みたいで
本来のソフトウェア格納場所（C:\Program Files）とは別にアプリケーションが保管されているみたいだったのでメモ

#開き方
パスでそのままエクスプローラから開くこともできそうですが、「ファイルを指定して開く」の方が簡単そうです。

##手順
①Windowsボタン + R（ファイルを開く）
②開いたダイアログで「shell:appsfolder」と入力
③ダイアログでOK押す

上記手順を行ったらApplicationsのフォルダが開き、インストールされているアプリケーションの確認ができると思います。
アプリケーションのショートカットを作成したい場合とかメニューにアプリ含めたい場合に役立ちそう。

以上
React native アプリをExpoで公開してスキャンする際に詰まった所

#自己紹介
react-nativeを触り初めた初心者エンジニアです。約2ヶ月かけて独学でモバイルアプリを開発してきた知見を共有します。開発順序通りではないですが、思い出した項目ごとで共有しようと思います。
ちなみにMacを使用しています。

そもそも、
react-nativeとはの方は、こちらのサイトを参考に。
[React Nativeとは何なのか](https://qiita.com/gonta616/items/59ca174ca5068a805a18)

expoとはとはの方は、こちらのサイトを参考に。
[Expo ではじめる ReactNative 開発環境](https://qiita.com/mizchi/items/4bcc82cbf4bbe8050993)

下記サイトでexpoのアカウントを作れます。
[expoサイト](https://expo.io/)

#初めてのアプリ公開
いきなりアプリ公開の話で恐縮です。



まず、手順としては、ターミナルでプロジェクトフォルダまで移動しまして、
```exp login
```のコマンドを叩くと、expoのアカウント作成時の
ユーザー名とパスワードを求められるので、入力します。
これで、expoアカウントに紐づいたアップロード先が決まります。

次に、
```exp publish
```とコマンドを叩くと本番にアップロードされます。少し時間がかかりますが、エラー無しだと、最後に
https://exp.host/@Acount-name/app-name
のようにexpoのサイトURLが表示されます。
ここにアクセスして表示されたQRコードをモバイルにインストールしているExpo Cliantアプリでスキャンすると、
開発中のアプリの動作が確認できます。

ちなみに、
```expo publish --release-channel <your-channel>
```例えば、
```expo publish --release-channel staging
```のようにコマンドを叩くと、本番公開とは分けてテスト環境をアップロードし、共有することができます。

チャンネル名をつけて公開すると
https://exp.host/@Acount-name/app-name?release-channel=staging
のように、アクセスするURLが変わるのに注意してください。

ここでまず、つまずきました。stagingに公開したのに、デフォルトの
https://exp.host/@Acount-name/app-name
のQRコードをスキャンしてて全然読み込めませんでした。。。

ミスに気づいて、再度スキャンしなおすとandroidではうまくアプリ読み込みできました!
が、iosでは、読み込めませんでした。

#iOSの挙動についての謎

アクセスしたサイトのQRコード付近に、「With an Android phone, you can scan this QR code with your Expo mobile app to load this project immediately.
(Android携帯電話では、ExpoモバイルアプリでこのQRコードをスキャンして、すぐにこのプロジェクトを読み込むことができます。)」
と記載がありました。
また、[Expo　公式ドキュメント](https://docs.expo.io/versions/latest/workflow/publishing#__next)でも、
「On iOS, you can't share your published link
When you publish, any Android user can open your app inside Expo Client immediately.
Due to restrictions imposed by Apple, the best way to share your published app is to build a native binary with Expo's build service. You can use Apple TestFlight to share the app with your testers, and you can submit it to the iTunes Store to share more widely.
(iOSでは、公開リンクを共有できません
パブリッシュすると、Androidユーザーはすべて、Expo Client内でアプリをすぐに開くことができます。
Appleによって課せられた制限のため、公開されたアプリケーションを共有する最善の方法は、Expoのビルドサービスでネイティブバイナリを構築することです。Apple TestFlightを使用してテスターとアプリケーションを共有したり、iTunes Storeに提出してより広く共有することができます。)」と記載があったので、

なーんだ、単純にExpoの仕様上iosは対応していないだけかーと思っていましたが、同僚の別iosを借用しScanするとアプリ読み込みできました。。なぜ、、、???

再度、うまくいかないデバイスで読み込みを試みて、エラー内容を注意深く読むと、
「The experience you requested is not viable by you. You will need to log in or ask the owner to grant you access. 
（あなたのリクエストした内容は、実行不可能です。あなたは、ログインするかあなたにアクセスの許可を与える方に確認する必要があるでしょう。）」
とあり、あまり意識していなったデバイスのExpo Cliantアプリをを確認すると、別のExpoアカウントでログインされていました。(会社の開発用iosデバイスだったため、別スタッフのアカウントでログイン)
再度、適切なアカウントでログインし直すとうまくアプリ読み込めましたー!

ちなみに、ログアウトした状態でもうまくアプリ読み込めます。これも謎。

#結局
iosの挙動は公式ドキュメントの記載とは異なるが、iosでもandoroidでも、うまく動くと思いますー！
これからExpoでアプリ公開する方の参考になれば幸いです。
また、Expo公式サイトでの記載の挙動との違いについて何かご存知の方がいれば、情報共有していただけると助かります。
VBA　処理時間の計測

# VBAの処理時間の計測
## 使用場面
- VBAで重たいマクロ処理を作成している際にどれくらい時間が掛かっているのか計測したい場合
- 処理時間を計測することでどれくらいスピードアップしたのか把握したい場合

## 使用方法
- 処理の初めに以下のように記述
- Bookを開く処理などがあるなら、その前に記述したほうが良い

    

```vb
    Dim StratTime, StopTime As Variant           '// 処理時間計測用
    StartTime = Time
```
- 同じ処理の最後に以下のように記述

```vb
    StopTime = StopTime - StartTime
    MsgBox "所要時間:" &  Minute(StopTime) & "分" & Second(StopTime) & "秒"
```
【2018年】フロントエンドエンジニア1年生として、この一年取り組んだこと。

2018年、肩書が**マークアップエンジニア**から**フロントエンドエンジニア**に変わりました。
フロントエンドエンジニアとして、今年一年、自分がどのような活動をしていたか？まとめてみました。

---

## index
- 読んだ書籍
- 参加したセミナー・勉強会
- アウトプット
- 上がったスキル
- 足りなかったこと
- まとめ

---

## 読んだ書籍
- [#マンガでわかるDocker ① 〜概念・基本コマンド編〜](https://note.mu/llminatoll/n/n4f419db0effc)
- [わかばちゃんと学ぶ Git使い方入門](https://amzn.to/2rwnZeh)
- [Nuxt.jsビギナーズガイド](https://amzn.to/2QKG9Y2)
- [Vue.js入門 基礎から実践アプリケーション開発まで](https://amzn.to/2RRpj71)
- [基礎から学ぶ Vue.js](https://amzn.to/2zRx9Xy)
- [React，Angular，Vue.js，React Nativeを使って学ぶ はじめてのフロントエンド開発](https://amzn.to/2rwo9SV)
- [Webサイトパフォーマンス実践入門 高速なWebページを作りたいあなたに](https://amzn.to/2L81Hsv)
- [開眼！JavaScript](https://amzn.to/2L8aeLW)
- [わかりやすい「WAI-ARIA 1.0」仕様解説書](https://amzn.to/2QMVTd5)
- [Ruby on Rails 5の上手な使い方 現場のエンジニアが教えるRailsアプリケーション開発の実践手法](https://amzn.to/2L9TZht)
- [インクルーシブHTML+CSS & JavaScript](https://amzn.to/2rtwmaq)
- [プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則](https://amzn.to/2QGjw7d)
- [WEB+DB PRESS Vol.106](https://amzn.to/2zUquvy)
- [WEB+DB PRESS Vol.105](https://amzn.to/2RQjOFN)
- [けっきょく、よはく。余白を活かしたデザインレイアウトの本](https://amzn.to/2L9OzTA)
- [学びを結果に変えるアウトプット大全](https://amzn.to/2QKGDxk)
- [Emotional CSS Animation](https://flexbooks.booth.pm/items/1033578)
- [イヌでもわかるWeb Components 改訂版](https://inutetraplus.booth.pm/items/1041988)
- [ゼロから始めるNetlify](https://nabettu.booth.pm/items/1041767)
- [Auth0 でつくる！認証付き SPA](https://corocn.booth.pm/items/830458)
- [Nuxt tech book](https://potato4d.booth.pm/items/824745)
- [初めてのシングルページアプリケーション Vue.jsとFirebaseで作るミニ Web サービス](https://nabettu.booth.pm/items/829853)

合計：22冊

---

### 感想
- 意外と読んでる
- でも、全部ページは読めてない
- 実装まで行ってないものが多い
- JS関連が多い
- **同人系技術書はコスパ最高なので超オススメ！**

---

## 参加したセミナー・勉強会
- Webフロントエンド 平成最後の冬の陣
- FRONTEND CONFERENCE 2018
- クリエイター、マーケターのためのキャリアカウンセリング
- アクセシビリティ勉強会 2018年・夏
- SSLサーバ証明書の仕組みを知ろう！～身近なモノで体験してみよう～
- 大阪 Adobe XD meeting #01
- Vue.js / Nuxt.js Meetup Osaka #0
- Vue.js / Nuxt.js による静的Webページ制作 - 実践編

合計: 8件

---

### 行けなかったやつ
- 徹底解説！Google Maps Platformのはじめ方
- アウトプットを習慣化しようとしている人たちの話
- Osaka Mix Leap Study #13 React勉強会② ハンズオン編

合計: 3件

---

### 感想
- 前半に集中していた
- 行けなかった理由
  - 仕事: 2件
  - 台風: 1件
- Web技術に関して、幅広く行けた
- 実業務にあまり活かせなかった
- もうちょっと横のつながりを作れた気がする

---

## アウトプット
- Qiita: 16件
  - 194いいね
- note: 1件
- その他ブログ: 1件
- LT: 12回（社内）
- Twitter
  - ツイート:　654
  - ツイートインプレッション:　82,017
  - フォロワー:　＋35人

2018年12月11日時点

---

### 感想
- Qiitaの記事は結構かけた
- 社外LTができなかったので、来年はやりたい
- Twitterをかなり活用した
  - 情報のキャッチアップ
  - わからないことつぶやくと、たまに教えてくれる

---

## 上がったスキル（雰囲気指数）
- JavaScript 1.5 -> 3.0
  - ふわっとしてた部分の基礎固め
  - ES2015+、webpack、Vue.js、Node.js、TypeScript
- CSS 2.8 -> 3.0
  - CSS Girdを少しだけ触った
- HTML 2.8 -> 3.2
  - WAI-ARIAとか少し覚えた
  - Pug使い始めた

---

### 感想
- JavaScriptに一生懸命な一年だった
- HTML、CSSの知識は、去年とさほど変わらなかった
  - Pugとの出会いは大きかったかな

---

## 足りなかったこと
- 自主制作
- 社外LT
- 技術書の読破
- 横のつながり

---

## まとめ
- 本は結構読んだが、読破したものや実際に手を動かすことはあまりできなかった
- 去年よりセミナー・勉強会に参加したが、実制作にあまり活かせず、横のつながりもそれほど増えなかった
- テキストベースや社内LTでのアウトプットは多くできたが、自主制作が少なかった
- JavaScriptの知識は増えたが、HTML、CSSはあまり増えなかった

---

来年は、足りなかったことを頑張ります。
Invite multiple members to slack channel(slackで複数人まとめてinviteする)

## 追記
2019年11月頃のアップデートで、まとめてInviteする口ができました
なのでこの記事はもう必要ありませんね。

現在の方法は公式サイトに載っていますので、こっちのほうがいいです。
https://slackhq.com/new-slack-features-invites-message-formatting?utm_source=whatsnew

## 経緯
slackで100人位まとめてinviteしたいときどうしますか？？

```
/invite @daresore1 @daresore2
```
って打っても残念ながら先頭の人しかinviteできません。

## 前提
* inviteしたいユーザーのemailアドレスのリストがあること
* slackのWeb APIが使えること

何かしらの自動的な手段でemailアドレスのリストが作れない方は、効率的ではないので、
諦めて一人ずつ`/invite`を叩いたほうが良いと思います

## 実際の手順
### slack API アクセストークンを取得とスコープの設定
こちらを参考にアクセストークンを取得してください
[Slack API 推奨Tokenについて](https://qiita.com/ykhirao/items/3b19ee6a1458cfb4ba21)

スコープは以下の3つが必要です

- channels:write
- users:read
- users:read.email


### inviteしたいchannelのIDを取得
こちらを参考にchannel IDを取得してください
[Slack — APIに使う「チャンネルID」を取得する方法](https://qiita.com/YumaInaura/items/0c4f4adb33eb21032c08)

### 必要なライブラリを準備
スクリプトの実行には `jq` が必要です。
jqのインストールをお願いします。
Macであれば `brew install jq` でOK!

### スクリプト

上記で取得したAPI tokenとinviteしたいchannel IDを適宜入れ替えます
`members.txt` の中身はinviteしたいメンバーのメールアドレスを改行区切りで入力しておきます
(※これを手で入力するのは意味が無いので、APIから取得しましょう)
(※僕の場合はJiraのAPIで作成しました)

```txt:members.txt
xxx@example.com
yyy@example.com
zzz@example.com
```

```bash:bulk_invite.sh
#!/bin/sh
slacktoken=xoxp-NNNNNNNNNNN-NNNNNNNNNNNN-NNNNNNNNNN-XXXXXXXXXXXXXXXXXXXXXX
channel=XXXYYYZZZ
members=`cat $1`
for u in $members; do 
  echo Inviting user $u;
  slack_user_id=`curl -H 'Content-Type: application/x-www-form-urlencoded' "https://slack.com/api/users.lookupByEmail" -d "token=$slacktoken&email=$u" | jq -r '.user.id'`
  curl -X POST -H "Authorization: Bearer $slacktoken" -H 'Content-Type: application/x-www-form-urlencoded' -i "https://slack.com/api/channels.invite" -d "channel=$channel&user=$slack_user_id";
  sleep 2;
done;
```

```sh
$ sh bulk_invite.sh members.txt
```

## おわりに
間違いなどに気づいたあなたはこっそり編集リクエストください。
shell scriptをもっといい感じにできるあなたもこっそり編集リクエストください
コメントでも可
docker-compose Rails環境構築時のエラー

```shell
$ docker-compose up -d
```

で下記のエラーが出た

```shell
Cannot start service web: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"bundle\": executable file not found in $PATH": unknown
```

docker-composeに記載されている下記のコマンドでパスが通ってないらしい

```docker-compose.yml
  web:
    build: .
    command: bundle exec rails s -p 3333 -b '0.0.0.0'
```

```docker-compose.yml
build : .
```

となっているので、docker-compose.ymlと同じ階層にあるDockerfileをビルドして
Docker imageを作る構成らしい。

同ディレクトリにあるDockerfileをみてみる

```Dockerfile
RUN bundle config --global build.nokogiri --use-system-libraries && \
    bundle install --jobs=4
```

やっぱり。

先にbuildしてしまえばいいのではと思い下記のコマンドを実行

```shell
$ docker-compose build
```

イメージが出来上がったので、docker-compose を upしてみる

```shell
$ docker-compose up -d
```

動いた。
社内向けPodcast 5つのアンチパターン

## この記事の目的

数ヶ月前から社内向けの**技術系Podcastを配信しています**。

Podcastについて**ポジティブな話はたくさんありますが、ネガティブな話はなかなかでてきません**。

そこで本記事では、Podcastの運用経験から、**イケてなかった:cry:部分についてまとめ直しました。**

---

## 対象読者

これから、**社内向けPodcast**をやってみようと考えている人。

本記事が少しでもお役に立てば幸いです。

---

## Podcastの概要

- 技術系情報の共有ランチ（Tech Talk Lunch）での会話を、そのまま録音・配信（編集なし）
- 週1回, 45分程度
- メンバーは4-5人（全員エンジニア）
- ネタは各自が持ち寄るスタイル

---

## Podcastの録音・配信方法

ボイスレコーダーで収録したデータを、Google Drive経由で配信しています。

詳しくは、こちらをご参照ください。
https://qiita.com/szk3/items/6508075eb398a9fc9a89

---

## 社内向けPodcast アンチパターン

スタート時は順調のように思えたPodcastですが、だんだんとうまく回ってないなと感じるようになりました。

その理由について、パターン化しました。

---

#### 1. 収録が時間:watch:やイベントに依存している

自分が配信しているPodcastは、ランチに便乗して収録している為、**自分がお休みしたり他の用事があったりすると、そもそも収録がされません**。

---

安定的な配信を目的するのであれば、Podcastの収録を時間やイベントに依存させるより、人（ファシリテーター）に依存させたほうが配信頻度は高まるでしょう。

---

#### 2. 一つのネタ:sushi:に盛り上がりすぎる

みんなで話していると、1つのネタが盛り上がりすぎてしまうときがあります。

他のメンバーが持ってきてくれた技術ネタも面白そうなのに、**収録時間が足りなくなって全部話きれず、もったいない**ことが何回かありました。

---

**トークのペース配分や、話題の切り替えタイミングの見極めは重要**です。

全部紹介しきれないネタは、次回にまわすなどの仕組み作りも有効かと思います。

---

#### 3. ランチ:rice_ball:と同時に行う

とにかく時間がないので、収録時間を確保するために、ランチが食べれない状況とか、10分でランチを食べきるような場合が多々あります。

特にファシリテーターや、技術ネタを紹介してくれるトップバッターに影響が大きいです。

---

また、コンビニ袋のガサゴソ音など、ノイズを気にする方も多いので、**クオリティを高めたいのであれば収録にコミットできるような環境作りが必要**です。

---

#### 4. フィードバック:repeat:の仕組みがない

フィードバックは**重要**です。

「いいね」でも「わるいね」でもなんでもいいので**フィードバックがあると、次の収録の活力になります**。

---

他人からのフィードバックに期待出来ない場合は、自分でフィードバックを作る仕組みを作りましょう。

例えば、GAを埋めたりして再生回数を取れるようにしてもいいですね。

---

#### 5. マーケティング:mega:をしない

**とても重要な要素のひとつです。** そもそも聞いてもらえないことには何も始まりません。

社内向けだからといって聞いてもらう努力を怠ると、せっかく良い話をしていても1回も聞かれないという状況が発生します。

**正直、これはかなりもったいないです。**

---

メンバー全員で啓蒙していく強い気持ちも大切ですが、このような取り組みに肯定的な声の大きい社内メンバーを巻き込み、応援してもらえるように働きかけるのも良い手ですね。

**自分たちだけでなんとかしようとせず、周りにうまく協力してもらいましょう。**

---

# まとめ

---

以上、5つのアンチパターンを紹介しました。

1. 収録が時間:watch:やイベントに依存している
2. 一つのネタ:sushi:に盛り上がりすぎる
3. ランチ:rice_ball:と同時に行う
4. フィードバック:repeat:の仕組みがない
5. マーケティング:mega:をしない

--- 

はじめから上手な運用はできませんでしたが、**Podcastを配信してみてたくさんのメリットがありました**。

例えば、

- 比較の為に、他のPodcastを聞くようになり、知らないうちに知識の幅が広がる
- ファシリを担当するとトークスキルが上がる
- エンジニアごとに興味の対象が違うので、技術嗜好の色が出て面白い

---

Podcastはやろうと思ったらカジュアルに出来ますので、是非アンチパターンに気をつけて、**良いPodcastが作れたら是非コメントで教えてください**。

新しいPodcastを作る際に、この記事がお役に立てば幸いです。:sunglasses:
GtkToggleButtonが押し込み状態の時に背景色を変える

せしまるです。

CSSでGtkToggleButtonが押し込まれている時だけ色を変える方法です。
CSSを読み込む記事は別の機会に記事にしようと思います。

```css:toggle.css
// 押されていない状態.
GtkToggleButton{
    background-image:none;
    background-color:white;
}

// 押されている状態.
GtkToggleButton:checked{
    background-image:none;
    background-color:red;
}
```

GtkToggleButtonの部分は、widgetにつけたクラス名でもOKです。
アツマール版コアスクリプトをビルドしてみる

※色々間違えたので、後で消してアップしなおします。

備忘録！
npmの使い方にしては初歩の初歩過ぎるけど、ツールの使い方を覚えられない人間なので教えてもらいました。
（どれぐらいいるか知らないけど）後進のためにまとめておきます。

あらかじめnpmをインストールしておきましょう。
インストール方法は調べれば出てくるでしょうし、インストーラが全部やってくれます。
昔の事なので細かいことを忘れたので、省略します。

##1.新規プロジェクトを作成する
コアスクリプト動作用のテストプロジェクトを作成します。
ゲーム内容はデフォルトでいいです。

##2.githubからコアスクリプトをダウンロードする

https://github.com/rpgtkoolmv/corescript
ここです。
右にある「Clone or Download」とある緑色のボタンをクリックし、download zipでファイルを入手しましょう。
~~zipでくれ~~
そのあとで、ファイルを展開します。
~~解凍と言いそうになった人はインターネット老人会です~~

##3.ビルドする
コマンドプロンプトを開きます。
windows10なら画面下にある「検索」の部分にcmdと入れれば開きます。
zipを展開したディレクトリのパスをコピーし、cd (コピーしたパス）と入力します。

私の環境ではDドライブに設置しているので、cd のあとに/dオプションを入れてDドライブに移動しています。
ここでnpm installと入力すると、必要な環境設定が自動で行われます。
なお、ディレクトリを間違えた状態でinstallコマンドを実行しても、エラーで止まります。
~~実は、移動先のディレクトリを間違えて1階層上にして1回ミスりました~~
npm installはゲームを起動するかのように気軽に実行できるコマンドです。
アカウントを作るような1回だけ使うものではないです。

installが成功すると、長いメッセージが出るので完了まで待ちましょう。
そのあとで、npm testと入力するとビルドが開始されます。

##4.ビルドしたファイルをコピーする
ビルドしただけではゲームに変更が反映されません。
gameフォルダの下にjsフォルダがあるので、これをコピーしてindex.htmlやプロジェクトファイルのある場所にコピーしましょう。
こうすることで、rpg_core.jsなどのコアスクリプトが上書きされ、変更が反映されます。
~~これに気付かず「ソースコードが変更されない。おかしいな」とかやっていたのが私です。~~

##5.実行する
一度ビルドしていつものファイル名になれば動きます。
お疲れさまでした。

#おわりに
ツールの使い方は最初はハードルが高いです。
ただ、1回覚えてしまって繰り返せば簡単にできるようになります。
そして、マニュアルをまとめておくと誰かが得します。
「Qiitaに適当な記事を書くのはスパムと同じ」などという意見は無視して、適当に記事をアップしましょう。
3日前の自分は他人ですから。
Chart.jsを用いて複数のグラフをウィンドウサイズに比例表示する際の注意点

# 概要
画面半分をWebGLのcanvas、もう半分をChart.jsのcanvasを縦に3つ並べる、といった状態のアプリケーションを作る際にハマってしまった内容について

# 当初のコード
HTMLでは、このように1つのdivの中に3つのcanvasを並べていた。

```html:index.html
<body>
    <div id="data_display">
        <canvas id="dx_canvas"></canvas> //X軸のデータを表示するキャンバス
        <canvas id="dy_canvas"></canvas> //Y軸のデータを表示するキャンバス
        <canvas id="dz_canvas"></canvas> //Z軸のデータを表示するキャンバス
    </div>
</body>
```

そして、これを

```javascript:script.js
var dx_c = document.getElementById("dx_canvas");
data_resize('dx_canvas', 0.5, 0.3); //()内は左から順に（canvas要素、横の比率、縦の比率）
var dy_c = document.getElementById("dy_canvas");
data_resize('dy_canvas', 0.5, 0.3);
var dz_c = document.getElementById("dz_canvas");
data_resize('dz_canvas', 0.5, 0.3);

```
```javascript:utils.js
function data_resize(id, wdpr, hdpr){
    var c = document.getElementById(id);
    c.width = window.innerWidth * wdpr;
    c.height = window.innerHeight * hdpr;
}
```

上記のようにJavaScript側で処理したが、うまく思い通りに反映されなかった。

# 解決法
どうも一つのdivの中に複数枚キャンバスを用意してしまったのがいけなかったらしい。

```html:index.html
<body>
    <div id="dx_display">　//X軸のデータを表示
        <canvas id="dx_canvas"></canvas>
    </div>

    <div id="dy_display">　//Y軸のデータを表示
        <canvas id="dy_canvas"></canvas>
    </div>

    <div id="dz_display">　//Z軸のデータを表示
        <canvas id="dz_canvas"></canvas>
    </div>
</body>
```
こうすることで考えた通りの配置にすることが出来た。

# まとめ
今回の挙動を見ると、Chart.jsを使用する場合は１つのブロックに1つのキャンバスにした方が良さそうです。
Node-REDを使ってdialogflowでの挨拶アプリを作る

ごきげんよう

この記事は
**「するめごはんのVUI・スマートスピーカー Advent Calendar 2018」**
の11日目の記事です。

昨日はNode-REDを用いてAlexaでの挨拶スキルについて記載しました。

https://qiita.com/surumegohan/items/e2488b5eee4c1bd5bfe8

今度は同じくNode-Redを使ってdialogflow（要するにGoogle Home）の挨拶アプリを作ってみます。

今回も同じく以下の本に一部従ってみます。
もちろん、そのまま転記してはいけないので、内容は適宜変更、追加してます。

[スマートスピーカーアプリ開発入門 3大スマートスピーカー Amazon Echo Google Home LINE Clova対応](https://www.amazon.co.jp/%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%B9%E3%83%94%E3%83%BC%E3%82%AB%E3%83%BC%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-3%E5%A4%A7%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%B9%E3%83%94%E3%83%BC%E3%82%AB%E3%83%BC-Amazon-Google-Clova%E5%AF%BE%E5%BF%9C/dp/479805481X/)

#作ってみる

##1.昨日Alexaスキルを作っているので、まずはIBM Cloudのページに行きます。

https://www.ibm.com/cloud-computing/jp/ja/

そして、画面左上の人型マークからサインインします。


![1_IBMCloud.png](https://qiita-image-store.s3.amazonaws.com/0/67398/e3376e70-922e-9f73-38d9-a63fb7bfb1c9.png)


##2.サインインをする

2回目以降の利用ユーザーならこの画面になるはず。

![2_sainin_MyIBM.png](https://qiita-image-store.s3.amazonaws.com/0/67398/186bfe0f-d7ff-ffd4-793c-f286d1fccdb3.png)


##3.「起動」を押してダッシュボードを開く

上記画像の「起動」を押してダッシュボードを開きます。

前回のAlexaスキルの情報が表示されています。

![3_dashboard.png](https://qiita-image-store.s3.amazonaws.com/0/67398/ec474f9b-da91-0ffe-ea47-bcb65f77578d.png)


##4.過去に作成したインスタンスを削除

liteプランだと無料であるかわりに、インスタンスが1つしか作成できません。
そのため、liteプランを続けるならば作成済みのインスタンスを削除します。


![4_liteは1つしかインスタンス作成できないので削除.png](https://qiita-image-store.s3.amazonaws.com/0/67398/3e30637e-884d-a354-6536-ad989dc9eaf1.png)


##5.インスタンスを再作成してNode-REDを検索

新しいインスタンスを「作成」したら、**node-red** で検索するとフィルタリングされて表示されるので選択します。

liteプランを継続している場合は、lite:ライトが既にフィルターにかかっているので、その後ろに **node-red** と入れてあげればOKです。

![5_node-redで検索.png](https://qiita-image-store.s3.amazonaws.com/0/67398/ed213125-8820-6064-c59e-070dc682c663.png)

##6.あとは画面をポチポチ

Node-REDの画面が開いたら、画面をポチポチします。

・HTTPSでPOST
・templeteで fulfillmentText  をキーとした挨拶文を入れる
・httpResponse


あとは、この3つを線でつないであげます。

![7_Node-Red_Complete.png](https://qiita-image-store.s3.amazonaws.com/0/67398/565d507e-34fe-01bf-bdfe-a90752e87f4e.png)

##6.DialogFlowに設定すればおしまい

あとはDialogFlowで、プロジェクトを作り、FullfilmentでWebhookに設定してあげれば、画面右のように動いてくれます。

![8_DialogFlow.png](https://qiita-image-store.s3.amazonaws.com/0/67398/86c9949f-a4b9-9b0c-ecd6-d21892d60f93.png)

#まとめ

DialogflowでWebhookとして指定できるので、その先がNode-REDになります。

簡単な挨拶のようなスキルはプログラミングなしに画面ポチポチだけでいけます。
JSONを書くところがプログラミングに該当するなら、そこはプログラミングですが・・


ともあれ、すごく簡単にできるのでNode-REDを使ってGoogle Homeでやりとりできるようなアプリを作ってみてはいかがでしょうか。


以上です。
[UiPath][.NET]ちょっとした関数・アクティビティのメモ

# なにこれ
「あれ、このメソッドって何返すんだっけ？」とか、「このデータって何のメソッド使うんだっけ」をすぐに思い出せるようにするためのメモ。
どんどん追記していきます。

---

- `Directory.GetFiles(str)`
    - str配下にあるファイルの**フルパス**を、配列として返す
        - 配列として返すため、配列の生成が完了するまでは読み込めないらしい
            - `EnumerateFiles(str)`だと、列挙型で返される＋途中でも読み込めるらしい
    - 検索パターンやサブフォルダ検索もできる
        - https://docs.microsoft.com/ja-jp/dotnet/api/system.io.directory.getfiles?view=netframework-4.7.2

- `Path.GetFileName(str)`
- `Path.GetFileNameWithoutExtension(str)`
- `Path.GetExtension(str)`
- `Path.GetDirectoryName(str)`
    - strに含まれるファイルパスから、それぞれメソッド名に書かれた情報を抽出する
    - 思ったよりも、GetFileNameWithoutExtensionとGetExtensionの使いみちが多い気がする
        - ファイル名の末尾と、拡張子(.)の間に文字を入れたいとき
            -  ~~`str.replace(".", str2 & ".")`のほうがスマートかな~~
            -  ダメだった。↑これだと"."が複数あったときの挙動が困る

- "Filter Data Table"で、抽出条件に当てはまるデータが存在しない場合
    - エラーとはならない。Output DataTableには行数ゼロのデータが格納される
    - データが含まれるか否かは、`DataTable.Rows.Count > 0`で判定できる

- `And`/`Or`と`AndAlso`/`OrElse`の違い
    - [別記事](https://qiita.com/ri_scur_red/items/ebd4972afdd6d1276d6c)を参照あれ

- "Merge Data Table"の挙動
    - 当たり前なんだろうけど、変数作っただけの状態のDataTableはマージに使えない
    - 最低限、defaultで`new DataTable()`をやっておく必要がある

- "Excel Application Scope"のOutputを指定した場合の挙動
    - 明示的に"Close Workbook"を行うまで開きっぱなしになる
    - 関連して、同じWorkbookを3回以上使うときに2回目以降の利用時にOutputを指定する必要はない
        - 指定しなくても、すでにWorkbookApplicationに保存されているので閉じられない

- セレクタに変数を利用する
    - "Edit Selector"は利用できない
    - Propertiesの入力欄で入力するしかない
    - あるいはXAMLファイルを直接いじるほうが早いかも…

- 日付データの変換
    - 文字列→型（String to DateTime）
        - Convert.ToDateTime(str)
        - CDate(str)
        - 上記いずれもDateTime型で返される
    - 型→文字列（DateTime to String）
        - datetime.toString
            - 書式指定もできる。
                - datetime.toString("yyyy/mm/dd") → 2019/06/27
                - datetime.toString("g") → 06/27/2019 00:00

---
Windowsで開いているファイルを調べてみる

## 基本はこの当たり参照
[Tech TIPS 第67回](http://www.atmarkit.co.jp/ait/articles/0306/14/news002.html)
## 今回はまったのは・・・
ディスクトップにあるディレクトリを別のディレクトリに移動しようとすると、
こんな感じで怒られました。
![file_used_message.png](https://qiita-image-store.s3.amazonaws.com/0/239597/297c9446-e5f8-7cdb-fb64-ea6ea63d8c2a.png)
Tech TIPSの「openfiles」で調べるも移動しようとするディレクトリで開いているファイルが存在しない。

*「あれれ？」*というわけです。
※黒枠のカッコはディレクトリ名を非表示にしています。

## 当たり前のテクニック

要はAディレクトリ内にある全ファイルを全選択して切り取り、Bディレクトリに貼り付けて移動してみて、移動できないファイルを見つければいいわけです。

* Aディレクトリ内の全ファイルやディレクトリを<kbd>Ctrl+A</kbd>で全選択
* <kbd>Ctrl+X</kbd>で切り取り
* Bディレクトリへ<kbd>Ctrl+V</kbd>で貼り付け

それで以下のように開いているファイルを特定できます。
![files_used_message_2.png](https://qiita-image-store.s3.amazonaws.com/0/239597/ba9a30da-e08f-4e9d-ac93-78658a3e0a24.png)

*「あ」*とやっと気づきました。
DEMON Tools Liteの仮想ドライブにredhatのisoファイルをマウントしていたのを失念していたのです。
そのisoファイルが*「別のプログラム・・・」*として開いているため移動できなかったわけです。
redhatのisoファイルをアンマウントすると、移動できないファイルも見事移動できました。

## 反省とまとめ

忘れたことも冷静に対応を考えれば、必ず道は開かれるはず。

*「忘却はよりよき前進を生む。」*by ニーチェ
PwC eスポーツ デジタル戦略アイデアソン

# PwC eスポーツ デジタル戦略アイデアソン

## 概要

PwC eスポーツ デジタル戦略アイデアソンは、テクノロジーとビジネスのスキルや創造性を活かして、eスポーツ市場の機会創出や課題解決に取組むイベントです。
PwC eスポーツ事業推進室のメンバや現場で活躍する現役コンサルタントも加わり、チームでコンサルティングワークを実施し、eスポーツ市場におけるデジタル戦略や参入戦略を策定いただきます。
コンサルティングワーク後には現役コンサルタントから、良かった点や課題・課題を改善するための助言などの個別フィードバックがあります。また、チームメンバーや社員とフランクにお話いただける懇親会も予定していますので、是非、ご参加ください。
<br>※PwC コンサルティング、「eスポーツ事業推進室」を設立(https://www.pwc.com/jp/ja/press-room/esports181121.html)

**こんな人にぜひ！**

* eスポーツに関心が高い人
* テクノロジーを用いたビジネスを考えることが好きな人
* 新しいテクノロジーに興味がある人
* ご自身のテクニカルスキルを試してみたい人
* 新しいアイデアを考えることが好きな人
* コンサルタントの仕事を体験してみたい人
* アイデアソンに参加してみたい人

## 応募のフロー
■応募の流れ
選考フローは以下の通りです。 まずはマイページよりエントリーください。
マイページ作成（プレエントリー）
URLはこちら 
[http://bit.ly/2AWx4BF](http://bit.ly/2AWx4BF)
↓ 
アンケート提出(マイページ画面左"【テクノロジーコンサル】アイデアソン アンケート登録" ボタンよりエントリーいただけます。)
↓ 
Web適性試験+顔写真データアップロード（2019年1月18日 23:59 締切) 
↓ 
アイデアソン参加！

## 実施詳細
* 実施期間：2019年1月26日（土）10:00～21:00予定
* 応募締切：2019年1月18日 （金）23:59(日本時間)
* 実施会場：PwCコンサルティング合同会社　東京丸の内オフィス（東京駅近辺）
* 募集人数：約50名
* 当日の持ち物：Windows や Mac PC、タブレットなどアイデアソンに取り組むためにご自身が必要と判断するもの
* 交通費：遠方から新幹線もしくは飛行機で参加される方には、弊社規定に従い、交通費をお支払いいたします。※国内のみ
* 昼食： 弊社でご用意いたします
* 参加資格：2020年3月に大学または大学院を卒業/修了見込み、かつ2020年4月/10月入社が可能な方

## 審査員
![hashimoto.jpg](https://qiita-image-store.s3.amazonaws.com/0/218445/2cb35bf6-d64e-3ebd-401e-5155168cd01d.jpeg)

**橋本 哲哉**
PwCコンサルティング合同会社
テクノロジーコンサルティング
テクノロジーアドバイザリーサービス
シニアマネージャー

埼玉県出身。外資系ITベンダ在職中に早稲田ビジネススクールでMBAを取得。その後、PwCコンサルティング合同会社に参画。
プロジェクト・プログラムマネジメントを中心に多岐に渡る支援に従事。テクノロジーに限らずセキュリティ基準策定、サービスプロセス策定、組織変革/チェンジマネジメントなど幅広い領域を担当。
現場でのコンサルティング業務以外では、テクノロジーコンサルタント職の採用担当として、年間数百人の学生と接触しキャリアアドバイスを実施。

----------

## お問い合わせ
イベントに関するお問い合わせはkazuya.michiwa@pwc.comへお願いします。
 

## ご注意
* このイベントは、現時点で大学・大学院に在籍し、2020年3月卒業/修了見込みかつ2020年4月/10月入社が可能な方を対象としたイベントです。
* エントリーにはアンケートの提出・Web適性検査の受検・顔写真データのアップロードまでを締切日までに完了いただく必要がございます。締切直前はネットワークが込合う場合もございますので、お早目に対応ください。
* 定員制のイベントになりますので、アンケートの回答内容をこちらで確認させていただいた上で、ご招待の有無を決めさせて頂きます。