機能

これは機能の概要一覧です。すべてを見るにはリファレンスを参照してください。

turtleSpaces は Apple (LCSI) Logo 環境の完全な実装を土台にしています。Logo はかつて「パーソナルコンピュータ上に実装された中で最も強力で使いやすいコンピュータ言語」と評されました。(David Thornburg)

Logo は「関数型」の言語で、互いに出力を返し合う「プリミティブ」(コマンド)を基礎にしています。プリミティブは連ねることができ、データを取得し、計算し、さまざまに変換してから、保存したり、それをもとに動作させたりできます。

ユーザーは「プロシージャ」を作れます。プロシージャはプリミティブとまったく同じようにふるまい、プリミティブを置き換えることもできます。プロシージャはプリミティブと同じように、引数を取り、出力を返せます。2 つの数を掛け合わせるプリミティブ product を例に取りましょう:

これで product を自分のプロシージャで実質的に置き換えたことになります。

Logo はもともと、子どものための言語の遊び場として構想されました。そのため、文字列と「リスト」(「項目」の並び)の扱いが非常に強力です。たとえば [pig duck cow] や [[Bob 53][Frank 22][Sue 34]] のように書きます。リストや文字列(Logo では「ワード」と呼びます)を組み立て、並べ替え、順序を変えるためのプリミティブが各種そろっています。

  • 実行時に「解決」(評価)される「ソフト」リストを追加しました。これらのリストは角括弧ではなく波括弧で囲みます: {xpos ypos zpos} {hours minutes seconds}
  • tables という形で、より伝統的な配列も追加しました。テーブルは x y (z) であらかじめ定義された配列です。中身は cell と putcell. で読み書きします。
  • zones と sectors という形で、位置に紐づいたデータ保存もできます。
  • ファイルへのデータの保存と読み出しができます。
  • テキストをさまざまなフォント・サイズ・色で表示できます。

タートルは後から Logo に加えられましたが、いまでは最もよく知られた特徴になりました。タートルは自分自身を基準に動くグラフィカルな「カーソル」で、他の「絶対座標」的なグラフィックスシステムとは異なります(もちろん Logo でも絶対座標で操作できます)。タートルに進めと回れと伝えると、自分の位置と向きを基準にそのとおりに動きます。

turtleSpaces では、タートルに大幅な機能を追加しています:

  • タートルは三次元で動けます。つまり forward , back , left , right に加えて、up , down , rollleft , rollright があります。便宜のために raise , lower , slideleft , slideright も追加しました。
  • position はタートルの位置を 3 つの座標で返します。従来の pos は 2 つ (x, y) を返します。
  • heading , setheading に加えて pitch , setpitch と roll , setroll を追加しました。
  • orientation , setorientation は 3 つすべてをまとめて設定します。適用される順序は setorientationorder が指定します(heading , pitch , roll の 3 つの向きの適用順です。オイラーめ!)
  • より確実に向きを扱いたいときは vectors , setvectors が使えます。ベクトル関連のプリミティブも各種そろっています。
  • オービットの anchorpoint を設定し、その周りを度数で orbit できます。カメラにも、面白い模様を描くのにも、とても便利です。
  • 新しいタートルを作れます。newturtle プリミティブによる「永続的な」タートルと、hatch による一時的なタートルがあり、後者の出力は親と merge できます**.** タートル同士の位置関係は near , inside ,facingp , location などで調べられます。
  • tags を使って、タートルの「モデル」を任意の Logo 描画コードに設定できます。tags はタートルの「トラック」(描画された出力)の一部を「囲む」もので、モデルとして使ったり、表示・非表示を切り替えたりできます。トラックはコピー・読み込み・保存もできます。モデルの前に任意のコマンドを挿入する setpremodel を使えば、必要に応じてモデルの向きを変えられます。
  • backtrack でタートルが最後に行ったことを取り消せます。assemble を使えばタートルのトラックからプロシージャを作れるので、モデルを「その場で」生成できます。

タートルが存在できる space は複数あり、タートルを複数の空間にまたがって配置できます(newspace selectspace)。それぞれの空間は無限に広がる三次元のキャンバスです。

どのタートルもカメラになれます。setview で選択します。setviewpoint を使えば、タートルに対するカメラの相対位置を変えられます。タートルはライトとしてもはたらきます。スポットライト、ポイントライト、あるいは光なしを選べます。

プロシージャと変数(containers)、それにいくつかの設定はタートルごとに固有です。コンテナはタートル間で share でき、プロシージャは特別な libby(ライブラリ)タートルを使って共有できます。

タートルはプロセススレッドである workers によって「運転」されます。1 つのワーカーが複数のタートルを(順番に)運転することも、複数のワーカーが複数のタートルを運転することもできます。複数のワーカーが同じタートルを運転しようとすることさえ可能です! ワーカーとタートルは別物です。タートルは車、ワーカーは運転手だと考えてください。

turtleSpaces には telnet で接続して、端末や別のアプリケーション(API)からワーカーを操作することもできます。

従来の Logo のタートルは線を引くか面を塗ることしかできませんが、turtleSpaces は OpenGL を土台にしているため、次のようなさまざまな shapes を作れます:

  • shard
  • pinshard
  • voxel
  • voxeloid
  • ramp
  • tent
  • sphere
  • sphereslice
  • cutsphere
  • cutsphereslice
  • spheroid
  • spheroidslice
  • cutspheroid
  • cutspheroidslice
  • icosphere
  • icospheroid
  • amigaball
  • amigaballoid
  • cylinder
  • cylinderslice
  • cylinderarc
  • cylinderarcslice
  • cylindroid
  • cylindroidslice
  • cylindroidarc
  • cylindroidarcslice
  • duocylindrdoid
  • tube
  • tubearc
  • tubeslice
  • tubearcslice
  • tuboid
  • tuboidarc
  • tuboidslice
  • tuboidarcslice
  • duotuboid
  • cone
  • coneslice
  • cutcone
  • cutconeslice
  • conoid
  • conoidslice
  • cutconoid
  • cutconoidslice
  • duocutconoid
  • funnel
  • funnelslice
  • cutfunnel
  • cutfunnelslice
  • cutfunneloidslice
  • funneloid
  • funneloidslice
  • cutfunneloid
  • duocutfunneloid
  • pyramid
  • pyramoid
  • dome
  • domoid
  • torus
  • torusslice
  • toroid
  • toroidslice
  • tetrahedron
  • tetrahedroid
  • octahedron
  • octahedroid
  • dodecahedron
  • dodecahedroid
  • mark
  • inscribe
  • typeset

ボクセルやクアッドを speckle(Minecraft 風にピクセル化)できます。ピクセルベースのプロット(2 次元と 3 次元の両方)を作り、それを speck として使うこともできます。

サウンド系のプリミティブには、伝統的な toot(tone)プリミティブ、ホワイトノイズを生成する noise、playnotes があり、内蔵の tracker で作った音楽を playmusic で再生できます。OS 内蔵の音声合成を say で使うこともできます(macOS と Linux)。

turtleSpace にはユーザーがいます。turtleSpaces を使うには、ユーザーとして「ログイン」します。

ユーザーのワークスペースは「turtleSpace」(TSP) フォルダとして保存されます。このフォルダはプロシージャへの変更をすべて保存するので、開発のどの段階にも戻れます(undo , redo)。対話プロンプトに入力した内容も保存されます。

スナップショットは save または takesnapshot のときに作られます。セーブポイントは、ワークスペースを読み込んだときに復元される状態です。そのまま開発を続けて、load autosave で「現在」の状態に戻すこともできます。takecover を使えば、(cat alog で使われる)永続的な「カバー」を作れます。

対話プロンプトの履歴はプログラムから読み出せます(historycount historyitem historylist)。

ウェルカムツアー

IDE を初めて開くと、カメのシェリー(Shelly)がメニューバー、ワークスペース、実行ボタン、コンソール、3D ビュー、作例を案内します。1 分ほどで終わり、読み上げもできます。もう一度見るには ヘルプ → ようこそ を選びます。同じツアーはこのサイトでも読めます。

エラーを助けるシェリー

プログラムがエラーで止まると、シェリーが現れて Claude に説明してもらうかたずねます。これはどういう意味? はエラーを一般的に説明し、自分のコードに沿って説明して は自分のプログラムの何がいけなかったかを説明します。打ち間違いで試してみましょう。

シェリーのエラー手助けは、サインインしているときに表示されます。

Claude に聞く

サインインすると、エディターに AI コードアシスタントの Claude タブが現れ、Logo や自分のプログラムについて質問できます。テキストエディターとブロック画面の右上にある丸い Claude ボタンには 3 つの選択肢があります。Comment procedure はプロシージャにコメントを付け、Explain with Claude はプロシージャやプログラム全体をやさしい言葉で説明し、Teach Me How はそれをタートリアル(Turtorial)にします。

AI の答えは間違うことがあるので確かめてください。何が送られるかは、プライバシーポリシーの AI features をご覧ください。

タートリアル(Turtorial)

タートリアルは、シェリーがプログラムから作るレッスンです。答えを渡すのではなく、ヒントや小さなクイズ、答え合わせをする ボタンを使いながら、自分でそのプログラムを一歩ずつ組み立てられるよう案内します。学ぶ人が獲得したバッジをもとにレベルを合わせ、手がかりがなければ初心者として扱います。

タートリアルは空のワークスペースで始まるので、保存していない作業があれば先に保存するようたずねます。途中でやめたときは、同じブラウザーで ヘルプ → Resume を選ぶと続きから再開できます。サインインが必要です。

今日のお題

アイデアがほしいときは? 毎日新しい言葉が、IDE の起動時にコンソールに表示されます。言葉は UTC の午前 0 時に変わります。そのお題で何か作って、公開するときに 今日のお題 のタグを付け、ギャラリーでほかの人が今日作った作品を見てみましょう。

5 つの言語

IDE とこのサイトは English、Español、Français、日本語、Polski で使えます。言語は 設定 → 言語 で選びます。Logo のコマンドはどの言語でも英語のままなので、コード例はどこでも動きます。