自分で作った英単語や文章のスペルと意味のリストを使った暗記を考えています.ランダムに意味を表示し,その意味の英単語・文章をキーボードで入力し,正解なら発音するという流れのものです.自作する場合のお勧めツールや言語を教えて下さい.また,すでにそんなソフトがあったらそれも教えて下さい.

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2011/10/17 22:25:48
  • 終了:2011/10/21 22:46:36

ベストアンサー

id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912011/10/18 00:01:27

ポイント100pt

マクロで簡単に作ってみました。


下記のようにEXCEL のA列に単語、B列に意味を入れて、下のマクロを実行してみてください。

 AB
1Appleりんご
2Orangeみかん
3Bananaバナナ
4Grapeぶどう
5Strawberryいちご

マクロの使い方:

  1. Excel で Alt+F11 で VBE を起動
  2. VBE で 「挿入」メニューから「標準モジュール」を選択
  3. 開いたウィンドウに下記のコードをコピー
  4. Excel に戻って Alt+F8 でWordQuiz を実行

終了は END を入力です。

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Sub WordQuiz()
    Dim r As Long
    Dim rr As Long
    Dim i As Long
    Dim wd As String
    Randomize
    Do
        rr = r
        Do While rr = r
            r = Int(Rnd() * Range("A1").End(xlDown).Row) + 1
        Loop
        wd = ""
        For i = 1 To 3
            wd = InputBox("意味:" & Cells(r, "B").Value, "回答" & i & "回目", wd)
            
            '// 「END」 で終了
            If UCase(wd) = "END" Then
                Application.Speech.Speak "Good Bye"
                Exit Sub
            End If
            
            '// 合っていたら読み上げ
            If UCase(wd) = UCase(Cells(r, "A").Value) Then
                Application.Speech.Speak wd
                Exit For
            Else
            '// 外れ
                Beep 120, 300
                Sleep 50
                Beep 120, 800
            End If
        Next
        If i = 4 Then
            Application.Speech.Speak "Answer is " & Cells(r, "A").Value
            MsgBox Cells(r, "A").Value, , "答え"
        End If
    Loop
End Sub

Mac では say が読み上げコマンドのようです。

Mac はもっていませんので未検証ですが、下記のコードではダメでしょうか。


Option Explicit

Sub WordQuiz()
    Dim r As Long
    Dim rr As Long
    Dim i As Long
    Dim wd As String
    Randomize
    Do
        rr = r
        Do While rr = r
            r = Int(Rnd() * Range("A1").End(xlDown).Row) + 1
        Loop
        wd = ""
        For i = 1 To 3
            wd = InputBox("意味:" & Cells(r, "B").Value, "回答" & i & "回目", wd)
            
            '// 「END」 で終了
            If UCase(wd) = "END" Then
                MacScript("do shell script ""say 'Good Bye'""")
                Exit Sub
            End If
            
            '// 合っていたら読み上げ
            If UCase(wd) = UCase(Cells(r, "A").Value) Then
                MacScript("do shell script ""say '" & wd & "'""")
                Exit For
            Else
            '// 外れ
                MacScript("do shell script ""say 'Boo'""")
            End If
        Next
        If i = 4 Then
            MacScript("do shell script ""say 'Answer is " & Cells(r, "A").Value & "'""")
            MsgBox Cells(r, "A").Value, , "答え"
        End If
    Loop
End Sub

http://members3.jcom.home.ne.jp/daruma_kyo/info/shell.html

http://d.hatena.ne.jp/nacookan/20110724/1311468103

id:taki

すばらしい!

簡単につくれるもんですね.

やってみたところ,読み上げのところでエラーになるので調べてみます.

マクロ使った事がなかったのですが,便利そうですね.

2011/10/18 08:19:38
id:Mook

Mac だったんですね。

Mac 用のコードを追加しました。

2011/10/22 12:46:39

その他の回答(2件)

id:atukunn No.1

ATU回答回数55ベストアンサー獲得回数102011/10/17 22:46:06

ポイント30pt

コードとか簡単だと思うけど

Visual Basicぐらいかな。

Microsoftが出してるから信用はあると思うけど。

あとはCとかC#とかC++とか(言語難しいねやっぱり)。

参考になったらうれしいです、はい。

DL↓

Microsoft Visual Studio Express

参考HP VB中学校

http://homepage1.nifty.com/rucio/main/main.htm

id:taki

ありがとうございます.

Visual Basicを見直したので,ちょっと勉強してみます.

2011/10/21 22:45:04
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912011/10/18 00:01:27ここでベストアンサー

ポイント100pt

マクロで簡単に作ってみました。


下記のようにEXCEL のA列に単語、B列に意味を入れて、下のマクロを実行してみてください。

 AB
1Appleりんご
2Orangeみかん
3Bananaバナナ
4Grapeぶどう
5Strawberryいちご

マクロの使い方:

  1. Excel で Alt+F11 で VBE を起動
  2. VBE で 「挿入」メニューから「標準モジュール」を選択
  3. 開いたウィンドウに下記のコードをコピー
  4. Excel に戻って Alt+F8 でWordQuiz を実行

終了は END を入力です。

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Sub WordQuiz()
    Dim r As Long
    Dim rr As Long
    Dim i As Long
    Dim wd As String
    Randomize
    Do
        rr = r
        Do While rr = r
            r = Int(Rnd() * Range("A1").End(xlDown).Row) + 1
        Loop
        wd = ""
        For i = 1 To 3
            wd = InputBox("意味:" & Cells(r, "B").Value, "回答" & i & "回目", wd)
            
            '// 「END」 で終了
            If UCase(wd) = "END" Then
                Application.Speech.Speak "Good Bye"
                Exit Sub
            End If
            
            '// 合っていたら読み上げ
            If UCase(wd) = UCase(Cells(r, "A").Value) Then
                Application.Speech.Speak wd
                Exit For
            Else
            '// 外れ
                Beep 120, 300
                Sleep 50
                Beep 120, 800
            End If
        Next
        If i = 4 Then
            Application.Speech.Speak "Answer is " & Cells(r, "A").Value
            MsgBox Cells(r, "A").Value, , "答え"
        End If
    Loop
End Sub

Mac では say が読み上げコマンドのようです。

Mac はもっていませんので未検証ですが、下記のコードではダメでしょうか。


Option Explicit

Sub WordQuiz()
    Dim r As Long
    Dim rr As Long
    Dim i As Long
    Dim wd As String
    Randomize
    Do
        rr = r
        Do While rr = r
            r = Int(Rnd() * Range("A1").End(xlDown).Row) + 1
        Loop
        wd = ""
        For i = 1 To 3
            wd = InputBox("意味:" & Cells(r, "B").Value, "回答" & i & "回目", wd)
            
            '// 「END」 で終了
            If UCase(wd) = "END" Then
                MacScript("do shell script ""say 'Good Bye'""")
                Exit Sub
            End If
            
            '// 合っていたら読み上げ
            If UCase(wd) = UCase(Cells(r, "A").Value) Then
                MacScript("do shell script ""say '" & wd & "'""")
                Exit For
            Else
            '// 外れ
                MacScript("do shell script ""say 'Boo'""")
            End If
        Next
        If i = 4 Then
            MacScript("do shell script ""say 'Answer is " & Cells(r, "A").Value & "'""")
            MsgBox Cells(r, "A").Value, , "答え"
        End If
    Loop
End Sub

http://members3.jcom.home.ne.jp/daruma_kyo/info/shell.html

http://d.hatena.ne.jp/nacookan/20110724/1311468103

id:taki

すばらしい!

簡単につくれるもんですね.

やってみたところ,読み上げのところでエラーになるので調べてみます.

マクロ使った事がなかったのですが,便利そうですね.

2011/10/18 08:19:38
id:Mook

Mac だったんですね。

Mac 用のコードを追加しました。

2011/10/22 12:46:39
id:kuroyuli No.3

ももんがらす回答回数249ベストアンサー獲得回数542011/10/18 11:03:49

ポイント30pt

P-Study Systemというソフトでかなり近いことが出来そうですが、いかがでしょう。

忘却曲線などを加味して効率的な出題方法をプログラミングするのは手間だと思いますし。

id:taki

良さそうなんですが,Macなんで・・・

2011/10/20 23:29:02
  • id:Mook
    読み上げ機能(Speech) は Vista 以降は特に何もせずに使用できると思いますが、XP では .Net を入れる必要があるかもしれません。

    詳細は下記のようなサイトを参照ください。
    http://msdn.microsoft.com/en-us/library/aa224473%28v=office.11%29.aspx
    http://denspe.blog84.fc2.com/blog-entry-103.html
  • id:Mook
    自動終了かな・・・。
  • id:taki
    Macユーザーなんで,いろいろ調べてみましたが,読み上げの所が難しそうです.
    Speechの所とBeepのところをコメントアウトして動作は確認しました.
    ありがとうございます.
  • id:taki
    できました! > Mookさん

    MacScript("do shell script ""say 'Good Bye'""")
    だと実行時エラーになったのですが,
    MacScript("do shell script ""say 'Good Bye'""""")
    とすることで上手く行きました!

    ありがとうございます.

    こんな数行でやりたかったことが出来るなんて驚きました.
    質問してみるもんですね.
  • id:Mook
    手作りのいいところはいろいろな工夫ができることですね。

    他の所で出ていましたけど、正解率の低い問題を出やすくするとか、
    各問題ごとに正解率を記録したりとか、工夫するとより使いやすくなると思います。
  • id:atukunn
    MACなんですか?
    VBは無理でしたっけ?
    ランタイムがどうのこうの…。
  • id:Mook
    しかし
    MacScript("do shell script ""say 'Good Bye'""""")
    で動く理由がよくわかりません。

    よくこれが見つかりましたね。

この質問への反応(ブックマークコメント)

トラックバック

  • VBA の Speech 機能 **[気になる質問] マクロの読み上げ機能 興味深い質問を見たので、マクロで組んでみた。 短いものだが我ながら中々面白い。 読み上げ機能もこれまで使ったことがなかっ
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません