ゲームプログラマーを目指すにはどんな準備が必要? パソコンのスペックは? 学ぶべき言語は?

2024年1月17日(水)
Think IT編集部
ゲーム開発には、プログラミング言語などの知識とスキルが求められます。ゲーム作成にあたって初心者が知っておきたいことについて解説するので、参考にしてください。

はじめに

ゲーム好きの方であれば、一度は「自分でも作ってみたい」と考えたことがあるのではないでしょうか。ゲーム開発には、プログラミング言語をはじめとした多種の知識とスキルが求められます。難しそうなイメージがありますが、簡単な仕組みのものから始めれば初心者でもゲーム開発は可能です。そこでこの記事では、ゲーム作成にあたって初心者が知っておきたいことについて解説します。ゲーム好きの方はもちろんのこと、ゲーム作りに興味のある方は、ぜひ最後までご覧ください。

ゲーム作成に必要なもの

ゲームを作成するには、そのための環境を整えなければなりません。最低限必要なのは以下の4つです。

  • 開発用パソコン
  • ゲームエンジン
  • ゲーム制作ツール
  • プログラミング言語

開発用パソコン

まず、ゲーム開発用のパソコンを1台用意してください。以下に挙げたスペックは2024年1月現在の最低ラインの例であり、高ければ高いほど良いと言えます。

  • CPU:Core i5
  • ストレージ:256GB
  • メモリ:8GB

GPUについても、CPUと統合されたもの(iGPU)ではなく、グラフィックスカードとして独立したもの(dGPU)を用意するのが良いでしょう。また、パソコンを使うにはインターネット環境も必要です。動作が快適に進むように、高速で安定したネット回線を整えておきましょう。

ゲームエンジン

ゲームエンジンは、ゲームを制作するのに必要な機能がまとめられたソフトウェアのことです。さまざまなジャンルのゲームを作れるほか、精度の高いゲーム開発もできます。代表的なゲームエンジンとしては、UnityUnreal Engineの2種類が挙げられます。これらのゲームエンジンは、ゲーム業界以外にも映像制作や自動車産業、医療現場などでも活用されています。

ゲーム制作ツール

ゲーム制作ツールは、ジャンルに特化したゲームを作るのに必要なツールのことです。たとえばRPGならRPG用の、シューティングならシューティング用のツールを使うと、スムーズにゲームを開発できます。特に有名なものに、RPGツクールMVSMILE GAME BUILDERなどが挙げられます。ゲーム制作ツールの中にはプログラミング不要で使えるものもあり、初心者でも利用しやすいのが魅力です。

プログラミング言語

プログラミング言語は、プログラムとしてのゲームを動かすための具体的な指示内容を記述するためのものです。ゲーム開発では、C++やC#など、さまざまなプログラミング言語が使われています。ただ、これらは初心者にはハードルが高いので、まずはPython、JavaScript、Rubyあたりから始めることをお勧めします。

ゲームプログラミングの種類

2024年1月現在、コンピューターゲームは、大きく分けて以下の5種類があります。

  • ブラウザゲーム
  • スマホゲーム
  • コンシューマゲーム
  • PCゲーム
  • VRゲーム

どれを選ぶかで、ゲーム開発の難易度も左右されます。1つずつ詳細を解説していくので、自分のレベルに合うものを選びましょう。

ブラウザゲーム

ブラウザゲームとはGoogle ChromeやSafariなど、パソコンやスマートフォンのブラウザ上でプレイするゲームを指します。ユーザーがソフトやアプリをダウンロードしなくても遊べるのが大きな魅力です。有名どころでは、「ビビッドアーミー」や「グランブルーファンタジー」などが挙げられます。

開発には、Cocos2d-xというゲームエンジンを使うのがお勧めです。プログラミング言語の中でも習得が比較的簡単とされるJavaScriptに対応しているため、初心者でも取り組みやすいでしょう。

スマホゲーム

スマホゲームとは、スマートフォンにアプリをインストールして遊ぶタイプのゲームのことです。過去には「モンスターストライク」や「キャンディークラッシュ」など、さまざまな人気ゲームが生み出されました。今後もスマホゲームの市場は拡大していくものと思われます。

スマホゲームを大きく分けると、iOS版とAndroid版の2種類があります。どちらを選ぶかで必要なプログラミング言語が異なるので注意してください。iOS版にはSwift、Android版にはJavaが使われるのが一般的です。Swiftは文法がシンプルで初心者でも比較的習得しやすいと言われていますが、歴史の浅い言語ということもあって参考にできる情報は少ないかもしれません。

コンシューマゲーム

コンシューマゲームとは、いわゆる家庭用ゲーム機と呼ばれる専用ゲーム機でプレイするゲームのことです。「ドラゴンクエスト」シリーズや「ファイナルファンタジー」シリーズなどをイメージするとわかりやすいでしょう。

ゲーム業界の発展に大きく貢献してきたコンシューマゲームの開発は、誰もが一度は携わってみたい憧れの世界です。しかし、ゲームソフトを開発するには、使用するゲーム機メーカーとライセンス契約を結ばなければなりません。また、基本的にチーム体制で開発を進めるため、初心者には相当ハードルが高くなります。本気でコンシューマゲーム作りを目指すなら、ゲームメーカーに加わって働くつもりで真剣な努力が求められます。

PCゲーム

PCゲームとは、パソコンにソフトをインストールしてプレイするタイプのゲームのことです。「@<href>{https://www.minecraft.net/ja-jp,Minecraft」をはじめ、人気RPG作品などが該当します。

OSは主にWindowsが使われ、また特別なライセンス契約などは必要ありません。ただ、開発にはC++やC#、Javaなど、習得が難しいとされるプログラミング言語が使われています。初心者が取り組むには、難易度が高いかもしれません。

VRゲーム

VRゲームとは、専用のゴーグルなどを装着して仮想空間を楽しむゲームのことです。人気作としては、「Beat Saber」や「@<href>{https://www.residentevil.com/6/jp/,バイオハザード4」などが挙げられるでしょう。現実と同じように、リアリティのある体験ができるのが魅力です。

VRゲームを開発するには、ハイスペックのパソコンやVRゴーグルなどを揃える必要があります。また、近年注目され始めたジャンルのためにまだまだ情報が少なく、初心者が取り組むには難易度が高いといえるでしょう。逆にいえば、今後伸びていくと思われるジャンルなので、VRゲームの開発知識とスキルを今から身に付けておけば、就職や転職で役立つかもしれません。

ゲーム作りを手順で解説

初心者のゲーム作りは、手順に沿って進めるのがスムーズです。ここでは、ゲーム作りの基本的な手順を解説します。

(1)どんなゲームを作るか決める

まずは、どんなゲームを作りたいのかを決める、いわばアイディア出しが必要です。ジャンル、プラットフォーム、登場人物・キャラクター、操作方法などは最低限決めておきましょう。ジャンルとは、RPGやパズル、シューティングといったゲームの分類のことです。初心者のうちは簡単なパズルやクイズなど、動作や開発工程ができるだけシンプルなジャンルを選ぶのが良いでしょう。

プラットフォームは、パソコンやスマートフォンなど、ゲームをプレイする媒体のことです。登場人物・キャラクターや操作方法については、アイディア出しの時点ではざっくりとしたイメージでもかまいません。

(2)ゲームの簡単な仕様書を作る

作りたいゲームが決まったら、次のステップはゲームの簡単な仕様書を作ります。仕様書は設計図にあたるものなので、細かく考えていきましょう。具体的にはプレイ中の画面表示数、ボタンを押したときのアクション、BGMの流れるタイミング、画像やボタンの配置場所などです。ゲーム作りは仕様書をもとに進められるため、漏れがあるとゲームとして成り立ちません。可能であれば、ゲーム開発に携わっている方に内容を確認してもらうことをおすすめします。

(3)ゲーム制作ツールを準備する

仕様書が無事に完成したら、ゲーム制作ツールの準備に入ります。iOS、Android、ブラウザなど、ゲームのプラットフォームによって適したツールは異なることに注意してください。また、無料か有料か、インストールの有無など、さまざまなタイプのツールが存在します。万が一うまくいかなかったときのリスクを考えて、最初はできるだけ無料のツールを使うのが良いでしょう。

また、ゲーム内で使用する素材の準備も欠かせません。自作にこだわりたい方もいるかもしれませんが、時間がかかると肝心のゲーム作りのモチベーションも下がってしまいます。プログラミングに集中するためにも、フリー素材などを上手に活用しましょう。

(4)プログラミングを行う

すべての準備が整ったら、次はいよいよプログラミングです。仕様書をもとに、プログラミング言語を使って登場人物・キャラクターのアクションや画像の配置場所などの指示を出していきましょう。ただ、どのようにプログラミングしていくかわからずに、つまずく方も少なくありません。スクールや学習サイトなどを活用して、該当する言語の基礎をしっかり身に付けてから作業することをおすすめします。

(5)テストプレイを行う

プログラミングが終わったら、最後のステップはテストプレイの実施です。ゲームを最初から最後まで一通りプレイしながら、おかしなところがないかチェックします。たとえば、ボタンを押しても反応しない、キャラクターが変な動きをするといった現象が挙げられるでしょう。このような不具合があるうちは、本当にゲームが完成したとは言えません。不具合が見つかったらコードを修正し、またテストプレイを実施します。この工程を繰り返し、すべての動作に問題がなければ、ようやくゲームの完成です。

手軽にスタート!ゲームエンジンを使ってみる

ゲームを制作するために必要な機能がまとめられたソフトウェアがゲームエンジンです。ここでは、UnityとUnreal Engineの2つについて解説します。

Unity(ユニティ)

Unity(ユニティ)とは、世界最大のシェアを誇るゲームエンジンで、アメリカで誕生しました。WindowsやMac、iOSやAndroid、PlayStationシリーズなど、さまざまなプラットフォームに対応しています。最大の魅力は、シンプルな3Dゲームであればプログラミング不要で制作できることです。また2Dゲームにも対応しており、さまざまなジャンルのゲーム作りができます。Unityは、個人だけではなく大手ゲームメーカーにも正式に採用されているゲームエンジンです。その理由は、比較的安い価格帯、そして本格的な仕様でスムーズなゲーム制作ができる点が挙げられます。

Unreal Engine(アンリアルエンジン)

Unreal Engine(アンリアルエンジン)とは、Unityに次いで世界中で利用されているゲームエンジンです。さまざまなプラットフォームに対応している点はUnityと同様ですが、Unreal Engineならではの機能としてブループリントが注目されています。ブループリントは視覚的にプログラムを開発できる機能で、少ないソースコードで効率的な開発が可能です。また、美麗なグラフィックにも定評があり、大手企業がPR動画の作成にUnreal Engineを利用したこともあります。すべての機能が無料で使えるところにも注目です。

おすすめのゲームプログラミング言語

ゲーム開発を進める上で、ゲームプログラミング言語の知識やスキルは必須です。ここでは、おすすめのゲームプログラミング言語として次の8つを紹介します。

  • C++(シープラスプラス)
  • C#(シーシャープ)
  • Java(ジャバ)
  • PHP(ピーエイチピー)
  • Python(パイソン)
  • JavaScript(ジャバスクリプト)
  • Swift(スウィフト)
  • Ruby(ルビー)

どのプログラミング言語を学ぶべきかについては、選択したプラットフォームやゲームエンジンによって異なります。初心者でも覚えやすいものから難易度が高めのものまでさまざまなので、ゲームの種類や自分の習熟度に合わせて選びましょう。

C++(シープラスプラス)

C++(シープラスプラス)とは3Dゲームの開発などに使われることが多いプログラミング言語で、Unreal Engineの中心言語です。PlayStation 2などのゲーム機から使われ始め、現在ではほとんどのゲーム機で必須といわれています。ゲームに関わるさまざまなプログラムを構築できる一方で、コンシューマゲーム向けの言語ということもあって難易度は高めです。また、OSやロボット開発に使われるC言語の知識も必要なため、初心者が学習するにはかなりハードルが高いといえるでしょう。

C#(シーシャープ)

C#(シーシャープ)とはマイクロソフト社が開発したプログラミング言語で、主にUnityで使われています。Unityはさまざまなプラットフォームに対応したゲームを開発できるため、導入しているゲームメーカーも多いのが特徴です。C#はC++の後続という位置付けで、C++よりも習得難易度は低めとされています。従って、初心者でも比較的学びやすいプログラミング言語といえるでしょう。

Java(ジャバ)

Java(ジャバ)とは、Android向けのアプリ開発に欠かせないプログラミング言語です。その他にも、3Dゲームの開発などにも使われています。Javaは、スマホゲーム作りを目指している方にとっては必須のプログラミング言語といえるでしょう。インストールからビルド環境の整備まで、しっかり習得する必要があります。ただし、細かいルールや覚えるべき文法事項が多いため、難易度としてはやや高めです。

PHP(ピーエイチピー)

PHP(ピーエイチピー)とは、ブラウザゲームのサーバーやスマホアプリの開発などによく使われるプログラミング言語です。現在のサーバー開発環境についてはLAMPと呼ばれる4つのコンポーネント、すなわちOSにLinux、WebサーバーにApache、データベースにMySQL、スクリプト言語にPHP(Python、Perlの場合もあります)を組み合わせることが一般的ですが、PHPもこの中に含まれています。これまで蓄積されてきたノウハウや参考にできる情報量が多いので、PHPは初心者でも比較的学習しやすいプログラミング言語といえるでしょう。

Python(パイソン)

Python(パイソン)もPHPと同様にブラウザゲームのサーバーやスマホアプリの開発などに使われることの多いプログラミング言語です。コーディングの規約が厳密に決められているため、ソースコードは誰が見てもわかりやすくなります。Python は、ゲーム以外の業界でも幅広く使われている人気のプログラミング言語です。他の言語と比較すると難易度は低めで、初心者でも習得しやすいでしょう。

JavaScript(ジャバスクリプト)

JavaScript(ジャバスクリプト)とは、主にブラウザゲーム開発に使われるプログラミング言語です。ゲームに限らずWebサイトの作成そのものにJavaScriptが使用されている場合も多いので、耳にしたことのある方も多いのではないでしょうか。JavaScriptは構造がシンプルで開発環境の構築も比較的簡単なので、初心者でも習得しやすいとされています。なおJavaScriptは、先述のJavaとはまったく異なるプログラミング言語です。学習の際は、混同しないように注意してください。

Swift(スウィフト)

Swift(スウィフト)とはアップル社が開発したプログラミング言語で、iPhoneやiPadなどアップル社製品におけるアプリ開発などに使用されています。開発したアプリはMacやiOS上でしか動作せず、Android向けのゲーム開発やiOSとAndroid両方に対応するゲームを作るのには向いていません。ただ、Swiftはシンプルで覚えやすいため、初心者でも比較的学習しやすいといえるでしょう。

Ruby(ルビー)

Ruby(ルビー)とは、ブラウザゲームや2Dゲームなどの開発によく使われるプログラミング言語です。シンプルでわかりやすいソースコードに定評があります。また日本生まれの言語ということもあり、日本語による情報収集も簡単です。数あるプログラミング言語のうち、初心者でも身に付けやすいものの代表といえるでしょう。

ゲーム作成の勉強方法

ゲーム作りは初心者でもできますが、まずは必要な知識とスキルを身に付けるのが先です。ここでは、ゲーム開発に向けたおすすめの勉強方法を5つ紹介します。

企業のインターンシップに参加する

現役で活躍しているエンジニアやプログラマーから直接プログラミングを学びたいなら、企業が実施するインターンシップへの参加がおすすめです。プログラミングの手順やプログラミング言語の覚え方など、ゲーム開発にも役立つ情報が手に入るでしょう。また、インターンシップへの参加が縁となり、将来一緒に働く機会も得られるかもしれません。

オープンソースコミュニティに参加する

オープンソースコミュニティに参加する方法もあります。オープンソースとは、誰でも自由に利用・改変・再配布可能な無償公開のソフトウェアのことです。また、オープンソースコミュニティとは、オープンソースを管理する有志団体を指します。もちろん、初心者が参加しても問題ありません。コミュニティでさまざまなソースコードに触れているうちに、だんだんとプログラミングスキルが磨かれていくでしょう。同じ志を持つ仲間と繋がれるのも、オープンソースコミュニティの魅力です。

自分のレベルや目的に合った勉強会へ参加する

自分のレベルや目的に合った勉強会に参加してみるのも良いでしょう。プログラミングは基本的に個人で進める作業のため、どうしても孤独を感じがちです。思うようにいかないとき、共通の夢や悩みを持つ仲間がいれば、善き相談相手になってくれるでしょう。なお、勉強会の主催団体やテーマ、形式、参加費などは、どの勉強会を選ぶかで異なります。まずは興味のあるテーマや無料のものから参加してようすを見つつ、自分と相性の合うところを見つけるのがおすすめです。

学習サイトを使い倒す

プログラミングに関する学習サイトを使い倒す方法もあります。パソコンからはもちろんのこと、スマートフォンからもアクセスできるので、通勤や通学時間も有効活用できるでしょう。学習サイトにはテキスト教材のように文章を読みながらみっちり学ぶスタイルと、動画を見ながら実践的に学ぶスタイルとがあります。どちらが良いかは人によりそれぞれ異なるので、自分が勉強しやすい方法を選んでください。

書籍を使い倒す

本を読むのが苦にならないなら、書籍を使い倒すのも一手です。初心者向けの易しいものから専門的で難解なものまで、さまざまな本が登場しています。書籍を使った学習は、大事な箇所に線を引いたり付箋を貼ったりできて復習にも便利です。ゲーム開発関連の書籍もたくさん登場しているので、知識の吸収に役立ててください。

プログラミングスクールで本格的にゲームを開発する

学習サイトや書籍などによる独学も良いですが、1人での学習は孤独を感じやすく、不具合があったときの対処も自分でしなければなりません。そこで、プログラミングスクールで本格的にゲーム開発を学ぶのもおすすめです。スクールではプログラミングの専門家から手厚い指導を受けられるので、独学よりも知識やスキルを定着させやすいでしょう。何より、同じ志を持つ仲間と切磋琢磨しながらゲーム開発を学べるのが大きな魅力です。

初心者がつまずかないために

夢や希望にあふれたゲーム開発ですが、途中で挫折してしまう方も少なくありません。ここでは、初心者がゲーム作りでつまずかないためのポイントを5つ解説します。

高過ぎる目標を立てない

「ドラゴンクエスト」シリーズや「ファイナルファンタジー」シリーズは、ゲーム好きの方にとって永遠の憧れともいえるゲームです。だからといって、いきなりこのようなゲーム作りを目指すのはおすすめしません。なぜなら高過ぎる目標を立ててしまうと、途中で辛くなってしまう可能性が極めて高いからです。憧れのゲームはあくまで憧れとして、まずはシンプルなゲーム作りから取り組みましょう。小さな目標やゴールを決めて諦めずにコツコツと努力を重ねることが、結果的に憧れに近付く最短距離です。

こだわりすぎない

いざゲーム作りがスタートすると、ゲームをもっとおもくするためのアイディアがどんどん出てくるでしょう。しかし、最初に決めたこと以外にまでこだわりすぎると、肝心のゲーム作りにかける時間やエネルギーがなくなってしまうかもしれません。最悪の場合、楽しみなはずのゲーム作りが嫌になってしまうなんてことが起きるかもしれません。こだわりは次に持ち越し、まずは今やっているゲーム作りに集中してください。

著作権に注意する

初心者が特に注意したいのが、著作権です。一般的には、登場人物・キャラクターやBGMなどはフリー素材サイトのものを使うケースが多いでしょう。しかし、中には商用として利用できないフリー素材もあります。また、既存ゲームの模倣は学びに繋がりますが、もし著作権を侵害してしまうと法的な争いにまで発展しかねません。フリー素材サイトの利用規約や著作権を常に意識し、ルールの遵守に努めてください。

マネタイズを考えるのは後

せっかくゲーム作りをするなら、やはりマネタイズを考えている方も多いのではないでしょうか。それ自体は悪いことではありませんし、当然といえば当然です。しかし、マネタイズには課金要素の追加や広告、ユーザー対応など、ゲーム作成以外にも考えを巡らせなければなりません。初心者がゲーム作りと同時並行でこれらをこなすのには、相当な困難が伴います。マネタイズを考えるのは後に回し、まずはゲーム開発の知識とスキルをしっかり磨くことが大切です。

わからないことは質問する

ゲーム作りを進める中でわからないことが出てきたら、迷わず誰かに質問してください。質問は恥ずかしいことではなく、知識やスキルをより確かなものにするために必要なステップです。プログラミングに特化したQ&Aサイトやゲーム制作ツールのサポートページなどをどんどん活用しましょう。SNSで質問するのもおすすめです。注意点としては、意図がわかりにくいような曖昧な質問は避けてください。なるべく具体的に、そして誰が読んでも分かりやすい表現を心がけましょう。

ゲーム開発のためのおすすめサービス

ゲーム開発をしっかり学びたい方向けに、おすすめスクールや学習サービスを紹介します。

おすすめスクール

SAMURAI ENGINEERは、挫折しにくいと人気のおすすめスクールです。一人ひとりに合わせた個別カリキュラムをもとに、マンツーマンでレッスンを行います。もちろんプログラミング未経験でも受講可能です。SAMURAI ENGINEERの独自プログラムであるS2DGs(Samurai Sustainable Development Goals)特別優待プログラムには、小中高生のお子さんや女性向けの特別メニューが組まれています。家族で一緒に受講したい方は、検討してみてはいかがでしょうか。

おすすめ学習サービス(子ども向け)

子ども向けの学習サービスとしておすすめしたいのが、LITALICOワンダーです。ゲーム&アプリエキスパートコースは小学3年生から高校生までが対象で、Unityを使ったスマホゲームの開発やJavaScriptを使ったWeb制作などを指導しています。教室は首都圏にありますが、オンライン受講にも対応しているので、遠方の方も安心してください。

おすすめ学習サービス(大人向け)

大人向けの学習サービスなら、Game Engineer Academyがおすすめです。Unreal Engineについて学びを深めながら、ゲーム開発のノウハウを身に付けられます。応募資格を満たさなければならないことや面談による選考を通過するというハードルはありますが、入学金や授業料は完全無料、そして完全オンライン対応な点は大きな魅力です。数ヶ月かけてじっくりとゲーム開発の知識やスキルを身に付けたい方は、受講を検討してみてください。

自作ゲームを公開できるサイト

自作ゲームの動作確認が問題なく終わったら、ぜひ公開してみましょう。ブラウザゲームやPCゲームなどゲームの種類にもよりますが、初心者でも気軽に使いやすいのはふりーむ!です。ユーザー数が多いことで知られる老舗サイトで、ここからダウンロードしたゲームの実況を行う動画投稿者も増えています。無名であっても、さまざまな人に自作ゲームを楽しんでもらうチャンスを掴めるかもしれません。

スマホゲームの場合は、iOSならApp Store、AndroidならGoogle Playで公開できます。どちらも登録や審査などの手続きが必要です。とはいえ、公開手順をわかりやすくまとめたサイトも充実しているので、初心者でも利用しやすいでしょう。

“オープンソース技術の実践活用メディア” をスローガンに、インプレスグループが運営するエンジニアのための技術解説サイト。開発の現場で役立つノウハウ記事を毎日公開しています。

2004年の開設当初からOSS(オープンソースソフトウェア)に着目、近年は特にクラウドを取り巻く技術動向に注力し、ビジネスシーンでOSSを有効活用するための情報発信を続けています。クラウドネイティブ技術に特化したビジネスセミナー「CloudNative Days」や、Think ITと読者、著者の3者をつなぐコミュニティづくりのための勉強会「Think IT+α勉強会」、Web連載記事の書籍化など、Webサイトにとどまらない統合的なメディア展開に挑戦しています。

また、エンジニアの独立・起業、移住など多様化する「働き方」「学び方」「生き方」や「ITで社会課題を解決する」等をテーマに、世の中のさまざまな取り組みにも注目し、解説記事や取材記事も積極的に公開しています。

連載バックナンバー

キャリア・人材技術解説

Kubernetes資格の完全制覇を証明する「Kubestronaut」とはどんな人?

2024/11/29
本記事では、Kubernetesの資格を全て取得すると得られる称号「Kubestronaut」について紹介します。
データベース技術解説

実に6年ぶり!「MySQL」のメジャーバージョン「8.4.0 LTS」が新しいリリーススタイルで登場

2024/6/19
2024年4月30日に、MySQLの新たなメジャーバージョン「MySQL 8.4.0」がリリースされました。本記事では、MySQLの新しい開発モデル「LTS」版と「Innovation Release」について紹介します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています