[Solr]Admin UIでフィールドタイプの編集をできるようになった

Solr 9.1.0 から Admin UI でフィールドタイプの定義を編集ができるようになりました。
それ以前はフィールド定義の追加はできるもののフィールドタイプには手を付けることができない状態でした。

上のスナップショットは8.11.0のAdmin UIです。

9.1.0のAdmin UI。
“Manipulate Field Type” というボタンが増えています。このボタンを押すとフィールドタイプを追加するためのコマンドのテンプレートがテキストエリアとして表示されます。

プルダウンを”Delete FieldType Template”に変更したところ。
指定のフィールドタイプを削除するためのコマンドを編集できます。

プルダウンを”Replace FieldType Template”に変更したところ。
指定のフィールドタイプの定義を書き換えることができます。

従来から存在していたフィールドに対する操作が追加のみであったことを考えると、フィールドタイプに対する操作が一気に充実したことになります。

Solr 9.1.0 ではこれ以外にもAdmin UIへの機能追加がいくつかあったので、順次ご紹介していければと思います。

2022年に習得した新しい習慣

2022年も残す所あと僅か。
今年も色々あったと思うのですが、あっと言う間に過ぎ去ろうとしています。

厄年である私が新しい習慣を身につけることは中々ないのですが、珍しく新習慣を会得しました。

それは…。

 

トイレ掃除です。

 

2022年5月からですが、ほぼ毎朝トイレ掃除をしています。
ズボラな私が半年以上続けられるとはちょっとした奇跡かなと思ったりしています。

「トイレの神様」って歌が流行った時期もありましたが、改めて調べてみると存在するようで、「烏枢沙摩明王(うすさまみょうおう)様」というらしいです。

 

それはそれはキレイな女神様がいるんやで〜♪

 

と、聞いたことがあったので、どんな神様かなと期待して調べてみると「烏枢沙摩明王様」というらしく、めちゃくちゃ怖い顔をして、全身火炎に包まれた火の神様のようです。

最初のイメージと違うなと思ったのですが、昔のトイレは伝染病などの感染源になりやすい場所だったので、魔の入口のような考えがあったとのこと。

そのため怖い顔して、炎で浄化して、悪いものから守ってくれている存在として伝えられているようです。

 

私がトイレ掃除を初めたきっかけは、厄年だからだったからかもしれません。
今ではやらないと、落ち着かなくなっています。

 

まだまだトイレ掃除、初級者の私ですが、これからも続けてみようと思います。

NFC タグの有る生活

状況に合わせてスマートフォンで一連の操作をまとめて実行したいことがあります。

たとえば就寝前にマナーモードに切り替え、目覚ましをセットしてアラームの音量を設定する、といったことです。逆に起きた後はマナーモードを解除して音量を元に戻す必要があります。
こういった、定期的に必要になる一連の操作を手作業でやるのは、特に毎日となると意外に煩わしいものです。
これを NFC タグを使って自動化することができます。

NFC タグは Amazon で10枚500円くらいのものを買って使っています。
アプリは Android の Trigger を長く使っているのですが、どうも今は公開されていないようです。同じようなことができる Tasker というアプリもあります。

NFC タグは裏がシールになっていて必要な場所に貼り付けて使えますが、なかなか強力なシールなのであえて普通の両面テープを使っています。これを家の中のあちこちに置いています。

いくつか使い途を挙げてみます。

寝室
就寝時: 目覚ましセット、マナーモード切り替え、音量調整
起床時: マナーモード解除、音量調整
Trigger は1個の NFC タグでトグル動作させられるので、就寝<>起床の切り替えを1個でまかなえます。
スマホスタンドに貼ってあるので、立て掛けるだけで就寝モードになります。

玄関
外出時: マナーモード切り替え、Wi-Fiオフ
帰宅時: マナーモード解除、Wi-Fiオン
玄関の電源スイッチの横に NFC タグを貼り付けて、タッチしています。

自宅デスク
音楽自動再生。こちらもタグを貼ったスタンドに立て掛けると音楽をランダム再生するようにしています。

NFC タグをトリガにした自動操作は自分にとって地味ながら重要な機能なので、スマホ選びの際は NFC 搭載は必須の要件になっています。

絵画教室に通ってみた

最近、社会人向けアートスクールの無料体験を受けに行ってみて、その体験がとても楽しかったので入校しようと思いました。かなり個人的な散文になりますが、入校までの経緯や体験してみた思ったことなどを書きました。

受講までの経緯など

大きい括りでデザインという仕事を始めて、もう随分と年月が経ちました。この仕事を選んだ契機は絵を描くことが好きだったからみたいなだったように思います。

とはいえ、グラフィックであれWebであれUIであれデザインというのは課題を解決するための手法なので、プロジェクトの背景を理解したり、誰に対してどんなメッセージを伝えたいのか?を考えたり、プロダクトの利用シーンをパターン化して画面を設計するというような論理的な考え方が重要だったりします。僕個人に関してはイマジネーションを膨らますというよりロジックに当てはめていくような感触。

きっかけは絵を描くことが好きから始まったことなのに、何やら正反対のような行動を刷り込み続けてきた。一応それで飯が食えているので、そのことに対して特に何とも思ってないんですけど「そういやデザイン初めてから絵なんか全く描いてないな」ってふと思うことが今までに何度かありました。

デザインする=頭の使い方として論理的な振る舞いがある程度できるようになってきた、習慣化が出来てきたのはいいんですが、そういう考え方ばかりで固まってしまうような気がして…というところで、趣味の一環でいいので絵を描いてみよう、何の制約もないところで絵を描くとどうなるんだろうと思い立ったという感じです。

美術コースで油絵を選択してみた

絵を描くならイラストだと仕事に使えることもあるかもしれないですし、デジタルツールでの描画ならクリップスタジオとか普段使わないソフトに踏み込むことができる機会になると思うのですが、そこは敢えて全く関係ない美術コースを選択しました。油絵とか日本画って描いた経験がないのでその興味もありつつ、実際に絵の具を使って描いてみたい、絵を描くのにリアルに手を動かしてみたいと思ったからです。Webとも正反対な、どアナログな環境で制約のない頭の使い方に興味もあります。

実際に描いてみて思ったことなど

無料体験は3時間でデッサンか絵の具を使った描画体験が選べました。迷うことなく油絵を選択。時間が短いので内容としては、事前に用意されていたいくつかの写真を選び、そのモチーフごとに薄い鉛筆の下書きがあるのでそこに色を塗っていく塗り絵みたいなものでした。

油絵自体全く知らなかったので、まずは塗り方を教えてもらうことに。

油絵は文字通り絵の具をオイルで溶いて塗っていくのですが、そのオイルには大きく分けて揮発性油と乾性油の2種類があります。揮発性油はテレピンオイルが有名で溶解力が強くサラサラで絵の具の伸びも良く乾燥も早いので下絵に使われます。乾性油は絵の具の固着材として使われ実際に色を落としていく時はこちらを使います。今回使ったのはリンシードオイル。

モチーフで選んだ紫色のバラの写真の中から中間ぐらいの明度で軸になりそうな色を作っていきます。油絵はとにかく色を混ぜ倒します。例えば、葉は緑なのでビリジアンが使えるのかなと思いきや青と黄を混ぜて緑を作ります。そうしないと色が嘘臭くなるそうです。青と赤と群青とか焦茶などを混ぜながら狙った色を作って下塗りをしていく。下塗りではその絵の陰影をとって大まかなカタチを取ります。そして明るいところにリンシードオイルで色を落としていく。下塗りの時は絵の具もサラサラして伸びもいいので水彩みたいな感じでした。

下塗りまではあまり描いてる実感がなかったんですが、リンシードで落とし出してから世界がガラっと変わります。少しずつ色を落とし込んでいくことでどんどん表情が出てくる。これが楽しい。色の落とし方も様々でパレットで色を混ぜることもあれば、絵の中で色を混ぜたり、筆の種類や筆の運び方で表情が全然変わる。点で描いたり、薄めで大きく筆を使ったり、背景に色をつけてモチーフと背景の色を隣接させることでグッと存在感が出たり。色と色が半立体みたいな感じでどんどん重なるし、重ねれば重ねる程に表情が出てくる。明るい部分の色を作ることで下塗りとの陰影や塗り感の差が明確になってより輪郭ができていく。無心で色を追いながらこねくり回してました。

理屈を抜きにして色を追うことだけに集中する、そしてカタチになる。この感覚が新鮮でした。3時間終わってみて休憩も無しに没頭する。疲れているんですがなんだか頭がクリアな感じ。もちろん趣味なので納期も何もないし、初めてのことなので楽しいのは間違いないのですが、インスピレーションだけで色を追う、今の自分にないと感じてたズバリのことを体験できたのが幸いでした。

終わりに

体験したその日の内に入校を申し込みました。完全に自分の主観だけで自分で決めてそれがカタチになる。普通に生活しているとなかなかそういうことってないような気がします。それが何かの役に立つかどうかは分かりませんが、何か今後の自分の彩りだったり、地に足を付けるみたいなところに繋がるような気がします。まだスタートを切ったばかりですが、また何か思うことがあれば更新できればと思います。

Solr で SSL を有効にする

Solr の管理画面や API へのリクエストで HTTPS を使えるようにします。

自己署名証明書作成

プライベートなネットワーク内での利用を想定して自己署名証明書を作成します。

$ cd server/etc
$ keytool -genkeypair -alias solr-ssl -keyalg RSA -keysize 2048 -keypass secret -storepass secret -validity 9999 -keystore solr-ssl.keystore.p12 -storetype PKCS12 -ext SAN=DNS:localhost,IP:192.168.1.3,IP:127.0.0.1 -dname "CN=localhost, OU=Organizational Unit, O=Organization, L=Location, ST=State, C=Country"
$ openssl pkcs12 -in solr-ssl.keystore.p12 -out solr-ssl.pem

keytool は JDK に含まれるツールです。
IPの部分はSolrサーバのIPアドレスを指定します。

作成した証明書を参照するように solr.in.sh を設定します。

SOLR_SSL_ENABLED=true
SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.p12
SOLR_SSL_KEY_STORE_PASSWORD=secret
SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.p12
SOLR_SSL_TRUST_STORE_PASSWORD=secret
SOLR_SSL_NEED_CLIENT_AUTH=false
SOLR_SSL_WANT_CLIENT_AUTH=false
SOLR_SSL_CHECK_PEER_NAME=true

HTTPS を使うように ZooKeeper を設定

SolrCloud での運用の場合は ZooKeeper で保持する設定を変更して Solr が HTTPS 通信を使うようにします。

$ server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd clusterprop -name urlScheme -val https

ZooKeeper 設定前に作成したコレクションの場合は以下を実行します。

$ curl 'http://localhost:8983/solr/admin/collections?action=CLUSTERPROP&name=urlScheme&val=https'

Solr起動

$ bin/solr -cloud -s example/cloud/node1 -z localhost:2181 -p 8984

動作確認

コレクションを作成して Collections API で状態を確認します。
bin/solr 等のツールは solr.in.sh の環境変数を使って HTTPS 通信してくれます。
curl での API コールの場合は pem ファイルを指定します。

$ bin/solr create -c mycollection -shards 2
$ curl -E solr-ssl.pem:secret --cacert solr-ssl.pem "https://localhost:8984/solr/admin/collections?action=CLUSTERSTATUS&indent=on"
{
  "responseHeader":{
    "status":0,
    "QTime":1},
  "cluster":{
    "collections":{
      "mycollection":{
        "pullReplicas":"0",
        "configName":"mycollection",
        "replicationFactor":"1",
        "shards":{
          "shard1":{
            "range":"80000000-ffffffff",
            "state":"active",
            "replicas":{"core_node4":{
                "core":"mycollection_shard1_replica_n2",
                "leader":"true",
                "core_node_name":"core_node4",
                "node_name":"localhost:8984_solr",
                "base_url":"https://localhost:8984/solr",
                "state":"active",
                "collection":"mycollection",
                "shard":"shard1",
                "type":"NRT",
                "force_set_state":"false"}},
            "health":"GREEN"},
          "shard2":{
            "range":"0-7fffffff",
            "state":"active",
            "replicas":{"core_node3":{
                "core":"mycollection_shard2_replica_n1",
                "leader":"true",
                "core_node_name":"core_node3",
                "node_name":"localhost:8984_solr",
                "base_url":"https://localhost:8984/solr",
                "state":"active",
                "collection":"mycollection",
                "shard":"shard2",
                "type":"NRT",
                "force_set_state":"false"}},
            "health":"GREEN"}},
        "router":{"name":"compositeId"},
        "nrtReplicas":"1",
        "tlogReplicas":"0",
        "health":"GREEN",
        "znodeVersion":4}},
    "properties":{"urlScheme":"https"},
    "live_nodes":["localhost:8984_solr"]}}

CLUSTERSTATUS の応答に含まれる内部的な URL も https になっていることが分かります。