Smile Blog

スマイルヴィジョンスタッフが運営する広報ブログ

【作ってみた】ひらがな→モールス信号変換器

tukutte08

開発部のおいぬです(▽・x・▽)
今回はひらがなをモールス信号に変換するシステムを作ってみました。

みなさんは幼少期に暗号を読み書きすることに憧れた時期はありましたでしょうか?
私にはありました。よくわからない暗号とあいうえおの対応表を作り、誰かに見せるわけでも無くただ楽しく暗号を書いていました。そんな幼少期を思い出して、暗号化と復元をボタンひとつで行えるようなシステムを作ってみました。

 

モールス符号(信号)とは?

モールス符号(モールスふごう、英語: Morse code)は、電信で用いられている可変長符号化された文字コードである。モールス符号を使った信号はモールス信号と呼ばれる。

(wikipediaより引用)

短点(・)と長点(-)と間隔の組み合わせでアルファベットや数字を表現します。よく使われる文字は短い符号になるように工夫されてたり、長点一つは短点3つ分の長さだったり、和文と欧文で表現がちがってたりなど、いろいろ規則があるみたいです。
今回使ったのはこちらのモールス符号一覧表です。

なぜモールス信号を選んだかというと、暗号と言えば…って考えて一番はじめに「モールス信号」が出てきたので、モールス信号にしました。

作ってみました

完成したものはこちら↓
作ってみたページへいく

プログラムはこんな感じ

まず配列$kana_morusuのkeyに「ひらがな」、valueに「モールス信号」を格納します。(50音)
配列$morusu_kanaには、逆にkeyに「モールス信号」、valueに「ひらがな」を格納するのですが、array_flip($配列)という便利なphpの関数があったのでこれを使いました。
array_flip — 配列のキーと値を反転する

配列$str_kanaには変換するひらがな、配列$str_morusuには復元するモールス信号が入ります。

 

【変換】ひらがな→モールス信号

フォームで送信されたひらがなをpreg_split()で一文字ずつばらばらにします。
(「あいう」→「あ」「い」「う」)
下の一行で、phpで日本語(マルチバイト)を含む文字列を一文字ずつ配列に分割させることができます。

(参考:PHPで日本語(マルチバイト)を含む文字列を一文字ずつ配列に分割させる方法)
preg_split — 正規表現で文字列を分割する

ばらばらにしたひらがなをforeachで回して、array_search()で検索し、対応するモールス信号に置き換えます。
(「あ」→「--・--」、「い」→「・-」、「う」→「・・-」)
array_search — 指定した値を配列で検索し、見つかった場合に対応する最初のキーを返す

モールスに信号に置き換えられた文字は随時、配列$newphrase_kanaに格納していきます。
最後に、implode()を使ってモールスに変換された文字同士を半角スペースで連結させます。これが入力したひらがなの変換後の文字として画面に表示させます。
implode — 配列要素を文字列により連結する

 

【復元】モールス信号→ひらがな

※今回のモールス信号を入力するフォームには、上記ひらがな→モールス信号に変換されたものをペーストすることを前提として作っております。
まず、フォームに入力(ペースト)されたモールス信号を、explode()を使って半角スペースで区切って分解します。
(「--・-- ・- ・・-」→「--・--」「 」「・-」「 」「・・-」)
分解したものを配列$matchs_morusuに格納します。
explode — 文字列を文字列により分割する

配列$matche_morusuに含まれる空の要素を排除します。空の要素はarray_filter($配列, ‘strlen’)で排除できます。排除した後は配列が歯抜けになってしまうので、keyを振り直します。
(「--・--」「 」「・-」「 」「・・-」 → 「--・--」「・-」「・・-」)
(参考:array_filterと無名関数)
(参考:array_filter()とarray_values()を使って配列から空要素を削除して添字をつめる方法)
array_filter — コールバック関数を使用して、配列の要素をフィルタリングする
array_values — 配列の全ての値を返す

foreachでまわして、何も無ければひらがなに変換しますが、もしvalueに濁点(・・)と半濁点(・・–・)があると、1つ前の文字と半角スペースでつないで合体させます。
(「・-・・(か)」「・・(゛)」「-・-・・(き)」「・・(゛)」「・・・-(く)」「・・(゛)」)

復元したひらがなを表示させます。
いかがでしょうか。今回は50音にモールス信号を対応させましたが、自分独自の言葉や記号を設定すれば自分だけの変換機が作れます。みなさんもぜひこの機会にオリジナルの魔術書を作ってみてください(▽・x・▽)

・-・・・ ・-・ ・-・・ ---・- ・- -・

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

おいぬ

おいぬ

■部署
開発部

■スペック(Level、身長、座高、属性、資格)
闇属性

■入社年
2016年

■趣味
音楽、工作、踊ってみた、たべる

■座右の銘
百敗不屈

■ひとこと
おなかすいた

関連記事

  1. 伝わってない

    【新入社員研修】伝わる×伝える=感じるセミナー

  2. はなまるudon

    【食べてみた】暑い夏にピッタリ!?期間限定ビリビリサンラーうどん!

  3. IMG_6697

    2017年新年のご挨拶。昨年を振りかえって

  4. ブログサムネ

    WordPressの投稿ページにGoogle Mapsを埋め込む方法

  5. Fotolia_61233958_S

    肩が凝っては戦はできぬ!

  6. ブログ

    【新入社員研修】相手が理解しやすい3つの話し方

  7. Photoelly039_TP_V

    Webエンジニア初心者が知っておきたいこと

  8. img2

    【新入社員研修】言葉遣い&ホメるセミナー

人気記事

  1. 安い!美味い! 【大阪天満・天神橋筋商店街の食レポ】
  2. クリアボタン
  3. mv
  4. タイ料理「天満3パクチー」
  5. 新入社員研修「伝える+伝わるセミナー」
  6. 2017年スタートアップトレンド (アメリカ版)
  7. 大阪天満天神橋筋商店街がっつりBEEF_KINGOFSTEAK
  8. blog03760x370
  9. IMG_6697

最近の記事

  1. IMG_0351 オール兵庫報告②2部-分科会報告させていただきました
  2. img2 【新入社員研修】言葉遣い&ホメるセミナー
  3. Green12_fax20141123134902_TP_V どこでも送受信できるインターネットFAXを検討してみた
  4. kokuyo_1 働き方セミナーに参加してきました
  5. 0824_1 ランチ交流会 At ONZORO’s BIERRÖSTEREI
2017年10月
« 9月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  
PAGE TOP