新人に Perl のハッシュの話をしていて、ふと隣にいた5年選手のプログラマに「ハッシュって何ですか」と質問してみた。
「キーと…」と連想配列としての使い方は理解していたが、「もしや」と思った通りハッシュ表、ハッシュ関数、チェイン法、開番地法といったことはまったく知らず。 当然、自分で書いたこともなし。
「クラスとかあるから…」
まぁ Java でも C++ でも Perl でも基本的なデータ構造はだいたい何らかの方法で提供されており多くのケースではそれらを使うのがよいのは事実。
しかしハッシュ・リンクリストや各種ツリーは1度は実装した事があるべき。 そもそも原理を理解していないと適切にデータ構造を使い分けられないし、速度・メモリ効率とかの検討もできない。
データ構造とアルゴリズムの基本は(当然)押さえとけ。
たまに
「○○についてのお薦めの本、ありますか?」
と問われることがある。 ○○には C++ とか、C# とか Perl とかその他もろもろのコンピュータ関連キーワードが入る。
正直この質問は辛い。
コンピュータ関連の書籍は、今や大量に出版されているし陳腐化も激しいので相当マメにチェックしていないと人に紹介できるもんじゃない。
もちろん古典・定番もあることはあるが、こういう質問の時はたいがいこれには当てはまらない。 言語や開発環境なんかの本の質問はあるけれど、計算機数学とかアルゴリズムとかそういうのを求めてくる人などいないのである (大体そういうのに興味がある人は自分で探している)。
たまたま自分が詳してかつ最近リサーチをかけた分野については良書と呼べるものを知っている場合があるが、良いと思ったら自分でも買っているから既にその人に貸していたりする。
安直にコンピュータ書籍を紹介して欲しいという人は、よくわからないというのを理由に自分で探さず、しかもハズレを引いて金を払うことを非常に嫌っている。
一応質問されると Amazon.co.jp とかのぞいてみるのだが、その人のスキル・その人が求めているものまで理解していないので、結局徒労に終わるのである。 だいたいその程度なら、本人ができるはずなのだが。
ま、ようはケチらずどんどん読んで「この本はウンコだ」と言えるようになるのが一番ということだ。
で、なんかお薦めの本ありませんか?
データマイニングがテーマ。
高村大也氏(東京工業大学) | 「機械学習の基礎と評判分析」 |
神嶌敏弘氏(産業技術総合研究所) | 「推薦システムのアルゴリズム」 |
石川有氏(株式会社ミクシィ) | 「Big Data Analysis at mixi」 |
C MAGAZINE と言えば1989年から2006年まで出版されていたプログラミング雑誌。その C MAGAZINE が電子書籍で復刻というトピックがSBクリエイティブがで出ていた。
高校生の時に読み始めて、付録として収録されていた LSI C-86 試食版で C の世界に足を踏み入れた(それまでは BASIC 中心だった)。初めて Perl というものを知ったのも C MAGAZINE (記事)。
C MAGAZINE はオブジェクト指向などのパラダイムやいろいろなアルゴリズムなどのプログラミングについてのいろいろな事を知るきっかけとなっていた雑誌だった。当時はまだ World Wide Web にも触れておらず、プログラミングついての情報は雑誌・書籍が中心だった。
その後 UNIX Magazine や Software Design なんかで UNIX 系に触れていくことになったり。
コンピュータ雑誌を定期購読しなくなってから久しく、情報は Web から得られる時代にはなったけれど、やはり雑誌を通していろいろなきっかけを得るというのはまだまだ悪くないと思うんだよね。
ソフトウェアエンジニアビギナーのための推薦図書とかの話とか定期的にでるけれど、そういう層は特にコンピュータ雑誌を定期的に読むといいと思うんだよね。そこでいろいろなことに触れて面白そうなことを見つけて出発点とすれば良いと思う。
TOTP アルゴリズムを使っている2段階認証のシークレットキーの管理・ワンタイムパスワード生成はスマートフォンアプリの Google Authenticator とIIJ SmartKey を両用している。メインのスマートフォンが使えなくなった時のために、使っていない古いスマートフォン残しておいてそこにもシークレットキーを登録しているのだけれどこれ面倒。バックアップは PC (Mac)で管理したい。
そう思って調べたところ、普段パスワード管理に使っている KeePassX のフォーク版 KeePassXC が TOTP 生成機能をもっているということを知った。
KeePassX の開発保守が停滞していることもあり KeePassXC にこのタイミングで乗り換えつつ KeePassXC で 2段階認証のシークレットキーの管理をしてみることにした。
クロスプラットフォームで公式サイトでは Linux 用・macOS 用・Windows 用のパッケージが配布されている。
IIJ SmartKey に登録しているキーについてそれぞれ QRコード生成をし別のカメラで読み取り、その中の secret の値を KeePassXC のエントリに登録していく。エントリを作成し(あるいは既存のエントリを選択し) TOTP の設定でキーを入力し保存すれば OK。
もちろんワンタイムパスワードの生成にも対応している。これがあればスマートフォンが手元に無くても要 TOTP 認証のネットサービスにログインできる。便利。
KeePass パスワードデータベースファイル (kdbx) に保存されるので、あとは好きな方法でバックアップ。
[ Mac アプリケーション ]
Rainbow Bridge#photography
— Naney (@Naney) August 27, 2022
RICOH GR III #GR #GRIII #GR3 pic.twitter.com/KThvwfRJ6U
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。