---
navigation:
  title: "プログラマー"
  icon: "pneumaticcraft:programmer"
  parent: pneumaticcraft:programming.md
item_ids:
  - pneumaticcraft:programmer
---

# プログラマー

*プログラマー*は[ドローン](../tools/drone.md)をプログラミングするために使用される機械です。[パズルピース](./puzzle_pieces.md)がプログラミングGUIで組み立てられるビジュアルプログラミングシステムを使用します。*プログラマー*は動作するために[圧力](../base_concepts/pressure.md)を必要としません。*プログラミング*カテゴリの残りの部分にはドローンプログラムの書き方に関する詳細情報が記載されています。

プログラマーのクラフト

<Recipe id="pneumaticcraft:programmer" />

*プログラマーGUI: 各セクションの詳細については次のページを参照してください*

![](programmer_gui.png)

**1. メインプログラミングエリア**

このエリアは実際のプログラムが構築される場所です。ウィジェットは*ウィジェットトレイ(エリア2)*からここにドラッグされ、一緒に「スナップ」されてプログラムを形成します。

マウスホイールまたは右側のスクロールバーを使用してプログラミング領域を拡大または縮小できます。

**2. ウィジェットトレイ**

このエリアにはプログラムの構築に使用するウィジェットが保持されます。表示されているものより多くのウィジェットが保持されます。トレイの下の矢印ボタンを使用してページを循環したり、*スペースキー*または*タブキー*を使用してトレイを展開してすべてのウィジェットを表示したりできます。

トレイを展開すると上部にテキストフィールドも表示され、ウィジェットを検索するためのフィルター文字列を入力できます。

**3. ドローンスロット**

プログラムする[ドローン](../tools/drone.md)(または[ネットワークストレージ/API](../components/network_components.md))をここに配置します。ドローンをプログラムする準備ができたら、*⟶*ボタンを押してプログラムを書きます。必要に応じて左側のテキストフィールドを使用してドローンに名前を付けることができます。成功すると音声フィードバックが聞こえます。

*⟵*ボタンを使用してドローン(またはネットワークストレージ/API)からプログラムをインポートすることもできます。

**4. 難易度選択**

これらのラジオボタンは、トレイで使用できるプログラミングウィジェットを制御します。また、[変数](./coordinate_operator.md)などの高度な機能を有効/無効にします。

**5. プレイヤーインベントリ**

 独自のインベントリです。[GPSツール](../tools/gps_tool.md)または[GPSエリアツール](../tools/gps_area_tool.md)がある場合は[エリア](./area.md)または[条件](./coordinate.md)ウィジェットでそれらをクリックしてウィジェットに設定を転送できます。

**6. ナビゲーションと表示オプション**

これらのボタンを使用して次の操作を行うことができます:
- プログラムの[開始](./start.md)ウィジェットに移動する
- 最後に配置したウィジェットに移動する
- 各ウィジェットの追加情報の表示を切り替える
- [ジャンプ](./jump.md)ウィジェットと[ラベル](./label.md)ウィジェット間の接続線の表示を切り替える

**7. その他のボタン**

GUIの左端にあるボタンを使用すると次の操作を順番に実行できます。
- 最大20個のアクションを*元に戻す*
- 前の元に戻した操作を*やり直す*
- *プログラムをJSONファイルとして[pastebin.com](https://pastebin.com)*にインポートまたはエクスポート(Pastebinのログインはオプション)
- *プログラム全体を削除*(元に戻すことができます)
- プログラムを*相対座標*に*変換*(詳細については[このページ](#convert_relative)を参照してください)

<a name="ids"></a>
## プログラムウィジェットID

*F3+H*で拡張ツールチップ情報をオンにすると、各プログラミングウィジェットのツールチップの最後に内部ウィジェットIDも含まれることがわかります。これは主に[ドローンインターフェース](../machines/drone_interface.md)を使用してドローンプログラミングを行う場合に役立ちます。ドローンインターフェースの*setAction()* LuaメソッドはこれらのID(*pneumaticcraft:*プレフィックスはオプション)をパラメーターとして受け取ります。

## プログラムの共有

他のプレイヤーとプログラムを共有したい場合はいくつかのオプションがあります:
- *Pastebin*ボタンを使用してプログラムを[pastebin.com](https://pastebin.com)にエクスポートできます。
- *Pastebin*のGUIではプログラムをクリップボードに書き込んでコピー & ペーストすることもできます。
- プログラムを[ドローン](../tools/drone.md)または[ネットワークストレージ/ネットワークAPI](../components/network_components.md)に保存してそのアイテムをサーバー上の他のプレイヤーに渡すことができます。

<a name="convert_relative"></a>
## 相対的に変換する

たとえば、自動農場を実行するプログラムを設計してそれを共有したいとします。別のワールドの人々は異なる座標に農場を持っているため、[エリア](./area.md)ウィジェットをすべて変更する必要があります。これは非常に面倒です。

[*相対的に変換する*]ボタンを使用するとこの作業が簡単になります。また、プログラムを変換するために必要な操作を示すツールヒントも表示されます。

<a name="convert_relative"></a>
## 相対的に変換する(続き)

固定の[座標演算](./coordinate_operator.md)ウィジェットを1つ追加し、*基本位置*(入力するチェストの位置など)を含む[座標](./coordinate.md)ウィジェットを追加する必要があります。これによりプログラムで使用される絶対位置(エリアまたは座標)がその基本位置に対する相対座標に変換されます。

これでプログラムのユーザーはプログラムを使用するために1つの座標を調整するだけで済みます。

<a name="jei"></a>
## JEI 統合

JEI がインストールされている場合プログラマーGUIが開いているときに JEI レシピ表示を開くと「+」(アイテムの移動)ボタンが表示されます。このボタンをクリックするとレシピの各入力アイテムに[アイテムフィルター](./item_filter.md)ウィジェットが追加されます。プログラミング領域にアイテムフィルターが添付されていない[クラフト](./crafting.md)ウィジェットがある場合は、レシピをすばやく簡単に設定できるようにアイテムフィルターがクラフトウィジェットに追加されます。それ以外の場合はプログラミング領域の左上に1行で追加されます。

## JEI 統合(続き)

デフォルトでは、各アイテムタイプに対して1つのアイテムフィルターのみが追加されます(たとえば*石のハーフブロック*レシピの場合*石*フィルターは3つではなく1つだけ作成されます)。ウィジェットは中クリックしてドラッグすることでコピーできることを覚えておいてください。重複を含むレシピ内のすべてのアイテムに対してアイテムフィルターを追加する場合は、JEIでShiftキーを押しながら「+」ボタンをクリックします。

