AngularJS - 翻訳アプリケーション
こんにちは、将来のコードのスーパースター!今日は、AngularJSの世界に足を踏み入れ、翻訳アプリケーションを作成する旅に出かけます。コードを一行も書いたことがない方もご安心ください。私はあなたの親切なガイドとして、ステップバイステップで進めていきます。このチュートリアルの終わりには、異なる言語間でテキストを翻訳できるクールな小さなアプリを作成できるようになります。どれほど素晴らしいでしょうか?
AngularJSとは?
翻訳アプリに取りかかる前に、AngularJSとは何かを理解するために少し時間を取ってみましょう。家を建てていると想像してください。AngularJSは、効率的に家を組織し、構築する助けとなるフレームワークのようなものです。それは、動的なWebアプリケーションを作成するのを簡単にする強力なJavaScriptフレームワークです。
プロジェクトの設定
ステップ1: AngularJSをプロジェクトに含める
まず第一に、プロジェクトにAngularJSを含めます。これを行うには、HTMLファイルにscriptタグを追加します:
<!DOCTYPE html>
<html>
<head>
<title>私の素晴らしい翻訳者</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
</head>
<body>
<!-- アプリのコンテンツここに追加 -->
</body>
</html>
この行のコードは、AngularJSをパーティに招待するようなものです。ブラウザにAngularJSライブラリをロードして、そのスーパーパワーを使えるように指示します。
ステップ2: アプリモジュールを作成する
次に、AngularJSアプリを作成します。これを行うには、bodyの最後にscriptタグを追加します:
<body ng-app="translatorApp">
<!-- アプリのコンテンツここに追加 -->
<script>
var app = angular.module('translatorApp', []);
</script>
</body>
ここで、私たちはAngularJSに、「'translatorApp'というアプリを作りたい」と伝えています。bodyタグのng-app
属性は、AngularJSにアプリの場所を知らせる名札のようなものです。
翻訳アプリの構築
ステップ3: コントローラーを作成する
AngularJSでは、コントローラーはアプリの脳のようなものです。データとアプリの行動を管理します。それでは、一つ作成してみましょう:
<script>
var app = angular.module('translatorApp', []);
app.controller('TranslatorController', function($scope) {
$scope.inputText = '';
$scope.outputText = '';
$scope.translate = function() {
// 翻訳ロジックをここに追加
$scope.outputText = "翻訳中...";
};
});
</script>
このコントローラーは、二つの変数(inputText
とoutputText
)とtranslate
関数を設定します。これらを入力、出力、そして魔法のような翻訳プロセスのコンテナと考えてください。
ステップ4: ユーザーインターフェースを作成する
次に、翻訳者のためのシンプルなインターフェースを作成します:
<body ng-app="translatorApp">
<div ng-controller="TranslatorController">
<h1>私の素晴らしい翻訳者</h1>
<textarea ng-model="inputText" placeholder="翻訳するテキストを入力"></textarea>
<button ng-click="translate()">翻訳</button>
<p>{{ outputText }}</p>
</div>
<!-- Scriptタグここに追加 -->
</body>
これを分解すると:
-
ng-controller
を使って、HTMLをコントローラーと結びつけます。 -
ng-model="inputText"
は、テキストエリアをinputText
変数にバインドします。 -
ng-click="translate()"
は、ボタンがクリックされたときにtranslate
関数を実行するように指示します。 -
{{ outputText }}
はoutputText
の値を表示します。
翻訳機能の追加
ステップ5: 翻訳APIを統合する
翻訳者を実际に動作させるために、翻訳サービスを使用する必要があります。この例では、無料のMyMemory Translation APIを使用します。HTTPリクエストを送信するために、$http
サービスをコントローラーに追加します:
app.controller('TranslatorController', function($scope, $http) {
$scope.inputText = '';
$scope.outputText = '';
$scope.fromLang = 'en';
$scope.toLang = 'es';
$scope.translate = function() {
var url = "https://api.mymemory.translated.net/get?q=" + encodeURIComponent($scope.inputText) + "&langpair=" + $scope.fromLang + "|" + $scope.toLang;
$http.get(url).then(function(response) {
$scope.outputText = response.data.responseData.translatedText;
}, function(error) {
$scope.outputText = "おっと!何かが間違ったようです。";
});
};
});
この更新されたコントローラーには、言語選択が追加され、翻訳関数が呼ばれたときに翻訳APIにリクエストを送信します。
ステップ6: ユーザーインターフェースを更新する
HTMLを更新して言語選択を追加します:
<body ng-app="translatorApp">
<div ng-controller="TranslatorController">
<h1>私の素晴らしい翻訳者</h1>
<select ng-model="fromLang">
<option value="en">英語</option>
<option value="es">スペイン語</option>
<option value="fr">フランス語</option>
</select>
<select ng-model="toLang">
<option value="en">英語</option>
<option value="es">スペイン語</option>
<option value="fr">フランス語</option>
</select>
<textarea ng-model="inputText" placeholder="翻訳するテキストを入力"></textarea>
<button ng-click="translate()">翻訳</button>
<p>{{ outputText }}</p>
</div>
<!-- Scriptタグここに追加 -->
</body>
結論
おめでとうございます!あなたは刚刚、AngularJSを使用してシンプルだが機能的な翻訳アプリを作成しました。以下は、私たちが学んだ主なAngularJSの概念のまとめです:
- AngularJSアプリを設定しました
- コントローラーを作成してアプリの行動を管理しました
- AngularJSディレクティブを使用してユーザーインターフェースを構築しました
- 翻訳APIを統合して実際の機能を提供しました
コードを学ぶことは旅です。初めて難しいと感じる部分があっても、練習を続ければ自然と理解が深まります。実験を続け、学び続け、すぐにあなたもより複雑で素晴らしいアプリを作成できるようになります!
以下は、私たちが使用した主なAngularJSの概念の表です:
コンセプト | 説明 | 例 |
---|---|---|
モジュール | アプリのコンテナ | angular.module('translatorApp', []) |
コントローラー | アプリの行動を管理 | app.controller('TranslatorController', function($scope) {...}) |
スコープ | コントローラーとビューを結びつける | $scope.inputText = '' |
ディレクティブ | HTMLを拡張 |
ng-app , ng-controller , ng-model , ng-click
|
表現式 | 値を表示 | {{ outputText }} |
ハッピーコーディング、そしてあなたの翻訳冒険がバグフリーで学びの多いものになることを祈っています!
Credits: Image by storyset