気楽なソフト工房

プログラミングについていろいろな記事を書いています。



mykonos2008

Author:mykonos2008
システムエンジニアとして働いている30代の会社員です。
仕事や趣味でプログラムを書いている方の役に立つ記事を書いていきたいと思っています。
ご意見、ご感想はこちらまで
If you are an english speaker,Please visit my english blog.

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
本日、ご紹介したい曲はWhitney Houston(ホイットニー・ヒューストン)の「I Will Always Love You(オールウェイズ・ラブ・ユー)」です。
自身が主演した映画「ボディカード」の主題歌としても有名な曲で、「Whitney Houston」最大のヒット曲です。



「I Will Always Love You」の歌詞

独特のホイットニー節がかかっているので、若干聞きづらいかもしれませんが、曲調はゆっくりしているので、繰り返し聞けば、
ヒアリングできるようになると思います。使われている単語や表現も簡単なので、練習用に向いていると思います。

この曲は、日本ではよく結婚式のBGMとして使われるのですが。。。実は、とても悲しい別れの歌なのです。
サビの部分は「I will always love you」なのですが、出だしの部分で、それがわかります。

「If I should stay I would only be in your way」の部分についてですが、
「should」が「if」と一緒に使われるとifを強調する作用があります。後半の「be in one's way」~の邪魔になると言う意味です。
この一文を訳すと「もし万が一、私が残ったとしたら、私はあなたの邪魔になるでしょう。」という意味です。

続く、「So I'll go,but I know I'll think of you every step of the way」の部分は、
「私は去るけど、一歩歩く毎に私はあなたを思うでしょう」って感じです。

いわゆる「別れてもすきな人~」系の歌なのです。

○Pickup文法解説
サビの前に出てくる「We both know I'm not what you need」の部分に、関係代名詞「What」が
使われています。「What」は 「the thing which」に置き換えることができるので、この部分は
「私はあなたが必要とするものではない」となります。

スポンサーサイト
WPFではタスクトレイ(システムトレイ)にアイコンを表示させるためのコンポーネントが提供されていません。
でも、ご心配なく。System.Windows.FormsのNotifyIconを使う方法があります。

タスクトレイにアイコンを表示し、一度、WPFウィンドウを閉じても、タスクトレイアイコンを
クリックすることで再表示させるアプリケーションを作ってみました。

まず、WPFアプリケーションのメインウィンドウクラスにSystem.Windows.FormsのNotifyIconのインスタンス変数を宣言します。

    public partial class MainWindow : Window
    {
        private System.Windows.Forms.NotifyIcon _notifyIcon;
///省略

そしてメインウィンドウのコンストラクタでNotifyIconを初期化し、タスクトレイに表示されるようにします。

    public MainWindow()
    {
        InitializeComponent();

        //タスクバーに表示されないようにする
        ShowInTaskbar = false;

        //タスクトレイアイコンを初期化する
        _notifyIcon = new NotifyIcon();
        _notifyIcon.Text = "タスクトレイサンプル";
        _notifyIcon.Icon = new System.Drawing.Icon("app.ico");

         //タスクトレイに表示する
        _notifyIcon.Visible = true;

         //アイコンにコンテキストメニュー「終了」を追加する
         ContextMenuStrip menuStrip = new ContextMenuStrip();

         ToolStripMenuItem exitItem = new ToolStripMenuItem();
         exitItem.Text = "終了";
         menuStrip.Items.Add(exitItem);
         exitItem.Click += new EventHandler(exitItem_Click);

         _notifyIcon.ContextMenuStrip = menuStrip;

         //タスクトレイアイコンのクリックイベントハンドラを登録する
         _notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(_notifyIcon_MouseClick);
    }

NotifyIconのIconに設定するアイコン画像は、プロジェクトに追加し、プロパティを修正して
ビルドアクションを「なし」に、「出力ディレクトリにコピー」を「新しい場合はコピーする」に設定しました。

こうすることでICONファイルがアセンブリに埋め込まれず、ビルド時に、exeファイルと同じディレクトリに
出力されるようになります。そして、System.Drawing.Iconクラスのコンストラクタには、exeファイルからの
相対パスを指定しています。

リソースとして埋め込むことができない(と思います)ので、こうしました。

そして、タスクトレイのアイコンに、コンテキストメニューを設定し、アプリケーションを終了させるための
「終了」メニューを追加しています。

次にウィンドウが閉じられても、アプリケーションが終了しないように、ウィンドウのClosingイベントを処理します。

    //ウィンドウが閉じられる前に発生するイベントのハンドラ
    private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        try
        {
            //閉じるのをキャンセルする
            e.Cancel = true;

            //ウィンドウを非可視にする
            Visibility = System.Windows.Visibility.Collapsed;
        }
        catch { }
    }

実際には閉じられる際に、閉じる処理をキャンセルし、ウィンドウを見えなくするようにしています。

そして、NotifyIconがクリックされると、ウィンドウを再表示するようにしています。

    //NotifyIconのクリックイベントのハンドラ
    private void _notifyIcon_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        try
        {
            if (e.Button == MouseButtons.Left)
            {
                //ウィンドウを可視化
                Visibility = System.Windows.Visibility.Visible;
                WindowState = System.Windows.WindowState.Normal;
            }
        }
        catch { }
    }

NotifyIconに設定したコンテキストメニューの終了メニューがクリックされるとアプリケーションを終了させます。

    //終了メニューのイベントハンドラ
    private void exitItem_Click(object sender, EventArgs e)
    {
        try
        {
            _notifyIcon.Dispose();
            System.Windows.Application.Current.Shutdown();
        }
        catch { }
    }

意外と簡単にできました。

それにしても何故、WPFで提供しないのか不思議です。何度もリクエストが挙っているみたいですが、
「WPFはあくまでもプレゼンテーションライブラリなので」という理由で却下されているようです。。。。

WPFのComboBoxでは「TextChanged」イベントが提供されていません。これが結構不便な時があります。
TextInputイベントだと「Backspace」や「Space」が拾われません。KeyDownイベントだと、
拾えるのですが、自分でTextに対して処理をしなければいけません。これは面倒くさいです。

そこでComboBox内のTextBoxにアクセスするためのテクニックをご紹介します。

まず、ComboBoxを拡張したカスタムコントロールを作成します。コントロールのスタイルに関しては
ComboBoxのものをそのまま使いたいので、以下のようにします。

   static ConditionComboBox()
   {
       //ComboBoxの見栄えを採用する
       DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomComboBox), 
              new FrameworkPropertyMetadata(typeof(ComboBox)));
   }

最初はGeneric.xamlに定義するカスタムコントロール用のスタイルを使用するように指定されているのですが、
これをComboBoxのスタイルを使用するように変更します。(黄色字の部分)

次にOnRenderメソッドをオーバーライドして次のように記述します。

   protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
   {
       base.OnRender(drawingContext);

       //ComboBox内のTextBoxを取得する
       TextBox textBox = this.GetTemplateChild("PART_EditableTextBox") as TextBox;

       //TextChangedイベントにハンドラを登録する
       textBox.TextChanged += new TextChangedEventHandler(textBox_TextChanged);
   }

この方法は、TextBoxに直接アクセスできるので、TextChangedイベントを処理する他に、
TextBoxの挙動を変えたい場合などにも使えます。

さて、本日、ヒアリングの練習用として紹介したい歌は「Paula Cole(ポーラ・コール)」の「I don't want to wait(アイ・ドント・ウォント・トゥ・ウェイト)」です。
日本では、映画「シティ・オブ・エンジェル」のCMソングとして起用されて有名になった曲です。私もレンタルビデオ屋さんで、
ビデオを選んでいる時、偶然流れてきたこの曲を聞いて瞬間的に好きになりました。



「I don't want to wait」の歌詞

明るく、楽しい感じがするこの歌ですが、その内容は天使と人間が恋に落ちるという映画のそれとは、まるで似合わないものです。
第2次世界大戦に出征した夫を思いやり、平和への願いを訴えています。

この曲は出てくる単語や、表現が簡単で、聞き取りがしやすい歌い方がされているのでリスニングの教材としてお勧めしたいです。
ところどころ理解するのが難しいパートがあるのですが、そこら辺は無理に理解しようとせず、
分かる部分だけヒアリングするだけでも十分練習になると思います。

○Pickup構文解説
①wait for {名詞} to do
サビの部分の「I don't want to wait our lives to be over」で使われている「wait for {名詞} to do」は、
{名詞}がtoの後ろの動詞を行うのを待つという意味です。歌の中では「私達の人生が終わるのを待ちたくない」と
なります。

日常生活でもいろんな場面で使えます。
例) I wait for my child to fall asleep. 子供が寝るのを待つ

②It is {名詞/形容詞} to 動詞(不定詞)
「It's so hard to be gentle and warm」の部分で使われている構文です。この構文では先頭の「It」が後ろのto + 動詞で構成される「不定詞」
を指しますので、この部分は、「やさしく、暖かくなることが、とても難しい」という意味になります。

この表現も日常的に使用可能です。
例) "It is fun to study English. 英語を勉強するのは楽しいよ。

○Pickup単語解説
①wear
wearは日本語の着るよりも幅広い意味を持っている単語です。この歌では2箇所に使われています。
「wearing shrapnel in his skin」の部分と「wearing your anguish again」の部分です。
前者は、「銃弾の破片(shrapnel)による傷が皮膚にある」という感じの意味なのです。後者は
「苦悩の表情を浮かべる」と言う意味です。広い意味で身に着けているイメージを持って頂ければ
良いかなと思います。


WPFのListViewを初めて使用する方は、WindowsフォームのListViewでいう「LargeIconモード」が、WPFのListViewでは提供されていないことに
驚きとショックを受けるのではないでしょうか?

私もショックを受けた1人です。先日、発表させていただいた英会話学習ソフト「イメージで覚える英単語」では、
LargeIcon風のデザインで、英単語と英単語に対応した画像を表示しています。

(画面ショット)


これをやるために、ListViewを使おうとしたのですが、WPFのListViewにある表示モードでは、それが出来ないことが分かり愕然としました。
一時はListViewをあきらめて、WrapPanelで実装しようかと思っていたのですが、DataBindingや項目選択の機能など、
欠かせない機能があるため、ListViewを拡張する決心をしました。

ネット上のリソースをいろいろ探したところ、いくつかやり方があるみたいでしたが、以下のサイトのやり方を
参考に、実装しました。

How to Create a Custom View

ざっくり言うと、やることは以下の3つです。
1. 新しい表示モードが使用するスタイルを定義する。
2. ListViewの表示モードの基底クラスであるViewBaseを拡張し、新しい表示モードを作成する。
3. ListViewの表示モード(Viewプロパティ)に作成した表示モードを指定する。

まず、1番目のスタイル定義から説明します。
「Themes」ディレクトリ以下に、「Generic.xaml」を作成し、以下のようにして、
「ListView」と「ListViewItem」のスタイルを定義しまます。

<ResourceDictionary xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
                    xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
                    xmlns:l="clr-namespace:ImageWord.Controls">   
    <!-- ListViewのスタイル定義 -->
    <Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type l:ImageView},
                                               ResourceId=ImageView}" ・・・・①
        TargetType="{x:Type ListView}" BasedOn="{StaticResource {x:Type ListBox}}">
        <Setter Property="BorderBrush" Value="Black"/>
        <Setter Property="BorderThickness" Value="0.5"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border Name="bd" BorderBrush="{TemplateBinding BorderBrush}" 
                           BorderThickness="{TemplateBinding BorderThickness}"
                        Background="{TemplateBinding Background}" Margin="{TemplateBinding Margin}">
                        <ScrollViewer Margin="{TemplateBinding Padding}">
                            <WrapPanel ItemWidth="160" IsItemsHost="True" MinWidth="100"
                              Width="{Binding ActualWidth,
                                RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}">
                            </WrapPanel>
                        </ScrollViewer>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    <!-- ListViewItemのスタイル定義 -->
    <Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type l:ImageView},
                                        ResourceId=ImageViewItem}" ・・・・②
         TargetType='{x:Type ListViewItem}' BasedOn='{StaticResource {x:Type ListBoxItem}}'>
        <Style.Resources>
            <l:UriImageConverter x:Key="uriImageConverter"/>
        </Style.Resources>
        <Setter Property='Padding' Value='3'/>
        <Setter Property='Margin' Value='5'/>
        <Setter Property='HorizontalContentAlignment' Value='Center'/>
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Border Background="White">
                        <StackPanel Orientation="Vertical">
                            <Grid Width="150" Height="126">
                                <Image Margin="0,3,0,3" Source="{Binding ImageFullPath}" ・・・・③
                                      Width="{Binding PreferredWidth}" Height="{Binding PreferredHeight}"/>
                             </Grid>
                            <TextBlock Text="{Binding Text}" TextWrapping="Wrap" HorizontalAlignment="Center" 
                                       FontSize="15" Name="WordText" Foreground="Black" Margin="0,0,0,5"/>
                        </StackPanel>
                    </Border>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ResourceDictionary>

設定したスタイルの内容の詳細は省略させて頂きますが、ポイントの1つ目は、それぞれ「ListView」と「ListViewItem」を
TargetTypeとするスタイルを定義することです。

そして、2つ目のポイントは、それぞれのスタイルの「x:key」にComponentResourceKeyを指定することです。(上記①と②)
なぜ、「ComponentResourceKey」で無ければならないか・・・・すみません、分かりません。真似しました。
(サンプルをいくつか見ましたが、みんなこうしていました。理由が分かる方、教えてくださいませ。)
ここに指定したキーを後で、ViewBaseを拡張したクラスの中で使用します。

③の部分で、ListViewItemのContentTemplateの中にImageを定義していますが、SourceのBindingに指定している
「ImageFullPath」はListViewにバインドしたコレクション(ObservableCollection)に格納されている要素の
属性です。
(ちょっと分かりにくいですね。。OberservableCollectionにWordというクラスを詰めてそれをListViewにバインドしています。
そして、WordクラスのプロパティとしてImageFullPathが定義されていて、そこに画像のフルパスが設定されています。)

2つめの手順はViewBaseの拡張です。

namespace ImageWord.Controls
{
    public class ImageView : ViewBase
    {
        //ListViewのスタイルのキーを返す
        protected override object DefaultStyleKey
        {
            get { return new ComponentResourceKey(GetType(), "ImageView"); }
        }

        //ListViewItemのスタイルのキーを返す
        protected override object ItemContainerDefaultStyleKey
        {
            get { return new ComponentResourceKey(GetType(), "ImageViewItem"); }
        }
    }
}

といってもやることは少しです。ViewBaseのプロパティ「DefaultStyleKey」と「ItemContainerDefaultStyleKey」
をオーバーライドして「Genaric.xaml」でListViewとListViewItem用に定義したスタイルに割り当てたキーを
返却するだけです。

「Genaric.xaml」ではこんな風にキーを定義していました。

x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type l:ImageView},ResourceId=ImageView}"

TypeInTargetAssemblyにImageViewのTypeインスタンスをResourceIdにImagwViewという文字列を指定しています。
ViewBaseで返却しているComponentResourceKeyにも同じ指定をしていることが分かると思います。

最後の3番目の手順ですが、XAMLでListViewのViewに作成したImageViewクラスを指定します。

     <ListView>
         <ListView.View>
             <l:ImageView/>
         </ListView.View>
     </ListView>

後はListViewのItemsSourceにデータソースになるコレクションを設定するのみです。

前回の記事で発表させていただいた英会話学習ソフト「イメージで覚える英単語」のソースを公開します。
お世辞にもきれいなソースになっていないので、公開するか迷ったのですが、1点だけ皆さんのお役に立つかなと
思ったところがあるので、公開することにしました。

「イメージで覚える英単語」はWPFアプリケーションとして作成しました。今回の開発にあたり最も苦労したのは、
ListViewの表示をカスタマイズするところです。WPFのListViewは、Windowsフォームで言うLargeIconモードやSmallIconモードに
対応していません。

今回作成した「イメージで覚える英単語」では、「LargeIcon」風に単語のイメージと、単語を表示したかったので、
これを実現するのが結構手間でした。

(画面イメージ)


WPFではListViewの見栄えはViewBaseというクラスで定義されています。今回、このViewBaseというクラスを拡張し、LargeIcon風のデザインを
実現しました。実際にはViewBaseを拡張したクラスでは、「Generic.xaml」に定義した「ListView」と「ListViewItem」のStyleを使用するように
指定しているだけので、ポイントは「Generic.xaml」に定義するStyleにあります。

この「ListView」の拡張方法は参考にしていただける部分があるかなと思いました。
一度、見てみてください。

「イメージで覚える英単語」のソースダウンロード

本日は、英会話学習用のソフト「イメージで覚える英単語」を作りましたので、それを発表させていただきます。

「イメージで覚える英単語」は英単語を「イメージ(画像)」と関連付けて暗記する支援を行う単語帳ソフトです。
通常の単語帳の場合、英単語とそれに対応する和訳が載っていることが多いと思います。「イメージで覚える英単語」は
イメージに対する英単語を登録して、管理する単語帳ソフトです。

下記が「イメージで覚える英単語」の画面イメージです。

(クリックすると拡大されます)


日本語の訳を入力する欄は設けていません。

実は、英語をマスターするためには、英単語とそれに対する和訳をセットで覚えることは必ずしもプラスではありません。
英語を話す時や理解する時に常に日本語に置き換えてしまう癖が出来てしまうからです。

とはいえ、長年日本語を母国語として、暮らしている日本人にとっては、日本語を意識せずに英語を覚えることは
簡単なことではありませんし、時に日本語に置き換えることも止むを得ない場合もあります。

このソフトは少しでも日本語から離れて直接、英語を覚えるための、支援を行う目的で作成しました。
「バナナ」=「banana」ではなく、「バナナの画像」= 「banana」と覚えることが日本語を意識せず、
直接英語を覚えるひとつの方法だと考えています。

このソフトで以下のようなことが出来ます。
・単語をイメージとセットで登録する。
・イメージに対する単語を閲覧する。
・単語の発音を登録し、再生する。
※単語の発音データは以下のサイトでダウンロードすることが出来ます。
Forvo
excite辞書(スピーカー横の矢印リンクを右クリックして「対象をファイルに保存」します。)

・単語テストを行う。

この学習方法は英語を日本語に直す癖がついていない子供たちには特に効果があるのではと考えています。
是非、このソフトで試してみてください。

「イメージで覚える英単語」のダウンロード


「洋楽で学ぶ英会話」は英会話のヒアリングに適した洋楽の曲を紹介するコーナーです。
今日、紹介する曲は、Lady Antebellum(レディ・アンティベレム)の「Need You Now」です。Lady Antebellumは
まだ、日本ではそれほどメジャーではありませんが、2010年のグラミーで「カントリー部門グループパフォーマンス」をとったグループです。

「Need You Now」は2009年に発表された曲ですが、一度、聴けばすぐに好きになる心地よい曲です。使用されている表現もとても
簡単なので、英会話とヒアリングの練習用にお勧めしたい曲です。

「Need You Now」(Youtube)
「Need You Now」の歌詞

歌の内容は「Need You Now」というタイトルの通り、「あなたが今必要よ。もうどうしようもできない」みたいな曲です。

○ちょっとした解説
この歌では全体的に簡単な表現が使われているのですが、少しだけ難しそうなところを説明します。

曲冒頭の「Picture perfect memories,scattered all around the floor」の部分についてです。
「Picture perfect」は「絵に描いたように完璧な」と言う意味なので、絵に描いたような記憶がフロア中に
scattered(散らかっている)しているという意味になります。

あと、「And I wonder if I ever cross your mind」についてですが、「cross one's mind」は「心をよぎる」という意味です。
「wonder if」は中学の英語でもよく出てきたやつですが、「(if以降の文章)かどうかしら?」っていう意味です。
なので、全体としては、「あなたの心に私がよぎるのかな」っていう感じです。

ヒアリングの練習には意味が分かることは必須ではないと思っていますが、分かっていれば
歌詞を覚えるのが早くなる効果はあると思います。

前々回の記事の繰り返しになりますが、洋楽を使って英語を上達させるためには、
歌詞に集中して歌を聞く必要があります。ただリラックスして聞いているだけではだめです。

意識を集中して聴いていればそのうち歌詞も覚えてきますので、
そしたら、今度は、歌詞を見ずに歌を聞き取る練習をしてください。これは満員の通勤途中でも
出来ることだと思います。

是非、楽しみながら、がんばってください。

本日の「洋楽で学ぶ英会話」で紹介する曲は、「We are the world」です。

洋楽をあまり聴かない人でも一度は耳にしたことがあるかもしれないほど、有名な曲です。アフリカの飢餓と貧困を救済するために1985年に発売された曲で、
あの「マイケル・ジャクソン」と「ライオネル・リッチー」が共同で作成しました。この曲には45人の著名なアーティストが無償で参加しています。
発売と同時に世界中でチャート1位を獲得しました。



単語が一つ一つ、しっかりと発音されている曲なので聞き取りがとてもし易く、教材として非常にお勧めの一曲です。
表現も簡易なので、理解も簡単にできる内容になっています。英会話の学習教材としてもピカイチの曲です。
「We are the world,we are the children」の部分は日本語では「私たちは仲間。私たちは神の子供」とよく訳されています。

この曲はキリスト教の色合いが濃い曲でところどころキリスト教的な表現が出てきます。
「And their lives will be stronger and free,As God has shown us by turning stones to bread」
の部分なんかはまさにそうですね。

○ワンポイント文法
「There comes a time when we heed a certain call,when the world must come together as one」
曲の冒頭の部分ですが、関係副詞「when」が使われています。2つのwhenから始まる節が、「a time」を
修飾しています。

英会話を勉強する上で常に日本語の訳に捕らわれてしまうのはよい事ではないと思っています。
ここで大事なのは、「when」から始まる関係副詞節が、前の「a time」を修飾しているという
関係を理解し、訳さずに文章をそのまま理解するように努力することです。

唐突ですが、本日は私が英会話を身に付けた中で役にたった方法を1つ紹介させていただきます。

私が本格的に英語を勉強し始めたのは、大学生に入ってからでした。大学の同じクラスに何人か留学生が来ていて、
彼らと友達になったことがきっかけでした。最初はNHKのラジオを聴いたり、英語学習の本を買ったりしてみたのですが、
正直なかなか興味が持てず、上達があまり進みませんでした。

そこでもうちょっと楽しく勉強できる方法がいいなと思い、当時人気があったマライア・キャリーの歌を聴いて英語を勉強しよう!と
思いつき、CDを買ってきて、歌詞を見ながらひたすら歌を聴きました。数回聴くうちにすぐにマライア・キャリーのファンになりました。

そうするとしばらくするうちに、歌詞を見なくても何となく歌を口ずさむことができるようになったのです。
歌詞の意味は高校までで、習ってきた文法と単語力で何とか分かりました。また、訳詩もついていたので、
それを見て理解しました。

これをマライア・キャリーだけではなくいろんな歌手の歌について繰り返しているうちに、
初めて聴く歌やNHKのラジオの内容が何となく分かるようになってきました。

そして、不思議なことに片言ですが、留学生と英語で会話を交わせるようにもなっていきました。

私が実践したことのポイントはただ洋楽を聴いたということではなく、歌詞カードを見ながら
歌詞に集中して歌を聴いたことではないかと思っています。


私は現在ある程度のレベルまで英語を話せるのですが、もちろんその全ての英語力が
歌を聞くだけで身についたわけではありません。が、私には、歌は英会話の学習に入っていく段階において、
とても効果がありました。

この方法のよい点はまず何より楽しく英語を勉強できる点です。英語の歌にもたくさんのすばらしい歌が
あります。それを聴くことは決して苦痛ではありません。

そして、もう一つは発音がきれいにできるようになることです。
たまに日本人の歌手で英語を話せないけど、きれいな発音で英語の歌を歌える方がいます。
おそらくたくさん聴いて練習されたのではと思います。たくさん聴くことはきれいな発音にもつながります。

是非是非、好きな歌を見つけて、歌詞カードを片手に聴いてみてください。

ちなみに英会話学習という観点で私のお勧めの歌手はやはり「カーペンターズ」です。
「カーペンターズ」の歌は童謡よりもきれいにはっきりと丁寧に単語を発音しています。

※お断り
これまで、当ブログはプログラミング言語「C#」の話題を中心に記事を書いてきたので、よく訪問してくださる方には、
今回の記事は唐突かと思います。実は私、語学学習も大好きで、いつか英語の学習についてもブログに書いてみたいと思っていました。

ただ、他のブログを持つような時間も無いため、考えた結果、このブログに記事を書かせていただくことにしました。
もちろん、これまでと同じようにC#に関する記事のどんどん書いていきますので、今後ともよろしくお願いします。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。