メインコンテンツまでスキップ
バージョン:25.2

センストーク旅行ガイド

経験豊富なコーディング者のためのガイドブック

SenseTalk は「直感的なスクリプト言語」です。プログラミング初心者には最適ですが、別の言語を既に知っている人 (おそらくあなた) にとっては混乱を招く (時には直感に反する) 可能性があります。

The ExpeditionThe Expedition

The Expedition: To cross the borders into this new territory and master the language well enough to be able to converse comfortably with the natives.

The ExplorerThe Explorer

The Explorer: You, an experienced traveler in other languages, well equipped with the latest coding skills and tools. You expect to quickly be speaking the lingo, but troubles await…

The ChallengeThe Challenge

The Challenge: SenseTalk presents new and unfamiliar terrain. Familiar operations are accomplished in unfamiliar ways. Your mastery of programming concepts is a tremendous asset, but some of the specific skills and techniques you've learned with other languages may actually hold you back. Some of your ingrained assumptions could mislead you down the wrong path toward a slippery slope that will tumble you into the ravine of frustration.

Emergency SuppliesEmergency Supplies

Emergency Supplies: Our aim is to get you up to speed quickly, and point out some of the pitfalls and peculiarities that may get in your way. We'll try to guide you safely along the path to the summit.

Base CampBase Camp

Base Camp: We provide hints here to point you in the right direction. For the complete map of the territory, be sure to refer to the documentation.



Survival Tip

Things Are Different Here

予期せぬ事態に注意し、必要なときにいつでもこのガイドに戻ってください。

Lay of the Land

Lay of the landLay of the land

Before embarking on your adventure it is helpful to have a rough idea of where you'll be traveling.

ここの住民は、ちょっと変わった英語の方言を話します。家では日常会話程度なら英語を話せるかもしれませんが…コードの世界を旅している時は絶対に話せないので、これは助かるはずです!ですから、この地域ではまるで外国語のように感じるかもしれません。でも、SenseTalk方言の基本を学べば、問題なくやっていけるでしょう。例えば、文はすべて動詞で始まる命令形コマンドで、それぞれが別の行に記述されます。

sort myList
add 1 to total
delete line 3 of text

SenseTalkは人間中心のプログラミング言語であることを覚えておいてください。一般の人々がタスクを簡単に実行できるようにすることに重点を置いていますが、「人間」にとって直感的なことが、経験豊富なプログラマーであるあなたにとっては直感に反すると感じることもあるでしょう。ですから、思い込みを捨て、「人間」の視点から物事を見るように意識をシフトすれば、現地の人々とよりスムーズに付き合えるようになるでしょう。

物事は、その世界における振る舞いによって意味を持ちます。パーセント記号はパーセントを表します。引用符で囲まれたリテラル文字列は、その表記通りです。"\n" は、改行ではなく、バックスラッシュと 'n' を含む2文字の文字列です(ただし、どうしてもエスケープシーケンスが必要な場合は、以下を参照してください)。

サバイバルのヒント

文字列リテラルは実際にはリテラルです

文字列「ABC\n123」は8文字で、4番目と5番目の文字は「\」と「n」です。1行目に「ABC」、次の行に「123」を含む文字列を作成したい場合は、いくつかの方法があります。

String concatenation (&):

set text to "ABC" & return & "123"

埋め込まれたスペース (&&) を含む文字列連結:

set text to "ABC" && "123" -- (ok, there's no return in this example)

二重角括弧内の埋め込み式を評価するには、リテラルの前に「!」を使用します。

set text to !"ABC[[return]]123"

ブロック引用符で囲まれた文字列リテラルを使用します。

set text to {{
ABC
123
}}

使い慣れたエスケープ シーケンスが必要な場合は、文字列の前に「@」を付けるとそれが実現します。

 set text to @"ABC\n123"  -- テキストは2行になりました

SenseTalkは非常に使いやすく、寛容です。 文字列の末尾を超える文字にアクセスしたり、リスト内の項目数よりも大きいインデックスにあるリスト項目にアクセスしたりしてもエラーとはみなされず、単に空の値を返します。この言語は大文字と小文字を区別せず、制限されているキーワードもほとんどありません。

SenseTalk は非常に動的です。 変数の型は、そこに含まれる値によって決まり、行ごとに変化する可能性があります。数値はコンテキストに応じて文字列として、文字列は日付として使用できます。コマンドと関数は、定義方法に関係なく、任意の数のパラメータで呼び出すことができます。

SenseTalk は非常に文脈依存的です。同じ単語でも、使用される文脈によって意味が異なる場合があります。制限されるキーワードはほとんどありません。ほとんどの単語は、コマンド、演算子、関数、またはプロパティの名前であっても、変数名として使用できます。

サバイバルのヒント

今後の進路を調査する

SenseTalkは非常に英語に似ているため、誤った方向に誘導してしまうことがあります。構文的に正しいコマンドを入力すると、構文が認識されたことを知らせるカラー表示が表示されます。しかし、時折、SenseTalkが認識した意味が意図したものと異なることがあります。そのため、コマンドや短いコードシーケンスを実行して、期待どおりに動作するか確認してみることをお勧めします。

最初の必需品 / 基本装備

First Essentials/Basic EquipmentFirst Essentials/Basic Equipment

SenseTalk statements all begin with a command (verb) and end at the end of a line, without any terminating punctuation. There is only one command per line.

put コマンドで値を 表示 します。

put "Hello World!"
--> Hello World!

put 2+3*4
--> 14

Assign a value to a variable with either the put … into or set … to commands:

put 7 into x
set y to 9
put x*y
--> 63

変数は宣言する必要はありません。変数名は大文字と小文字を区別しません。totalTotalTOTAL はすべて同じ変数です。

変数は_型なし_です。どの変数もあらゆる型の値を保持でき、また、異なるタイミングで異なる型の値を保持することもあります。

値の種類: 数値、文字列、日付、色、バイナリ データ、リスト、範囲、プロパティ リスト、ツリー (XML)、パターン (正規表現)。

Numbers:
-17.8
forty-two
12e6
0x7F
a million
1_000_000

Strings:
"abc"
<<Say "Hi"!>>
@"Hello\nWorld"
!"The circumference is [[2*pi*radius]]"

{{
Hello
World!
}}
注記

文字列リテラルの前の @ はバックスラッシュエスケープを評価します。文字列の前の ![[ ]] で囲まれた埋め込み式を評価します。

Dates/Times:
"2020-03-13" as date
date("April 3, 1955")
"8:30 PM" as time
"January 8, 2020 13:08:56".time

注記

文字列は、コンテキストによっては、「as date」などを指定する必要がなく、暗黙的に日付/時刻値として解釈されることもあります。

Colors:
color(purple)
"#00FF77".color
[127, 0, 255] as color
color("W,0.2")

Binary data:
<48656C6C6F>

Lists:
[1,2,3]
["a", 27, "cat"]
[foo, bar, [1,2,3], 97]
[]

Ranges:
1..99
50 to 100 by 5
"a".."z"
"May 5" to "June 3"

Property lists:
{x:22, y:47}
{name:"Bob", age:101, luckyNumbers:[12,33,88]}

Patterns:
<3 digits, "-", 2 digits, "-", 4 digits>
<"(", one or more characters, ")">

注記

リストとプロパティ リストは、任意のタイプの括弧 (()[ ]、または {}) を使用して記述できますが、読みやすさと JSON およびその他の形式との互換性のために、リストには [ ] を使用し、プロパティ リストには {} を使用することをお勧めします。

ツリー(スクリプト内で直接的なリテラル形式を持たないため、上記には示されていません)は、リストとプロパティリストの両方の機能を組み合わせた複雑な構造です。ツリーはXMLテキスト形式で表示され、XMLテキストまたは適切なプロパティリストからTree()関数またはDocumentTree()関数を使用して作成できます。

すべてのループは repeat … end repeat を使用します。repeat ループには多くの種類があります。

条件ブロックは「if … then … else … end if」(または単一の文を1行にまとめた「if … then … else」)で記述します。複数ケースのif文は、他の言語のswitch/case文と同様の機能を、明確かつ読みやすい形式で提供します。

知っておくべき重要な用語

Key TermsKey Terms

There are a number of key terms in SenseTalk you will want to be familiar with. A few of them are covered below.

empty

何かが値を持たないとき、それは空です。empty という言葉は、値が "" である定数、つまり文字を含まない空の文字列です。SenseTalk では、他の言語では null や nil が使われたり例外がスローされたりする状況で、empty が頻繁に使用されます。これは、関数や式から返される値がない場合に通常返される値です。例えば、以下の式はすべて空の値になります。

        character 9 of "hello"
        item 6 of [1,3,5,9]
        property "age" of {name:"Fred", occupation:"Zookeeper"}

put

put コマンドには 4 つの形式があります。1 つ以上のパラメータを持つ汎用の put コマンドは、各パラメータの値を別々の行に表示します(パラメータを指定しない put は空行を表示します)。put into コマンドは変数に値を代入します。put after コマンドは既存の文字列値の末尾に文字列を追加し、put before コマンドは値の先頭に文字列を追加します。

set

set コマンドは、変数またはその他のコンテナに値を割り当てることもできます。

insert

insert コマンドはリストに値を追加するために使用されます。

the

the という単語は、状況によっては必須 (グローバル プロパティにアクセスする場合や一部の関数呼び出しの場合) ですが、その他の状況ではオプション (of という単語を伴う関数呼び出しやプロパティ アクセスの場合) です。

it

変数「it」には、様々な状況で自動的に値が割り当てられます。これはPerlの「$_」に似ています。

return

「return」という用語は、値が改行文字である定数です。また、「return」は関数から値を返すために使用されるコマンドでもあります。

each

ソート式内または each 式内では、変数 each は、ソートまたは反復処理される各項目の値を順番に受け取ります。

item

「item」という用語は、リスト内の項目を指します。リスト以外の値に適用された場合は、カンマ(または「itemDelimiter」に設定された値)で区切られたテキスト項目を指します。通常はこれで問題ありませんが、曖昧さを避けるため、「リスト項目」と「テキスト項目」という用語を明示的に使用することもできます。