はてなキーワード: txtとは
プログラマーに憧れる皆さん!こんばんは。
「自分は文系だから」「未経験だから」と諦めていませんか?大丈夫です!プログラミングにセンスは不要です。正しい手順で学べば、文系や未経験でも、誰でも一流のプログラマとして活躍することができます。
今日は、未経験から最短でWeb系企業に就職するための勉強法をご紹介します!
もっともオススメの方法は、顕正会のセミナーに参加することです。
顕正会は、日本で最大のエンジニアのコミュニティであり、非常に良質なテキストを用いて、プログラミング初心者向けのセミナーをしていることで有名です。顕正会に入ることで、未経験からでも一流エンジニアのノウハウを学ぶことができます。
また、意外と知られていませんが、日本のエンジニアの8割は顕正会の出身です。実はあのひろゆきやビル・ゲイツも顕正会の出身です。ですので、顕正会のネットワークを介して就職先を斡旋してくれたりしますし、自分が顕正会員だと、面接時にも非常に有利になります。
顕正会のセミナーは、インターネットからも応募することができますし、秋葉原などで声をかけられることもありますので、誰でも簡単に参加できます。会員もフレンドリーな方ばかりですので、是非、お気軽に応募してみて下さい!無料体験もできますよ。
プログラミングの勉強を始める前に、まず、必要なものを準備しましょう。必ず必要なものと、できればあると良いものは以下の通りです。
可能な限りスペックの高いものを買いましょう。2021年現在であれば、CPUは18コア、36スレッド。RAMは128GBくらいはあると良いでしょう。ストレージはSSDであれば1TBもあれば十分です。
OSは、Windowsで開発するならWindowsが、Macで開発するならMacが必要です。よく分からなければMacを買っておく方が良いでしょう。基本的にMacにできてWindowsにできないことはありません。
インターネットは、この記事を見ている人は既に持っているでしょう。ただし、モバイル回線で見ている人は、自宅に有線のインターネット環境を用意した方が良いです。
顕正会に入会すれば、上記のスペックのPCを無料で貸し出ししてくれます。また、法人向けの専用線を無料で取付工事を行ってくれる上に、通信費を全て負担してくれます。
まず、他の会員と連絡を取るために、SNSのアカウントを持っていると良いでしょう。
最近は完全にPC上での学習もできますが、やはり、勉強の基本は紙のノートに直接書くことです。医学的にも、手指の動きと脳の記憶回路が関連していることは証明されており、手を動かすことで効率的にものを覚えることができます。
Kindleなどの電子書籍リーダーは持っておいた方が良いです。紙の本は時代遅れです。いやしくもITのプロを目指そうという人間が、このような最先端のデバイスを使っていないのは恥だと思うべきです。紙の本を買わないことは、環境を守ることにも繋がります。現金も持つのはやめましょう。
せっかくセミナーに参加しても、受身で聴くだけでは、プログラミングを習得することは難しいです。ここでは、自宅でどのような勉強をすればよいのか、ご紹介します。
まずは、教科書や参考書を写経することから始めましょう。教科書や参考書の本文を一字一句正確に書き写すのです。
よく、「写経は理屈を学べないからだめだ」と批判されますが、まずは正しい「型」を体に覚え込ませるのが先です。野球や水泳などでも、細かい理屈よりも先にフォームを固めるのと同じです。書き写している内に理屈は自然と身に付きます。
また、写経のメリットは「飛ばし読み」を防げるところです。一字一句正確に写経をすれば、細かい部分を「分かったつもり」になって飛ばしてしまうことを防げます。たとえば、比較演算子の等号は=ではなくて、==です。プログラミングはこういうところに注意して学ばなければいけません。
教科書のサンプルコードをノートに書き写したら、それを今度は自力でフローチャート(UML)に変換してみましょう。そうすることで、自分が本当にそのコードを理解しているのか、確かめることができます。
フローチャートやUMLが素早く正確に描けることは、プログラマーとして働く上で非常に重要なスキルです。それらはソフトウェア設計の基礎となりますし、ソースコードを読めない営業や顧客にとっては貴重な資料となるからです。プロのエンジニアは、COBOLのソースコード10万行を1週間でフローチャートにして、Excelに転載することができます。
ここで一つ注意すべきことがあります。フローチャートを描くときは、必ず専用の定規を用いて描いて下さい。フリーハンドで描いたものは業務ではフローチャートとは認められません。これはまともな企業に就職すれば研修などで必ず習うことですから、今の内に覚えておきましょう。
エンジニアを目指すのであれば、プログラミングだけではなく、Excelの使い方も学びましょう。Excelはエンジニアにとっての万能プラットフォームです。エンジニアはあらゆる作業をExcelで行います。セル結合や罫線を用いて、見栄えの良い資料を作る技術は、エンジニアにとって必須です。
プログラミング学習中であれば、たとえば以下のような題材の資料を作ってみると良いでしょう。
尤も、以上の資料は、ツールを使うことで自動で作成することもできます。たとえば、ソースコードの更新履歴はGitなどのバージョン管理システムを使うことでも管理できます。しかし、それらの資料としてのクオリティは非常に低いため、アマチュアしか使うことはありません。プロを目指す皆さんは、必ずExcelを使いこなせるようになりましょう!VBAの習得も必須です。
以上、プログラミングの勉強法について解説しました。ここからは、実際にソースコードを書くときのコツを紹介していきます。他のプログラマと差をつけることができる技術ですので、意識するようにして下さい。
理想は、aやxなどの一文字です。ただし、これだけだと26文字しか使えないので、a1, a2, ...のように連番でグルーピングすると良いです。
また、変数の宣言と使用箇所が離れた場合に、変数の型がすぐに分かるように、たとえばint型であればi1, i2, ...、string型であればs1, s2, ...のように命名すると、読む人に親切で自分もミスしにくくなります。
変数名を長くするのは、以下のデメリットがあるため、絶対にやめましょう。
多くのプログラミング言語には、クラスや関数といった機能がありますが、これらは基本的にライブラリ提供者などが使う想定の機能であり、一般のプログラマが使うのは好ましくありません。したがって、クラスや関数はなるべく使わないようにして下さい。
不要な関数を作らないためのテクニックには、以下のようなものがあります。
まず、関数の引数に「フラグ」を渡し、関数内部で処理を切り替えれば、1つの関数で複数の処理をすることができます。
function f(i) { switch(i) { case 1: // i = 1のときの処理 break; case 2: // i = 2のときの処理 break; case 3: // i = 3のときの処理 break; // ... } }
この方法は、以下に述べる「変数の寿命を伸ばす」効果もあります。つまり、この関数内で宣言された変数は、すべての処理で共通して使用することができます。
クラスに不要な関数を作らないようにするには、「継承」を用います。複数のクラスで用いる関数を定義したクラスを1つ作っておき、そのクラスを継承すれば、新しいクラスに関数を定義する必要はありません。
理想的には、プログラム内のすべての関数を同一のクラスに定義し、それを継承するべきです。そのようなクラスは俗に「神」と呼ばれ、プログラマからはこの上なく尊ばれています。
class God { f1() { // 関数1 } f2() { // 関数2 } // ... } class C1 extends God { // 何も書かなくても上の関数が使える! } class C2 extends God { // 何も書かなくても上の関数が使える! } // ...
変数は宣言する場所によって、ソースコードのどの範囲から参照できるかが決まっています。この範囲が広いことを、「変数の寿命が長い」と言います。
たとえば、以下のコードのaは、関数定義の外側からは参照することができません。
function f() { var a = 1; return a; }
一方、以下のコードのaは関数の内外どちらからでも参照することができます。
var a = 1; function f() { a = 2; return a; }
せっかく作った変数がすぐに死んでしまうのは、非常にもったいないです。ソースコードの表面には現れませんが、変数を作ったり捨てたりするのには、計算コストがかかります。したがって、寿命の短い変数を作りすぎてしまうと、プログラムが遅くなってしまいます。
また、変数の寿命が長いということは、変数をたくさん作らなくても、1つの変数を色々なところで利用できるということであり、とても便利です。たとえば、上記の前者のコードでは、関数の外部からaの値を参照したくなっても、参照することができません。後者のように書いておけば、プログラムのどの箇所からでも、aの値を参照したり、更新することができます。したがって、変数の寿命を長くするとプログラムを変更しやすくなります。つまり、保守性が上がります。
例外とは、プログラムが予期しない処理をしようとした場合に、プログラムの実行を停止し、呼び出し元にエラーを通知する機能です。たとえば、「test.txt」というファイルを開こうとしても、そのファイルが存在しない場合は、例外となります。
例外が発生すると、プログラムが停止してしまうため、非常に困ります。したがって、プログラマは例外をきちんと処理しなければなりません。
ほとんどのプログラミング言語には、例外処理のための機構があります。たとえば、以下のような構文です。
try { // 例外が発生し得る処理 // ex. ファイルを開く } catch (e) { // 例外が発生したときに、実行する処理 }
例外への対処は実はとても簡単です。是非ここで覚えて下さい。上記のような機構のある言語であれば、catch節の中身を何も書かなければ、例外が発生しても、何事もなくプログラムは動作を続けます。
try { // 例外が発生し得る処理 } catch () {}
全ての例外を潰せば、決して不慮の動作で停止することのないプログラムを作ることができます。ですから、例外が発生し得るコードは、積極的に上記のtry-catch構文を用いて、例外を潰すようにしましょう。
変数や構文などのプログラミングの基礎は覚えた人向けに、ソースコードを書くときのコツを紹介していきます。どれも今日から実践できるものばかりです。他のプログラマと差をつけることができる技術ですので、ぜひ意識するようにして下さい。良い子はまねしないで下さい。
理想は、aやxなどの一文字です。ただし、これだけだと26文字しか使えないので、a1, a2, ...のように連番でグルーピングすると良いです。
また、変数の宣言と使用箇所が離れた場合に、変数の型がすぐに分かるように、たとえばint型であればi1, i2, ...、string型であればs1, s2, ...のように命名すると、読む人に親切で自分もミスしにくくなります。
変数名を長くするのは、以下のデメリットがあるため、絶対にやめましょう。
多くのプログラミング言語には、クラスや関数といった機能がありますが、これらは基本的にライブラリ提供者などが使う想定の機能であり、一般のプログラマが使うのは好ましくありません。したがって、クラスや関数はなるべく使わないようにして下さい。
不要な関数を作らないためのテクニックには、以下のようなものがあります。
まず、関数の引数に「フラグ」を渡し、関数内部で処理を切り替えれば、1つの関数で複数の処理をすることができます。
function f(i) { switch(i) { case 1: // i = 1のときの処理 break; case 2: // i = 2のときの処理 break; case 3: // i = 3のときの処理 break; // ... } }
この方法は、以下に述べる「変数の寿命を伸ばす」効果もあります。つまり、この関数内で宣言された変数は、すべての処理で共通して使用することができます。
クラスに不要な関数を作らないようにするには、「継承」を用います。複数のクラスで用いる関数を定義したクラスを1つ作っておき、そのクラスを継承すれば、新しいクラスに関数を定義する必要はありません。
理想的には、プログラム内のすべての関数を同一のクラスに定義し、それを継承するべきです。そのようなクラスは俗に「神」と呼ばれ、その利便性からプログラマからはこの上なく尊ばれています。
class God { f1() { // 関数1 } f2() { // 関数2 } // ... } class C1 extends God { // 何も書かなくても上の関数が使える! } class C2 extends God { // 何も書かなくても上の関数が使える! } // ...
変数は宣言する場所によって、ソースコードのどの範囲から参照できるかが決まっています。この範囲が広いことを、「変数の寿命が長い」と言います。
たとえば、以下のコードのaは、関数定義の外側からは参照することができません。
function f() { var a = 1; return a; }
一方、以下のコードのaは関数の内外どちらからでも参照することができます。
var a = 1; function f() { a = 2; return a; }
せっかく作った変数がすぐに死んでしまうのは、非常にもったいないです。ソースコードの表面には現れませんが、変数を作ったり捨てたりするのには、計算コストがかかります。したがって、寿命の短い変数を作りすぎてしまうと、プログラムが遅くなってしまいます。
また、変数の寿命が長いということは、変数をたくさん作らなくても、1つの変数を色々なところで利用できるということであり、とても便利です。たとえば、上記の前者のコードでは、関数の外部からaの値を参照したくなっても、参照することができません。後者のように書いておけば、プログラムのどの箇所からでも、aの値を参照したり、更新することができます。したがって、変数の寿命を長くするとプログラムを変更しやすくなります。つまり、保守性が上がります。
例外とは、プログラムが予期しない処理をしようとした場合に、プログラムの実行を停止し、呼び出し元にエラーを通知する機能です。たとえば、「test.txt」というファイルを開こうとしても、そのファイルが存在しない場合は、例外となります。
例外が発生すると、プログラムが停止してしまうため、非常に困ります。したがって、プログラマは例外をきちんと処理しなければなりません。
ほとんどのプログラミング言語には、例外処理のための機構があります。たとえば、以下のような構文です。
try { // 例外が発生し得る処理 // ex. ファイルを開く } catch (e) { // 例外が発生したときに、実行する処理 }
例外への対処は実はとても簡単です。是非ここで覚えて下さい。上記のような機構のある言語であれば、catch節の中身を何も書かなければ、例外が発生しても、何事もなくプログラムは動作を続けます。
try { // 例外が発生し得る処理 } catch () {}
全ての例外を潰せば、決して不慮の動作で停止することのないプログラムを作ることができます。ですから、例外が発生し得るコードは、積極的に上記のtry-catch構文を用いて、例外を潰すようにしましょう。
1万程度ではまだまだです
お前もナンバーワンだ!
途中に「しの(77.0kg)」さんの名前を見つけて悲しくなった…
このコメ見るまで有名な人だと知らんかった
ブクマカとしてそりゃ当然
そのうちIDも消すよ、せっかくなので振り返り的に見返してなんとなく消したくなったからブクマ消した。
なぜどこぞのニュースサイトのようにページを分割しまくるのか。
助けてワンページマン!
こんなに細かく分ける必要はないのでは
もともと2万字ぐらいのひとまとめで作ってたけど何故か50行ぐらいを超えると増田に投稿しても反映されなかったので泣きながら分割投稿した。増田のバグなのか仕様なのか知らんけど誰か調べて
-----------------------------------------------------
Q.いつ辞めるの?
A.来月ぐらいにはアカウント消す予定。既にはてなのサービスのデータ全部消しているので問題なし。
Q.移行するなら下書きしてた方が良くない?
A.インターネットの塵と化すので移行する準備は問題なし。一応txtに下書きはしてた。欲しいなら上げることは可能。
A.めんどくさいので代わりにやってほしい
Q.やめるなら記法について書いといてほしい。枠とか線とか見やすいから参考にしたい
A.枠内はこんな感じ(大なり小なりが勝手にlt;gt;になってるけど記号ね)
>> ブコメ - id: <a href="https://www.hatena.ne.jp/">ブコメページ</a> - <a>ページタイトル</a> <<
Q.インフォシーク はまだあるぞ
A.infoseek iswebのことをインフォシークと書いてたわ
------------------
Q.なんでやめるの?
A.別増田にid名指しでアホやろって言われてなんかもうどうでもいいやって思ったから。匿名で卑怯だぞという気持ちがないではないが、どうでもいいや感のほうが大きかったため。
2009年からブクマ始めて気が付けば約10000ブクマしてた。もともとはてなに来たのはうごメモはてなからで、ブクマ始めた当時(12年前)は中2。ブクマの機能すらよくわからず使ってた。
初期はちきりんのサイトとかライフハックの記事をよくブクマしてた、若い。
hagexさんとかcyberglassさんのブログとかもブクマしてて懐かしさを感じた。
全体的に感じたのは、インターネットのコンテンツ(記事)は永遠ではないということ。本当に必要なものがあるのならオフラインに保存必須。それとブクマページがコンテンツの墓標のようになっていたこと。webコンテンツの存在を残すために、ブクマカはこれからも色んなページをブクマしてほしいと思う。
どうでもいいけどブクマ全部見返して削除するのめちゃくちゃ時間がかかった。とても大変だった…
ブクマカはこれが見たいんでしょ、わかるよ。
確認したらブコメが消えていたものはid省略して記載。なんで消えてるブコメを把握してるかって?ブコメページをブクマしてたからだよ。
ページを「ブクマ」しようとするって事は、逆にブコメページを「ブクマ」されるかもしれないという危険を常に『覚悟して来ている人』ってわけですよね…
ランクイン(?)したブクマカはおめでとう。ランクインしてないブコメも別に悲しむ必要はないと思う。
そいつらって「ただ学校が一緒だった」だけで、友達じゃないよ。友達って、年齢関係なく、横並びだから。 - id:privates
これが教員側または親の側からの心構えとしては、失敗する権利を奪うなとなる。老婆心やお節介で能動的に手伝いたくなるがそれは自己満足。教育とは自ら学ぶ人間に育てること。そしてそこから学ぶことなのである - id:Miroc
ブコメページ - 大学の恩師に教わった、「なにがわからないか、わからない」ときの質問のしかた。 | Books&Apps
え、勉強や努力って誰かの結果と比較する為にやる事じゃなくて、自分の伸び代を最大限に伸ばす為にやるものでしょ?勝つとか負けるとか言ってる時点で自分人生の主導権を他人に委ねてる。精神が負けてるよ。 - id:kanagawakama
人格に問題あり。 そもそも食糧のありがたみを感じるのは満腹の人ではなく空腹の人だろう。 金のありがたみがわかるのは金欠の人だろう。 国のありがたみがわかるのは、国を失った人だろう。 - id:osakana110
SNSは人を折れるまで先鋭化させる。大勢からの肯定と大勢からの否定に曝され続けて前者に寄って行かないことは難しいんだろうな。自主的洗脳装置 - id:mame_3
ブコメページ - キクマコ先生「河野大臣が質問を4連続で無視したことを非難した立憲民主党は外交能力がない」 - Togetter
ここ数年考え続けている「SNSは人を壊す」という問題の端的な例だったのかも。情報を発信して承認される繰り返しの中で、書き手はだんだん視野が狭まり、平衡感覚を失い、狂っていく。 - id:muchonov
今のツイッターからは離れた方がいい。自分が本来関わってはいけない話題に軽率に関わり始めて、結果的に精神を磨耗することになる。弱くてちっぽけな人間が世界中の不幸にわざわざ付き合うことはない。 - ブコメ削除
SNSの暗黒面に落ちるな。反応を求めると誰が見込み客で何のために投稿しているかを忘れてしまう。いいね欲しさに道を誤り、反応してくれたのはエロい男のみだったと。見込み客に向けた投稿をしないと。 - ブコメ削除
インターネットでは、自分が他人にとって「何の反応も示す価値のない、特別ではない他人」であることを知るのはかなり初期段階だと思う。「自分が特別でないことを知る」のは全く特別なことではない。 - id:kuzudokuzu
知らないうちにQNAPのNASにランサムウェアが入って荒らされていた。
心当たりのある人は同様の被害がないか一度確認してみたほうが良いかも。
NAS内のフォルダごとに「!!!READ_ME.txt」というファイルがあり、テキストファイルを開くと「ファイルを暗号化したから、解除のためにはこのアドレスにアクセスしなさい」といった内容の英文。
調べたら約25000個のファイルが7z形式に変換されてしまっていた。
更新日時からすると、4/22ごろに侵入されて暗号化処理が進み、
4/23の午前3時にMalware Removerの定期スキャンが入って、そこでウイルスは除去された様子。
監視カメラファイルの保存が主な目的だったから、実害は過去の映像がみられなくなったくらいの被害だが、大事なファイルがあったら危なかった。
web情報では、2021/4/19あたりから各地でQNAPのNASに被害があったとのこと。
HybridBackupSyncのアプリの脆弱性が原因のよう。dropbox同期に使っていた。
被害時期に、特にプログラムのインストール等を実施した心当たりなし。
gigazine.net - QNAP製NASへのランサムウェア攻撃は公式バックアップソフトにハードコードされたパスワードが原因か
https://gigazine.net/news/20210430-qnap-ransomware-hard-coded-password/
人間とは精神である。精神とは何であるか?精神とは自己である。自己とは何であるか?自己とは自己自身に関係するところの関係である、すなわち関係ということには関係が自己自身に関係するものなることが含まれている、
それで自己とは単なる関係ではなしに、関係が自己自身に関係するというそのことである。人間は有限性と無限性との、時間的なるものと永遠的なるものとの、自由と必然との、綜合である。要するに人間とは綜合である。
1. 精神
2. 自己
3. 関係
4. 綜合
正解:3. 関係
理由:出現数
ruby -e '["精神","自己","関係","綜合"].each{|c|puts "#{c}:#{`grep -o #{c} 死に至る病.txt | wc -l`.chomp}"}' 精神:3 自己:8 関係:9 綜合:3
当方ソフトウェアエンジニアで勤務先の環境がクソすぎるので転職しようと思っているのだが、
転職先の開発環境を面接で聞く際にどこまでが常識でどこまでが過剰要求なのかが分からないので教えてほしい。
ちなみにGithubアカウントはちゃんと持っているし, OSSにもコミットしているよ.
などなど. 個人環境としては可もなく不可もなくという状況なのだが、
でもメーカーのクソなところで, だいたいネットにはつながっていない.
技術書を読んでいる人が皆無.
我流で書いた上司先輩のクソコード以外読んだことない人しかいないので.
このレベルはもう期待していない.
いいなぁ~. ネットの世界にはこの環境で仕事ができる人も存在するらしいよ.
はてな見てると、はてなにいるような技術に関心を持つような人は実際には存在しないんじゃないかって思うぐらい、
私の周囲のソフトウェアエンジニアのレベルの低さに呆れるので、
普通の(はてな基準)エンジニアと一緒に普通の(はてな基準の)会社で仕事をしてみたいなぁ.
Densoの方の退職エントリでも, Densoでもこのレベルかーという内容だったし、
日本でWEB系以外で"""欲しい"""の基準以上は不可能なのかなぁ。
はぁ
はてなでは無名だが、AHSというPCソフトウェアを販売している会社がある。
そこから先日Recotte Studioというゲーム実況動画作成ソフトが出た。通常価格で¥12,800+税という値段だ。
元々ボイスロイドという人工音声ソフトをAHSは出していて、Recotte Studioの売りはその連携にある。
作っているのはクレジットを見るとソフトイーサで、IPA未踏の伊藤さんも参加されているようだ。
ここで注意してもらいたいのが、『実況動画作成』であり『動画編集』ソフトではない。
ボイスロイド+ゲーム実況は既に多く作られているし、その多くはフリーのAviUtlという動画編集ソフトで作られている。
ボイスロイド自体がPepper君と同じ声のパッケージが発売されてから10年経っていて、AviUtlのプラグインを有志が作っている。
AviUtlは使った人はわかると思うが古いソフトに機能追加されているので、ごちゃごちゃしている。
その中でRecotte Studioは初心者向けということで発売された。
問題はここからだが、Recotte Studioは機能が少ない分やりたいことができない。
初心者は先人の真似から入るわけだが、機能が少ないので出来ない。
もちろんソフトの機能紹介で説明されているようにテロップは入れられるのだが、ボイスロイドとの音声連携+テロップがやりたいことなので、躓くポイントが多い。
1つ、2つテロップを入れるだけならいいが、大量にテロップを入れるとなると修正が入るが、2つのソフトを連携させる都合かUIが悪い。
わかりにくければUIが悪いという結論のみ把握しておいてもらえばいい。
ゲーム実況なので、ゲーム画面を録画したのを流しつつ、テロップを入れたい場所にテキストを入力していく。
ここで躓きポイント①だが、改行が必要な長文になると改行をどうしたらいいのかがわからない。
そんなの単に改行すればいいじゃないかと言われるだろうが、改行はできず確定になる。
改行する場合はプレビュー画面のテロップが実際に入った枠を編集することになる。
テロップだけなら、まぁいいか程度だが、ボイスロイドとの連携時にスペースが入る。
ボイスロイドを使ったことがない人向けに説明すると、ボイスロイドはテキストを入力して音声を出力するソフトだ。
テキストにスペースが入っていると、そこが文章の切れ目と認識して、音声が途切れるのだ。(躓きポイント②)
プログラマーの方なら、スペースが入るくらい置換すればいいだろうというだろうが、そういう人ばかりではない。
売りのボイスロイドとの連携だが、『全てのテロップをクリップボードにコピー』するというのがRecotte Studio側の機能だ。
ユーザーは、別のソフトであるボイスロイドのテキスト画面にペーストし、音声を編集して音声ファイルWavで書き出すと同時に、1つずつの音声ファイルを作ったテキストを吐き出す。
言い方を変えると、連番の.wavと.txtファイルが出力される。
Recotte Studioは、フォルダを監視していて、ファイルが更新されたのを検出して音声ファイルを読み込む。
Recotte Studio側にテロップのテキスト情報を持っているので、.txtの内容と一致すれば、.txtと同じファイル名の.wavを読み込む。
.txtと.wavは拡張子が違うだけで、ファイル名が一緒となっていることで一対になっていることを示している。
ここで、躓きポイント③だが、ボイスロイドで音声調整をしている際、誤字を見つけたときは、
b)Recotte Studio側に戻ってテキストを修正すればいいのか
どちらだろうか。
先ほどRecotte Studio側は.txtの内容と一致した同じファイル名の.wavを読み込むと言ったが、
誤字なので結局Recotte Studioに戻ってテロップも修正することになるのだが、『全てのテロップをクリップボードにコピー』されるので、
誤字の部分だけ更新すればいいや、とはならない。
ここで躓きポイント④だが、テロップを修正していない箇所の音声は、前と同じなのかという疑問が出てくる。
プログラマーの方ならテキストならdiff取って処理すればいいじゃんと思うだろうが、
ボイスロイドというソフトのテキスト入力枠はコピー&ペーストで上書き修正されている。
一応、登録しておいた文章が完全に一致していれば、同じ音声を出力する(はず)だが、本当か?と思うだろう。
なぜ『全てのテロップをクリップボードにコピー』される仕様になっているのかはわからないが、
想像するに、新規にテロップが追加された時の対応あたりだろう。
次の躓きポイント⑤だが、『.txtの内容と一致した同じファイル名の.wav』を読み込むのであれば、
テキストでは同じ文面だが、読み方(アクセントなり、音の高さなり)を変えたい場合はどうなるのか。
ボイスロイドの動画を作る際、複数のボイスロイドで会話させることがある。
キャラA「こんにちは」、キャラB「こんにちは」と喋らせたいとしよう。
ユーザー側の対応策として、キャラAとキャラBの吐き出すフォルダを別にすればいいとなるが、気づけないユーザーもいるだろう。
先ほどの例では、挨拶だったのでいいが、「ごめん」といったセリフは動画中に2度出てくる可能性はないだろうか?
そして喋らせ方が違ったらどうだろうか。(最初はふざけた感じで、次は真剣な感じなど)
次の躓きポイント⑥だが、動画を作っている途中だと適切な音声だと思っていても、ある程度完成して見直してみると、
音声と音声の間が足りてなかったと思うことがある。
その時は、ボイロ側で話す速度や間を修正することになるのだが、テロップの位置が変わらないため、
テロップが2重に表示される期間が出てくることになる。
最初から隙間を開けておくといった対策がユーザー側ではできるが、これも最初は気づけないし、
テロップとテロップの間で毎回一瞬消えるのも気になって嫌う人もいるだろう。
2つのソフト間での連携するような仕様にせざるを得なかったというのもあるのだろうが、初心者向けと言いつつ、触ると躓きポイントが多い。
じゃあ修正すればいいじゃんと、今時のプログラマーの方は思うだろうが、Recotte Studioのガイドブックが同時発売されている。
そのためUIの変更はすぐにはできないのだと思う。
PCソフトなんて今時だれが買うんだっていう時代なので、開発リソースが少ないのが、機能の少なさから透けて見えるのも辛いところだ。
AHSという会社だが、先の未踏出身の伊藤さんが作られたキャラミんを配布したり、
Kanru Huaが作られたSynthesizer Vを販売したり、
市場が小さいが個人で作ったのをビジネスにつなげようとしている会社で応援したいので購入しているのだが、
開発リソースが小さく機能が一点突破だったり、買い切りなのでサポートの説明不足だったりする。
何かしら創作し発信している身としては,SNSの拡散度合いの可視化は心に悪い.
たかだか10RT程度が限界の自分の投稿と,やたらRT・Favされる人気者の投稿・・・・
もちろん自分の心が荒んでいるからこそ出てくる文句でもあるし,客観的にはもっと改善点もあるだろう.
ただ,自衛手段としてこれらを見えにくくする手はあると思うのだ.
というわけでAdBlockのMyフィルター機能を使って色々隠してみた.使い方はまあググってくれ.
! リプライとかのボタンを非表示 tweetdeck.twitter.com##ul.tweet-actions ! 数字も消す tweetdeck.twitter.com##span.like-count tweetdeck.twitter.com##span.retweet-count !RTした人の名前を非表示 tweetdeck.twitter.com##div.tweet.js-tweet > .padding-bs.txt-mute.txt-size-variable--12.tweet-context > .nbfc > a !続きを見るを非表示 tweetdeck.twitter.com##div.js-show-this-thread !詳細欄のRTやFav欄を非表示 tweetdeck.twitter.com##.flex-wrap--wrap.flex-align--baseline.flex-row.flex.tweet-stats.js-stats-list
あまりきれいなフィルターにはならないが,Twitter Webも同じように色々消せる.自分が消しているのは,
あたり.
どもども。
わたしは「なにか作ってみろ」系の言説にはまったく同意しません。
わたし自身、会社に3ヶ月間みっちり導入教育をしてもらい(COBOL85とPL/I。時代がわかる……)、基本的なアルゴリズム(コントロールブレーク、マッチング、マスタ-トランザクション、ソート、マージ、etc.いよいよ時代がわかる……)の演習を(給料をもらいながら)やって、その後もプログラムとつかず離れずでフラフラと生きてきました。
こういう経験は新卒カードがあるから有効なもので、では1から始めるとしたら……、というときに、プログラミングスクール(専門学校)というのは悪くない選択肢ではないかと思います。が、行ったことないので正直わかりません。
実際自分が1から始めるという立場になったら、まったくオロオロして元増田さんのように世のなか(の気にいらないヤツら)に呪詛を吐いて満足するだけだったと思います(当然ながらそれをいくらやってもプログラミングは上達しません)。
話をプログラミングだけに限っていえば、一番大事なのはやりかたじゃなくて動機だろうと思います。
「なにか作ってみよう」というのは、なにか作ってみようと思ってない人にはまったく心に響かないでしょう。
動機ドリブンで「なにか作ってみた」人といえば思いだすのは、MikuMikuDanceの樋口優さん(ミクを簡単に踊らせたい!)とhinadanの若宮正子さん(高齢者にも遊べるゲームが欲しい!)でしょうか。
ただかれらはわたしから見れば(モチベーションを維持しそれを行動に移す)天才で、あんまり参考にならないのも確かです。
あと、元増田さんの動機は「プログラミングを生業にしたい」ということなので、野良プログラマでは履歴書上でのアピール力が弱いかも、と思います。
ビジネスで使われるアルゴリズムにはそれなりのルールがあります。安全な(バグの出にくい)コードの書きかた、「車輪の再発明」はぜず、枯れた(将棋で言えば定跡のような)アルゴリズムを使う、ほかの人に使ってもらえるための工夫(可読性の向上など)、etc.です。
「なにか作ってみよう」を繰りかえしても、そういった作法的なものが身につくかどうか、それは才能に関わってくる問題だと思います。才能だのみの手法を推奨するのは無責任だと思いますね。
また、たとえば「例をコピーして解析する」というのもある意味有効なプログラミング学習法ですが、「下手に習うと下手が伝染る」ともいいます。どれがお手本として優れているか、それを見る目はある程度ビジネス用途のプログラムに関わっていないと持てないというジレンマがあります。
野生のプログラマで就職に有効なくらいの力を見せるとしたら、なにかのコミッター(なにする人かよく知りませんが)とかになって「××ならこの人」となったり、プログラミングコンテストで上位の成績を残したりしなければいけないのかもしれません。
どうしたものでしょうね。ブクマカのみなさんの反応を見ると、専門学校でもあまり就職に有利にならない(ホントか?専門学校の意味あるのか?)という話ですが、目的が就職ならば、一番の近道のような気がします。
そこらへんからは、元増田さんがなにをしたいか、あるいは聞いてみたいだけだったのかによります。仕事には適性とやる気が大事です。あとは年齢と必要性かな。進路はオーダーメイド以外にはありえないので、提示された案を自分で選んでそれに賭けるしかないのかな、と思います。
さて、この文章は実はこの一文に反応してのものです。(↑のは前書き)
GWあたりからトシも考えずにRubyの再入門をしていまして、手始めに「首相動静」の整形ツールを作ってみました。
初心者で(Rubyに関しては仕事で使ったことないので)なにか作ってみよう、というとこの程度ですね。
これで就職に有利になるかというと、あんまりそうは思えないなあ。Excelのマクロが組めるとかのほうがどこかの事務所に潜りこめそうですよ(でもそれも最近はインフレ気味かもしれませんね)。
朝日新聞の首相動静は詳細ですが、改行が入っておらず、大変読みにくいものです。こんな感じです。
【午前】9時31分、自民党本部。33分、同党役員会。10時2分、官邸。5分、閣議。21分、宇宙開発戦略本部。34分、柴山昌彦文部科学相。38分、岩屋毅防衛相。41分、山下貴司法相。11時3分、安全保障と防衛力に関する懇談会。
【午後】0時11分、政府・与党連絡会議。44分、山口那津男公明党代表。1時27分、日韓議員連盟の額賀福志郎会長、河村建夫幹事長。2時20分、行政改革推進会議。52分、兼原信克官房副長官補、秋葉剛男外務事務次官。3時36分、麻生太郎財務相、財務省の岡本薫明事務次官、太田充主計局長。4時7分、太田氏出る。可部哲生理財局長加わる。15分、全員出る。25分、黒川弘務法務事務次官。34分、谷内正太郎国家安全保障局長、北村滋内閣情報官、宮川正内閣衛星情報センター所長。41分、谷内、宮川両氏出る。5時3分、北村氏出る。10分、東京・永田町のザ・キャピトルホテル東急。宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。20分、官邸。6時18分、ガーナのアクフォアド大統領を出迎え。記念撮影。19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。27分、アクフォアド大統領と会談。7時12分、署名式、共同記者発表。32分、公邸。首相主催の夕食会。8時43分、アクフォアド大統領を見送り。9時、ヨルダンのアブドラ国王と電話協議。
ただ、これはフォーマットがはっきりしており、
と、例を見るかぎりキッチリとしたルールに則っているようです。
なので、「これだったら整形できるかも」と思い、再び学びはじめたRubyで整形ツールを作ってみることにしました。
【午前】
10時02分、官邸。
10時05分、閣議。
10時21分、宇宙開発戦略本部。
【午後】
01時27分、日韓議員連盟の額賀福志郎会長、河村建夫幹事長。
02時20分、行政改革推進会議。
03時36分、麻生太郎財務相、財務省の岡本薫明事務次官、太田充主計局長。
04時15分、全員出る。
04時34分、谷内正太郎国家安全保障局長、北村滋内閣情報官、宮川正内閣衛星情報センター所長。
04時41分、谷内、宮川両氏出る。
05時10分、東京・永田町のザ・キャピトルホテル東急。宴会場「鳳凰」で中曽根康弘世界平和研究所設立30周年記念式典に出席し、あいさつ。
05時20分、官邸。
06時18分、ガーナのアクフォアド大統領を出迎え。記念撮影。
06時19分、儀仗(ぎじょう)隊による栄誉礼、儀仗。
あと、午後の時刻を24時間制にしたいな、とも思いますが、それは今後の課題(つぎに首相動静が話題になったとき)とします。全角数字の計算ってどうやるんだろう?
たぶんRubyistにいろいろ突っこまれると思うけど、こんな感じです。
プログラマは玉石混淆ですが、これは石のほうの例だと思っていただければさいわいです。
※ はてな記法にはシンタックスハイライトあるけど、増田だとInternal Server Errorになるのではずしました。見にくくてスマソ。
# encoding: utf-8 # 漢字コンバータのライブラリを取りこむ(Stringに漢字変換メソッドを付けてくれる。神) require 'kconv' # 正規表現パターン # 時刻をh時m分形式からhh時mm分形式にする # 否定後読みを使用する # 時は行頭にある OneDigitHour = /^((?<![0-1])[0-9]時)/ # 分は時のあとにある。このパターンとマッチすると、92;1が時、92;2が分になる。 OneDigitMinute = /^([0-9]{1,2}時)(?<![1-5])([0-9]分)/ # 分のない、時だけの行のパターン。否定先読みを使用 HourWithoutMinute = /^([0-9]{1,2}時)(?![0-5]?[0-9]分)/ # 行頭のh時m分をhh時mm分にするサブ処理(これは関数といっていいの?) def convTopHourMinute2TwoDigits(oneLine) # 時を変換 oneLine.sub!(OneDigitHour, "092;92;1") # 分を変換 oneLine.sub!(OneDigitMinute, "92;92;1092;92;2") # 分がない場合"00分"を追加 oneLine.sub!(HourWithoutMinute, "92;92;100分") # 戻り値 oneLine end # 入力ファイルの名前 InputFilename = "首相動静2018年12月11日.txt" # 出力ファイルの名前 OutputFilename = "首相動静2018年12月11日_編集済.txt" # 入力ファイルをオープン inFile = File.open(InputFilename, "r") # 出力ファイルをオープン outFile = File.open(OutputFilename, "w") # 時刻パターンはシンプルに、h時、m分、h時m分、という3パターンを結合する # 1つのパターンで全部カバーするよりこちらのほうが見やすい。というか、脳の容量の問題で1文に書ききれなかった jikokuPattern = /[0-9]{1,2}時[0-9]{1,2}分、|[0-9]{1,2}時、|[0-9]{1,2}分、/ # 午前/午後 ampm = /(【午前】|【午後】)/ # 午前/午後、あるいは時刻の前で改行するためのパターン kaigyouSign = Regexp.union(ampm, jikokuPattern) # ファイル一括読み込み # 昔は1行ずつ読みこんでました。メインメモリが3MByteとかだったので contents = inFile.read.toutf8 # 入力終了。閉じておきます inFile.close # スコープの関係から、ここでローカル変数に代入 # ※ Rubyのスコープと暗黙の型には泣かされました。これに慣れるのがRubyのコツかしら # 明示的な型宣言はあったほうがいいと思うなあ。エラー出力の理由がわからなかったりするので。 hour = "" # デバッグ行はコメント化しています # 時刻パターンチェックのため、コンテンツを出力してみる # p jikokuPattern.match(contents) # エントリを改行サインで行に分ける contents.gsub!(kaigyouSign, "92;n92;92;&amp;") # "92;92;&amp;"はマッチした文字列そのもの。2重のエスケープ"92;92;"が必要 # 改行チェックのため出力 # p contents # 入力を行で分割して各行ごとに処理 contents.split("92;n") do |oneLine| # 午前/午後を示す開きカッコ"【"があるか if (oneLine =~ /^【/) then # そのまま出力 outFile.write(oneLine + "92;n") # p "午前午後:" + oneLine next # 空白行は無視(スキップする) elsif (oneLine =~ /^[92;s ]*$/) then # 出力しない # p " 空白行:<skip>" next # 行頭に「時」があるか elsif (oneLine =~ /^[0-9]{1,2}時/) then # あったら時間表示を抜きだしておく hour = oneLine.match(/^([0-9]{1,2}時)/)[0] # p " 時:" + oneLine outFile.write(convTopHourMinute2TwoDigits(oneLine) + "92;n") next else # 「時」がなければつけて出力 oneLine = hour + oneLine # p "普通の行:" + oneLine outFile.write(convTopHourMinute2TwoDigits(oneLine) + "92;n") end end
手でやったほうが早いね。
以上
前提:youtube-dlとgoogle chromeをインストール済み
このスクリプトでyoutubeからブロックされたり違法DL法や著作権法で罪に問われても一切責任を負いません
動画一覧画面を開く
https://www.youtube.com/channel/UCNjTjd2-PMC8Oo_-dCEss7A/videos
copy(Array.from(document.querySelectorAll(`#thumbnail`)).map(V=>{return V.href}).join("\n"))
結果がコピーされているのでテキストをペーストして適当な名前で保存する。今回はomega.txtとする
omega.txtを保存したディレクトリにターミナルで移動して下記コマンドを打つ(youtube-dlがインストール済みであることを前提とする)