Bonjour ! Je m'appelle Oga, je suis designer et responsable opérationnel.
Entrée chez Liberogic en 2015, je suis maintenant une figure de l'ancienne garde. Habituellement, je me déguise en gyaru sur le blog Yuru Log et je rédige des articles dont on ne sait pas vraiment à qui ils servent.
Mais cette fois, je vais me concentrer et vous parler de quelque chose d'un peu plus sérieux.
D'emblée, je dois préciser que j'ai pratiquement aucune expérience en tant qu'ingénieur.
Même au travail, je vois le terminal, mais au mieux je me contente de regarder les logs défiler. Créer quelque chose en frappant moi-même des commandes ? C'était le domaine des gens compétents.
Et pourtant, cette fois, j'ai réussi à mettre en place une architecture réseau complète et à implémenter une application web sur un Raspberry Pi... Les gens peuvent accomplir des choses surprenantes quand on les y pousse.
C'est parti du problème de l'iPad des enfants
Mon enfant ne lâche pas l'iPad. C'est vraiment sans fin si on le laisse faire.
J'ai donc d'abord voulu résoudre ce problème.
À ce moment précis, l'entreprise m'a donné l'ordre : « Essaie de créer ce que tu veux, un peu comme un hackathon interne. »
Chez Liberogic, c'est l'époque d'or de Claude Code en ce moment. Tous les membres de l'équipe utilisent Claude comme compagnon, et l'atmosphère générale ressemble à un festival de développement. Je suis sur l'abonnement à 25 dollars par mois, mais il y a des gens qui maîtrisent les plans plus chers, et il y a une vraie énergie du genre « créons tout avec l'IA ».
« J'ai toujours voulu toucher un Raspberry Pi (juste parce que ça avait l'air cool) »
« Je veux résoudre le problème de l'iPad de manière technique »
« Je veux produire quelque chose au hackathon »
Ces trois motivations se sont combinées et ont donné naissance au projet « Système de gestion permettant d'activer/désactiver le WiFi pour enfants d'un seul clic sur le téléphone ».
Je vois bien le terminal, mais j'ai pratiquement pas d'expérience pour configurer les paramètres.
Avec l'aide de Claude, en tâtonnant ici et là, j'ai réussi à créer cette « boîte magique » !
Étape 1 — Configuration du Raspberry Pi
Préparation avec Raspberry Pi Imager → Connexion SSH
D'abord, il faut installer l'OS sur Raspberry Pi 4. J'ai installé Raspberry Pi Imager (l'outil d'écriture officiel) sur Mac et j'ai écrit l'OS 64 bits sur la carte MicroSD. L'activation de SSH dans les paramètres d'écriture est subtilement important.
Après avoir connecté le Raspberry Pi au routeur avec un câble Ethernet et mis sous tension, je peux me connecter directement depuis le terminal du Mac avec une seule commande.
terminal (Mac)
ssh [email protected]Le moment où pi@raspberrypi:~ $ est apparu dans le terminal, j'ai été vraiment ému. Ensuite, je mets à jour le système.
sudo apt update && sudo apt upgrade -yÉtape 2 — Créer un point d'accès WiFi
Configuration de hostapd / dnsmasq / iptables
Pour faire fonctionner le Raspberry Pi comme « point d'accès WiFi », j'ai installé deux logiciels. hostapd émet l'onde WiFi, et dnsmasq distribue les adresses IP aux appareils qui se connectent.
sudo apt install hostapd dnsmasq
Je configure le fichier de configuration avec le SSID (nom du WiFi) et le mot de passe. Cette fois, j'ai choisi « KidsWiFi » pour plus de clarté.
/etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=KidsWiFi
hw_mode=g
channel=7
wpa=2
wpa_passphrase=(パスワード)
wpa_key_mgmt=WPA-PSKEnsuite, je spécifie la plage d'adresses IP à distribuer aux appareils qui se connectent.
/etc/dnsmasq.conf
interface=wlan0
dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24hEnfin, je configure le routage IP et NAT pour que le Raspberry Pi agisse comme relais Internet. Sans cela, même en se connectant à KidsWiFi, on ne peut pas accéder à Internet.
# IPフォワーディングを永続化
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/routed-ap.conf
# NATの設定(eth0経由でインターネットに出られるようにする)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEUn problème s'est produit où wlan0 était DOWN à chaque redémarrage. J'ai créé un fichier de service systemd pour que la configuration réseau s'exécute automatiquement au démarrage. C'est le moment où j'ai supplié Claude en pleurant pour résoudre le problème « Pourquoi ça ne se reconnecte pas encore !? »
Quand « KidsWiFi » a apparu dans la liste WiFi de mon smartphone et que j'ai pu me connecter à Internet, j'ai involontairement écrit dans le chat « Maître ! C'est connecté ! » (je l'ai vraiment écrit).
Étape 3 — Créer une interface d'administration dans une application web
Implémentation d'un écran contrôlable depuis un smartphone avec Python + Flask
Maintenant que le point d'accès WiFi est prêt, l'étape suivante est une interface d'administration depuis laquelle on peut allumer/éteindre depuis un smartphone. J'utilise Flask, un framework web Python, pour exécuter un serveur web sur le Raspberry Pi. D'abord, j'ai développé dans mon environnement local sur Mac, confirmé que ça fonctionnait, puis j'ai transféré le code vers le Raspberry Pi.
Terminal (Mac) — Préparation de l'environnement de développement
python3 -m venv venv
source venv/bin/activate
pip install flaskL'allumage/extinction du WiFi est en fait un mécanisme qui « bloque uniquement la connexion à Internet ». L'onde radio de KidsWiFi est toujours émise, et j'utilise iptables, le pare-feu Linux, pour basculer entre le blocage ou non des paquets vers Internet. Le code est étonnamment simple.
app.py (extrait) — Cœur du contrôle WiFi
import subprocess
def enable_internet():
# ブロックルールを削除 → インターネット解放
subprocess.run([
'sudo', 'iptables', '-D', 'FORWARD',
'-i', 'wlan0', '-j', 'DROP'
], capture_output=True)
def disable_internet():
# ブロックルールを追加 → インターネット遮断
subprocess.run([
'sudo', 'iptables', '-I', 'FORWARD',
'-i', 'wlan0', '-j', 'DROP'
], capture_output=True)Et voilà, Internet s'arrête. En une seule ligne de commande, l'iPad de mon enfant s'arrête. J'ai eu l'impression d'avoir acquis un pouvoir incroyable (même si je ne sais pas encore bien l'utiliser).
J'ai créé des écrans distincts pour les enfants et les parents.
L'écran pour enfants est équipé d'une fonction roulette !
Après tout, une limite de temps imposée unilatéralement n'est pas amusante pour les enfants. Alors j'ai pensé que si le résultat venait d'une roulette qu'ils ont eux-mêmes tournée, ils l'accepteraient mieux, non ?
Le but est que « Combien de minutes de WiFi j'ai aujourd'hui !? » devienne un jeu où ils s'enthousiasment ou se déçoivent. C'est un petit mécanisme pour transformer les négociations souvent improductives autour du « moment d'arrêter iPad » en un jeu un peu plus heureux.
- Écran pour enfants
→ La roue détermine aléatoirement 30 min, 45 min ou 1 heure.
→ Compte à rebours du temps restant
→ Pause de 1 heure après expiration
→ Temps d'utilisation cumulé
→ Affichage du nombre de tours de roue restants - Tableau de bord parental
→ Protection par mot de passe
→ Arrêt d'urgence du WiFi
→ Mode devoirs (blocage complet)
→ Limite du nombre de tours
→ Heure d'arrêt forcé
→ Journal d'historique d'utilisation
Pendant le développement, nous avons rencontré un problème : « iptables n'existe pas sur Mac, donc impossible de tester ». Nous avons créé une fonction factice pour Mac (qui affiche simplement un message print) pour pouvoir vérifier le fonctionnement.
Nous avons consulté Claude pour chaque blocage et avancé progressivement.
Au fait, en tant que designer, j'attendais la sortie en pensant « je vais probablement devoir réajuster moi-même la mise en page de l'écran », mais le résultat s'est avéré avoir une mise en page étonnamment soignée. Pratiquement aucune retouche n'a été nécessaire.
C'était un peu frustrant et gratifiant à la fois.
Étape 4 — Déployer sur Raspberry Pi et configurer le lancement automatique
Transfert de fichier avec SCP → Enregistrement du service systemd
Nous transférons le fichier généré sur Mac vers Raspberry Pi. La commande scp fait tout en une seule exécution.
Terminal (Mac) — Transfert vers Raspberry Pi
scp -r templates app.py [email protected]:~/wifi-manager/Redémarrer manuellement Flask à chaque démarrage serait fastidieux, donc nous créons un fichier de service systemd pour un lancement automatique. L'objectif est d'avoir tout fonctionner automatiquement dès que l'alimentation est activée.
/etc/systemd/system/wifi-manager.service
[Unit]
Description=WiFi Manager
After=network.target wifi-setup.service
[Service]
ExecStartPre=/bin/bash -c 'echo > /home/pi/wifi-manager/state.json'
ExecStartPre=iptables -F FORWARD
ExecStart=/usr/bin/python3 /home/pi/wifi-manager/app.py
WorkingDirectory=/home/pi/wifi-manager
Restart=always
User=root
[Install]
WantedBy=multi-user.target# サービスを有効化して起動
sudo systemctl enable wifi-manager
sudo systemctl start wifi-managerMaintenant, tout fonctionne automatiquement dès que vous appuyez sur le bouton d'alimentation. Accédez simplement à http://192.168.4.1:5000 depuis le navigateur de votre smartphone et l'écran de la roue s'ouvre. Incroyable, ça a vraiment marché.
Ce que j'ai appris en essayant
En tant que non-ingénieur, j'ai pu mener à bien des tâches allant de la configuration réseau à Python, et c'est certainement parce que j'ai pu progresser en « dialoguant » avec Claude.
Quand je suis bloqué, je lui envoie l'erreur telle quelle. Je lui demande « Que dois-je faire ensuite ? » et il me donne les étapes. Je lui demande « Pourquoi ça se passe comme ça ? » et il m'explique en détail.
On entend souvent parler de « développement à grande vitesse par l'IA pour les ingénieurs », mais l'IA est aussi le meilleur partenaire pour résoudre les petits problèmes quotidiens, mais urgents, qui nous préoccupent dans notre vie personnelle.
« Une idée qu'on imagine peut prendre forme en dépassant la taille de l'organisation ou les compétences individuelles »
. C'est vraiment gratifiant de sentir concrètement cette démocratisation de la fabrication.
Quant au problème crucial de l'iPad de mon enfant... en réalité, je ne l'ai pas encore résolu.
Le système fonctionne parfaitement. Maintenant, c'est à moi, en tant que parent, de le gérer correctement. Je vais faire de mon mieux !
Basée à Fukushima, je mène chaque jour une bataille acharnée avec mon fils hyperactif. En tant que designer diplômée d'une école d'art, j'apporte ma sensibilité créative à mon rôle de designer et responsable opérationnelle au quotidien. Mon adaptabilité et ma réactivité, forgées par l'expérience parentale, sont mes meilleurs atouts.
Oga
Designer / Responsable opérationnelle