スポンサーリンク

【pleasanter】タイトルとはなんぞや

プリザンター
スポンサーリンク
※当サイトは広告を含みます

会社にプリザンターが導入され、なかなか使い勝手が良いです。なぜか全体的にITリテラシー低めの方が多い当社でも案外受け入れられている!顧客対応第一級でもエクセルの前では固まる方々にも「プリちゃん」と呼ばれてかわいがられている。

それはさておき、「タイトル」ってなんか特別っぽいけど、いったい何者なんだろう、という疑問があり、ネットで調べてみても私がなるほどと納得できる記事には当たらず、いじってみたり調べてみたりしてきっとこうゆうことだろう、という私なりの結論を記します。
あくまでたぶんこうだろ、的なものなので、その点お含みおきの上、本記事はご参照ください。
私が自分の中に落とすためのものです(納得しないと腹に落ちないため)

1.タイトルってなんだ

(1)作成や更新時にタイトルがないとなんかいまいち・・・

まず、テーブルを新規作成するとき、期限付きテーブルでも記録テーブルでも基本のひな型で「タイトル」「内容」は当然使うよね!みたいな感じで前面に出てくる。これをみると「なんかつかわないといけないのかな~」という感じがする。

基本のひな型にはタイトルは設定されている。もちろん無効化すればタイトルはなくてもいけます。

タイトルなしのテーブルにした場合、「なんかいやだな~」と思うのは文書を作成したとき「”タイトルなし”を作成しました」というメッセージが出ること。・・・なぜだろう。罪悪感を感じる。

逆にタイトルを使っている場合はタイトルに「タイトルです」と入力していたら「”タイトルです”を作成しました」とでる。更新したときも同様に「”タイトルです”を更新しました」と出る。

たったこれだけの理由でも、タイトルって使った方がいいような気がする。。。

(2)カレンダーやカンバン表示で表示されるのはタイトルだけ

普通の一覧画面では「一覧」で表示するよと設定した項目が表示されますが、カレンダー表示や看板表示では表示されるのは「タイトル」だけです。

一方タイトルを設定していない項目だと。カレンダー、カンバン表示などではわけがわからなくなります。

カレンダーや、カンバンを使うことが想定されている場合、タイトルは設定必須ですね!
ぱっとみて、あ、このデータだと識別できるタイトルを設定すると、なおよいですね。

(3)検索結果にはタイトルと内容が表示される

プリザンター内部の検索をしたとき、検索結果にはタイトル(Title)と内容(Body)が表示されます。そのため、タイトルと内容がないと検索結果に表示されても、いったい何だろう?といちいち中身を見ないと「あーこのデータね、関係ないや」等の判断が付きません。
このことを考えるとやはりタイトルと内容、少なくともタイトルはあった方がいいんだなあと思います。

(4)DBでいうところの主キーみたいな役割をもつこともある

タイトルはデータベースでいうことろの主キーの役割を持つことができる。主キーとなり、ほかのテーブルの外部キーになることができる。と、私は理解している。
タイトルではなく分類項目等で「分類Aを重複なしにして商品番号を割り当てて主キーにすることにしよう」と自分の中で決めたとしても、ほかのテーブルから「あっちのテーブルの商品コードを外部キーと使おう」と思っても参照することができない。(できるのかもしれないけど、少なくともタイトルを使うより困難を伴う)

で、
そもそもデータベースでいうところの主キー、外部キーとは。。。
こちらで勉強させていただきました。
https://medium-company.com/%E4%B8%BB%E3%82%AD%E3%83%BC/
https://www.sejuku.net/blog/54072
https://wa3.i-3-i.info/word1991.html
https://wa3.i-3-i.info/word1992.html

主キー:Primary Key
テーブルの中でデータを一意に識別するための項目。
例えば社員名簿の中の社員ID、商品一覧の中の商品番号、等。
主キーは複数項目を合わせて主キーとすることもできる。学校でいうと学年・クラス・出席番号の3つの項目が合わさった「複合キー」が主キーとなる。
「データを一意に識別するための項目」だから、もちろん重複NG!

対して
外部キー:Foreign key
関連したテーブル同士を結ぶための項目。
例えば、「販売記録」テーブルと「商品一覧」テーブルは「商品番号」項目で関連づいている。
「販売記録」テーブルは「商品一覧」テーブルの「商品番号」を参照している。
「販売記録」テーブルは「商品一覧」テーブルの「商品番号」にあるものしか登録できない。
「商品一覧」テーブルの「商品番号」を削除した場合、「販売記録」テーブルがおかしくなるので、通常は削除できないような制約が効いている。

前回やっているのですが、
【pleasanter】リンクとルックアップ

上の図でいう①のテーブル同士の関連付けがプリザンターでいうところの「リンク」。
②の「子テーブルが親テーブルの内容を参照して持ってくる」が、プリザンターでいうところの「ルックアップ」。
になるのかな。と。

だいたいこんな理解でよいのだろうけど、ちょっと違うんですよね。プリザンターのタイトルとDBの主キーって。

プリザンターでいうところの本当の主キーになるのはID。
レコードを作成すると自動で割り振られるアレです。
https://pleasanter.org/manual/table-management-id

いわゆる普通のデータベースだと「このテーブルの中の主キー」という考え方で「顧客一覧」テーブルの中の「顧客ID=A0123」があったとして、関連付けられていないテーブル「商品一覧」で「商品ID=A0123」と、同ID番号がが存在することもある。

それに対してプリザンターのIDは、(同一サーバー内の)プリザンターの中で一つ。「このテーブルの中で」というのではない。
レコードだけではなく、テーブル(サイト)自体にも、フォルダにもIDが振られており、これらもレコーと重複することなく、(同一サーバー内の)プリザンターの中で一つ。
「IDが1234」といったら(同一サーバー内の)プリザンターの中ではただ一つなのである。

それじゃあどんどんテーブルやレコードを作っていったらIDが足りなくなっちゃうんじゃない???と思ったのところ、ツイッターで見かけたのですが上限値が922京3372兆368億5477万5807だそうです。うーーーん。桁数すごいな(;’∀’) bigint型?大きな整数型。1京は1億の1億倍?・・・考えるのよそう。。。
https://mobile.twitter.com/kazaiso/status/1601033265057783808

プリザンター内での「タイトル」が主キーと違うところ、
・重複も許可される
・かならずしも入力必須でなくてもいい

テーブルの管理画面の「エディタ」で「タイトル」の詳細設定を見てみると、ほかの項目と同じように「重複禁止」「入力必須」のチェックボックスがあり、これらにチェックをつけることにより「重複禁止」「入力必須」にすることができて、より「主キー」に近い役割を持たせることができる。
しかし、チェックを外すこともできるのでパリッとした「主キー」的な項目ではなく、ふにゃふにゃしたなんでもいいよ項目とすることもできる。

親テーブルとして使うことを想定しているテーブルでは、タイトルは「重複禁止」「入力必須」にするべきです。

もし、重複と入力しないを許可したらどうなるか、やってみました。

前回使った「顧客情報」と「販売記録」テーブルでやってみました。「顧客情報」テーブルが親、タイトルは「顧客番号」と「顧客名」を連結したもの。「販売記録」テーブルが子、「顧客情報」項目でリンクしている。さらにルックアップ機能も付けている。(詳しくは全体の記事を参照【pleasanter】リンクとルックアップしてください)
親テーブルのタイトルは「重複禁止」「入力必須」のチェックを外した状態にしています。

親テーブル「顧客情報」に重複したレコード、タイトルを入力しなかったレコードを追加しました。

子テーブルで新規作成して「顧客情報」項目の選択肢を表示してみると・・・。
なんとそのまま、重複した項目はその数だけ表示され、タイトル無しは「タイトル無し」で表示され、それぞれ選択可能になっている!

こんなことも許してくれるとは、なんと融通の利くシステムなんだろうか。
しかし、データベースとしては惨憺たるもの。ひどい状態になっています。

繰り返しますが、親テーブルとして使うことを想定しているテーブルでは、タイトルは「重複禁止」「入力必須」にしましょう!大惨事になります!

2.タイトルの使い方

主に、主キーとして利用することを想定したタイトルの使い方を考えてみたいと思います。

(1)顧客番号などのIDを主キーとしてタイトルに利用する

普通のデータベースだと、顧客番号とか社員IDとか商品番号とかが主キーなんですよね。

プリザンターでもそうするとして、顧客番号をタイトルに設定した例をやってみます。
ま、番号を入力するだけなんだけど。。。

テーブルの管理>エディタタブでタイトル項目の詳細設定を指定します。

主キー的なものにしたいので「重複禁止」「入力必須」にチェックを入れます。
「重複時のメッセージ」を設定しておいてもいいし、最大文字数なんかを設定しておいてもいいですね。
表示名を「顧客番号」に変更し、スタイルはそんなに幅広でなくていいので「ノーマル」に、一番左に来てほしいので「回り込みしない」にもチェックを入れました。

新規作成でレコードの入力画面を表示したところ。
うーん。まあ、なんということもないですね。

(2)入力補助機能①自動採番

ところで顧客番号を連番にしたいなあと思ったとします。「自動採番」という機能があるようです!

マニュアルを見ながらやってみます。
https://pleasanter.org/manual/auto-numbering

普通に1から始まる連番にしようと思います。

テーブルの管理>エディタタブ タイトルの詳細設定画面を表示します。
自動採番なので一応「読取専用」にチェックを入れておきました。
「自動採番」タブをクリックして画面を切り替えます。

自動採番の設定画面

ひとつずつ見ていきましょう。
書式:書式を設定します。指定の仕方の詳細はマニュアルを参照ください。
リセット種別:自動採番のカウントをゼロに戻す種別を指定する、とありますがよくわかりません。。。
規定値:開始値を設定します。1から始めたければ「1」、ゼロから始めたければ「0」、100から始めたければ「100」。
ステップ:自動採番の間隔を指定します。1,2,3のように1ずつ増やしたい場合は「1」、1,7,14のように7ずつ増やしたい場合は「7」

今回は普通に1,2,3としたいので以下のように設定しました。
書式:[n]
規定値:1
ステップ:1

新規作成してみます。はたして「1」が自動採番されるでしょうか???

「新規作成」して適当に氏名、電話番号を入力・・・した段階では「顧客番号」欄には変化なし。
「作成」ボタンをクリックしたら「顧客番号」に「1」が表示されました!

ちなみに、0001のように頭ゼロ埋めの桁数指定にしたいときは書式を[NNNN]とします。

A00001のようにしたい場合は、書式をA[NNNN]とします。

自動採番はタイトル以外にも分類項目、内容、説明項目、でも使用できます。
そのほかいろいろな使い方や設定方法がありそうですが、また別の機会に深堀してみたいと思います。

(2)入力補助機能②入力検証

自動採番ではないけどA00001とかB00002と、アルファベットプラス数字5桁に統一したい!という場合「入力検証」という機能が使えるのでは?と思ったので、それもやってみたいと思います。

入力検証は正規表現を使って入力する形式を制限します。正規表現とは何ぞや。。。については、長くなるので(自分もふんわりしか理解してなくて説明できない)別の記事を参考にしてください。
https://userweb.mnet.ne.jp/nakama/#no-one

入力検証のマニュアルを見ながらやってみます。
https://pleasanter.org/manual/table-management-validation
なお、入力検証もタイトルでなくても他の項目(分類、内容、説明、コメント)でも利用できるそうです。

A00001やS00123のように大文字のアルファベット一文字で始まり、そのあとに数字が5桁という形式を指定したいと思います。
上記の形式を指定する正規表現は
^[A-Z]\d{5}$
です。
^ ははじまりはこれ!と指定するメタ文字
[A-Z] はアルファベットA~Zなら何でも、が一文字
\d は数字を表します
それに続く {5} は前に指定した文字が5つ連続。つまり数字が5個連続。
$は前に指定した文字で終わる

テーブルの管理>エディタタブ タイトルの詳細設定画面で「入力検証」タブに切り替えます。
(今回は自動採番ではないので、読み取り専用のチェックは入れません)

クライアント正規表現、またはサーバ正規表現の欄に指定したい形式の正規表現を入力します。
クライアント正規表現はその項目からほかの項目にフォーカスが移ったときに検証が行われます。つまりタイトルを入力してほかの項目にカーソルを移した時に検証が行われ違う場合は「違う!」とエラーが出ます。
サーバ正規表現は「作成」または「更新」ボタンをクリックしたときに検証が行われます。「作成」ボタンをクリックして初めて違う場合は「違う」!とでる。
今回はクライアント正規表現に入力しました。

エラーメッセージは検証結果NGの時に表示されるメッセージです。入力は省略することも可能です。省略したところ、なんか英語でメッセージが出ました。設定したほうが入力者にはわかりやすいと思います。

OK!の場合とNG!の場合は画面イメージは下図のようになります。

(2)入力補助機能③プレースホルダ 入力例をうすーく出しておく

入力検証で形式が統一されるのはいいんだけど、こうゆう風に入力してねってわかるようになってるといいなと思いますよね。
プレースホルダで入力例を出しておくと、入力者にとって親切だと思います。
プレースホルダって、Web画面でメールアドレスを入力する欄にうすーくメールアドレスっぽい例が出てたりするあれです。

プレースホルダを表示するにはスクリプトを利用します。スクリプトというと、ちょっと敷居が高いですが、コピペでできそうなのでやってみましょう。
こちらの記事を参考にしてやってみました。ありがとうございます。
https://www.ceccs.co.jp/archives/blog/%E3%80%90%E3%83%97%E3%83%AA%E3%82%B6%E3%83%B3%E3%82%BF%E3%83%BC%E3%80%91-%E7%AC%AC38%E5%9B%9E%EF%BC%89%E3%83%97%E3%83%AC%E3%83%BC%E3%82%B9%E3%83%9B%E3%83%AB%E3%83%80%E3%83%BC%EF%BC%88%E3%83%86

①テーブルの管理>スクリプトタブ 「新規作成」をクリックします。

②「タイトル」に適当なタイトルを入力します。
「スクリプト」にコードを入力します。参考としたサイトからコピペしたコードを貼り付けし、#Results-Titleの部分と例の記載を修正しています(内容は後述します)
「出力先」は「全て」のチェックをはずすと色々出てくるので「新規作成」と「編集」をクリックします。「新規作成」画面と「編集」の画面でコードが呼び出されますよ、ということですね。逆にチェックのついていない「一覧」画面では呼び出されない、ということです。

「追加」ボタンをクリックします。「更新」ボタンクリックも忘れずに行います。

これで設定は終了です。「新規作成」をクリックして入力画面を見てみましょう。
ステキ!薄くコードで指定した入力例が表示されています!

コードはこちら。

$p.events.on_editor_load = function() {
  $('#Results_Title').attr("placeholder","例:A01234");
} 

$p.events.on_editor_load の部分はプリザンターで用意しているメソッド(というのかな?)です。エディタ画面がロードされたときに実行したい処理をfunction()に続く{}の中に書きます。まあ、決まり文句だと思えばいいかなと。
https://pleasanter.org/manual/script-events-on-editor-load

$p.events.on_editor_load = function() {
   //ここにエディタ画面がロードされたときに実行したい処理を書く
} 

$(‘#Results_Title’) はタイトル項目をつかむ、ということをしています。エディタ画面でのタイトル項目に対して何かをしたいので、まず、その要素をがっとつかみます。キミをロックオン、です。
$()はエレメント(要素)をゲットすることができる記述です。
#Results_Title はidがResults_Titleの要素をゲットするよということです。#はidを意味します。
Googleのブラウザの場合、タイトルのところで右クリック→検証、とするとサイトのhtmlを見ることができます。<input id= “Results_Title” ・・・ となっていることが分かりますね。

.attr はつかんだ要素の属性(attribute)をどうする、というものです。
$(‘#Results_Title’)で主語「タイトル」を指定し、attrで述語「どうするよ」を指定します。

(“placeholder”,”例:A01234″) は属性をどうするよ、の具体的な内容です。「placeholder」属性に「例:A01234」を設定するよ、ということを指定しています。

こんな説明では理解出ないと思いますが、私もよく理解していないので。。。

プレースホルダを表示するスクリプトを指定しているときと、していないときのhtmlをGooGle開発者ツールで見てみましょう(タイトルのところで右クリック→検証)。htmlとはWebページの正体(中身)です。

idがResults-Title のひと固まりがタイトル項目の入力ボックスの部分です。
その中のplaceholderがスクリプトを設定していないときは placeholder=”タイトル” となってたところが、スクリプトを設定しているときは placeholder=”例:A01234″ に代わっていますね!

ほかにもポップアップで「こうゆうふうに入力してね」とヒントを出しておくこともできます。今回はやりませんが。

(3)タイトルにほかの項目を使用する

脱線してしまいましたがタイトルの話に戻ります。

タイトルはほかの項目を利用してタイトルにすることができます。

たとえば、タイトルを部署名や、ユーザー名、その他独自のプルダウンから選択する項目にしたいなあと思った場合、「タイトル」自体には選択肢を設定する欄がありません。なので、たぶんそのままだと選択肢を設定することができないのだと思います。

たとえば、タイトルにユーザーを設定したいとします。登録されたユーザーをプルダウンリストにするには、分類項目の場合選択肢欄に [[Users]] (または[[Users*]])と入力します。
しかし、タイトルの詳細設定を見てみると、選択肢を設定する欄がありません。

ここに入れてもダメかな・・・と規定値欄に入れてみたところ、単に[[Users]]と表示されただけという笑える結果になりました。

そんなときは!分類項目をタイトルに設定すれば、タイトルも選択肢を持つことができます。

やり方

①テーブルの管理>エディタタブ

②分類A(Aでもなんでもいい)を設定。詳細設定をクリックし選択肢一覧に選択肢を入力します。今回は[[Users*]]としました。「変更」ボタンをクリックし、変更を保存し、画面を閉じる。

③次に、「タイトル」を選択して詳細設定ボタンクリックし、タイトルの詳細設定画面を表示する。スタイルは「ノーマル」に変更する。重複禁止や入力必須は必要に応じ設定する。表示名も必要に応じ変更する。

④詳細設定画面下部で現在の設定から「タイトル」を無効化し、選択肢一覧から先ほどUsersを設定した分類項目(ここでは分類A)を有効化する。

⑤「変更」ボタンをクリックし、タイトルの変更を保存します。「更新」ボタンをクリックし、全体の変更を保存します。

さて、これで「新規作成」をクリックして入力画面を見てみましょう。

下図のようになりました。分類Aが表示され、プルダウンからユーザーが選択できる状態になっています。あれ?タイトルはないですね。

データを一つ作成して、一覧画面を見てみましょう。
一覧画面は下図の設定にしました。「タイトル」も「分類A」も表示するようにしています。

このようになりました。タイトルも分類Aも同じ内容が表示されています。タイトルの方がタイトルっぽく青くなってます。重複して無駄なので分類Aは無効化したほうがよさそうですね。

べつにタイトルにしなくて分類Aのままでもよくね?と思うかもしれませんが、ほかのテーブルにリンクさせる場合、分類Aではリンク先の子テーブルで親テーブルのキーとして使えず、外部キーとして参照できるのは「タイトル」だけなので、わざわざタイトルにする必要があるというわけです。

(4)タイトルに複数項目を設定する

前項ではタイトルに分類Aを一つだけ設定しました。タイトルに「分類A」「日付A」等、複数項目を設定することもできます。(むしろこの複数項目設定するパターンが多い。私は)

たとえば、切手と収入印紙の在庫管理のテーブルで、分類Aに切手・印紙の種別、分類B(もしくは数値項目等)に50円、100円、1000円等の額面を登録する場合、種別・額面だけだと重複するけど、種別と額面をドッキングしたものだと重複しない。なので、これをタイトルとするとよい。

このようになります。一覧では分類A・Bは表示しない設定にしています。

さて、在庫管理のテーブルを申請管理のテーブルにリンクさせて、親テーブル在庫管理から切手○円等の券面を選択し、ほしい枚数を入力するようにしてみました。

リンクのやり方は前回の記事で詳しく書いていますので、そちらをご参照ください。
【pleasanter】リンクとルックアップ

「申請管理」テーブルの分類Aに「在庫管理」のサイトIDを入力し、リンクさせます。
ここでは「在庫管理」のサイトIDは228なので、全卓志一覧に[[228]]と入力します。

さて、「申請管理」のサイトで「新規作成」をクリックしてみましょう。
分類A「券面」では「在庫管理」のタイトル(「種別」+「額面」)が選択肢一覧に表示されています。

(5)タイトルとほかの項目を連結することもできる

(1)の例では主キーとして顧客IDをタイトルに設定しました。主キーとしてはそれで事足りるのですが、ほかのテーブルから外部キーとして参照するとき、顧客IDだけだと誰だかわからなくて利用しにくい、ということがあるかもしれません。そんな時は「タイトル」の顧客IDと別項目の「顧客名」を連結して「タイトル」とすることができます。

①「タイトル」の詳細設定画面で顧客IDを入力するタイトルはそのままで、選択肢一覧から「氏名」(この場合は「説明A」)を有効化する。

②新規作成の画面。タイトルの顧客ID入力欄と「氏名」入力欄は別に表示されています。

③こちらは一覧画面の様子。タイトルには顧客IDと氏名が連結して表示されています。

④リンク先のテーブルで選択肢を表示した様子。顧客番号だけよりこちらの方が分かりやすいですね。

3.まとめ

プリザンターの使い始めは「タイトル」ってなんなん?意味あんの?分類でよくね?と思っていたのですが、使い込んでいくうちに「タイトル」って重要だなあと思いはじめ、極力設定するようになりました。

今回うまくまとめられず、詰め込みすぎ?そして脱線ありで長くなってしまいました。
いつか見返して、分割したいものです。

こんなだらだらした記事をお読みいただいた方、ありがとうございました。

コメント

タイトルとURLをコピーしました