OmniAICreator/Qiita-1.07M huggingface dataset:
SPSS Modeler ノードリファレンス 3-5 フラグ設定

# 3-5 フラグ設定ノード[フィールド設定タブ]
<img width="200" alt="107_89フラグ設定.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/0c492175-70b4-26ad-3bc3-d4921a450e78.png">

## 1.ノードの目的
縦持ちデータを横持ちに変換します。時系列IoTデータやID付POS取引データからID毎にフラグ化を行います。統計モデルのためのダミー変数作成にも利用します。

![スクリーンショット 2022-02-22 10.01.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/dcd243a7-5fb6-2388-c924-0eb6db4fe131.png)


## 2.解説動画（60秒）

<iframe width="560" height="315" src="https://www.youtube.com/embed/P72FYIb3Rvc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 3.クイックスタート

顧客の1年分の取引履歴（ID付POSデータ）から顧客毎に中分類の購入有無をフラグ化します。
＊入力データは[5.参考情報]からダウンロードできます。
![スクリーンショット 2022-02-22 10.08.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4d035697-e453-1ff3-1a77-15b1a62e3bf4.png)

[可変長ファイル]から[フラグ設定]、[テーブル]の順に接続します。
![スクリーンショット 2022-02-22 10.08.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/dff399a8-f619-701f-02d9-58e1e110694d.png)

[可変長ファイル]で[データ型]タブの[値の読み込み]ボタンを押して[中分類]のメンバーを認識させます。[データ型]ノードを用いても結構です。
![スクリーンショット 2022-02-22 10.09.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/a9a11e31-ab31-b96c-ba51-3d3f024602ef.png)

[フラグ設定]を編集します。[セット型フィールド：]に[中分類]を選択して、左のボックスから60種類全ての中分類メンバーを右のボックスに黄色矢で移動させます。
青枠と緑枠をそれぞれ設定します。
![スクリーンショット 2022-02-22 10.11.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/d160758f-184c-d07b-eb0a-91e9220d6f83.png)

[テーブル]を実行します。
![スクリーンショット 2022-02-22 10.14.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/c1313513-035f-9060-10aa-b67d87bef0a3.png)


### フラグ設定の注意点とヒント
#### 真と偽の扱い
デフォルトでは真がT、偽をFとしますが、後続処理で平均や合計を求めるなどが可能になるため
１と０にしておきます。

#### フラグ化するべきフィールドが表示されない
事前にデータ型を確定しないとメンバーとして表示されないので注意します。また250種類以上のメンバーをもつ場合にはデータ型が[不明]と識別してフラグ化できないため、ツール＞ストリームのプロパティで変更しておきます。
![スクリーンショット 2022-02-22 10.15.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/9966cc5d-bc21-c029-0e9e-2b19750f675d.png)

## 4.Tips

### IDで要約しないでダミー化
集計キーを選ばずブランクにします。
![スクリーンショット 2022-02-22 10.51.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/3190c200-478b-ffc8-b445-3b9effc7be36.png)

レコードを要約せず、該当するフィールドにフラグをたてます
![スクリーンショット 2022-02-22 10.51.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/d952e8d4-832a-0cf3-5f2a-5b71c0abfbf5.png)

### フラグの数を数える
以下のブログの「おまけ」で紹介されています。sum_n(@&#xFFF0;FIELDS_BETWEEN(item_A, item_C))

https://www.ibm.com/blogs/solutions/jp-ja/spssmodeler-push-node-15/

### SPSS ModelerのフラグノードをPythonで書き換える。購入商品カテゴリのフラグ化

https://qiita.com/kawada2017/items/fb2f4128caae452a7a49

## 5.参考情報

#### 利用データ

右クリックでリンク先を保存してください。

https://raw.githubusercontent.com/yoichiro0903n/blue/main/sampletranDEPT2021mac.csv

#### ノードのヘルプ

https://www.ibm.com/docs/ja/spss-modeler/18.3.0?topic=nodes-set-flag-node

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/items/4bf813e6cba84b2a1008

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee
HANA Cloudインスタンスを起動するコマンド

BTPトライアル環境のHANA Cloudインタンスは時間がたつと勝手に停止します。
再起動がすぐできるように、インスタンスを起動するコマンドをメモしておきます。



### 1. Cloud Foundryにログイン

```
cf login -o <organization> -s <space>
```

### 2. HANAインスタンスを起動

```:Linuxなどの場合
cf update-service <instanceName> -c '{"data": {"serviceStopped":false}}'
```

```:Windowsの場合
cf update-service <instanceName> -c "{\""data\"": {\""serviceStopped\"":false}}"
```

## 参考

- [Start and Stop an Instance Using the CLI](https://help.sap.com/viewer/683a53aec4fc408783bbb2dd8e47afeb/alibabacloud/en-US/e6f3dcb8cae74577889cd51f4aa0eb08.html)
- [SiriでSAP HANA Cloudを起動する](https://blogs.sap.com/2021/12/20/siri%E3%81%A7sap-hana-cloud%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B/)
Gauche を Ubuntu にインストール (also macos ?)

30分で Gauche / Scheme にチョット慣れる
https://qiita.com/nanbuwks/items/fa784e5793cd8cfd2cb3
# 環境
- Ubuntu 20.04 LTS / Ubuntu 22.04 LTS
- Mac も同様? (未検証)
- Gauche は Ubuntu レポジトリ / homebrew からインストール 
  - Ubuntuレポジトリインストール ( Ubuntu20.04 2022年02月22日 )
  - Gauche scheme shell, version 0.9.6 [utf-8,pthreads], x86_64-pc-linux-gnu


# 本体と、rlwrapのインストール


インタープリター環境のREPL を使う場合、rlwrap を使うと入力補助ができる。gauche と一緒にrlwarp もインストールします。


##  Ubuntu の場合

レポジトリからインストール します。

```
$ sudo apt install gauche
$ sudo apt install rlwrap
```

## macos の場合

homebrew からインストールします。
```
$ brew install gauche
$ brew install rlwrap
```

# 起動

```
$ gosh
```
 で起動します。


`(exit)` で終了します。



以下のようにして起動すると、矢印で履歴が呼び出せるようになります。


```
$ rlwrap gosh
```


# 入力補完

「改めてGaucheとrlwrapの連携について - 再帰の反復blog」
https://lemniscus.hatenablog.com/entry/20100701/1277990269
に掲載されているプログラムを使いました。

コピペしてmake_gosh_completions.scm というファイルにし、

```

$ gosh make_gosh_completions.scm  > ~/.gosh_completions

```


として予約語ファイルを作ります。


```

$ vim ~/.bashrc
```

として、以下を末尾に追加

```

export RLWRAP_EDITOR='vim -c "set filetype=scheme"'
alias gosh='rlwrap -c -q '\''"'\'' -b "'\''\"\`(){}[],#@;|" gosh -i -I "."'

```

alias の書式は 
「UbuntuにScheme処理系Gaucheをインストールする: いおりのプログラミングめも」
http://fanblogs.jp/iorisprogramming/archive/19/0
に掲載されているものを使いました。

```

$ source ~/.bashrc
```
として反映します。

```

$ gosh
```

で起動して、履歴や補完ができることを確認します。
[py2rb] wraps の２

# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# wrap (Python)
https://qiita.com/superrino130/items/6e745547d398de82187c

以前の記事で、概ね`wrap`を表現できるようになりましたが、
`module`と`class`間ですと、`NoMethodError`になります。
# 失敗 (Ruby)
```ruby
module M
  def my_decorator(meth)
    orig = method(meth)
    define_method(meth) do |*args, **kwargs|
      puts "Calling decorated method"
      orig.call(*args, **kwargs)
    end
  end  
end

class A
  include M

  def example
    def _example
      puts "Called decorated method"
    end
    my_decorator(:_example)
    _example    
  end
end

a = A.new
a.example

# output
undefined method `define_method'
```
ぐぬぬ。

しかし、`Did you mean?`さんが`define_singleton_method`を教えてくれました。

https://docs.ruby-lang.org/ja/latest/method/Object/i/define_singleton_method.html
# 成功 (Ruby)
```diff_ruby
module M
  def my_decorator(meth)
    orig = method(meth)
-    define_method(meth) do |*args, **kwargs|
+    define_singleton_method(meth) do |*args, **kwargs|
      puts "Calling decorated method"
      orig.call(*args, **kwargs)
    end
  end  
end

class A
  include M

  def example
    def _example
      puts "Called decorated method"
    end
    my_decorator(:_example)
    _example    
  end
end

a = A.new
a.example

# output
Calling decorated method
Called decorated method
```
分かりやすい記事

https://qiita.com/na-o-ys/items/bb5659a359f82b1ccac1
# メモ
+ Python の wraps の２ を学習した
+ 百里を行く者は九十里を半ばとす
flutter_launcher_iconsでFormatException: Invalid number (at character 1)となる場合

#はじめに

https://pub.dev/packages/flutter_launcher_icons

Flutterでアイコンを設定するときに使える👆のパッケージ。
このパッケージでアイコンを生成するための以下のコマンドを実行すると、

```console
flutter pub run flutter_launcher_icons:main
```

なぜかエラーが発生してしまいます・・・

```console
FormatException: Invalid number (at character 1)
```

#環境
既に`assets/icon/icon.png`は設置済みとする。

```yaml:pubspec.yaml 
environment:
  sdk: ">=2.16.1 <3.0.0"

dev_dependencies:
  flutter_launcher_icons: "^0.9.2"

flutter_icons:
  android: true
  ios: true
  image_path: "assets/icon/icon.png"
```

#minSdkVersionを変更してもダメなんだが・・・
普通に検索すると👇のように、`android/app/build.gradle`のminSdkVersionを直接の数値で指定する方法が多く出てきます。

https://minpro.net/flutter_launcher_icons-formatexception-invalid-number

https://stackoverflow.com/questions/70580684/flutter-launcher-icons-not-working-unhandled-exception-formatexception-invalid

が、私の場合はこれらをやっても解決しませんでした・・・:sweat:

#flutter_launcher_iconsをgitから直接引っ張ってきて解決？？

https://zenn.dev/shota1995m/scraps/e82c35e101bff4

「アプリのアイコン設定」の項目で以下のような記載がありました。

https://github.com/fluttercommunity/flutter_launcher_icons/issues/316

```yaml:pubspec.yaml 
  flutter_launcher_icons:
    git:
      url: https://github.com/Davenchy/flutter_launcher_icons.git
      ref: fixMinSdkParseFlutter2.8
```

これで私も解決しました！！！

（一体どう言うことなのかいまいちわかりませんが・・・:sweat_smile:）
torchvisionの事前トレーニング済みモデルを使う　画像分類

#torchvisionのトレーニング済みモデルをダウンロードして使う方法です

#トレーニングするのは面倒

#トレーニング済みの画像モデルが簡単に使える
いろんな種類のモデルが使えます。わりと新しいモデルもあります。

#方法

事前トレーニング済みモデルをダウンロードしてインスタンス化。

```python
import torchvision.models as models

regnet_y_400mf = models.regnet_y_400mf(pretrained=True)
```

これだけでモデルができます。

入力画像をモデルの入力に合わせて前処理します。

224*224にリサイズ、ImageNetデータセットに合わせて正規化します。

```python
import torch
from torchvision import transforms
from PIL import Image

transform = transforms.Compose([
 transforms.Resize(224),
 transforms.ToTensor(),
 transforms.Normalize(
 mean=[0.485, 0.456, 0.406],
 std=[0.229, 0.224, 0.225]
 )])

img = Image.open("tabby.jpg")
img_t = transform(img)
batch_t = torch.unsqueeze(img_t, 0)
```

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/235259/1957aff4-b313-2e86-9de6-bad8a1cf3f55.jpeg", width=400>


画像をモデルのフォワードプロセスにかけます。

```python
out = regnet_y_400mf(batch_t)
```

出力は(1,1000)の数値です。ImageNet１０００クラスに対応する信頼度です。
ソフトマックスで%値にまとめます。
クラスラベルをダウンロードし、トップを表示します。

```python
_, index = torch.max(out, 1)
percentage = torch.nn.functional.softmax(out, dim=1)[0] * 100

import urllib
label_url = 'https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt'
class_labels = urllib.request.urlopen(label_url).read().splitlines()
class_labels = class_labels[1:] # remove the first class which is background

print(class_labels[index[0]], percentage[index[0]].item())
```

>'Egyptian cat' 66.66095733642578

使えるモデルは以下で確認できます。

https://pytorch.org/vision/master/models.html

🐣
****
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLやARKitを使ったアプリを作っています。
機械学習／AR関連の情報を発信しています。

[Twitter](https://twitter.com/JackdeS11)
[Medium](https://medium.com/@rockyshikoku)
文章を短くわかりやくする



①助詞、形容詞、修飾語などを排除する
②記号化して省く
③注で飛ばして本文から省く
④受け身表現を能動態にしたり、体言止めで省く
⑤絵や表に置き換えて省く

日本語は、ある語句を前から修飾することができる言語です。これは、書き手にとっては便利な半面、読み手にとっては読みにくいことが多いため、上記の方法で読みやすくすることができる。


芦屋 広太. エンジニアのための文章術再入門講座 新版 状況別にすぐ効く！文書・文章作成の実践テクニック
他プロジェクトから移したモジュールが正常に動作しない(今回はvue-toastification)

#問題
vue-toastificationを導入したが以下のエラーが発生:thinking:

```
client.js?06a0:102 TypeError: Cannot read properties of undefined (reading 'clear')
    at VueComponent.eval (utils.js?8649:19:1)
    at VueComponent.noti (index.vue?6ced:90:1)
    at invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1863:1)
    at VueComponent.invoker (vue.runtime.esm.js?2b0e:2188:1)
    at invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1863:1)
    at VueComponent.Vue.$emit (vue.runtime.esm.js?2b0e:3903:1)
    at VueComponent.click (vuetify.js?ce5b:2609:1)
    at invokeWithErrorHandling (vue.runtime.esm.js?2b0e:1863:1)
    at HTMLButtonElement.invoker (vue.runtime.esm.js?2b0e:2188:1)
    at HTMLButtonElement.original._wrapper (vue.runtime.esm.js?2b0e:6961:1)
```

#環境
```package.json:
{
  "name": "toast_test",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "dev": "nuxt",
    "build": "nuxt build",
    "start": "nuxt start",
    "generate": "nuxt generate"
  },
  "dependencies": {
    "@nuxtjs/axios": "^5.13.6",
    "core-js": "^3.19.3",
    "nuxt": "^2.15.8",
    "vue": "^2.6.14",
    "vue-server-renderer": "^2.6.14",
    "vue-template-compiler": "^2.6.14",
    "vue-toastification": "^1.7.14",
    "vuetify": "^2.6.1",
    "webpack": "^4.46.0"
  },
  "devDependencies": {
    "@nuxtjs/vuetify": "^1.12.3"
  }
}
```

```index.vue
<template>
	<v-btn @click="noti">押す</v-btn>
</template>

<script>
import { TYPE } from "vue-toastification";

export default {
	name: 'IndexPage',

	methods: {
		noti() {
			this.$showToast('エラー', TYPE.ERROR);
		},
	}
}
</script>
```

全体で使える関数を作るため、pluginsディレクトリにutils.jsを作成。
※これでthis.$showToastが使用できるようになる。
参考：https://qiita.com/itouuuuuuuuu/items/bcad408842c7723e7ca3

```plugins/utils.js
const fixPath = (_path) => {
    return `${_path}/`;
}

import { TYPE } from "vue-toastification";

export default ({$toast}, inject) => {
    inject('fixPath', fixPath);

    /**
     * @param _text
     * @param _type TYPE(from vue-toastification)
     */
    inject('showToast', (_text, _type) => {
        // 既存のトーストを全削除
        $toast.clear();

        //if (_type == TYPE.SUCCESS) {
        $toast(_text, { type: _type });
    });
}
```
```nuxt.config.js:
　～抜粋～
  plugins: [
    '@/plugins/utils',
  ],
```


#詳細
エラーメッセージからすると問題の発生は、utils.js内の $toast.clear(); の箇所。
$toastがどうも取得できていないらしい。

#解決
nuxt.config.jsのmodulesにvue-toastificationの記載がなかった。

```(修正前)nuxt.config.js:
  modules: [
    // https://go.nuxtjs.dev/axios
    '@nuxtjs/axios',
  ],
```

```(修正前)nuxt.config.js:
  modules: [
    // https://go.nuxtjs.dev/axios
    '@nuxtjs/axios',
    "vue-toastification/nuxt",
  ],
```

#所感
最初に導入する際はmodulesの記載を忘れることなんて無いんですが、別プロジェクトを参考に持ってくると一部記述が漏れていて正常に動作しないなんてことは発生しがちですね...。
とりあえず解決です。ありがとうございました:innocent:
Custom Notifications


[まとめページに戻る](https://qiita.com/Keiji_otsubo/items/60afc2a8d211b6f7d89f)
[まとめA～M](https://qiita.com/Keiji_otsubo/items/f3ddedee6793bf1576f8)


# 関連資料
+ [Send Custom Notifications Using REST API](https://www.salesforcecodecrack.com/2019/06/send-custom-notifications-using-rest-api.html)
+ [Bell notifications via apex](https://salesforce.stackexchange.com/questions/256989/bell-notifications-via-apex)
+ [Custom Notification Actions](https://developer.salesforce.com/docs/atlas.en-us.api_action.meta/api_action/actions_obj_custom_notification.htm)
+ [fullcalendar.io Lightning Component](https://rajvakatidotcom.wordpress.com/2018/05/29/fullcalendar-io-lightning-component/)
+ [フローコアアクションの設定](https://qiita.com/Keiji_otsubo/items/0ebaa1a2a3c4c40f60e9#%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E9%80%9A%E7%9F%A5%E3%82%92%E9%80%81%E4%BF%A1)
+ [Bell icon color の色を変えるCSS](https://qiita.com/Keiji_otsubo/items/53fc923fd7400e732d7f)

# 標準機能

+ [当該ステータスが「完了」になったら削除、など通知を減らす手立てはありますか？](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54V00007eq7ZS)

:::note
この機能の要望があがっているのですが、アイデアのままです。

There should be the ability to mark all notifications as read on the device or for it work like twitter notifications so when you open the bell all notifications are marked as read automatically.

https://ideas.salesforce.com/s/idea/a0B8W00000GdWntUAF/salesforce-1-push-notifications-mark-all-as-read-option
:::
Rails Fakerで意味不明な文章をつくる（日本語）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1111652/15bf42b3-c99a-993b-4827-f2089392cf7e.png)

# Fakerで意味不明な文章をつくる
ダミーデータをつくるときの定番Gem、<b>`Faker`</b>。
ポケモンだったり、スターウォーズだったりとユニークなダミーデータがつくれることで人気があります。
<br>

https://github.com/faker-ruby/faker

インストールはGemfileに書いて`bundle install`すればOKです。
日本語化すればfakerでも日本語の名前をつくることもできますが<b>`Gimei`</b>という日本語の名前や住所のダミーをつくるときに便利なGemもあります。

https://github.com/willnet/gimei


```ruby:Gemfile
gem 'faker'
gem 'gimei'
gem 'rails-i18n'
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1111652/b20ddc78-4e0e-7471-fb5a-bfb8df2a600c.png)


記述したら`bundle install`します。

```
bundle install
```

## 日本語化
すべてのダミーデータが日本語化される訳ではないんので試し試しではありますが`locale.rb`に日本語化するための記述をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1111652/abd39dba-fd5d-7726-ecf6-7076665fd6ae.png)

```ruby:config/application.rb
Rails.application.config.i18n.default_locale = :ja
#念の為
Faker::Config.locale = :ja
```

## つかってみる
`rails console`を開いて試してみましょう。

```bash
[1] pry(main)> Faker::House.furniture
=> "floor lamp"
[2] pry(main)> Faker::Mountain.name
=> "Kirat Chuli"
[3] pry(main)> Faker::Tea.type
=> "Green"
[4] pry(main)> Faker::Restaurant.name
=> "居酒屋 中山"
[5] pry(main)> Faker::Space.planet
=> "地球"
```

こんな感じでダミーデータを作成することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1111652/ffffb072-b838-03df-9342-22f749f343d2.png)

### Fakerで日本語の文字列を表示させる。
fakerで文章を表示させるには`Faker::Lorem`を使います。

https://www.rubydoc.info/github/stympy/faker/master/Faker/Lorem

その中で使うものは<b>`Faker::Lorem.paragraph`</b>と<b>`Faker::Lorem.sentence`</b>です。

```bash
[1] pry(main)> Faker::Lorem.paragraph
=> "けしき抑制誘惑。山葵当て字大丈夫。じょうじゅん封筒うんがいい。"
[2] pry(main)> Faker::Lorem.sentence   
=> "新婚旅行ぐんたいやくなおさら。"
```
はい。意味不明な文が表示されました。ww

それぞれ引数を入れることができます。
`paragraph`はデフォルトで３つの文を作成してくれます。

```bash
Faker::Lorem.paragraph(sentence_count: 作りたい文の数)
```

```bash
[1] pry(main)> Faker::Lorem.paragraph(sentence_count: 7)
=> "禍根たらすあらす。急騰じょうきふかさ。魔法めいしじっかん。とうさんむぜい助手。液体備える果樹。馬鹿馬鹿しい頂く輸出。さいほうたいりくあつい。"
```

`sentence`はデフォルトで4つの単語を組み合わせて文を作ってくれます。

```bash
[1] pry(main)> Faker::Lorem.sentence(word_count: 単語の数)
```

```bash
[6] pry(main)> Faker::Lorem.sentence(word_count: 25)
=> "人口しょうゆかんりょうてきとうきほうせきじぞう春休み学者特殊ちらかす雇用はだか胃壊す壮年よぼう右利きごうけんうえる間隔都合犠牲指紋出版こうつう。"
```



## さいごに
こんな感じで意味不明だけど文章をつくってくれます。
意味不明でもいいけど、日本語の文章を作りたい方は使ってみてください。
いい感じの日本語のダミー文章をつくってくれるGemもしくは小説とかの文を取ってこれる探してます。。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1111652/78a16d86-34d1-70b9-dfbc-07b8b6fc6658.png)
Azure ADとAzureリソース関係

# Azure AD と　Azureのサブスクリプション

Azure　ADテナント　は　サブスクリプション　とは別のものです。
紐づけることでADユーザはサブスクリプションを利用できます。

Azure　ADテナント　は　１つ　管理グループに紐づけることができますので、
Azure　ADテナントはその管理グループの全サブスクリプションにアクセスできます。

ちなみに、管理グループのBlueprintは　サブスクリプションに割り当てる必要があります。

※Azure　Blueprintとは
https://docs.microsoft.com/ja-jp/azure/governance/blueprints/overview
【React+TypeScript】axiosを使用した非同期処理のステータスコードで処理を分岐する

#背景
axiosの使用した非同期処理において、ステータスコードで処理を分岐する実装をしたのでまとめておく

#実装

```typescript:sample.tsx（メインモジュール）
import { FC, useState, useEffect } from 'react';
import { callGetInfo } from 'services/api';  // WebAPIモジュール

const MainComponent: FC = () => {
  const [info, setInfo] = useState();


  useEffect(() => {
    try {
      const mainProcess = async () => {
        const rtnData = await callGetInfo();

        // ステータスコードで分岐する
        if (rtnData.status === 200) {
          // 正常値が返却された時に行なう処理
          setInfo(rtnData.datas);
        } else if (rtnData.status === 404) {
          // 404エラーの時に行なう処理
        } else if (rtnData.status === 500) {
          // 500エラーの時に行なう処理
        }
      };
      void mainProcess();

    } catch (error) {
      if (error instanceof Error) {
        // エラー処理
      } else if (typeof error === 'string') {
        // エラー処理
      }
    }
  }, []);

}
```

```typescript:services/api.ts（WebAPI処理モジュール）
import axios from 'axios';
import { Interface1 } from 'interfaces';

export const callGetInfo = async (): Promise<{
  datas: Interface1[];
  status: number;
}> => {
  let status = 0;
  const results = await axios
    .get<
      {
        data1: string;
        data2: string;
        data3: string;
        data4: string;
      }[]
    >(URL);

  status = results.status;

  const datas = results.data.map((result) => {
    const data: Interface1 = { 
      data1: result.data1,
      data2: result.data2,
      data3: result.data3,
      data4: result.data4,
      data5: result.data5,
    };

    return data;
  });

  return { datas, status };
};
```

```typescript:interfaces/index.ts（インタフェース用モジュール）
export type Interface1 = {
  data1: string;
  data2: string;
  data3: string;
  data4: string;
  data5: string;
};
```

#まとめ
- 「rtnData.status === 200」のように記述することで、ステータスコードで処理を分岐することができる
Ciscoの保守で手間取ったので次回のためメモ失礼いたします。


https://rpfa.cloudapps.cisco.com/
にログインする。
カスタマーポータルに移動する。
契約番号をクリックする
もう一回契約番号をクリックすると
PAK/Serial Number
が表示されるのでソレと契約番号をメモって

https://www.cisco.com/c/ja_jp/support/web/tsd-cisco-worldwide-contacts.html
とかにあるので電話する。


でなんとかなりそう(^_^;)
Cisco不慣れだから大変でしたっ
'UNIQUE constraint failed'について

#内容
DeviseのRegistrationsControllerのcreateアクションで

```
ActiveRecord::RecordNotUnique in Devise::RegistrationsController#create
SQLite3::ConstraintException: UNIQUE constraint failed: users.name

```
とでてしまう。

#解決
UNIQUE制約を受けているため、nameにあったunique: trueを消す。

```
add_index :users, :name, unique:true #←こいつを消す
```

今回はこれで解決できたが、どうしてもunique:trueを消したくない場合はどうするのだろう。
また調べていきたい。

以上
事業企画1年生のpython学習1日目

#本記事について
とある事業会社で事業企画をやっています。
元々は、新規営業1年→エンプラ営業3年やっていました。
事業企画への異動に伴って、ルーチンワークの自動化やスクレイピングに興味を持ちpython学習をスタートしました。
目的達成までは記事を執筆予定です。どうぞよろしくお願いいたします。

#開発環境
jupyterlab

#使っている本
すっきりわかるpython入門
https://sukkiri.jp/books/sukkiri_python

#勉強計画
週5日間1h勉強する。
最初の1weekは1冊終わらせることをgoalに。
start@ 2022/2/21

#学習時間
1.5h

#学び
```
var = 15 //変数のこと、上書きのため同じ変数使うのは避けたい、大文字
name = input('お名前は') //変数の中に代入したい内容を入力してもらう
print('合計点is{}'.format(var))

str(var) //varをstring(文字列）として扱う関数
int(var) //varをint(整数)
float(var) //varを少数点に変更　、15.0に。
bool(var) //varをbool型に変更する

type(var) //varの変数の型を確認できる。

```
M2Mって初めて聞くけどなに？

## 勉強前イメージ

いや、聞いたことないし見たことしかないから今回調べてみる

## 調査

### M2M とは

Machine to Machine の略で、人が仲介することなく機械同士が情報のやり取りを行うことを指します。
M2Mなので機械の同士のやりとりのみでデータをどこかに送信したり等はこちらに含まれません。
基本的にはM2Mは閉じたネットワーク内での通信がメインになります。

### M2Mではどういうことをしている？

機械同士のやり取りというのは結構見えないところでややこしいですが、以下のようなものが挙げられます。

- 情報収集
	- アメダス : 全国各地のセンサーから送られてくる気温等を収集
	- ヘルスケア : 端末を使って心拍数や体温を自動計測
- コントロール
	- 空調 : 温度センサーを元に空調の温度を調節
	- 照明 : 人感センサー等から人がいないときは照明の明るさを調整

### IoTとの違い

似たような言葉でIoT(Internet of Things)というのがあります。
イメージとしては以下になります。

- M2M : 機械同士の直接的な通信
- IoT : インターネットを介した通信を前提で、機械同士の情報をインターネットやクラウドにアップロードして情報を集める

イメージの図としては以下になります。

![12022-02-19 # M2Mって初めて聞くけどなに？ - diagrams.net - Goog.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/f88ff391-b48e-e0b0-e8ae-63eccacfe7cf.png)


## 勉強後イメージ

データ収集までがM2M
そのデータをアップロードしたり集めたり活用するのがIoT って感じかな？

## 参考

- [3分でわかるIoTとM2Mの違い](https://www.oki.com/jp/iot/doc/2016/16vol_10.html)
- [M2Mとは？IoTとの違いや、事例について解説します！](https://www.nttpc.co.jp/column/iot_mobile/m2m.html)
ADとAzure ADの連携方法

# パスワードハッシュ同期　  
  :star:  ネットワーク障害に強いので、おすすめ :star:
ADDS（ユーザとパスワード管理）->AD Connect->Azure AD（ユーザとパスワードのハッシュを保管）   <- ユーザ

# パススルー認証
User　ー＞　Azure　AD（ユーザのみ）　＜ー＞　AD　Connect　＜ー＞AD　DS　（パスワード検証）

# フェデレーション
Userー＞Azure　ADー＞ADFSプロキシー＞ADFSー＞AD　DS（ユーザ管理・認証）
JavaSprictのreduceについて

# JavaSprictのreduceについて

## reduceについて
`reduce()`メソッドは、配列のそれぞれの要素に対して、順番通りに、ユーザーが提供した「縮小」コールバック関数(ある関数を呼び出す時に、引数に指定する別の関数のこと)を呼び出しました。その際、直前の要素における計算結果の返り値を渡します。配列の全ての要素に対して縮小関数を実行した結果が単一の値が最終結果になります。

## reduce()メソッドの基本的な使い方

reduceメソッドの引数は主に二つあります。一つはコールバック関数、二つ目は初期値になります。コールバック関数の役割は、配列に格納されている要素に対して適用する処理を定義します。初期値はコールバック関数の初回呼び出し時に設定する値です。



コールバックの初回実行時には「直前の計算の返り値」は存在しません。初期値が与えられた場合は、代わりに使用されることがあります。そうでない場合は、配列の要素0が初期値として使用され、次の要素（０の位置ではなく1の位置）から反復処理が開始されます。

```js
const foods = [1, 2, 3, 4, 5];　

　const curry = foods.reduce(function (result, current) {
　 return result + current;
　}, 0);

　console.log(curry); 

// =>15
```
このようにreduceは配列の要素を一個ずつ引数で指定した関数の処理を実行していきます。
配列.reduce(function(累積値,要素){})です。

## `mapメソッド`と`reduceメソッドの違い`
### map()メソッドでできること
map()メソッドはforEachメソッドに似ていますが、オリジナルとは別の新しい配列を作成します。

```js
const array1 = [1, 4, 9, 16];

// pass a function to map
const map1 = array1.map(x => x * 2);

console.log(map1);

//=> 2,8,18,32
```
それぞれの要素に何かしらの処理をした結果の、新しい配列を得ることができるので便利です。例になりますが、配列[1,2,3]をmap()メソッドで2倍にすると[2,4,6]という新しい配列を生成されることができます。処理をして新しい配列を作ります。
それに対し、reuduceは処理をして一つの値を取得します。ここが違いになります。

## reduceのさまざまな使い方
### プリミティブ

```js
const numbers = [1000, 2000, 3000, 4000, 5000];

const jonh = numbers.reduce((prev, current) => prev + current, 10);
console.log(jonh);

const average = jonh / numbers.length;
console.log(average);

const max = numbers.reduce((prev, current) => prev > current ? prev : current);
console.log(max);

//=> 合計が15010
//=> 平均値が3002
//=> 最大値が5000
//=> 最小値が1000
```
このように、合計、平均値、最大値、最小値を算出することができる。

### オブジェクト
対象とするkeyを指定するだけで、基本的にはプリミティブと同じ

```js
const members = [
    { name: "バルセロナ", score: 10, dep: 'sales1' },
    { name: "レアル", score: 20, dep: 'sales2' },
    { name: "パリ", score: 30, dep: 'sales2' },
]

const scorejonh = members.reduce((prev, current) => {
    return prev + current.score;
}, 0);
console.log(scorejonh);

const maxScore = members.reduce((prev, current) => {
    return prev.score > current.score ? prev.score : current.score;
}, 0);
console.log(maxScore);
```
合計と最大値を算出することができました。

## まとめ
reduceについて書いてみました。
TinyMCE5で画像にクラス付与、親要素(figureタグなど)をつける方法

# デモ

<p class="codepen" data-height="300" data-default-tab="js,result" data-slug-hash="NWwMamZ" data-user="qwe001" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/qwe001/pen/NWwMamZ">
  Wrap img by figure tag by tinyMCE 5</a> by qwe001 (<a href="https://codepen.io/qwe001">@qwe001</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

# 実装
```javascript
function initTinyMCE(selector)
{
  var options = {
    selector : selector,
    language : 'ja',
    height : 500,
    plugins : 'image code',
    toolbar1 : 'image custom-button-img code',
    image_class_list : [
      { title : 'None', value : '' },
      { title : 'Some class', value : 'img_class_name_0' }
    ],
    setup: function(editor){
      editor.ui.registry.addButton("custom-button-img", {
        tooltip: "new class",
        icon: "edit-block", // look editor-icon-identifiers page
        onAction: function(api) {
          var $ = tinymce.dom.DomQuery;
          var elem = tinymce.activeEditor.selection.getNode();
          
          var isImg = $(elem).is('img');
          var hasClass = $(elem).hasClass('has-wrapper');

          if(isImg){
            if(hasClass){
              $(elem).removeClass('has-wrapper');
              $(elem).unwrap('<div class="figure-wrapper"></div>');
              $(elem).unwrap('<figure class="img-wrapper"></figure>');
            }
            else {
              $(elem).addClass('has-wrapper');
              $(elem).wrap('<div class="figure-wrapper"></div>');
              $(elem).wrap('<figure class="img-wrapper"></figure>');
            }
          }
        }
      });
    },
  };

  tinymce.init(options);
}
```
画像をアップロードした後、画像を選択した状態でカスタムボタンを押すと、以下のようにimgタグを`div>figure>img`のような形でラッピングして出力します

もう一度ボタンを押せば、ラッピング要素を除去します

```html
<div class="figure-wrapper">
<figure class="img-wrapper">
<img class="has-wrapper" src="/uploads/22b918d29723f2abca34fb6830907903.png" alt="" width="539" height="572" /></figure>
</div>
```

もっと良い実装方法知ってるヤツ、至急コメントくれや
フォントのベストプラクティス【WEBフォントを使うべきか？】


## Webフォントに関する知識
### WEBフォントって重いのでは？
日本の通信スピードであれば<b>1書体</b>なら問題ない。

加えて、一度でもフォントがキャッシュされていれば重さは関係なくなる。
自社以外でも<b>他社で同じフォント</b>を見ていれば、自社サイトでは即時表示される。

そのため、なるべく<b>シェアの高いフォント</b>を使う方が、
画像よりもサイズが軽くなる期待値が高い。

### 使用する際の注意事項
Googleフォントは仕様変更され、
IEではウェブフォントを見ることができない。


-----
## 理想フォントは「游ゴシック体」
理由はWindows、Mac、iPhoneで利用可能だから。

### 欠点はWindowsのデフォルトで細字になること
そのため```Yu Gothic Medium```と記述しなければならなくなる。
しかしそれで万事解決というわけではなく、
その状態で```bold```を指定すると、やはり滲んでしまう、という問題が発生する。
普通の```Yu Gothic```を太字にした時とは明らかに違う表示になるとのこと。

### @font-faceは利用不可
以前は上述の問題対策として```@font-face``` を利用する方法があったが、
Chrome65以降は非対応となった。

## 理想の設定方法について
游ゴシックを使う際は、
以下の記述順序で並べていく方法が一般的である。
### -apple-system
他に影響を及ぼさないApple用の英字フォント。
設定するとSan Franciscoが適用される。
### BlinkMacSystemFont
MacでChromeとFirefoxを使用するときは、-apple-systemではなくこちらが利用される。
### Yu Gothic
windows用の游ゴシック表記。
### YuGothic
Mac用の游ゴシック表記。
### Meiryo
Vista, Win7, Win8ように記述。
Win8以降は上述のYu Gothicが使用される。

## 今後の対策として
```Noto Sans JP```を利用する、という方法が挙げられていた。
今回調べた中では1記事でしか紹介されていなかったが、
弊社サイトでも同じ対策が取られているので紹介。
 [2018年流行？font-familyのオススメ設定はこれ！【CSS】](https://anyushu.com/web/fonts-osusume/)

Webフォントを利用することで、
OSの違いにも柔軟に対応することが可能。
以前と比べても表示速度が劇的に向上しているため、
特に違和感を感じることなく利用することができる。

もしWebフォントを使用するのにすら不具合が出るような状況で
ページが見られる時(オフライン、通信制限時)のために、
上記の游ゴシックの設定を施していくのがベストである。

## 理想と現実
ここまでは、このフォントを使うべき、という話だったが、
実際に使われているフォントはどうなのか。
### ブラウザのデフォルトフォント
Safari 11.1 / MacOS 10.13　<b>ヒラギノ角ゴ ProN</b>
Chrome 65.0 / MacOS 10.13　<b>ヒラギノ角ゴ ProN</b>
Firefox 59.0 / MacOS 10.13　<b>ヒラギノ角ゴ ProN</b>
Microsoft Edge 41 / Windows 10　<b>メイリオ</b>
Internet Explorer 11.209 / Windows 10　<b>メイリオ</b>
Chrome 65.0 / Windows 10　<b>メイリオ</b>
Firefox 59.0 / Windows 10　<b>メイリオ</b>

Macでは<b>ヒラギノ角ゴ ProN</b>、
Windowsでは<b>メイリオ</b>が利用されている。

### 有名サイト
<b>ＭＳＮニュース　</b>
```font-family: "segoe ui",meiryo,"yu gothic","hiragino kaku gothic pron",sans-serif;```

<b>yahooニュース</b>
```font-family: "メイリオ","Hiragino Kaku Gothic Pro",Meiryo,"ヒラギノ角ゴ Pro W3","MS PGothic","MS UI Gothic",Helvetica,Arial,sans-serif;```

<b>Apple</b>
```font-family: "SF Pro JP","SF Pro Display","SF Pro Icons","Hiragino Kaku Gothic Pro","ヒラギノ角ゴ Pro W3","メイリオ","Meiryo","ＭＳ Ｐゴシック","Helvetica Neue","Helvetica","Arial",sans-serif;```

<b>Google</b>
```font-family: Roboto,Arial,Helvetica,sans-serif;```

Googleは別として、メイリオ、ヒラギノが上位に来ている。
Windowsユーザーが多いということを考えると、
現実的な側面から、メイリオ、ヒラギノをメインに据える方法が、
まだ主流である、と言えそうだ。



## 参考：
* [2017年版個人的ベスト｜CSSフォント指定WIN、MACでキレイに表示（ゴシック、明朝）｜MWORKS](https://mw-s.jp/2017css-font-win-mac/)
* [2018年流行？font-familyのオススメ設定はこれ！【CSS】](https://anyushu.com/web/fonts-osusume/)
* [2018年のfont-family指定 - Qiita](https://qiita.com/ln-north/items/21bff624c5d0f8e40fe9)
* [游ゴシックのfont-family指定方法2018年度版！@font-faceは絶対NG！WindowsのChromeでかすれる問題徹底検証 | WEMO](https://wemo.tech/1155)
* [Font−familyのベストな書き方 2018年改定版 | それからデザイン スタッフブログ](https://sole-color-blog.com/blog/1380/)
* [font-family　2018　あれこれ悩むより、有名サイトを参照するといい。](https://11html.com/css/font-family2018/)
* [いまどきのCSS - font-family ゴシック編｜masakihongo｜note](https://note.mu/masakihongo/n/nfa5d7de29602)
* [2020年まで使えるfont-familyおすすめゴシック体 - Qiita](https://qiita.com/RinoTsuka/items/4181efd43d072e246519)
iPhone is busy: Making Apple Watch ready for development 問題

iPhone is busy: Making Apple Watch ready for development 問題

## 解決方法
- iPhoneとMacの接続を一度切る
  - Connect via networkしているなら、Bluetoothを切る
- AppleWatchのBluetoothを切る
- iPhoneをMacに再接続する

※AppleWatchの機内モードやWifiをオフにする必要はなく、Bluetoothだけの問題

## 参考
数ヶ月前からかなりの数の開発者がSame problemしてるなか、これが一番手っ取り早かったです。

https://developer.apple.com/forums/thread/691452?answerId=704977022#704977022

## 環境
- Xcode 13.0
- iOS 15.1.1
- Apple Watch 8.4.2

※Developer Forumを見る限り、Xcode 13.0 - 13.2まで広範囲で起きていて、2022/2/22現在根本的な解決方法が提供されてない模様。

## 余談
Apple Forumではかなりの数の「気が狂いそう」というコメントがついてて表現の勉強になりました。

```
- driving us nuts.
- driving us bananas.
```
無限に時間がかかるサーバー

```
const express = require('express')
const app = express()
const port = 9999

app.get('/', (req, res) => {
  res.header('Access-Control-Allow-Origin', '*')
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE')
  res.header(
    'Access-Control-Allow-Headers',
    'Content-Type, Authorization, access_token'
  )
  setTimeout(() => {
    res.send('Hello World!')
  }, 1000000000)
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})
```
Javaを使用してExcelでピボットテーブルを作成する方法

Excelシートで処理すべきデータが多すぎて、各セルのデータをまとめる必要がありながら、1つずつ計算するのが面倒くさい場合は、ピボットテーブルを使用してすばやくまとめできます。そしてこの記事の内容では、Javaプログラムを使用してExcelテーブルのデータに基づいてピボットテーブルを作成する方法を紹介します。

##環境への下準備
ExcelクラスライブラリツールであるFree Spire.XLS for Javaを使用する必要があります。ここでは無料バージョンを使用します。公式WebサイトからJarパッケージをダウンロードして解凍し、手動でSpire.Xls.jarをライブラリにインポートできます。フォルダをJavaプログラムに追加します。

##Javaコード一覧

```
import com.spire.xls.*;

public class CreatePivotTable {
    public static void main(String[] args) {
        //Excelテストドキュメントを読み込む
        Workbook wb = new Workbook();
        wb.loadFromFile("C:\\Users\\Administrator\\Desktop\\test.xlsx");

        //最初のワークシートを取得する
        Worksheet sheet = wb.getWorksheets().get(0);

        //集約および分析する必要のあるデータのキャッシュを作成する
        CellRange dataRange = sheet.getCellRange("A1:D10");
        PivotCache cache = wb.getPivotCaches().add(dataRange);

        //ワークシートでピボットテーブルの名前と場所を指定して、キャッシュを使用してピボットテーブルを作成する
        PivotTable pt = sheet.getPivotTables().add("PivotTable",sheet.getCellRange("A12"),cache);

        //行フィールド1を追加する
        PivotField pf1 = null;
        if (pt.getPivotFields().get("月") instanceof PivotField){
            pf1 = (PivotField) pt.getPivotFields().get("月");
        }
        pf1.setAxis(AxisTypes.Row);

        //行フィールド2を追加する
        PivotField pf2 = null;
        if (pt.getPivotFields().get("メーカー") instanceof PivotField){
            pf2 = (PivotField) pt.getPivotFields().get("メーカー");
        }
        pf2.setAxis(AxisTypes.Row);
        //行フィールドのタイトルを設定する
        pt.getOptions().setRowHeaderCaption("月");

        //列フィールドを追加する
        PivotField pf3 = null;
        if (pt.getPivotFields().get("製品") instanceof PivotField){
            pf3 = (PivotField) pt.getPivotFields().get("製品");
        }
        pf3.setAxis(AxisTypes.Column);
        //列フィールドヘッダーを設定する
        pt.getOptions().setColumnHeaderCaption("製品");

        //値フィールドを追加する
        pt.getDataFields().add(pt.getPivotFields().get("総出力"),"総和項：総出力",SubtotalTypes.Sum);

        //ピボットテーブルのスタイルを設定する
        pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleDark12);

        //ドキュメントを保存する
        wb.saveToFile("ピボットテーブル.xlsx", ExcelVersion.Version2013);
        wb.dispose();
    }
}
```

###**ランニングの結果**
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/c4a3353a-323d-fb72-780f-a82e81e36394.png)

以上は今回のExcelでピボットテーブルを作成する方法でした、最後まで読んでいただきありがとうございます。
Rails PagyでOverflowエラー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1111652/f15d9091-6c98-17e2-e4f1-9a45a56be116.png)

# Pagyで次のページをクリックするとエラー
Railsでアプリケーションを作っている際にページネーションのGemにPagyを使っていました。
そこで次のページを表示させるために次のページへ移動するためにクリックすと
`Pagy::OverflowError`というエラーが発生しました。

[![Image from Gyazo](https://i.gyazo.com/8f2b1b42590ff5e15860483be3db73a6.png)](https://gyazo.com/8f2b1b42590ff5e15860483be3db73a6)

ほかのページでもPagyは使っていたんですが、そこではエラーは出ておらず
コードを見ても特にタイポとかはなさそうでした。

## 解決方法
PagyのGitHubPageにありました。

https://ddnexus.github.io/pagy/extras/overflow.html#gsc.tab=0

### pagy.rbにoverflowエラーを回避するコードをかく
`config/initializers/pagy.rb`にコードを追記します。
作成していない方は作成してください。

```ruby:pagy.rb
require 'pagy/extras/overflow'

Pagy::DEFAULT[:overflow] = :last_page
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1111652/b17d27a9-5b1f-6c96-d7cb-ff2d54e1508b.png)

これでエラーを回避することができました。
うまく反映されない場合は一旦サーバーをシャットダウンして、再起動してください。
ListTileの基本的なプロパティ

メモです


#ListTileで使えるプロパティ一覧（一部）
1.タイトルの指定
```title:```

2.タイトルの前に表示されるコンテンツを指定
```leading:```

3.タイトルの後に表示されるコンテンツの指定
```trailing:```

4.タイトルの下に表示されるコンテンツの指定
```subtitle:```

5.枠の内側の余白を指定
```contentPadding:```

6.垂直方向に対する密度を指定
```dense:```

7.ListTileが選択された時のbool値がtrue、選択されていない時はfalse
```selected:```

8.ListTileが選択されていない時のタイルの色を指定(selectedがfalseの時)
```tileColor:```
XDでカスタマーエクスぺリエンスを向上させるクリエイティブとマーケティングのコラボレーション #AdobeMAX2018

やや中身のボリュームがあったので、
時間のない方は、各セクションの<b>ざっくりいうと</b>だけ読んでください。

## 講師＆Adobe紹介
<b>ざっくりいうと、
Adobeはデザイン製品を作ってるだけの会社じゃないよ、という話。</b>

山田智久さん
マーケ企画からクリエイターまで担当。
デジタル領域でデザインとマーケを行ったり来たり。

アドビのイメージは、
CCクラウド、Docクラウドのイメージ。
しかし、デジタルマーケティングのソリューションという側面もある。

Adobe Advertising
Adobe Analytics
Adobe Marketing
Magento Commerce
の製品がある。

現在のソリューションは、
Criative,Docment,Experienceの三つ。

## コンサルが提供すること
<b>ざっくりいうと、
企画の時も製作の時も関わる。</b>

製品の導入支援
製品の活用支援
マーケティング支援
ビジネス支援

ワークプロセス
企画立案　素材準備　製作　振り返り

## クリエイターと企画担当者の橋渡しとしてのXD活用
<b>ざっくりいうと、
ただプロトタイプを並べるだけのソフトではない。
情報プラットフォームとして使おう。</b>

XDといえば、高速プロトタイプツールで製作プロジェクトを高速化。

「XD＝プロトタイプツールという認識からの脱却」

情報プラットフォームとして使う。

### コラボの躓き
ワイヤー段階で合意したはずなのに。
アウトプットに対する判断句順が制作者と合わない。

製作プロセスにおけるXDの位置づけ。
プロトタイプ
プレビュー
シェア
デザイン

一方で、カスタマーエクスペリエンスのワークフロー
ユーザーリサーチ
ワイヤーフレーム
デザイン
プロトタイプ、テスト
コーディング、ローンチ

計画　企画　デザイン　開発　運用

### XDの使い方
XDは、企画から開発までを担当するが、
その前の部分で考えられた情報が抜けやすい。
プロジェクトコンセプトなど。

１．プロジェクト信仰のアプローチをXDで代える
２．XDを情報プラットフォームとして活用する

計画　企画　デザイン
ワークショップアプローチで同時進行させる　eith　XD

### ワークショップアプローチ、ポイントは思考の枠
どうやって参加者の発想水準を引き合わせるか
カスタマーエクスペリエンスを考える基本フレームを用意する

Design JIMOTO

地元にいるクリエイターを巻き込みながら、
アイデアを具体化、活性化させる。

渋谷、外国人の滞在時間を延ばすにはどうしたらいいか。
プロトタイピングをみんなで行って、
一日でアイデアを寄せ集め、アプリにしてしまう。

ワークショップアプローチを制作側から提案する。
ビジネス側からは提案しにくい。

ワークショップ、手間＝コストがかかるのでは？
考えるフレーム設定と、レクチャープログラムで効率的に実施

課題設定、事前準備、当日ファシリテート

### 情報プラットフォームとしての活用
計画　企画　デザイン　開発　運用

各プロセスの成果物のエッセンスだけを一元集約化。

<b>なぜXDなのか？</b>
・閲覧速度、視認性の良さ。(キャプチャ集でも早い)
・流れを縛らないドキュメント展開の自由さ。(操作性)
・共有と修正のしやすさ(ファイルでもウェブでも)

実例
ECサイト改修プロジェクトの場合

計画　
　サービス戦略の整理
企画　
　データに基づいた改善示唆
デザイン

クリエイターの人にデータをそのまま見せてもよくわからない。
それをXDに貼って、サマリーとしてしまう。

ただプロトタイプを並べるのではなく、
分析データも一緒にならべてしまう。

つまりこういうこと↓
こういうのが伝えたいときは…
![20181120_181121_0121.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/828432f3-5c98-757f-5639-573267356424.jpeg)


<b>パワポがわりに。</b>
![20181120_181121_0118.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/d19605aa-a2b3-8734-5222-47e796b4462d.jpeg)



アナリティクスの分析をそのまま見てもわからない人のためには…。
![20181120_181121_0117.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/d786a5a4-9e7f-d2b4-2f2e-9053c26bbc50.jpeg)


<b>ダッシュボード代わりに。</b>
![20181120_181121_0116.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/475b2e73-abb8-40a7-aaa2-acf4e919d019.jpeg)
レコードタイプがあるとクリアーできないチャレンジのまとめ


[まとめページに戻る](https://qiita.com/Keiji_otsubo/items/60afc2a8d211b6f7d89f)


+ [「オープンアクティビティ」関連リストのチャレンジはまだ完了していません。アカウントレコードの詳細ページの最初のリストには表示されません。アカウントでレコードタイプを使用していないことを確認してください](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000A8qgJSAR)
+ [The 'Mobile Account Layout' compact layout does not appear to have the following fields in this order: Account Name, Annual Revenue, Phone, Type.](https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000A8K9RSAV)

# Lightning Experience Customization > Create and Customize List Views

+ [Create and Customize List Views](https://trailhead.salesforce.com/content/learn/modules/lex_customization/lex_customization_list)
+ [Create and Customise List Views](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000Oqixw)

NPSPを使ったPlaygrandだったようです
AdobeXD最新情報新機能の使いこなしと今後の進化 #Adobe MAX 2018

## 資料
資料はこちら
https://xd.adobe.com/view/ce170690-3b2d-45cb-59bc-7af76674f99c-b826/
https://www.dropbox.com/s/e9o0f7oqhvac4gg/resume-20181120.zip?dl=0

轟啓介 @keisuke322
湯口りさ　UIデザイナー　@risay
After Effectsへの書き出しも可能になった。
最新情報を追いかけたい時は、AdobeXD公式FBページがある。
XDのMAUは世界第二位。一年で四倍に増加。

新機能、おすすめ情報。

## デザイン
### レスポンシブ対応
![ダウンロード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/a2eb9874-fd9f-d4ad-af2d-a15ad4b255a2.png)


#### 固定させたい場合
右側の「手動」＞「幅を固定する」、
で固定させることが可能。

様々なものがあるときの場合。
顔の写真が離れてしまうことがある。
その時は、左からの距離を固定してあげることが可能。

大きさを変えるときにピンクの線が出てくるときがある。
動かすときにピンクの固定部分が出てくる。

#### めりこみをつくる

角丸はできるが、めり込みはできない。
めり込んだ形も今回で対応可能。
![スクリーンショット 2018-11-21 9.59.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/af287652-dc3f-3357-7e61-2d9eab54ff6a.png)

削る部分の四分の一円を、回転させて設置可能。
一気に角丸の部分を変化させることも可能になる。

吹き出しも一つ一つ調整していたが、
その部分も簡単に。

OFFにしたい時は、Shiftを押すと解除される。

レスポンシブに最適な形で調整済みのUIキットが出ている。
繰りっとを基本にして組まれているものがある。


### リンクされたシンボル
ファイルをまたいで、コピーできるようになった。
これは、スタイルガイドをもとにしてアイテムを作成することを目指しているもので、
スタイルガイドが形がい化しない。

#### 普通のシンボルと同じところ
シンボル内の文字を変更することが可能。

#### 違うところ。
スタイルガイドを変更すると、全部に更新通知がいく。
変更して保存すると、クリップが青いクリップマークに変わる。

ちなみにスタイルガイドを複数持つようなやり方もできる。

親シンボルに対して、子シンボルを変更することはできない。
ローカルでちょっと試したいんだけど、という場合は、
アセット一覧で右クリック＞ローカルシンボルに変更することもできる。

#### まとめ
・コピペするだけ
・青くなったら反映するか決めよう
・赤くなったらリンク切れ。

## プロトタイプ
### アニメーション表現をアップさせる機能群
アニメーションは、二つのアートボードが必要。
二つのボードの違いをAdobeが自動認識して、アニメーションを起こす。

アニメーションを設定しているアイテムは、
アートボードからはみ出ていても、ボードに所属したまま。

オブジェクトの透明度を変更したい時は、
オブジェクトを選択して、数字入力。３だと30％、３４だと34％など。

ハンバーガーメニュー。
コマンド＋８でパスツールに変更する必要がある。

三角のもの、角をダブルクリックすると丸くなる。

上手く動作しない時。ウサギの場合。
青いポイント(開始点)を合わせて、ポイント数をそろえると、うまく動いたりする。

#### UIキット
Auto-Animate UI kit
ツイート参照。
このアニメーションはこうやって動かせばいいんだ、
ということがわかるのでおすすめ。

## プラグイン
### Risize Artboard to Fit Content
いちいちアートボードを作るのが面倒な時に。
コンテンツ量に合わせて、作ってくれる

### VizzyCharts
チャートを作ってくれる
CSVファイルを用意。
リングチャートは、現状手入力のみ。

プラグインの注意点として、日本語入力をするとうまくいかないことがある。

### Design Hunt Inspirations
適当に画像をはめ込んでくれるプラグイン。

### Overflow
プロトタイプで見せたいとき、一枚絵にできるプラグイン。
画面遷移を説明したいときに便利
![20181120_181121_0033.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/758f6b66-826d-f7f9-266f-968b17b60028.jpeg)
![20181120_181121_0023.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/fe2df77c-8d7b-dff6-7a39-6986dafa4e40.jpeg)


### Google Sheets
スプレッドシートのデータをXDにはめ込んでくれるプラグイン。
共有リンク、必ず公開リンクを指定すること。
この時、レイヤ―名を同じしておくと、推薦してくれる。
リピートグリッドにも対応。
<iframe width="560" height="315" src="https://www.youtube.com/embed/KMAOPv0eSDM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>


### Repeat Grid
リピートグリッド

### はじめてのAdobe XDプラグイン開発
2018/12/13　市ヶ谷でやっています。

## 今後の進化
User Voiceというページは活用しているだろうか。
書き込んで、投票が集まったものは開発チームにチェックされる。
例）三角形が作れないのはどうなっているんだ、とか。

For　デザイナー、ディレクター
共同デザイン編集
バージョン管理
デザインシステム

For 開発者
コードの書き出し

For クライアント、エージェンシー
フィードバック

Tweetを追っていたら、XDロードマップが公式Trelloで公開中。
https://trello.com/b/WFKmCVaz/xd-extensibility-roadmap



Adobe XDユーザーグループ。
「Adobe XD Meeting」

思考の速度でデザインする。
Googleドキュメントに上手く貼り付けられない！？

今日は2月22日(にゃん月にゃんにゃん日)ということで猫の日ですね！

大した内容ではないのですが、最近知らない方がいたので簡単に共有します。

みなさんはGoogleのドキュメントやGmailに貼り付ける時にCtrl+Vで貼り付けてしまい、上手く貼り付けられなかった経験はありますでしょうか？

そう！こんな感じ

|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/772be194-b6be-e522-e6e2-43c982476fbe.png" width=300>|
|:-:|

　　　　　　　↓

|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/37b1d5f5-5f90-2278-3aaa-da2ef35d8b0a.png" width=300>|
|:-:|

画像はChatworkから**コピ**(Ctrl+C)**ペ**(Ctrl+V)した様子
(あいうえおは書式がわかるように見本)

画像だとわかりにくいですが、書式がぐちゃぐちゃになってしまっています。
そして、書式を貼り付け先(GoogleドキュメントやGmail)に合わせて貼り付けるのがCtrl+Shift+Vです。

そして書式を整えて貼り付けたのがこちら

|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/eafa46ce-ffe1-7c4d-152e-8f4c82fe30c9.png" width=300>|
|:-:|

上がCtrl+Vで貼り付けたもの
下がCtrl+Shift+Vで貼り付けたもの

これでGoogle系のアプリへのコピペにもう困らないですね！

ちなみに右クリックするとちゃんとショートカットが書いてあります笑

|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185845/bcafbc39-e898-caef-495b-4d0110ee3d18.png" width=300px>|
|:-:|
JNAでデスクトップフォルダのパスを取得してみた

## これまでのあらすじ
いまさらJavaでGUIやらなきゃになったんだけれど、デスクトップフォルダのパスってどう取ればいいのん？

## 失敗したやつ

```java:
System.out.println(System.getProperty("user.home"), "Desktop");
```

ぐぐるとよく出てくるやつなんだけれど、OneDriveとか入ってるとこれじゃあダメなのね。やだめんどいー！

## ちょっともやっとするやつ

Runtime.exec()でレジストリ読む方法。このパスどのくらい汎用性あるのかわからないんですが。
```java:
public static void regTest() throws IOException {
	String cmd = "reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\" /v Desktop";
	Process process = Runtime.getRuntime().exec(cmd);
	try(BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
		String line = null;
		while ((line = br.readLine()) != null) {
			if(line.indexOf("Desktop") != -1) {
				System.out.println(line);
			}
		}
	}
	// 出力結果はこんな感じ
	// Desktop    REG_SZ    C:\Users\yamane\Desktop
}
```

ここからsubstringとかでパスを抽出するとかするわけだけれど、なんというか泥臭い＆レジストリ直とかお行儀わるいよね感が半端ない。

# そういえばJNAがあるじゃない

と、ここまできてふと思ったのです。「IME制御のために既にJNA使ってるんだし、こっちでできるんじゃない？」と。
どうにもうまくまとまったドキュメントが見つからないので、jarの中身を展開して眺めていたら、あるじゃないですか。これじゃん。

```java:SpecialFolderTest.java
package test;

import com.sun.jna.platform.win32.Shell32Util;
import com.sun.jna.platform.win32.ShlObj;

public class SpecialFolderTest {
	public static void main(String[] args) {
		System.out.println(Shell32Util.getSpecialFolderPath(ShlObj.CSIDL_DESKTOP, false));
	}
}
```
最後だから一応ガワもつけて。
デスクトップだけじゃなくて他のスペシャル（？）なフォルダーのパスも取得できちゃいますね！

これにて解決。きれいさっぱり。


# 参考ページ
https://docs.microsoft.com/ja-jp/windows/win32/shell/csidl
FeliCa/Mifare/NFC でいろいろ実験

僕が試してみた実験、自分でも忘れがちなので一覧

- Felica でつくる簡単な入退室管理  (Rasbpberry Pi に複数台のカードリーダ) 
  - https://qiita.com/nanbuwks/items/e0988d8fec131baa579d
- RaspberryPi で NFC RFID-RC522  
  - https://qiita.com/items/c502ba880fbb93f522b3
- element14 の EXPLORE-NFC-WW で NFC 試してみる
  - https://qiita.com/items/0c436941a0c5f0a257b1
- Arduino ESP32 と STM32 で NFC RFID-RC522
  - https://qiita.com/nanbuwks/items/96c3c2d2af2cf97f3797
- RaspberryPi + ondryaso/pi-rc522 ライブラリで Mifare を操作する
  - https://qiita.com/nanbuwks/items/9cbf05609974870e9088
- STM32 で HID キーボード入力する カードリーダーを作る
  - https://qiita.com/nanbuwks/items/53839cfee81346ffd6c4
- nfcpy と PaSoRi RC-S380/P をセットアップ
  - https://qiita.com/nanbuwks/items/348aa1849a12079d75cd
- PN532 NFC RFID module について調べる
  - https://qiita.com/nanbuwks/items/ac02bb307c9850b5e5c4
- RC-RC-S380 で FeliCa を読む
  - https://qiita.com/nanbuwks/items/48ac619d21839e261a93
- Raspberry Pi で libnfc + PN532 NFC RFID module
  - https://qiita.com/nanbuwks/items/0c73add503b354774035
- NFC モジュールの動作安定性を改善する
  - https://qiita.com/nanbuwks/items/a9217ba2e8f206b899b1
- PN532 NFC RFID module を Arduino UNO で読む
  - https://qiita.com/nanbuwks/items/42f639e7eec928181298
- elechouse/PN532 ライブラリで Felica 学生カードを読む追試
  - https://qiita.com/nanbuwks/items/6396f09bf58840340bab
- PN532 NFC RFID module + Arduino で FeliCa と Mifare を判別する
  - https://qiita.com/nanbuwks/items/a264201dcc0b4e12e72d
- Raspberry Pi で nfcpy + PN532 NFC RFID module
  - https://qiita.com/nanbuwks/items/e14d8fdd6f863d5b68fe
- RaspberryPiでPN532 NFC RFID module で Felica 学生カードを読む
  - https://qiita.com/nanbuwks/items/3858283873e968316a2d
- RaspberryPi + PN532 NFC RFID module + Waveshare Python プログラムを使って Mifare を読む
  - https://qiita.com/nanbuwks/items/ccc5c89f8f22d7249d16
- RaspberyPi + libnfc + PN532 NFC RFID module + mfd ファイルを使って Mifare カードを読む
  - https://qiita.com/nanbuwks/items/9e68f35d40bce4ebb8a4
- libnfc で pn53x-tamashell を使ってみる
  - https://qiita.com/nanbuwks/items/d2c47f6b24ec07f48dee
- PN532 NFC RFID module + elechouse を Arduino UNO で試す
  - https://qiita.com/nanbuwks/items/bd455e3c53c4d42d5c0a
- ハードウェアハッキングして NFC コントローラの命令を解析する
  - https://qiita.com/nanbuwks/items/8baa0408e08812258c95
- PN532 NFC RFID module + elechouse を ESP32 Arduino で試す
  - https://qiita.com/nanbuwks/items/b8b91c3062cabb62c283
XDでPDF資料を作るときの手順＆Tipsまとめ

※2018年11月16日の記事です
先日作った際に、気になったポイントをまとめました。

# アートボード

## サイズは596×842
A4サイズの場合、596px×842pxで作成します。
これは72dpiで作成することを想定しているためです。
Web資料の場合、このくらいのdpiで良いそう。

参考：[サイズ計算式 - Amanaimages inc.](https://help.amanaimages.com/price/photo/hayami_price/)

<b>※追記：XDのサイズ入力欄、なんと四則演算が使える。</b>

## セクションで並べる
同じレベルのページが、縦に並ぶように配置します。
あとで概観を見渡すときに、ページのレイアウトが統一されているかを
確認する際に便利だからです。

![スクリーンショット 2018-11-16 10.06.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/eb328378-8140-61fc-d26f-d3ad7bc7f622.png)

# 画像
## リサイズしてから挿入する
XDからPDFを書き出すと、見かけ上は小さくなっていても、
ファイルサイズはそのままです。
そのため画像を挿入するときは、適切なサイズにリサイズしてから
挿入しましょう。

# アセット
## よく使う色、フォント、シンボルを保存しよう
左下のフォルダマークからアセット一覧を開くことができます。

するとアセット一覧が表示されます。
最初は何も表示されませんが、保存したいフォント、カラーのコンテンツを
右クリックして、「アセットにカラーを追加」「アセットに文字スタイルを追加」「シンボルを作成」を選択すると、アセットに追加されます。
![スクリーンショット 2018-11-16 10.49.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/69cf177f-9bc6-e74c-c05e-1d48c0640d1b.png)

ちなみにXDにおけるシンボルとは、テンプレートみたいな意味です。

このアセット機能の凄いところは、アセット画面から特定のものを選択して変更すると、
全てのアセットに変更が施される点です。
色を微調整したいときや、大幅に印象を変えたいときに、全ての文字を変更することが可能なのです。

シンボルはアートボード上から一つを変更すると、
全てのシンボルの形が変わります。

## シンボルは別のXDファイルと共有できる
同じコンテンツを使いまわしたいときは、シンボルをコピペしてみましょう。
元ファイルの方で変更があった場合、コピー先のシンボルに更新通知がきて、
最新の状態に更新することが可能です。
参考：[リンクされたシンボルの使用 - XD CCマニュアル](https://helpx.adobe.com/jp/xd/help/symbols.html#main-pars_header_2120766395)

# プレビューの共有
## プロトタイプ
デザインが完成したら、
デザインタブからプロトタイプタブに切り替えましょう。
画面の遷移を設定することが可能です。

使い方は簡単で、ページ間を関連づけるために、
青い矢印を、次のページにドラッグ&ドロップします。
![スクリーンショット 2018-11-16 10.42.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/3c6031e6-15af-3285-965c-8fb4b90be1c0.png)

すると下図のように、二つがつながったことがわかります。
![スクリーンショット 2018-11-16 10.40.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/dfd44f95-74fb-a0f4-8e79-45b043074c2e.png)

## プロトタイプの共有
他の人に共有したいときは、右上の共有マークをクリック。
そこから「プロトタイプの公開＞更新」と進みます。

100%になったら、リンクマークでリンクを取得します。
これで、リンクを知っている人と共有することができます。


# 書き出し
## バッチで書き出す
□に↗︎矢印がついているページがバッチ書き出しされます。
このマークをつけるには、左下のアートボード一覧から任意のアートボードを選択し、
右クリックでメニューを開きます。
![スクリーンショット 2018-11-16 10.20.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63911/4fcc107a-c98f-5684-989b-e20186ea479d.png)

以上です。
他にも、
こんな使い方があるよ、というのがあれば、更新してください！
Kernel Method for Pattern Analysis, Cambridge, John Shawe-Taylor and Nello Cristianini



```r

#p.187

l=5;N=10;m=3

X=matrix(sample(1:9,l*N,replace=T),nrow=l)/10
Y=matrix(sample(1:9,l*m,replace=T),nrow=l)/10
mux=apply(X,2,mean)
muy=apply(Y,2,mean)

K=3
X=t(t(X)-mux)
Y=t(t(Y)-muy)
x=X
Yhat=array(0,dim=dim(Y))

P=array(0,dim=c(N,K))
C=array(0,dim=c(m,K))
U=array(0,dim=c(N,K))

for(k in 1:K){
u=(t(x)%*%Y)
u=u[,1]/sqrt(sum(u[,1]^2))
upre=u+1
while(sum((upre-u)^2)>10^(-8))({
upre=u
u=t(x)%*%Y%*%t(Y)%*%x%*%u  
u=u/sqrt(sum(u^2))
})
p=t(x)%*%x%*%u/as.numeric(t(u)%*%t(x)%*%x%*%u)
c=t(Y)%*%x%*%u/as.numeric(t(u)%*%t(x)%*%x%*%u)
P[,k]=p
C[,k]=c
U[,k]=u
Yhat=Yhat+x%*%u%*%t(c)
x=x-x%*%u%*%t(p)
print(sum((Y-Yhat)^2))
}

W=U%*%solve(t(P)%*%U)%*%t(C)
X%*%W
```