Introduction
When you develop using AI, you realize it whether you like it or not: Crucial information is skewed toward English. Most of the latest announcements and talks are in English only. There is inevitably a limit to the information available in Japanese.
I have studied English, and reading it is not a problem. However—I cannot understand it when I hear it. English that I can understand when I read it passes right through me when I hear it. Even junior high school level English is impossible for me to grasp when it becomes sound.
I wanted to do something about this "I can read it, but I can't hear it" problem, so I started looking into how to train my listening skills.

I wanted to bridge that one gap: I can read it, but I can't hear it.
Chapter 1: "I can create infinite learning materials"
I researched how to improve listening skills and watched many videos. I understood the method. All that was left was to put in the volume. However, when it comes to preparing as many English sentences as I want that match my level, existing learning materials are finite.
Then I realized: If I use AI, I can create infinite learning materials. Whether it's short junior high level English sentences or my favorite scenes, I can generate as much as I want. What you need for listening practice is a mountain of examples that suit you. AI can spit out as many as you want.
This was the beginning.
Chapter 2: Creating it as an iPhone app for myself
I decided on my policy immediately: Let the AI create the materials. And since I'm making it for myself anyway—why not use the MacBook I recently bought and go ahead and release it as an iPhone app?
What I am making is specialized in "being able to listen." Building up from the junior high school level. The learning flow is as follows:
- First, listen only to the audio (Do not display text. Receive it with your ears)
- Check the answer with the English text and Japanese translation
- One more time with subtitles (Karaoke display where words glow in sync with the reading)
By repeating this, I turn "sounds I can sort of hear" into "sounds that make sense."

Audio only → Answer check → With subtitles. Turn "audible sounds" into "sounds that make sense" in these 3 rounds.
Chapter 3: The target has changed
My initial target was the same demographic as myself—developers who use AI. People who have the same problem: they want to access English information but cannot understand it when they hear it.
If we assume this demographic, the design would be as follows: Since everyone has Claude or Codex at hand, they can just let their own AI create the materials. The operator (me) does not hold content, and generation and distribution are left to the user side.
However, while I was creating it, I rethought my target. If the content is built from junior high school English, it fits young students even better. It's not just developers who are struggling with listening. In fact, students are the primary audience.
As soon as I included students, the previous premise became unnecessary. Students do not have their own AI. The premise that "users create materials with the AI they have at hand" fell apart here.
Chapter 4: The form is decided
Once the premise was removed, the answer was simple: I (the operator) should create the materials with my own AI and distribute them. Users don't need to sign any contracts; they just install the app.
However, when the operator distributes them, all the traffic goes through my side. When I had users create them with their own AI, the material data was handled entirely on their end. By switching to operator distribution, the traffic gathers on my home server. So, I built the distribution mechanism using Cloudflare's caching.
I am only distributing short example sentences (the audio is generated on the device side, so the server just needs to pass the text). By returning this through Cloudflare, the data is copied to the edge (servers distributed around the world) once it is returned, and subsequent requests are handled from there. My home server is only queried for the initial request.
Cloudflare does not cache JSON by default, so I attached the Cache-Control header myself. With that, most access to the same grade level is covered by the cache, which even my weak personal server can handle.
This is the form I shipped with:
- Example sentences are generated daily by me using my AI and distributed. I add content daily by grade level, from first-year junior high to third-year high school.
- Audio is generated within the device. No communication is required, and you can listen as many times as you like.
- No account registration is required. Progress is stored only on the device. No ads, no tracking.
- The first year of junior high is free forever. For the higher grades, there is a subscription for those who want to continue.
The name is Kikoeru (I can hear). "The sounds you can hear become sounds you can understand"—it's exactly what I wanted when I first started.

Install without account registration, select your grade, and start immediately. Progress and settings remain only on the device.
Chapter 5: I didn't want to make it "studying"
What I was most careful about when making this was not to make it feel like "studying." I believe listening is not something you learn by sitting at a desk, but something you get used to by ear. So, I put a bit of effort into the presentation to lean toward that feeling.
I inserted a way of thinking that is considered effective for listening as advice within the app. For example, it goes like this:
- "It's not studying. You're just getting used to it."
- "It's okay to let go of sounds that are too fast to hear."
If you try hard to catch every single sound, you won't continue. It's okay to let the sounds you couldn't hear pass by. I provided that kind of encouragement so that users could relax their shoulders and put in the volume.
Chapter 6: Releasing it was more complicated than making it
Actually, the part about releasing it on the App Store was tougher than making the app itself. When releasing as an individual, everything is complicated, including contracts, tax documents, how to provide terms of service, and review rules. It's a mountain of administrative work and procedures of a different kind from writing code.
I proceeded with all of this by asking Claude. What was needed, in what order to do things, and where to fix what. I asked about things I didn't understand as they came up and followed them right there.
Honestly, if Claude hadn't been there, I think I would have given up at this point.
Conclusion
I, who could read English but couldn't understand it when listening, released an app specialized in listening on the App Store. The trigger was the single point that "If I use AI, I can create infinite learning materials."
Since I expanded the target to students, the plan to "freely create materials with each user's AI" is not included for now. In the future, I might bring it back in a form that only those who want to use it can select.
Top comments (0)